Results for builtin-printf.test.sh

statusdashbashmkshzshashoshosh_ALT
pass 25402628252626
ok 1223166
N-I 1501391499
BUG 1012200
FAIL 0000011
total42424242424242
casedashbashmkshzshashoshosh_ALTdescription
0pass pass ok ok pass pass pass printf with no args
detailsdetails
1N-I pass N-I N-I N-I pass pass printf -v %s
detailsdetailsdetailsdetails
2N-I pass N-I N-I N-I pass pass printf -v %q
detailsdetailsdetailsdetails
3N-I pass N-I N-I N-I N-I N-I printf -v a[1]
detailsdetailsdetailsdetailsdetailsdetails
4N-I pass N-I pass N-I pass pass dynamic declare instead of %s
detailsdetailsdetails
5N-I pass N-I N-I N-I ok ok dynamic declare instead of %q
detailsdetailsdetailsdetailsdetailsdetails
6N-I pass N-I N-I N-I ok ok printf -v dynamic scope
detailsdetailsdetailsdetailsdetailsdetails
7pass pass pass pass pass pass pass printf with too few arguments
8pass pass pass pass pass pass pass printf with too many arguments
9pass pass pass pass pass pass pass printf width strings
10pass pass pass pass pass pass pass printf integer
11pass pass pass pass pass N-I N-I printf %6.4d -- precision means something different for integers !?
detailsdetails
12pass pass pass pass pass pass pass printf %6.4s does both truncation and padding
13pass pass N-I pass pass pass pass printf %6.0s and %0.0s
details
14pass pass N-I BUG pass pass pass printf %6.s and %0.s
detailsdetails
15pass pass pass pass pass pass pass printf %*.*s (width/precision from args)
16pass pass pass pass pass pass pass unsigned / octal / hex
17pass pass pass pass ok ok ok empty string (osh is more strict)
detailsdetailsdetails
18pass pass ok pass pass ok ok No char after ' (osh is more strict)
detailsdetailsdetails
19BUG pass BUG pass BUG FAIL FAIL Unicode char with ' (osh is more strict)
detailsdetailsdetailsdetailsdetails
20pass pass pass pass pass N-I N-I negative numbers with unsigned / octal / hex
detailsdetails
21pass pass pass pass pass N-I N-I printf floating point (not required, but they all implement it)
detailsdetails
22pass pass pass pass pass N-I N-I printf floating point with - and 0
detailsdetails
23pass pass pass pass pass N-I N-I printf eE fF gG
detailsdetails
24N-I pass pass pass pass pass pass printf backslash escapes
details
25pass pass pass pass pass pass pass printf octal backslash escapes
26N-I pass pass pass N-I pass pass printf unicode backslash escapes
detailsdetails
27pass pass pass pass pass pass pass printf invalid backslash escape (is ignored)
28pass pass pass pass pass pass pass printf % escapes
29pass pass pass pass pass pass pass printf %b backslash escaping
30pass pass pass pass pass pass pass printf %b with \c early return
31N-I pass pass pass N-I N-I N-I printf %c -- doesn't respect UTF-8! Bad.
detailsdetailsdetailsdetails
32ok pass pass pass pass ok ok printf invalid format
detailsdetailsdetails
33N-I ok pass ok N-I pass pass printf %q
detailsdetailsdetailsdetails
34N-I ok N-I ok N-I pass pass printf %6q (width)
detailsdetailsdetailsdetailsdetails
35pass pass pass pass pass N-I N-I printf + and space flags
detailsdetails
36pass pass pass pass pass N-I N-I printf # flag
detailsdetails
37pass pass pass BUG BUG ok ok Runtime error for invalid integer
detailsdetailsdetailsdetails
38N-I pass N-I N-I N-I pass pass %(strftime format)T
detailsdetailsdetailsdetails
39N-I pass N-I N-I N-I pass pass %(strftime format)T doesn't respect TZ if not exported
detailsdetailsdetailsdetails
40N-I pass N-I N-I N-I pass pass %(strftime format)T TZ in environ but not in shell's memory
detailsdetailsdetailsdetails
41N-I pass N-I N-I N-I pass pass %10.5(strftime format)T
detailsdetailsdetailsdetails
196 passed, 21 OK, 69 not implemented, 6 BUG, 1 failed, 0 timeouts, 0 cases skipped
1 failed under osh

Details on runs that didn't PASS

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:
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: 
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: 
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: 
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]'
osh_ALT3 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:
dash: 2: declare: not found
mksh4 dynamic declare instead of %s

stdout:
['']
stderr:
mksh: <stdin>[2]: declare: not found
ash4 dynamic declare instead of %s

stdout:
['']
stderr:
ash: declare: not found
dash5 dynamic declare instead of %q

stdout:
stderr: 
dash: 3: Bad substitution
mksh5 dynamic declare instead of %q

stdout:
stderr: 
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: 
ash: syntax error: bad substitution
osh5 dynamic declare instead of %q

stdout:
$'"quoted" with spaces and \\'
stderr:
osh_ALT5 dynamic declare instead of %q

stdout:
$'"quoted" with spaces and \\'
stderr:
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:
osh_ALT6 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
osh_ALT11 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
mksh14 printf %6.s and %0.s

stdout:
[      ]
[
stderr:
printf: %0.s: invalid conversion specification
zsh14 printf %6.s and %0.s

stdout:
[   foo]
[foo]
stderr:
ash17 empty string (osh is more strict)

stdout:
0
stderr:
ash: invalid number ''
osh17 empty string (osh is more strict)

stdout:
stderr: 
  printf '%d\n' ''
                ^
[ stdin ]:1: printf got invalid number ''
osh_ALT17 empty string (osh is more strict)

stdout:
stderr: 
  printf '%d\n' ''
                ^
[ stdin ]:1: printf got invalid number ''
mksh18 No char after ' (osh is more strict)

stdout:
0
stderr:
printf: ‘'’: expected a numeric value
osh18 No char after ' (osh is more strict)

stdout:
stderr: 
  printf '%d\n' \'
                ^~
[ stdin ]:1: printf got invalid number "'"
osh_ALT18 No char after ' (osh is more strict)

stdout:
stderr: 
  printf '%d\n' \'
                ^~
[ stdin ]:1: printf got invalid number "'"
dash19 Unicode char with ' (osh is more strict)

stdout:
ce
stderr:
mksh19 Unicode char with ' (osh is more strict)

stdout:
ce
stderr:
'printf: warning: \xbc: character(s) following character constant have been ignored\n'
ash19 Unicode char with ' (osh is more strict)

stdout:
ce
stderr:
osh19 Unicode char with ' (osh is more strict)

[osh stdout] Expected '3bc\n', got 'ce\n'

stdout:
ce
stderr:
osh_ALT19 Unicode char with ' (osh is more strict)

[osh_ALT stdout] Expected '3bc\n', got 'ce\n'

stdout:
ce
stderr:
osh20 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
osh_ALT20 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
osh21 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
osh_ALT21 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
osh22 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: osh printf doesn't support floating point
  [%-8.04f]\n
        ^
(source.ArgvWord word_spid:98):1: Invalid printf format character
  [%-08.04f]\n
         ^
(source.ArgvWord word_spid:113):1: Invalid printf format character
osh_ALT22 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: osh printf doesn't support floating point
  [%-8.04f]\n
        ^
(source.ArgvWord word_spid:98):1: Invalid printf format character
  [%-08.04f]\n
         ^
(source.ArgvWord word_spid:113):1: Invalid printf format character
osh23 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
osh_ALT23 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
dash24 printf backslash escapes

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

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

stdout:
['\\u2620']
['\\U0000065f']
stderr:
dash31 printf %c -- doesn't respect UTF-8! Bad.

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

stdout:
[\u03bc\u03bc]
1
stderr:
osh31 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)
osh_ALT31 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)
dash32 printf invalid format

stdout:
status=2
status=2
stderr:
dash: 1: printf: %z: invalid directive
dash: 3: printf: %-z: invalid directive
osh32 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
osh_ALT32 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
dash33 printf %q

stdout:
[
stderr:
dash: 2: printf: %q: invalid directive
bash33 printf %q

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

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

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

stdout:
[
stderr:
dash: 2: printf: %6q: invalid directive
bash34 printf %6q (width)

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

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

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

stdout:
[
stderr:
ash: %6q]\n: invalid format
osh35 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:13):1: osh printf doesn't support the '+' flag
  [% d]\n
    ^
(source.ArgvWord word_spid:24):1: osh printf doesn't support the ' ' flag
  [% d]\n
    ^
(source.ArgvWord word_spid:35):1: osh printf doesn't support the ' ' flag
osh_ALT35 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:13):1: osh printf doesn't support the '+' flag
  [% d]\n
    ^
