tests: dd: add a test for the required behavior
authorJim Meyering <meyering@redhat.com>
Fri, 21 Nov 2008 22:12:17 +0000 (23:12 +0100)
committerJim Meyering <meyering@redhat.com>
Sat, 22 Nov 2008 09:31:08 +0000 (10:31 +0100)
* tests/dd/reblock: New file.  Test for the required functionality.
Based on an example and discussion from this thread:
http://lists.gnu.org/archive/html/bug-coreutils/2008-11/msg00153.html
* tests/Makefile.am (TESTS): Add dd/reblock.

tests/Makefile.am
tests/dd/reblock [new file with mode: 0755]

index f264bd0..8c768bb 100644 (file)
@@ -283,6 +283,7 @@ TESTS =                                             \
   cp/thru-dangling                             \
   dd/misc                                      \
   dd/not-rewound                               \
+  dd/reblock                                   \
   dd/skip-seek                                 \
   dd/skip-seek2                                        \
   dd/unblock-sync                              \
diff --git a/tests/dd/reblock b/tests/dd/reblock
new file mode 100755 (executable)
index 0000000..542529a
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/sh
+# test dd reblocking vs. bs=
+
+# Copyright (C) 2008 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+if test "$VERBOSE" = yes; then
+  set -x
+  dd --version
+fi
+
+. $srcdir/lang-default
+. $srcdir/test-lib.sh
+
+cat <<\EOF > exp-reblock || framework_failure
+0+2 records in
+1+1 records out
+4 bytes (4 B) copied
+EOF
+
+cat <<\EOF > exp-no-reblock || framework_failure
+0+2 records in
+0+2 records out
+4 bytes (4 B) copied
+EOF
+
+fail=0
+
+# ensure that dd reblocks when bs= is not specified
+(echo x; sleep .1; echo y) | dd ibs=3 obs=3 > out 2> err || fail=1
+sed 's/,.*//' err > k && mv k err
+compare err exp-reblock || fail=1
+
+# Demonstrate that bs=N supersedes even following ibs= and obs= settings.
+(echo x; sleep .1; echo y) | dd bs=3 ibs=1 obs=1 > out 2> err || fail=1
+sed 's/,.*//' err > k && mv k err
+compare err exp-no-reblock || fail=1
+
+Exit $fail