Test --printf and --format.
authorJim Meyering <jim@meyering.net>
Thu, 15 Dec 2005 12:23:36 +0000 (12:23 +0000)
committerJim Meyering <jim@meyering.net>
Thu, 15 Dec 2005 12:23:36 +0000 (12:23 +0000)
tests/misc/stat-printf [new file with mode: 0755]

diff --git a/tests/misc/stat-printf b/tests/misc/stat-printf
new file mode 100755 (executable)
index 0000000..1b8dd85
--- /dev/null
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+  echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+    "so can't run this test"
+  exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $ME = $0) =~ s|.*/||;
+my $prog = 'stat';
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my @Tests =
+    (
+     # test-name, [option, option, ...] {OUT=>"expected-output"}
+     #
+     ['nl', q!--printf='\n' .!,          {OUT=>"\n"}],
+     ['no-nl', "--printf=%n .",          {OUT=>"."}],
+     ['pct-and-esc', q!--printf='\0%n\0' .!,    {OUT=>"\0.\0"}],
+     ['backslash', q!--printf='\\\\' .!, {OUT=>"\\"}],
+     ['nul', q!--printf='\0' .!,         {OUT=>"\0"}],
+     # Don't bother testing \v, since Perl doesn't handle it.
+     ['bel-etc', q!--printf='\a\b\f\n\r\t' .!, {OUT=>"\a\b\f\n\r\t"}],
+     ['octal-1', q!--printf='\012\377' .!,     {OUT=>"\012\377"}],
+     ['octal-2', q!--printf='.\012a\377b' .!,  {OUT=>".\012a\377b"}],
+     ['hex-1',   q!--printf='\x34\xf' .!,      {OUT=>"\x34\xf"}],
+     ['hex-2',   q!--printf='.\x18p\xfq' .!,   {OUT=>".\x18p\x0fq"}],
+     ['hex-3',   q!--printf='\x' .!,           {OUT=>'x'},
+        {ERR=>"$prog: warning: unrecognized escape `\\x'\n"}],
+
+     # With --format, there *is* a trailing newline.
+     ['f-nl', "--format=%n .",          {OUT=>".\n"}],
+     ['f-nl2', "--format=%n . .",       {OUT=>".\n.\n"}],
+
+     ['end-pct', "--printf=% .",       {OUT=>"%"}],
+     ['pct-pct', "--printf=%% .",      {OUT=>"%"}],
+
+     ['err-1', "--printf=%9% .",       {EXIT => 1},
+        {ERR=>"$prog: %9%: invalid directive\n"}],
+     ['err-2', "--printf=%9 .",        {EXIT => 1},
+        {ERR=>"$prog: %9: invalid directive\n"}],
+    );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $fail = run_tests ($ME, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF