busybox/testsuite/diff.tests
<<
>>
Prefs
   1#!/bin/sh
   2# Copyright 2008 by Denys Vlasenko
   3# Licensed under GPLv2, see file LICENSE in this source tree.
   4
   5. ./testing.sh
   6
   7# testing "test name" "commands" "expected result" "file input" "stdin"
   8
   9# diff outputs date/time in the header, which should not be analysed
  10# NB: sed has tab character in s command!
  11TRIM_TAB="sed 's/       .*//'"
  12
  13testing "diff of stdin" \
  14        "diff -u - input | $TRIM_TAB" \
  15"\
  16--- -
  17+++ input
  18@@ -1 +1,3 @@
  19+qwe
  20 asd
  21+zxc
  22" \
  23        "qwe\nasd\nzxc\n" \
  24        "asd\n"
  25
  26testing "diff of stdin, no newline in the file" \
  27        "diff -u - input | $TRIM_TAB" \
  28"\
  29--- -
  30+++ input
  31@@ -1 +1,3 @@
  32+qwe
  33 asd
  34+zxc
  35\\ No newline at end of file
  36" \
  37        "qwe\nasd\nzxc" \
  38        "asd\n"
  39
  40# we also test that stdin is in fact NOT read
  41testing "diff of stdin, twice" \
  42        'diff - -; echo $?; wc -c' \
  43        "0\n5\n" \
  44        "" \
  45        "stdin"
  46
  47testing "diff of empty file against stdin" \
  48        "diff -u - input | $TRIM_TAB" \
  49"\
  50--- -
  51+++ input
  52@@ -1 +0,0 @@
  53-a
  54" \
  55        "" \
  56        "a\n"
  57
  58testing "diff of empty file against nonempty one" \
  59        "diff -u - input | $TRIM_TAB" \
  60"\
  61--- -
  62+++ input
  63@@ -0,0 +1 @@
  64+a
  65" \
  66        "a\n" \
  67        ""
  68
  69testing "diff -b treats EOF as whitespace" \
  70        'diff -ub - input; echo $?' \
  71        "0\n" \
  72        "abc" \
  73        "abc "
  74
  75testing "diff -b treats all spaces as equal" \
  76        'diff -ub - input; echo $?' \
  77        "0\n" \
  78        "a \t c\n" \
  79        "a\t \tc\n"
  80
  81testing "diff -B ignores changes whose lines are all blank" \
  82        'diff -uB - input; echo $?' \
  83        "0\n" \
  84        "a\n" \
  85        "\na\n\n"
  86
  87testing "diff -B does not ignore changes whose lines are not all blank" \
  88        "diff -uB - input | $TRIM_TAB" \
  89"\
  90--- -
  91+++ input
  92@@ -1,3 +1 @@
  93-
  94-b
  95-
  96+a
  97" \
  98        "a\n" \
  99        "\nb\n\n"
 100
 101testing "diff -B ignores blank single line change" \
 102        'diff -qB - input; echo $?' \
 103        "0\n" \
 104        "\n1\n" \
 105        "1\n"
 106
 107testing "diff -B does not ignore non-blank single line change" \
 108        'diff -qB - input; echo $?' \
 109        "Files - and input differ\n1\n" \
 110        "0\n" \
 111        "1\n"
 112
 113testing "diff always takes context from old file" \
 114        "diff -ub - input | $TRIM_TAB" \
 115"\
 116--- -
 117+++ input
 118@@ -1 +1,3 @@
 119+abc
 120 a c
 121+def
 122" \
 123        "abc\na  c\ndef\n" \
 124        "a c\n"
 125
 126# testing "test name" "commands" "expected result" "file input" "stdin"
 127
 128# clean up
 129rm -rf diff1 diff2
 130
 131mkdir diff1 diff2 diff2/subdir
 132echo qwe >diff1/-
 133echo asd >diff2/subdir/-
 134optional FEATURE_DIFF_DIR
 135testing "diff diff1 diff2/subdir" \
 136        "diff -ur diff1 diff2/subdir | $TRIM_TAB" \
 137"\
 138--- diff1/-
 139+++ diff2/subdir/-
 140@@ -1 +1 @@
 141-qwe
 142+asd
 143" \
 144        "" ""
 145SKIP=
 146
 147# using directory structure from prev test...
 148optional FEATURE_DIFF_DIR
 149testing "diff dir dir2/file/-" \
 150        "diff -ur diff1 diff2/subdir/- | $TRIM_TAB" \
 151"\
 152--- diff1/-
 153+++ diff2/subdir/-
 154@@ -1 +1 @@
 155-qwe
 156+asd
 157" \
 158        "" ""
 159SKIP=
 160
 161# using directory structure from prev test...
 162mkdir diff1/test
 163mkfifo diff2/subdir/test
 164optional FEATURE_DIFF_DIR
 165testing "diff of dir and fifo" \
 166        "diff -ur diff1 diff2/subdir | $TRIM_TAB" \
 167"\
 168--- diff1/-
 169+++ diff2/subdir/-
 170@@ -1 +1 @@
 171-qwe
 172+asd
 173Only in diff2/subdir: test
 174" \
 175        "" ""
 176SKIP=
 177
 178# using directory structure from prev test...
 179rmdir diff1/test
 180echo >diff1/test
 181optional FEATURE_DIFF_DIR
 182testing "diff of file and fifo" \
 183        "diff -ur diff1 diff2/subdir | $TRIM_TAB" \
 184"\
 185--- diff1/-
 186+++ diff2/subdir/-
 187@@ -1 +1 @@
 188-qwe
 189+asd
 190File diff2/subdir/test is not a regular file or directory and was skipped
 191" \
 192        "" ""
 193SKIP=
 194
 195# using directory structure from prev test...
 196mkfifo diff1/test2
 197optional FEATURE_DIFF_DIR
 198testing "diff -rN does not read non-regular files" \
 199        "diff -urN diff1 diff2/subdir | $TRIM_TAB" \
 200"\
 201--- diff1/-
 202+++ diff2/subdir/-
 203@@ -1 +1 @@
 204-qwe
 205+asd
 206File diff2/subdir/test is not a regular file or directory and was skipped
 207File diff1/test2 is not a regular file or directory and was skipped
 208" \
 209        "" ""
 210SKIP=
 211
 212# clean up
 213rm -rf diff1 diff2
 214
 215# NOT using directory structure from prev test...
 216mkdir diff1 diff2
 217echo qwe >diff1/-
 218echo rty >diff2/-
 219optional FEATURE_DIFF_DIR
 220testing "diff diff1 diff2/" \
 221        "diff -ur diff1 diff2/ | $TRIM_TAB; diff -ur .///diff1 diff2//// | $TRIM_TAB" \
 222"\
 223--- diff1/-
 224+++ diff2/-
 225@@ -1 +1 @@
 226-qwe
 227+rty
 228--- .///diff1/-
 229+++ diff2////-
 230@@ -1 +1 @@
 231-qwe
 232+rty
 233" \
 234        "" ""
 235SKIP=
 236
 237# clean up
 238rm -rf diff1 diff2
 239
 240exit $FAILCOUNT
 241