toybox/tests/chattr.test
<<
>>
Prefs
   1#!/bin/bash
   2
   3[ -f testing.sh ] && . testing.sh
   4
   5#testing "name" "command" "result" "infile" "stdin"
   6
   7if [ "$(id -u)" -ne 0 ]
   8then
   9  echo "$SHOWSKIP: chattr (not root)"
  10  return 2>/dev/null
  11  exit
  12fi
  13
  14# chattr - Testcases
  15
  16mkdir testattr
  17IN="cd testattr"
  18OUT="cd .."
  19_t="abcdefghijklmnopqrstuvwxyz"
  20
  21testing "[-/+]i FILE[write]" "$IN && echo "$_t" > testFile &&
  22         chattr +i testFile && lsattr testFile && echo "$_t" > testFile; 
  23         chattr -i testFile; rm -rf testFile; $OUT " "----i-------- testFile\n" "" ""
  24testing "[-/+]i FILE[re-write]" "$IN && echo "$_t" > testFile && 
  25         chattr +i testFile && echo \"$_t\" > testFile || chattr -i testFile && 
  26         echo \"$_t\" > testFile && lsattr testFile; rm -rf testFile; $OUT" \
  27         "------------- testFile\n" "" ""
  28testing "[-/+]i FILE[append]" "$IN && echo "$_t" > testFile && 
  29         chattr +i testFile && echo \"$_t\" >> testFile || lsattr testFile && 
  30         chattr -i testFile; rm -rf testFile; $OUT" "----i-------- testFile\n" "" ""
  31testing "[-/+]i FILE[move]" "$IN && echo "$_t" > testFile && 
  32         chattr +i testFile && mv testFile testFile1 || lsattr testFile && 
  33         chattr -i testFile; rm -rf testFile; $OUT" "----i-------- testFile\n" "" ""
  34testing "[-/+]i FILE[delete]" "$IN && echo "$_t" > testFile && 
  35         chattr +i testFile && rm -f testFile || lsattr testFile && 
  36         chattr -i testFile; rm -rf testFile; $OUT" "----i-------- testFile\n" "" ""
  37testing "[-/+]i FILE[read]" "$IN && echo "$_t" > testFile && 
  38         chattr +i testFile && cat testFile && lsattr testFile && 
  39         chattr -i testFile; rm -rf testFile; $OUT" "$_t\n----i-------- testFile\n" "" ""
  40testing "[-/+]a FILE[write]" "$IN && echo "$_t" > testFile && 
  41         chattr +a testFile && echo $_t > testFile || lsattr testFile && 
  42         chattr -a testFile; rm -rf testFile; $OUT" "-----a------- testFile\n" "" ""
  43testing "[-/+]a FILE[re-write]" "$IN && echo "$_t" > testFile && 
  44         chattr +a testFile && echo $_t > testFile || lsattr testFile && 
  45         chattr -a testFile && echo $_t > testFile && cat testFile && 
  46         lsattr testFile; rm -rf testFile; 
  47         $OUT" "-----a------- testFile\n$_t\n------------- testFile\n" "" ""
  48testing "[-/+]a FILE[append]" "$IN && echo "$_t" > testFile && 
  49         chattr +a testFile && echo $_t >> testFile && cat testFile && 
  50         lsattr testFile && chattr -a testFile; rm -rf testFile; $OUT" \
  51         "$_t\n$_t\n-----a------- testFile\n" "" ""
  52testing "[-/+]a FILE[move]" "$IN && echo "$_t" > testFile && 
  53         chattr +a testFile && mv testFile testFile1 || lsattr testFile && 
  54         chattr -a testFile; rm -rf testFile; $OUT" "-----a------- testFile\n" "" ""
  55testing "[-/+]a FILE[delete]" "$IN && echo "$_t" > testFile && 
  56         chattr +a testFile && rm -f testFile || lsattr testFile && 
  57         chattr -a testFile; rm -rf testFile; $OUT" "-----a------- testFile\n" "" ""
  58testing "[-/+]a FILE[read]" "$IN && echo "$_t" > testFile && 
  59         chattr +a testFile && cat testFile && lsattr testFile && chattr -a testFile; 
  60         rm -rf testFile; $OUT" "$_t\n-----a------- testFile\n" "" ""
  61
  62for attr in "A" "a" "c" "D" "d" "i" "j" "s" "S" "t" "T" "u"
  63do
  64  testing "[-/+]$attr FILE" "$IN && echo "$_t" > testFile && 
  65           chattr +$attr testFile && cat testFile && chattr -$attr testFile && 
  66           lsattr testFile; rm -rf testFile; $OUT" "$_t\n------------- testFile\n" "" ""
  67done
  68
  69for attr in "A" "a" "c" "D" "d" "i" "j" "s" "S" "t" "T" "u"
  70do
  71  testing "-$attr FILE" "$IN && echo "$_t" > testFile && chattr -$attr testFile &&
  72           cat testFile && lsattr testFile; rm -rf testFile; $OUT" "$_t\n------------- testFile\n" "" ""
  73done
  74
  75testing "[-/+]AacDdijsStTu FILE" "$IN && echo "$_t" > testFile && 
  76         chattr +AacDdijsStTu testFile && cat testFile && chattr -AacDdijsStTu testFile && 
  77         lsattr testFile; rm -rf testFile; $OUT" "$_t\n------------- testFile\n" "" ""
  78testing "[-/+]AacDdijsStTu(random) FILE" \
  79        "$IN && echo "$_t" > testFile && 
  80        chattr +AacDdijsStTu testFile && cat testFile && chattr -A testFile &&
  81        chattr -a testFile && chattr -c testFile && chattr -D testFile &&
  82        chattr -d testFile && chattr -i testFile && chattr -j testFile &&
  83        chattr -s testFile && chattr -S testFile && chattr -t testFile &&
  84        chattr -T testFile && chattr -u testFile && lsattr testFile &&
  85        chattr -AacDdijsStTu testFile; rm -rf testFile; $OUT" \
  86        "$_t\n------------- testFile\n" "" ""
  87testing "[-/+]AacDdijsStTu FILE*" "$IN && 
  88        echo "$_t" > testFile && echo "$_t" > testFile1 &&
  89        echo "$_t" > testFile2 && echo "$_t" > testFile3 &&
  90        echo "$_t" > testFile4 && echo "$_t" > testFile5 &&
  91        echo "$_t" > testFile6 && echo "$_t" > testFile7 &&
  92        echo "$_t" > testFile8 && echo "$_t" > testFile9 &&
  93        echo "$_t" > testFile10 && echo "$_t" > testFile11 &&
  94       chattr +AacDdijsStTu testFile* &&
  95       cat testFile9 && chattr -AacDdijsStTu testFile* && lsattr testFile*; rm -rf testFile*; $OUT" \
  96       "$_t\n------------- testFile\n------------- testFile1\n------------- testFile10\n------------- testFile11\n------------- testFile2\n------------- testFile3\n------------- testFile4\n------------- testFile5\n------------- testFile6\n------------- testFile7\n------------- testFile8\n------------- testFile9\n" "" ""
  97testing "[-/+]AacDdijsStTu(random) FILE*" \
  98        "$IN && echo "$_t" > testFile &&
  99        chattr +AacDdijsStTu testFile* && cat testFile && chattr -A testFile* &&
 100        chattr -a testFile* && chattr -c testFile* && chattr -D testFile* &&
 101        chattr -d testFile* && chattr -i testFile* && chattr -j testFile* &&
 102        chattr -s testFile* && chattr -S testFile* && chattr -t testFile* &&
 103        chattr -T testFile* && chattr -u testFile* && lsattr testFile;
 104        rm -rf testFile; $OUT" \
 105        "$_t\n------------- testFile\n" "" ""
 106testing "[-/+]i FILE[write]" \
 107        "$IN && echo "$_t" > testFile &&
 108        chattr +i testFile &&
 109        echo \"$_t\" > testFile || lsattr testFile && chattr -i testFile;
 110        rm -rf testFile; $OUT" "----i-------- testFile\n" "" ""
 111testing "[-/+]A FILE[write]" \
 112        "$IN && echo "$_t" > testFile && chattr +A testFile &&
 113        echo \"$_t\" > testFile && lsattr testFile && chattr -A testFile;
 114        rm -rf testFile; $OUT" "-------A----- testFile\n" "" ""
 115testing "[-/+]s FILE[write]" \
 116        "$IN && echo "$_t" > testFile && chattr +s testFile &&
 117        echo \"$_t\" > testFile && lsattr testFile && chattr -s testFile
 118        rm -rf testFile; $OUT" "s------------ testFile\n" "" ""
 119testing "-v version FILE[write]" \
 120        "$IN && echo "$_t" > testFile &&
 121        chattr -v 1234 testFile && echo \"$_t\" > testFile && 
 122        lsattr -v testFile; rm -rf testFile" \
 123        " 1234 ------------- testFile\n" "" ""
 124
 125_a="-------A-----"
 126testing "-R [-/+]a FILE" "$IN && touch aa && chattr -R +A aa && lsattr aa &&
 127        chattr -R -A aa; rm -rf aa; $OUT" "$_a aa\n" "" ""
 128testing "-R [-/+]a FILE.." "$IN && touch aa bb &&
 129        chattr -R +A aa bb && lsattr aa bb &&
 130        chattr -R -A aa bb; rm -rf aa bb; $OUT" "$_a aa\n$_a bb\n" "" ""
 131
 132# Clean up
 133rm -rf testattr
 134