xref: /aosp_15_r20/external/toybox/tests/truncate.test (revision cf5a6c84e2b8763fc1a7db14496fd4742913b199)
1*cf5a6c84SAndroid Build Coastguard Worker#!/bin/bash
2*cf5a6c84SAndroid Build Coastguard Worker
3*cf5a6c84SAndroid Build Coastguard Worker[ -f testing.sh ] && . testing.sh
4*cf5a6c84SAndroid Build Coastguard Worker
5*cf5a6c84SAndroid Build Coastguard Worker#testing "name" "command" "result" "infile" "stdin"
6*cf5a6c84SAndroid Build Coastguard Worker
7*cf5a6c84SAndroid Build Coastguard WorkerSIZE='&& stat -c %s freep'
8*cf5a6c84SAndroid Build Coastguard Workertesting "0" "truncate -s 0 freep $SIZE" "0\n" "" ""
9*cf5a6c84SAndroid Build Coastguard Workertesting "12345" "truncate -s 12345 freep $SIZE" "12345\n" "" ""
10*cf5a6c84SAndroid Build Coastguard Workertesting "1m" "truncate -s 1m freep $SIZE" "1048576\n" "" ""
11*cf5a6c84SAndroid Build Coastguard Worker# We can't test against 0 because Android filesystems use an extra 4KiB for
12*cf5a6c84SAndroid Build Coastguard Worker# extended attributes (SELinux). We recreate the file because macOS behavior
13*cf5a6c84SAndroid Build Coastguard Worker# is a bit weird; for some file sizes (12345, in this example) blocks will
14*cf5a6c84SAndroid Build Coastguard Worker# have been allocated that aren't deallocated by the 1g extension.
15*cf5a6c84SAndroid Build Coastguard Workerrm freep; touch freep
16*cf5a6c84SAndroid Build Coastguard Workertesting "is sparse" "truncate -s 1g freep && [ $(stat -c %b freep) -le 64 ] &&
17*cf5a6c84SAndroid Build Coastguard Worker  echo okay" \
18*cf5a6c84SAndroid Build Coastguard Worker	"okay\n" "" ""
19*cf5a6c84SAndroid Build Coastguard Workertesting "+" "truncate -s 1k freep && truncate -s +1k freep $SIZE" \
20*cf5a6c84SAndroid Build Coastguard Worker	"2048\n" "" ""
21*cf5a6c84SAndroid Build Coastguard Workertesting "-" "truncate -s 4k freep && truncate -s -1k freep $SIZE" \
22*cf5a6c84SAndroid Build Coastguard Worker	"3072\n" "" ""
23*cf5a6c84SAndroid Build Coastguard Workertesting "< hit" \
24*cf5a6c84SAndroid Build Coastguard Worker	"truncate -s 5k freep && truncate -s \<4k freep $SIZE" "4096\n" "" ""
25*cf5a6c84SAndroid Build Coastguard Workertesting "< miss" \
26*cf5a6c84SAndroid Build Coastguard Worker	"truncate -s 4k freep && truncate -s \<6k freep $SIZE" "4096\n" "" ""
27*cf5a6c84SAndroid Build Coastguard Workertesting "> hit" \
28*cf5a6c84SAndroid Build Coastguard Worker	"truncate -s 3k freep && truncate -s \>4k freep $SIZE" "4096\n" "" ""
29*cf5a6c84SAndroid Build Coastguard Workertesting "> miss" \
30*cf5a6c84SAndroid Build Coastguard Worker	"truncate -s 4k freep && truncate -s \>2k freep $SIZE" "4096\n" "" ""
31*cf5a6c84SAndroid Build Coastguard Workertesting "/" "truncate -s 7k freep && truncate -s /3k freep $SIZE" \
32*cf5a6c84SAndroid Build Coastguard Worker	"6144\n" "" ""
33*cf5a6c84SAndroid Build Coastguard Workertesting "%" "truncate -s 7k freep && truncate -s %3k freep $SIZE" \
34*cf5a6c84SAndroid Build Coastguard Worker	"9216\n" "" ""
35