Home | History | Annotate | Download | only in tests
      1 #!/bin/bash
      2 
      3 # Copyright 2013 Robin Mittal <robinmittal.it (at] gmail.com>
      4 # Copyright 2013 Divya Kothari <divya.s.kothari (at] gmail.com>
      5 
      6 [ -f testing.sh ] && . testing.sh
      7 
      8 # 'dd' command, stderr prints redirecting to /dev/null
      9 opt="2>/dev/null"
     10 
     11 #testing "name" "command" "result" "infile" "stdin"
     12 
     13 # Test suffixed number parsing; `count` is representative.
     14 testing "count=2" "dd if=input count=2 ibs=1 $opt" "hi" "high\n" ""
     15 testing "count= 2" "dd if=input 'count= 2' ibs=1 $opt" "hi" "high\n" ""
     16 SKIP_HOST=1 testing "count=0x2" "dd if=input 'count=0x2' ibs=1 $opt" "hi" \
     17   "high\n" ""
     18 testing "count=-2" "dd if=input 'count=-2' ibs=1 2>/dev/null || echo errored" "errored\n" "" ""
     19 
     20 testing "if=(file)" "dd if=input $opt" "I WANT\n" "I WANT\n" ""
     21 testing "of=(file)" "dd of=file $opt && cat file" "I WANT\n" "" "I WANT\n"
     22 testing "if=file of=file" "dd if=input of=foo $opt && cat foo && rm -f foo" \
     23   "I WANT\n" "I WANT\n" ""
     24 testing "if=file | dd of=file" "dd if=input $opt | dd of=foo $opt &&
     25    cat foo && rm -f foo" "I WANT\n" "I WANT\n" ""
     26 testing "(stdout)" "dd $opt" "I WANT\n" "" "I WANT\n"
     27 testing "sync,noerror" \
     28   "dd if=input of=outFile seek=8860 bs=1M conv=sync,noerror $opt &&
     29    stat -c \"%s\" outFile && rm -f outFile" "9291431936\n" "I WANT\n" ""
     30 testing "if=file of=(null)" \
     31   "dd if=input of=/dev/null $opt && echo 'yes'" "yes\n" "I WANT\n" ""
     32 testing "with if of bs" \
     33   "dd if=/dev/zero of=sda.txt bs=512 count=1 $opt &&
     34    stat -c '%s' sda.txt && rm -f sda.txt" "512\n" "" ""
     35 testing "with if of ibs obs" \
     36   "dd if=/dev/zero of=sda.txt ibs=512 obs=256 count=1 $opt &&
     37    stat -c '%s' sda.txt && rm -f sda.txt" "512\n" "" ""
     38 testing "with if of ibs obs count" \
     39   "dd if=/dev/zero of=sda.txt ibs=512 obs=256 count=3 $opt &&
     40    stat -c '%s' sda.txt && rm -f sda.txt" "1536\n" "" ""
     41 
     42 ln -s input softlink
     43 testing "if=softlink" "dd if=softlink $opt" "I WANT\n" "I WANT\n" ""
     44 unlink softlink
     45 
     46 ln -s file softlink
     47 testing "if=file of=softlink" "dd if=input of=softlink $opt &&
     48    [ -f file -a -L softlink ] && cat softlink" "I WANT\n" "I WANT\n" ""
     49 unlink softlink && rm -f file
     50 
     51 testing "if=file of=file (same file)" "dd if=input of=input $opt &&
     52    [ -f input ] && cat input && echo 'yes'" "yes\n" "I WANT\n" ""
     53 testing "same file notrunc" \
     54   "dd if=input of=input conv=notrunc $opt && cat input" \
     55   "I WANT\n" "I WANT\n" ""
     56 
     57 testing "with ibs obs bs" "dd ibs=2 obs=5 bs=9 $opt" "I WANT\n" "" "I WANT\n"
     58 testing "with ibs obs bs if" "dd ibs=2 obs=5 bs=9 if=input $opt" \
     59   "I WANT\n" "I WANT\n" ""
     60 
     61 testing "with ibs obs count" "dd ibs=1 obs=1 count=1 $opt" "I" "" "I WANT\n"
     62 testing "with ibs obs count if" "dd ibs=1 obs=1 count=3 if=input $opt" \
     63   "I W" "I WANT\n" ""
     64 
     65 testing "with count" "dd count=1 $opt" "I WANT\n" "" "I WANT\n"
     66 testing "with count if" "dd count=1 if=input $opt" "I WANT\n" "I WANT\n" ""
     67 
     68 testing "with skip" "dd skip=0 $opt" "I WANT\n" "" "I WANT\n"
     69 testing "with skip if" "dd skip=0 if=input $opt" "I WANT\n" "I WANT\n" ""
     70 
     71 testing "with seek" "dd seek=0 $opt" "I WANT\n" "" "I WANT\n"
     72 testing "with seek if" "dd seek=0 if=input $opt" "I WANT\n" "I WANT\n" ""
     73 
     74 # Testing only 'notrunc', 'noerror', 'fsync', 'sync'
     75 
     76 testing "conv=notrunc" "dd conv=notrunc $opt" "I WANT\n" "" "I WANT\n"
     77 testing "conv=notrunc with IF" "dd conv=notrunc if=input $opt" "I WANT\n" \
     78   "I WANT\n" ""
     79 
     80 testing "conv=noerror" "dd conv=noerror $opt" "I WANT\n" "" "I WANT\n"
     81 testing "conv=noerror with IF" "dd conv=noerror if=input $opt" "I WANT\n" \
     82   "I WANT\n" ""
     83 
     84 testing "conv=fsync" "dd conv=fsync $opt" "I WANT\n" "" "I WANT\n"
     85 testing "conv=fsync with IF" "dd conv=fsync if=input $opt" "I WANT\n" \
     86   "I WANT\n" ""
     87 
     88 testing "conv=sync" "dd conv=sync $opt | head -n 1" "I WANT\n" "" "I WANT\n"
     89 testing "conv=sync with IF" "dd conv=sync if=input $opt | head -n 1" "I WANT\n" \
     90   "I WANT\n" ""
     91 
     92 # status=noxfer|none
     93 testing "status=noxfer" "dd if=input status=noxfer ibs=1 2>&1" "input\n6+0 records in\n0+1 records out\n" "input\n" ""
     94 testing "status=none" "dd if=input status=none ibs=1 2>&1" "input\n" "input\n" ""
     95