Results for builtin-printf.test.sh

statusdashbashmkshzshashosh
pass 203123232019
ok 121303
N-I 120961111
BUG 000120
total333333333333
casedashbashmkshzshashoshdescription
0ok pass ok ok pass pass printf with no args
detailsdetailsdetails
1N-I pass N-I N-I N-I pass printf -v %s
detailsdetailsdetailsdetails
2N-I pass N-I N-I N-I pass printf -v %q
detailsdetailsdetailsdetails
3N-I pass N-I N-I N-I N-I printf -v a[1]
detailsdetailsdetailsdetailsdetails
4N-I pass N-I pass N-I pass dynamic declare instead of %s
detailsdetailsdetails
5N-I pass N-I N-I N-I pass dynamic declare instead of %q
detailsdetailsdetailsdetails
6N-I pass N-I N-I N-I ok printf -v dynamic scope
detailsdetailsdetailsdetailsdetails
7pass pass pass pass pass pass printf with too few arguments
8pass pass pass pass pass pass printf with too many arguments
9pass pass pass pass pass pass printf width strings
10pass pass pass pass pass pass printf integer
11pass pass pass pass pass N-I printf %6.4d -- precision means something different for integers !?
details
12pass pass pass pass pass pass printf %6.4s does both truncation and padding
13pass pass N-I pass pass pass printf %6.0s and %0.0s
details
14pass pass pass pass pass pass unsigned / octal / hex
15pass pass pass pass pass N-I negative numbers with unsigned / octal / hex
details
16pass pass pass pass pass N-I printf floating point (not required, but they all implement it)
details
17pass pass pass pass pass N-I printf floating point with - and 0
details
18pass pass pass pass pass N-I printf eE fF gG
details
19N-I pass pass pass pass pass printf backslash escapes
details
20pass pass pass pass pass pass printf octal backslash escapes
21N-I pass pass pass N-I pass printf unicode backslash escapes
detailsdetails
22pass pass pass pass pass pass printf invalid backslash escape (is ignored)
23pass pass pass pass pass pass printf % escapes
24pass pass pass pass pass N-I printf %b backslash escaping
details
25N-I pass pass pass N-I N-I printf %c -- doesn't respect UTF-8! Bad.
detailsdetailsdetails
26pass pass pass pass BUG ok printf invalid format
detailsdetails
27N-I ok pass ok N-I pass printf %q
detailsdetailsdetailsdetails
28N-I ok N-I ok N-I pass printf %6q (width)
detailsdetailsdetailsdetailsdetails
29pass pass pass pass pass N-I printf + and space flags
details
30pass pass pass pass pass N-I printf # flag
details
31pass pass pass BUG BUG ok Runtime error for invalid integer
detailsdetailsdetails
32N-I pass N-I N-I N-I N-I %(strftime format)T
detailsdetailsdetailsdetailsdetails
136 passed, 10 OK, 49 not implemented, 3 BUG, 0 failed, 0 timeouts, 0 cases skipped

Details on runs that didn't PASS

dash0 printf with no args

stdout:
stderr: 
/home/andy/git/oilshell/oil/_tmp/spec-bin/dash: 1: printf: usage: printf format [arg ...]
mksh0 printf with no args

stdout:
stderr: 
printf: missing operand
Try 'printf --help' for more information.
zsh0 printf with no args

stdout:
stderr: 
printf: not enough arguments
dash1 printf -v %s

stdout:
['']
stderr:
/home/andy/git/oilshell/oil/_tmp/spec-bin/dash: 2: printf: Illegal option -v
mksh1 printf -v %s

stdout:
-v['']
stderr:
printf: warning: ignoring excess arguments, starting with ‘foo’
zsh1 printf -v %s

stdout:
-v['']
stderr:
ash1 printf -v %s

stdout:
-v['']
stderr:
dash2 printf -v %q

stdout:
stderr: 
/home/andy/git/oilshell/oil/_tmp/spec-bin/dash: 2: printf: Illegal option -v
mksh2 printf -v %q

stdout:
-v
stderr:
printf: warning: ignoring excess arguments, starting with ‘foo’
zsh2 printf -v %q

stdout:
-v
stderr:
ash2 printf -v %q

stdout:
-v
stderr:
dash3 printf -v a[1]

stdout:
stderr: 
/home/andy/git/oilshell/oil/_tmp/spec-bin/dash: 1: Syntax error: "(" unexpected
mksh3 printf -v a[1]

stdout:
-vstatus=0
['a', 'b', 'c']
stderr:
printf: warning: ignoring excess arguments, starting with ‘a[1]’
zsh3 printf -v a[1]

stdout:
-vstatus=0
['a', 'b', 'c']
stderr:
ash3 printf -v a[1]

