summaryrefslogtreecommitdiff
path: root/tests/misc/md5sum-bsd
diff options
context:
space:
mode:
Diffstat (limited to 'tests/misc/md5sum-bsd')
-rwxr-xr-xtests/misc/md5sum-bsd49
1 files changed, 48 insertions, 1 deletions
diff --git a/tests/misc/md5sum-bsd b/tests/misc/md5sum-bsd
index 8226d7ab7..ce4117679 100755
--- a/tests/misc/md5sum-bsd
+++ b/tests/misc/md5sum-bsd
@@ -1,5 +1,6 @@
#!/bin/sh
-# make sure 'md5sum -c' works for alternate BSD format (md5 -r)
+# 'md5sum' tests for generation and checking of
+# BSD traditional and alternate formats (md5 [-r])
# Copyright (C) 2011-2012 Free Software Foundation, Inc.
@@ -19,6 +20,9 @@
. "${srcdir=.}/init.sh"; path_prepend_ ../src
print_ver_ md5sum
+## BSD alternate format tests ##
+
+# Ensure we can --check BSD alternate format.
# Note we start this list with a name
# that's unambiguous in BSD format.
# I.E. one not starting with ' ' or '*'
@@ -38,4 +42,47 @@ md5sum --strict -c check.md5 || fail=1
# an option to avoid the ambiguity.
tail -n+2 check.md5 | md5sum --strict -c && fail=1
+
+## BSD traditional format tests (--tag option) ##
+
+# Ensure --tag and --check are mutually exclusive
+md5sum --tag --check /dev/null && fail=1
+
+# Ensure --tag and --text are mutually exclusive
+# We don't support --text with BSD tradition format,
+# as that would complicate the output format,
+# while providing little benefit over --text processing
+# available with the default md5sum output format.
+md5sum --tag --text /dev/null && fail=1
+
+# Ensure we can --check BSD traditional format we produce
+rm check.md5
+for i in 'a' ' b' '*c' 'dd' ' '; do
+ echo "$i" > "$i"
+ md5sum --tag "$i" >> check.md5
+done
+md5sum --strict -c check.md5 || fail=1
+
+# Ensure we can --check BSD traditional format we produce
+# with the GNU extension of escaped newlines
+nl='
+'
+tab=' '
+rm check.md5
+for i in 'a\b' 'a\' "a${nl}b" "a${tab}b"; do
+ :> "$i"
+ md5sum --tag "$i" >> check.md5
+done
+md5sum --strict -c check.md5 || fail=1
+
+# Ensure BSD traditional format with GNU extension escapes
+# is in the expected format
+ex_file='test
+\\file'
+ex_output='\MD5 (test\n\\\\file) = d41d8cd98f00b204e9800998ecf8427e'
+touch "$ex_file"
+printf "%s\n" "$ex_output" > exp
+md5sum --tag "$ex_file" > out
+compare exp out || fail=1
+
Exit $fail