(source.ArgvWord word_spid:24):1: osh printf doesn't support the ' ' flag
  [% d]\n
    ^
(source.ArgvWord word_spid:35):1: osh printf doesn't support the ' ' flag
osh36 printf # flag

stdout:
---
stderr:
  [%#o][%#o]\n
    ^
(source.ArgvWord word_spid:2):1: osh printf doesn't support the '#' flag
  [%#x][%#x]\n
    ^
(source.ArgvWord word_spid:15):1: osh printf doesn't support the '#' flag
  [%#X][%#X]\n
    ^
(source.ArgvWord word_spid:28):1: osh printf doesn't support the '#' flag
  [%.0f][%#.0f]\n
      ^
(source.ArgvWord word_spid:45):1: osh printf doesn't support floating point
  [%g][%#g]\n
    ^
(source.ArgvWord word_spid:60):1: osh printf doesn't support floating point
osh_ALT36 printf # flag

stdout:
---
stderr:
  [%#o][%#o]\n
    ^
(source.ArgvWord word_spid:2):1: osh printf doesn't support the '#' flag
  [%#x][%#x]\n
    ^
(source.ArgvWord word_spid:15):1: osh printf doesn't support the '#' flag
  [%#X][%#X]\n
    ^
(source.ArgvWord word_spid:28):1: osh printf doesn't support the '#' flag
  [%.0f][%#.0f]\n
      ^
(source.ArgvWord word_spid:45):1: osh printf doesn't support floating point
  [%g][%#g]\n
    ^
(source.ArgvWord word_spid:60):1: osh printf doesn't support floating point
zsh37 Runtime error for invalid integer

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

stdout:
0
status=1
0
status=1
stderr:
ash: invalid number '3abc'
ash: invalid number 'xyz'
osh37 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'
osh_ALT37 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'
dash38 %(strftime format)T

stdout:
status=2
stderr:
dash: 2: printf: %(: invalid directive
dash: 4: printf: %(: invalid directive
mksh38 %(strftime format)T

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

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

stdout:
status=1
stderr:
ash: %(%Y-%m-%d)T\n: invalid format
ash: %(%Y-%m-%d)T\n: invalid format
dash39 %(strftime format)T doesn't respect TZ if not exported

stdout:
stderr: 
dash: 2: printf: %(: invalid directive
dash: 4: printf: %(: invalid directive
mksh39 %(strftime format)T doesn't respect TZ if not exported

stdout:
stderr: 
printf: %(: invalid conversion specification
printf: %(: invalid conversion specification
zsh39 %(strftime format)T doesn't respect TZ if not exported

stdout:
stderr: 
printf: %(: invalid directive
printf: %(: invalid directive
ash39 %(strftime format)T doesn't respect TZ if not exported

stdout:
stderr: 
ash: %(%Y-%m-%d %H:%M:%S)T\n: invalid format
ash: %(%Y-%m-%d %H:%M:%S)T\n: invalid format
dash40 %(strftime format)T TZ in environ but not in shell's memory

stdout:
stderr: 
dash: 2: printf: %(: invalid directive
dash: 4: printf: %(: invalid directive
mksh40 %(strftime format)T TZ in environ but not in shell's memory

stdout:
stderr: 
printf: %(: invalid conversion specification
printf: %(: invalid conversion specification
zsh40 %(strftime format)T TZ in environ but not in shell's memory

stdout:
stderr: 
printf: %(: invalid directive
printf: %(: invalid directive
ash40 %(strftime format)T TZ in environ but not in shell's memory

stdout:
stderr: 
ash: %(%Y-%m-%d %H:%M:%S)T\n: invalid format
ash: %(%Y-%m-%d %H:%M:%S)T\n: invalid format
dash41 %10.5(strftime format)T

stdout:
[[status=2
stderr:
dash: 2: printf: %10.5(: invalid directive
dash: 4: printf: %10.5(: invalid directive
mksh41 %10.5(strftime format)T

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

stdout:
[[status=1
stderr:
printf: %10.5(: invalid directive
printf: %10.5(: invalid directive
ash41 %10.5(strftime format)T

stdout:
[[status=1
stderr:
ash: %10.5(%Y-%m-%d)T]\n: invalid format
ash: %10.5(%Y-%m-%d)T]\n: invalid format