stdout:
stderr: 
_tmp/spec-bin/ash: syntax error: unexpected "("
osh3 printf -v a[1]

stdout:
status=2
['a', 'b', 'c']
stderr:
  printf -v 'a[1]' %s 'foo'
  ^~~~~~
[ stdin ]:2: 'printf' got invalid variable name 'a[1]'
dash4 dynamic declare instead of %s

stdout:
['']
stderr:
/home/andy/git/oilshell/oil/_tmp/spec-bin/dash: 2: declare: not found
mksh4 dynamic declare instead of %s

stdout:
['']
stderr:
/home/andy/git/oilshell/oil/_tmp/spec-bin/mksh: <stdin>[2]: declare: not found
ash4 dynamic declare instead of %s

stdout:
['']
stderr:
_tmp/spec-bin/ash: declare: not found
dash5 dynamic declare instead of %q

stdout:
stderr: 
/home/andy/git/oilshell/oil/_tmp/spec-bin/dash: 3: Bad substitution
mksh5 dynamic declare instead of %q

stdout:
stderr: 
/home/andy/git/oilshell/oil/_tmp/spec-bin/mksh: <stdin>[3]: declare: not found
zsh5 dynamic declare instead of %q

stdout:
stderr: 
zsh: bad substitution
ash5 dynamic declare instead of %q

stdout:
stderr: 
_tmp/spec-bin/ash: syntax error: bad substitution
dash6 printf -v dynamic scope

stdout:
not implemented
stderr:
mksh6 printf -v dynamic scope

stdout:
not implemented
stderr:
zsh6 printf -v dynamic scope

stdout:
not implemented
stderr:
ash6 printf -v dynamic scope

stdout:
not implemented
stderr:
osh6 printf -v dynamic scope

stdout:
dollar=dollar
--
dollar='$'
mylocal='mylocal'
--
dollar='$'
mylocal=
stderr:
osh11 printf %6.4d -- precision means something different for integers !?

stdout:
stderr: 
  [%6.4d]\n
      ^
(source.ArgvWord word_spid:2):1: precision can't be specified when here
mksh13 printf %6.0s and %0.0s

