lsattr.test 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/bin/bash
  2. [ -f testing.sh ] && . testing.sh
  3. #testing "name" "command" "result" "infile" "stdin"
  4. mkdir dir && cd dir && touch file
  5. chattr +A file &>/dev/null
  6. _A='-------A------------'
  7. _d='--------------------'
  8. function clean()
  9. {
  10. # We don't know whether the fs will have extents (e, typically true on the
  11. # desktop) or be encrypted (E, typically true on Android), or have data
  12. # inlined in the inode (N), or use indexed directories, so strip those out.
  13. # We also don't want to rely on chattr(1) to set a known version number or
  14. # project number, so blank out any numbers.
  15. sed -E -e 's/, (Encrypted|Extents|Indexed_directory|Inline_Data)//g;' \
  16. -e 's/[EeIN]-/--/g; s/[0-9]+/_/g'
  17. }
  18. testing "file" "lsattr file | clean" "$_A file\n" "" ""
  19. testing "-R file" "lsattr -R file | clean" "$_A file\n" "" ""
  20. testing "-a file" "lsattr -a file | clean" "$_A file\n" "" ""
  21. testing "-d ." "lsattr -d . | clean" "$_d .\n" "" ""
  22. testing "-d file" "lsattr -d file | clean" "$_A file\n" "" ""
  23. NOSPACE=1 testing "-l file" "lsattr -l file | clean" "file No_Atime\n" "" ""
  24. NOSPACE=1 testing "-v file" "lsattr -v file | clean" "_ $_A file\n" "" ""
  25. NOSPACE=1 testing "-lv file" "lsattr -lv file | clean" "_ file No_Atime\n" "" ""
  26. # You need at least Linux 4.5 plus file system support for project ids.
  27. lsattr -p file >/dev/null 2>&1 || SKIP=999
  28. NOSPACE=1 testing "-p file" "lsattr -p file | clean" "_ $_A file\n" "" ""
  29. NOSPACE=1 testing "-lp file" "lsattr -lp file | clean" "_ file No_Atime\n" \
  30. "" ""
  31. NOSPACE=1 testing "-vp file" "lsattr -vp file | clean" "_ _ $_A file\n" "" ""
  32. SKIP=0
  33. chattr -AacDdijsStTu file && cd ..
  34. rm -rf dir