9c20b3b896ff60d3b1a01f395c91a2770e81a59c
[oweals/busybox.git] / util-linux / mkfs_ext2_test.sh
1 #!/bin/sh
2
3 run_test() { # params: mke2fs_invocation image_name
4     >$2
5     dd seek=$((kilobytes-1)) bs=1K count=1 </dev/zero of=$2 >/dev/null 2>&1 || exit 1
6     $1 -F $2 $kilobytes >$2.raw_out 2>&1 || return 1
7     cat $2.raw_out \
8     | grep -v '^mke2fs [0-9]*\.[0-9]*\.[0-9]* ' \
9     | grep -v '^Maximum filesystem' \
10     | grep -v '^Writing inode tables' \
11     | grep -v '^Writing superblocks and filesystem accounting information' \
12     | grep -v '^This filesystem will be automatically checked every' \
13     | grep -v '^180 days, whichever comes first' \
14     | sed 's/inodes, [0-9]* blocks/inodes, N blocks/' \
15     | sed 's/blocks* unused./blocks unused/' \
16     | sed 's/block groups*/block groups/' \
17     | sed 's/ *$//' \
18     | sed 's/blocks (.*%) reserved/blocks reserved/' \
19     | grep -v '^$' \
20     >$2.out
21 }
22
23 test_mke2fs() {
24     echo Testing $kilobytes
25
26     run_test '/usr/bin/mke2fs' image_std || return 1
27     run_test './busybox mke2fs' image_bb || return 1
28
29     diff -ua image_bb.out image_std.out >image.out.diff || {
30         cat image.out.diff
31         return 1
32     }
33
34     e2fsck -f -n image_bb >/dev/null 2>&1 || { echo "e2fsck error on image_bb"; exit 1; }
35 }
36
37 # -:bbox +:standard
38
39 # -6240 inodes, 24908 blocks
40 # +6240 inodes, 24577 blocks
41 # -4 block group
42 # +3 block group
43 # -1560 inodes per group
44 # +2080 inodes per group
45 kilobytes=24908 test_mke2fs
46
47 # -304 inodes, N blocks
48 # +152 inodes, N blocks
49 # -304 inodes per group
50 # +152 inodes per group
51 kilobytes=1218 test_mke2fs
52
53 # -14464 inodes, N blocks
54 # +14448 inodes, N blocks
55 # -8 block group
56 # +7 block group
57 # -1808 inodes per group
58 # +2064 inodes per group
59 kilobytes=57696 test_mke2fs
60
61 # This size results in "warning: 75 blocks unused"
62 kilobytes=98380 test_mke2fs
63
64 # -warning: 239 blocks unused.
65 # +warning: 242 blocks unused.
66 kilobytes=49395 test_mke2fs
67
68 while true; do
69     kilobytes=$(( (RANDOM*RANDOM) % 1000000 + 2000))
70     test_mke2fs || exit 1
71 done