stdout:
[      ]
[
stderr:
printf: %0.0s: invalid conversion specification
osh15 negative numbers with unsigned / octal / hex

stdout:
stderr: 
  [%u]\n
    ^
(source.ArgvWord word_spid:2):1: fatal: Can't format negative number -42 with %u
osh16 printf floating point (not required, but they all implement it)

stdout:
stderr: 
  [%f]\n
    ^
(source.ArgvWord word_spid:2):1: osh printf doesn't support floating point
  [%.2f]\n
      ^
(source.ArgvWord word_spid:13):1: osh printf doesn't support floating point
  [%8.2f]\n
       ^
(source.ArgvWord word_spid:26):1: osh printf doesn't support floating point
  [%-8.2f]\n
        ^
(source.ArgvWord word_spid:40):1: osh printf doesn't support floating point
  [%-f]\n
     ^
(source.ArgvWord word_spid:55):1: osh printf doesn't support floating point
  [%-f]\n
     ^
(source.ArgvWord word_spid:67):1: osh printf doesn't support floating point
osh17 printf floating point with - and 0

stdout:
---
stderr:
  [%8.4f]\n
       ^
(source.ArgvWord word_spid:2):1: osh printf doesn't support floating point
  [%08.4f]\n
        ^
(source.ArgvWord word_spid:16):1: osh printf doesn't support floating point
  [%8.04f]\n
       ^
(source.ArgvWord word_spid:31):1: Invalid printf format character
  [%08.04f]\n
        ^
(source.ArgvWord word_spid:48):1: Invalid printf format character
  [%-8.4f]\n
        ^
(source.ArgvWord word_spid:67):1: osh printf doesn't support floating point
  [%-08.4f]\n
     ^
(source.ArgvWord word_spid:82):1: Invalid printf format character
  [%-8.04f]\n
        ^
(source.ArgvWord word_spid:94):1: Invalid printf format character
  [%-08.04f]\n
     ^
(source.ArgvWord word_spid:109):1: Invalid printf format character
osh18 printf eE fF gG

stdout:
stderr: 
  [%e]\n
    ^
(source.ArgvWord word_spid:2):1: osh printf doesn't support floating point
  [%E]\n
    ^
(source.ArgvWord word_spid:13):1: osh printf doesn't support floating point
  [%f]\n
    ^
(source.ArgvWord word_spid:24):1: osh printf doesn't support floating point
  [%g]\n
    ^
(source.ArgvWord word_spid:35):1: osh printf doesn't support floating point
  [%G]\n
    ^
(source.ArgvWord word_spid:46):1: osh printf doesn't support floating point
dash19 printf backslash escapes

stdout:
['a\tb']
['\\xE2\\x98\\xA0']
['$e']
['\x1f7']
stderr:
dash21 printf unicode backslash escapes

stdout:
['\\u2620']
['\\U0000065f']
stderr:
ash21 printf unicode backslash escapes

stdout:
['\\u2620']
['\\U0000065f']
stderr:
osh24 printf %b backslash escaping

stdout:
[\044]
status=2
stderr:
  [%b]\n
    ^
(source.ArgvWord word_spid:21):1: osh printf doesn't support backslash escaping (try $'\n')
dash25 printf %c -- doesn't respect UTF-8! Bad.

stdout:
[$\u03bc\u03bc]
1
stderr:
ash25 printf %c -- doesn't respect UTF-8! Bad.

stdout:
[\u03bc\u03bc]
1
stderr:
osh25 printf %c -- doesn't respect UTF-8! Bad.

stdout:
[μμ]
0
stderr:
  %c
   ^
(source.ArgvWord word_spid:24):1: osh printf doesn't support single characters (bytes)
ash26 printf invalid format

stdout:
status=0
status=0
stderr:
osh26 printf invalid format

stdout:
status=2
status=2
stderr:
  %z
   ^
(source.ArgvWord word_spid:2):1: Invalid printf format character
  %-z
    ^
(source.ArgvWord word_spid:17):1: Invalid printf format character
dash27 printf %q

stdout:
[
stderr:
/home/andy/git/oilshell/oil/_tmp/spec-bin/dash: 2: printf: %q: invalid directive
bash27 printf %q

stdout:
[a\ b]
stderr:
zsh27 printf %q

stdout:
[a\ b]
stderr:
ash27 printf %q

stdout:
[
stderr:
ash: %q]\n: invalid format
dash28 printf %6q (width)

stdout:
[
stderr:
/home/andy/git/oilshell/oil/_tmp/spec-bin/dash: 2: printf: %6q: invalid directive
bash28 printf %6q (width)

stdout:
[  a\ b]
stderr:
mksh28 printf %6q (width)

stdout:
[
stderr:
printf: %6q: invalid conversion specification
zsh28 printf %6q (width)

stdout:
[  a\ b]
stderr:
ash28 printf %6q (width)

stdout:
[
stderr:
ash: %6q]\n: invalid format
osh29 printf + and space flags

stdout:
stderr: 
  [%+d]\n
    ^
(source.ArgvWord word_spid:2):1: osh printf doesn't support the '+' flag
  [%+d]\n
    ^
(source.ArgvWord word_spid:14):1: osh printf doesn't support the '+' flag
  [% d]\n
    ^
(source.ArgvWord word_spid:26):1: osh printf doesn't support the ' ' flag
  [% d]\n
    ^
(source.ArgvWord word_spid:38):1: osh printf doesn't support the ' ' flag
osh30 printf # flag

stdout:
---
stderr:
  [%#o]\n
    ^
(source.ArgvWord word_spid:2):1: osh printf doesn't support the '#' flag
  [%#x]\n
    ^
(source.ArgvWord word_spid:14):1: osh printf doesn't support the '#' flag
  [%#X]\n
    ^
(source.ArgvWord word_spid:26):1: osh printf doesn't support the '#' flag
  [%#f]\n
    ^
(source.ArgvWord word_spid:42):1: osh printf doesn't support the '#' flag
zsh31 Runtime error for invalid integer

stdout:
0
status=1
0
status=0
stderr:
zsh: bad math expression: operator expected at `abc'
ash31 Runtime error for invalid integer

stdout:
0
status=1
0
status=1
stderr:
ash: invalid number '3abc'
ash: invalid number 'xyz'
osh31 Runtime error for invalid integer

stdout:
status=1
status=1
stderr:
  printf '%d\n' $x
                ^~
[ stdin ]:2: printf got invalid number '3abc'
  printf '%d\n' xyz
                ^~~
[ stdin ]:4: printf got invalid number 'xyz'
dash32 %(strftime format)T

stdout:
status=1
stderr:
/home/andy/git/oilshell/oil/_tmp/spec-bin/dash: 1: printf: %(: invalid directive
mksh32 %(strftime format)T

stdout:
status=1
stderr:
printf: %(: invalid conversion specification
zsh32 %(strftime format)T

stdout:
status=1
stderr:
printf: %(: invalid directive
ash32 %(strftime format)T

stdout:
status=1
stderr:
ash: %(%Y-%m-%d)T\n: invalid format
osh32 %(strftime format)T

stdout:
status=2
stderr:
  %(%Y-%m-%d)T\n
   ^
(source.ArgvWord word_spid:2):1: Invalid printf format character