xref: /openbsd-src/gnu/usr.bin/perl/ext/POSIX/t/usage.t (revision 5486feefcc8cb79b19e014ab332cc5dfd05b3b33)
1898184e3Ssthen#!./perl -w
2898184e3Ssthen
3898184e3Ssthenuse strict;
4898184e3Ssthenuse Test::More;
5898184e3Ssthenuse Config;
6898184e3Ssthen
7898184e3Ssthenplan(skip_all => "POSIX is unavailable")
8898184e3Ssthen    unless $Config{extensions} =~ /\bPOSIX\b/;
9898184e3Ssthen
10898184e3Ssthenrequire POSIX;
11898184e3Ssthen
12898184e3Ssthenmy %valid;
13898184e3Ssthenmy @all;
14898184e3Ssthen
15898184e3Ssthenmy $argc = 0;
16898184e3Ssthenfor my $list ([qw(errno fork getchar getegid geteuid getgid getgroups getlogin
17898184e3Ssthen		  getpgrp getpid getppid gets getuid time wait)],
18898184e3Ssthen	      [qw(abs alarm assert chdir closedir cos exit exp fabs fstat getc
19898184e3Ssthen		  getenv getgrgid getgrnam getpwnam getpwuid gmtime isatty
20898184e3Ssthen		  localtime log opendir raise readdir remove rewind rewinddir
215759b3d2Safresh1		  rmdir sin sleep sqrt stat strerror system
22898184e3Ssthen		  umask unlink)],
23898184e3Ssthen	      [qw(atan2 chmod creat kill link mkdir pow rename strstr waitpid)],
24898184e3Ssthen	      [qw(chown fcntl utime)]) {
25898184e3Ssthen    $valid{$_} = $argc foreach @$list;
26898184e3Ssthen    push @all, @$list;
27898184e3Ssthen    ++$argc;
28898184e3Ssthen}
29898184e3Ssthen
30898184e3Ssthenmy @try = 0 .. $argc - 1;
31898184e3Ssthenforeach my $func (sort @all) {
32898184e3Ssthen    my $arg_pat = join ', ', ('[a-z]+') x $valid{$func};
33898184e3Ssthen    my $expect = qr/\AUsage: POSIX::$func\($arg_pat\) at \(eval/;
34898184e3Ssthen    foreach my $try (@try) {
35898184e3Ssthen	    next if $valid{$func} == $try;
36898184e3Ssthen	    my $call = "POSIX::$func(" . join(', ', 1 .. $try) . ')';
37898184e3Ssthen	    is(eval "$call; 1", undef, "$call fails");
38898184e3Ssthen	    like($@, $expect, "POSIX::$func for $try arguments gives expected error")
39898184e3Ssthen    }
40898184e3Ssthen}
41898184e3Ssthen
42898184e3Ssthenforeach my $func (qw(printf sprintf)) {
43898184e3Ssthen    is(eval "POSIX::$func(); 1", undef, "POSIX::$func() fails");
44898184e3Ssthen    like($@, qr/\AUsage: POSIX::$func\(pattern, args\.\.\.\) at \(eval/,
45898184e3Ssthen	 "POSIX::$func for 0 arguments gives expected error");
46898184e3Ssthen}
47898184e3Ssthen
48*5486feefSafresh1foreach my $func (qw(cos exp fabs log sin sqrt)) {
49*5486feefSafresh1    local $_ = 3;
50*5486feefSafresh1    is(
51*5486feefSafresh1        eval "POSIX::$func(); 1",
52*5486feefSafresh1        undef,
53*5486feefSafresh1        "POSIX::$func() fails; needs explicit argument"
54*5486feefSafresh1    );
55*5486feefSafresh1}
56*5486feefSafresh1
57*5486feefSafresh1{
58*5486feefSafresh1    my ($current_umask, $umask_is_now);
59*5486feefSafresh1    $current_umask = umask();
60*5486feefSafresh1    $umask_is_now  = POSIX::umask($current_umask);
61*5486feefSafresh1    is($umask_is_now, $current_umask,
62*5486feefSafresh1        "POSIX::umask, when provided with current umask, returns same as builtin umask()");
63*5486feefSafresh1    is(
64*5486feefSafresh1        eval "$umask_is_now  = POSIX::umask($current_umask); 1",
65*5486feefSafresh1        undef,
66*5486feefSafresh1        "POSIX::umask() fails; needs explicit argument"
67*5486feefSafresh1    );
68*5486feefSafresh1}
69*5486feefSafresh1
70898184e3Ssthendone_testing();
71