Skip to content

Commit 8d85c5c

Browse files
committed
Expand kyua regression coverage
1 parent 5f9ac11 commit 8d85c5c

1 file changed

Lines changed: 58 additions & 0 deletions

File tree

tests/cli_test.sh

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,23 @@ round_trip_body() {
1515
atf_check -s exit:0 -o empty -e empty cmp -s tiny.iso tiny.out.iso
1616
}
1717

18+
atf_test_case multi_block_round_trip
19+
multi_block_round_trip_head() {
20+
atf_set "descr" "Compressing and extracting a multi-block ISO round-trips cleanly"
21+
}
22+
multi_block_round_trip_body() {
23+
srcdir="$(atf_get_srcdir)"
24+
prog="${srcdir}/../ciso-maker"
25+
26+
dd if=/dev/zero of=multi.iso bs=2048 count=3 >/dev/null 2>&1
27+
printf 'block-two-marker' | dd of=multi.iso bs=1 seek=2304 conv=notrunc >/dev/null 2>&1
28+
printf 'block-three-marker' | dd of=multi.iso bs=1 seek=4352 conv=notrunc >/dev/null 2>&1
29+
30+
atf_check -s exit:0 -o ignore -e ignore "${prog}" multi.iso multi.cso
31+
atf_check -s exit:0 -o ignore -e ignore "${prog}" -x multi.cso multi.out.iso
32+
atf_check -s exit:0 -o empty -e empty cmp -s multi.iso multi.out.iso
33+
}
34+
1835
atf_test_case reject_same_input_output
1936
reject_same_input_output_head() {
2037
atf_set "descr" "The tool rejects in-place conversion to avoid truncating the input"
@@ -32,6 +49,26 @@ reject_same_input_output_body() {
3249
"${prog}" same.iso same.iso
3350
}
3451

52+
atf_test_case reject_truncated_cso
53+
reject_truncated_cso_head() {
54+
atf_set "descr" "Truncated CSO input is rejected cleanly"
55+
}
56+
reject_truncated_cso_body() {
57+
srcdir="$(atf_get_srcdir)"
58+
prog="${srcdir}/../ciso-maker"
59+
60+
truncate -s 2048 tiny.iso
61+
atf_check -s exit:0 -o ignore -e ignore "${prog}" tiny.iso tiny.cso
62+
size="$(wc -c < tiny.cso)"
63+
dd if=tiny.cso of=tiny.truncated.cso bs=1 count=$((size - 1)) >/dev/null 2>&1
64+
65+
atf_check \
66+
-s exit:1 \
67+
-o ignore \
68+
-e match:"read error|file read error" \
69+
"${prog}" -x tiny.truncated.cso tiny.out.iso
70+
}
71+
3572
atf_test_case reject_invalid_cso
3673
reject_invalid_cso_head() {
3774
atf_set "descr" "Malformed CSO input is rejected cleanly"
@@ -49,8 +86,29 @@ reject_invalid_cso_body() {
4986
"${prog}" -x bad.cso bad.iso
5087
}
5188

89+
atf_test_case plain_block_cso
90+
plain_block_cso_head() {
91+
atf_set "descr" "Incompressible input is stored as a plain CSO block"
92+
}
93+
plain_block_cso_body() {
94+
srcdir="$(atf_get_srcdir)"
95+
prog="${srcdir}/../ciso-maker"
96+
97+
dd if=/dev/urandom of=plain.iso bs=2048 count=1 >/dev/null 2>&1
98+
99+
atf_check -s exit:0 -o ignore -e ignore "${prog}" plain.iso plain.cso
100+
atf_check -s exit:0 -o ignore -e ignore "${prog}" -x plain.cso plain.out.iso
101+
atf_check -s exit:0 -o empty -e empty cmp -s plain.iso plain.out.iso
102+
103+
msb="$(od -An -t u1 -j 27 -N 1 plain.cso | awk '{print $1}')"
104+
atf_check_equal "128" "${msb}"
105+
}
106+
52107
atf_init_test_cases() {
53108
atf_add_test_case round_trip
109+
atf_add_test_case multi_block_round_trip
54110
atf_add_test_case reject_same_input_output
111+
atf_add_test_case reject_truncated_cso
55112
atf_add_test_case reject_invalid_cso
113+
atf_add_test_case plain_block_cso
56114
}

0 commit comments

Comments
 (0)