1#!/bin/bash 2 3# Copyright 2013 Robin Mittal <robinmittal.it@gmail.com> 4# Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com> 5 6[ -f testing.sh ] && . testing.sh 7 8# 'dd' command, stderr prints redirecting to /dev/null 9opt="2>/dev/null" 10 11#testing "name" "command" "result" "infile" "stdin" 12 13testing "dd if=(file)" "dd if=input $opt" "I WANT\n" "I WANT\n" "" 14testing "dd of=(file)" "dd of=file $opt && cat file" "I WANT\n" "" "I WANT\n" 15testing "dd if=file of=file" "dd if=input of=foo $opt && cat foo && rm -f foo" \ 16 "I WANT\n" "I WANT\n" "" 17testing "dd if=file | dd of=file" "dd if=input $opt | dd of=foo $opt && 18 cat foo && rm -f foo" "I WANT\n" "I WANT\n" "" 19testing "dd (stdout)" "dd $opt" "I WANT\n" "" "I WANT\n" 20testing "dd sync,noerror" \ 21 "dd if=input of=outFile seek=8860 bs=1M conv=sync,noerror $opt && 22 stat -c \"%s\" outFile && rm -f outFile" "9291431936\n" "I WANT\n" "" 23testing "dd if=file of=(null)" \ 24 "dd if=input of=/dev/null $opt && echo 'yes'" "yes\n" "I WANT\n" "" 25testing "dd with if of bs" \ 26 "dd if=/dev/zero of=sda.txt bs=512 count=1 $opt && 27 stat -c '%s' sda.txt && rm -f sda.txt" "512\n" "" "" 28testing "dd with if of ibs obs" \ 29 "dd if=/dev/zero of=sda.txt ibs=512 obs=256 count=1 $opt && 30 stat -c '%s' sda.txt && rm -f sda.txt" "512\n" "" "" 31testing "dd with if of ibs obs count" \ 32 "dd if=/dev/zero of=sda.txt ibs=512 obs=256 count=3 $opt && 33 stat -c '%s' sda.txt && rm -f sda.txt" "1536\n" "" "" 34 35ln -s input softlink 36testing "dd if=softlink" "dd if=softlink $opt" "I WANT\n" "I WANT\n" "" 37unlink softlink 38 39ln -s file softlink 40testing "dd if=file of=softlink" "dd if=input of=softlink $opt && 41 [ -f file -a -L softlink ] && cat softlink" "I WANT\n" "I WANT\n" "" 42unlink softlink && rm -f file 43 44testing "dd if=file of=file (same file)" "dd if=input of=input $opt && 45 [ -f input ] && cat input && echo 'yes'" "yes\n" "I WANT\n" "" 46 47testing "dd with ibs obs bs" "dd ibs=2 obs=5 bs=9 $opt" "I WANT\n" "" "I WANT\n" 48testing "dd with ibs obs bs if" "dd ibs=2 obs=5 bs=9 if=input $opt" \ 49 "I WANT\n" "I WANT\n" "" 50 51testing "dd with ibs obs count" "dd ibs=1 obs=1 count=1 $opt" "I" "" "I WANT\n" 52testing "dd with ibs obs count if" "dd ibs=1 obs=1 count=3 if=input $opt" \ 53 "I W" "I WANT\n" "" 54 55testing "dd with count" "dd count=1 $opt" "I WANT\n" "" "I WANT\n" 56testing "dd with count if" "dd count=1 if=input $opt" "I WANT\n" "I WANT\n" "" 57 58testing "dd with skip" "dd skip=0 $opt" "I WANT\n" "" "I WANT\n" 59testing "dd with skip if" "dd skip=0 if=input $opt" "I WANT\n" "I WANT\n" "" 60 61testing "dd with seek" "dd seek=0 $opt" "I WANT\n" "" "I WANT\n" 62testing "dd with seek if" "dd seek=0 if=input $opt" "I WANT\n" "I WANT\n" "" 63 64# These type of conv is not supported in toybox: 'ascii', 'ebcdic', 'ibm', 65# 'block', 'unblock', 'nocreat', 'notronc', 'lcase', 'ucase', 'excl', 'swab' 66 67# Testing only 'notrunc', 'noerror', 'fsync', 'sync' 68 69testing "dd conv=notrunc" "dd conv=notrunc $opt" "I WANT\n" "" "I WANT\n" 70testing "dd conv=notrunc with IF" "dd conv=notrunc if=input $opt" "I WANT\n" \ 71 "I WANT\n" "" 72 73testing "dd conv=noerror" "dd conv=noerror $opt" "I WANT\n" "" "I WANT\n" 74testing "dd conv=noerror with IF" "dd conv=noerror if=input $opt" "I WANT\n" \ 75 "I WANT\n" "" 76 77testing "dd conv=fsync" "dd conv=fsync $opt" "I WANT\n" "" "I WANT\n" 78testing "dd conv=fsync with IF" "dd conv=fsync if=input $opt" "I WANT\n" \ 79 "I WANT\n" "" 80 81testing "dd conv=sync" "dd conv=sync $opt | head -n 1" "I WANT\n" "" "I WANT\n" 82testing "dd conv=sync with IF" "dd conv=sync if=input $opt | head -n 1" "I WANT\n" \ 83 "I WANT\n" "" 84