mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 16:52:14 +02:00
fs-test: Add test for a filename using '..' to go back to the root
The previous commit fixed a problem in FAT code where going back to the
root directory using '..' wouldn't work correctly on FAT12 or FAT16.
Add a test to exercise this case (which was once fixed in commit
18a10d46f2
"fat: handle paths that include ../" but reintroduced due to
the directory iterator refactoring).
This test only very barely catches the problem - without the fix the
size command still gives valid output but the additional spurious
"Invalid FAT entry" error message makes it not get caught in the
'egrep -A3 ' output. I tried to make a proper test that grows the root
directory to two clusters lots of with dummy files but that causes the
write tests to crash the sandbox totally...
Signed-off-by: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
committed by
Tom Rini
parent
8df8731474
commit
7c890f149d
@@ -9,18 +9,18 @@
|
|||||||
# It currently tests the fs/sb and native commands for ext4 and fat partitions
|
# It currently tests the fs/sb and native commands for ext4 and fat partitions
|
||||||
# Expected results are as follows:
|
# Expected results are as follows:
|
||||||
# EXT4 tests:
|
# EXT4 tests:
|
||||||
# fs-test.sb.ext4.out: Summary: PASS: 23 FAIL: 0
|
# fs-test.sb.ext4.out: Summary: PASS: 24 FAIL: 0
|
||||||
# fs-test.ext4.out: Summary: PASS: 23 FAIL: 0
|
# fs-test.ext4.out: Summary: PASS: 24 FAIL: 0
|
||||||
# fs-test.fs.ext4.out: Summary: PASS: 23 FAIL: 0
|
# fs-test.fs.ext4.out: Summary: PASS: 24 FAIL: 0
|
||||||
# FAT16 tests:
|
# FAT16 tests:
|
||||||
# fs-test.sb.fat16.out: Summary: PASS: 23 FAIL: 0
|
# fs-test.sb.fat16.out: Summary: PASS: 24 FAIL: 0
|
||||||
# fs-test.fat16.out: Summary: PASS: 20 FAIL: 3
|
# fs-test.fat16.out: Summary: PASS: 21 FAIL: 3
|
||||||
# fs-test.fs.fat16.out: Summary: PASS: 20 FAIL: 3
|
# fs-test.fs.fat16.out: Summary: PASS: 21 FAIL: 3
|
||||||
# FAT32 tests:
|
# FAT32 tests:
|
||||||
# fs-test.sb.fat32.out: Summary: PASS: 23 FAIL: 0
|
# fs-test.sb.fat32.out: Summary: PASS: 24 FAIL: 0
|
||||||
# fs-test.fat32.out: Summary: PASS: 20 FAIL: 3
|
# fs-test.fat32.out: Summary: PASS: 21 FAIL: 3
|
||||||
# fs-test.fs.fat32.out: Summary: PASS: 20 FAIL: 3
|
# fs-test.fs.fat32.out: Summary: PASS: 21 FAIL: 3
|
||||||
# Total Summary: TOTAL PASS: 195 TOTAL FAIL: 12
|
# Total Summary: TOTAL PASS: 204 TOTAL FAIL: 12
|
||||||
|
|
||||||
# pre-requisite binaries list.
|
# pre-requisite binaries list.
|
||||||
PREREQ_BINS="md5sum mkfs mount umount dd fallocate mkdir"
|
PREREQ_BINS="md5sum mkfs mount umount dd fallocate mkdir"
|
||||||
@@ -229,10 +229,14 @@ ${PREFIX}ls host${SUFFIX} $6
|
|||||||
# We want ${PREFIX}size host 0:0 $3 for host commands and
|
# We want ${PREFIX}size host 0:0 $3 for host commands and
|
||||||
# sb size hostfs - $3 for hostfs commands.
|
# sb size hostfs - $3 for hostfs commands.
|
||||||
# 1MB is 0x0010 0000
|
# 1MB is 0x0010 0000
|
||||||
# Test Case 2 - size of small file
|
# Test Case 2a - size of small file
|
||||||
${PREFIX}size host${SUFFIX} ${FPATH}$FILE_SMALL
|
${PREFIX}size host${SUFFIX} ${FPATH}$FILE_SMALL
|
||||||
printenv filesize
|
printenv filesize
|
||||||
setenv filesize
|
setenv filesize
|
||||||
|
# Test Case 2b - size of small file via a path using '..'
|
||||||
|
${PREFIX}size host${SUFFIX} ${FPATH}SUBDIR/../$FILE_SMALL
|
||||||
|
printenv filesize
|
||||||
|
setenv filesize
|
||||||
|
|
||||||
# 2.5GB (1024*1024*2500) is 0x9C40 0000
|
# 2.5GB (1024*1024*2500) is 0x9C40 0000
|
||||||
# Test Case 3 - size of big file
|
# Test Case 3 - size of big file
|
||||||
@@ -347,6 +351,9 @@ function create_files() {
|
|||||||
mkdir -p "$MOUNT_DIR"
|
mkdir -p "$MOUNT_DIR"
|
||||||
sudo mount -o loop,rw "$1" "$MOUNT_DIR"
|
sudo mount -o loop,rw "$1" "$MOUNT_DIR"
|
||||||
|
|
||||||
|
# Create a subdirectory.
|
||||||
|
sudo mkdir -p "$MOUNT_DIR/SUBDIR"
|
||||||
|
|
||||||
# Create big file in this image.
|
# Create big file in this image.
|
||||||
# Note that we work only on the start 1MB, couple MBs in the 2GB range
|
# Note that we work only on the start 1MB, couple MBs in the 2GB range
|
||||||
# and the last 1 MB of the huge 2.5GB file.
|
# and the last 1 MB of the huge 2.5GB file.
|
||||||
@@ -453,16 +460,19 @@ function check_results() {
|
|||||||
FAIL=0
|
FAIL=0
|
||||||
|
|
||||||
# Check if the ls is showing correct results for 2.5 gb file
|
# Check if the ls is showing correct results for 2.5 gb file
|
||||||
grep -A6 "Test Case 1 " "$1" | egrep -iq "2621440000 *$4"
|
grep -A7 "Test Case 1 " "$1" | egrep -iq "2621440000 *$4"
|
||||||
pass_fail "TC1: ls of $4"
|
pass_fail "TC1: ls of $4"
|
||||||
|
|
||||||
# Check if the ls is showing correct results for 1 mb file
|
# Check if the ls is showing correct results for 1 mb file
|
||||||
grep -A6 "Test Case 1 " "$1" | egrep -iq "1048576 *$3"
|
grep -A7 "Test Case 1 " "$1" | egrep -iq "1048576 *$3"
|
||||||
pass_fail "TC1: ls of $3"
|
pass_fail "TC1: ls of $3"
|
||||||
|
|
||||||
# Check size command on 1MB.file
|
# Check size command on 1MB.file
|
||||||
egrep -A3 "Test Case 2 " "$1" | grep -q "filesize=100000"
|
egrep -A3 "Test Case 2a " "$1" | grep -q "filesize=100000"
|
||||||
pass_fail "TC2: size of $3"
|
pass_fail "TC2: size of $3"
|
||||||
|
# Check size command on 1MB.file via a path using '..'
|
||||||
|
egrep -A3 "Test Case 2b " "$1" | grep -q "filesize=100000"
|
||||||
|
pass_fail "TC2: size of $3 via a path using '..'"
|
||||||
|
|
||||||
# Check size command on 2.5GB.file
|
# Check size command on 2.5GB.file
|
||||||
egrep -A3 "Test Case 3 " "$1" | grep -q "filesize=9c400000"
|
egrep -A3 "Test Case 3 " "$1" | grep -q "filesize=9c400000"
|
||||||
|
Reference in New Issue
Block a user