xref: /aosp_15_r20/external/toybox/tests/lsattr.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 Workermkdir dir && cd dir && touch file
8*cf5a6c84SAndroid Build Coastguard Worker
9*cf5a6c84SAndroid Build Coastguard Workerchattr +A file &>/dev/null
10*cf5a6c84SAndroid Build Coastguard Worker_A='-------A------------'
11*cf5a6c84SAndroid Build Coastguard Worker_d='--------------------'
12*cf5a6c84SAndroid Build Coastguard Worker
13*cf5a6c84SAndroid Build Coastguard Workerfunction clean()
14*cf5a6c84SAndroid Build Coastguard Worker{
15*cf5a6c84SAndroid Build Coastguard Worker  # We don't know whether the fs will have extents (e, typically true on the
16*cf5a6c84SAndroid Build Coastguard Worker  # desktop) or be encrypted (E, typically true on Android), or have data
17*cf5a6c84SAndroid Build Coastguard Worker  # inlined in the inode (N), or use indexed directories, so strip those out.
18*cf5a6c84SAndroid Build Coastguard Worker  # We also don't want to rely on chattr(1) to set a known version number or
19*cf5a6c84SAndroid Build Coastguard Worker  # project number, so blank out any numbers.
20*cf5a6c84SAndroid Build Coastguard Worker  sed -E -e 's/, (Encrypted|Extents|Indexed_directory|Inline_Data)//g;' \
21*cf5a6c84SAndroid Build Coastguard Worker         -e 's/[EeIN]-/--/g; s/[0-9]+/_/g'
22*cf5a6c84SAndroid Build Coastguard Worker}
23*cf5a6c84SAndroid Build Coastguard Worker
24*cf5a6c84SAndroid Build Coastguard Workertesting "file" "lsattr file | clean" "$_A file\n" "" ""
25*cf5a6c84SAndroid Build Coastguard Workertesting "-R file" "lsattr -R file | clean" "$_A file\n" "" ""
26*cf5a6c84SAndroid Build Coastguard Workertesting "-a file" "lsattr -a file | clean" "$_A file\n" "" ""
27*cf5a6c84SAndroid Build Coastguard Workertesting "-d ." "lsattr -d . | clean" "$_d .\n" "" ""
28*cf5a6c84SAndroid Build Coastguard Workertesting "-d file" "lsattr -d file | clean" "$_A file\n" "" ""
29*cf5a6c84SAndroid Build Coastguard WorkerNOSPACE=1 testing "-l file" "lsattr -l file | clean" "file No_Atime\n" "" ""
30*cf5a6c84SAndroid Build Coastguard WorkerNOSPACE=1 testing "-v file" "lsattr -v file | clean" "_ $_A file\n" "" ""
31*cf5a6c84SAndroid Build Coastguard WorkerNOSPACE=1 testing "-lv file" "lsattr -lv file | clean" "_ file No_Atime\n" "" ""
32*cf5a6c84SAndroid Build Coastguard Worker
33*cf5a6c84SAndroid Build Coastguard Worker# You need at least Linux 4.5 plus file system support for project ids.
34*cf5a6c84SAndroid Build Coastguard Workerlsattr -p file >/dev/null 2>&1 || SKIP=999
35*cf5a6c84SAndroid Build Coastguard Worker  NOSPACE=1 testing "-p file" "lsattr -p file | clean" "_ $_A file\n" "" ""
36*cf5a6c84SAndroid Build Coastguard Worker  NOSPACE=1 testing "-lp file" "lsattr -lp file | clean" "_ file No_Atime\n" \
37*cf5a6c84SAndroid Build Coastguard Worker    "" ""
38*cf5a6c84SAndroid Build Coastguard Worker  NOSPACE=1 testing "-vp file" "lsattr -vp file | clean" "_ _ $_A file\n" "" ""
39*cf5a6c84SAndroid Build Coastguard WorkerSKIP=0
40*cf5a6c84SAndroid Build Coastguard Worker
41*cf5a6c84SAndroid Build Coastguard Workerchattr -AacDdijsStTu file && cd ..
42*cf5a6c84SAndroid Build Coastguard Workerrm -rf dir
43