]> granicus.if.org Git - postgresql/blob - src/bin/initdb/t/001_initdb.pl
Fix misc typos, mostly in comments.
[postgresql] / src / bin / initdb / t / 001_initdb.pl
1 # To test successful data directory creation with an additional feature, first
2 # try to elaborate the "successful creation" test instead of adding a test.
3 # Successful initdb consumes much time and I/O.
4
5 use strict;
6 use warnings;
7 use Fcntl ':mode';
8 use File::stat qw{lstat};
9 use PostgresNode;
10 use TestLib;
11 use Test::More tests => 18;
12
13 my $tempdir = TestLib::tempdir;
14 my $xlogdir = "$tempdir/pgxlog";
15 my $datadir = "$tempdir/data";
16
17 program_help_ok('initdb');
18 program_version_ok('initdb');
19 program_options_handling_ok('initdb');
20
21 command_fails([ 'initdb', '-S', "$tempdir/nonexistent" ],
22         'sync missing data directory');
23
24 mkdir $xlogdir;
25 mkdir "$xlogdir/lost+found";
26 command_fails(
27         [ 'initdb', '-X', $xlogdir, $datadir ],
28         'existing nonempty xlog directory');
29 rmdir "$xlogdir/lost+found";
30 command_fails(
31         [ 'initdb', '-X', 'pgxlog', $datadir ],
32         'relative xlog directory not allowed');
33
34 command_fails(
35         [ 'initdb', '-U', 'pg_test', $datadir ],
36         'role names cannot begin with "pg_"');
37
38 mkdir $datadir;
39
40 # make sure we run one successful test without a TZ setting so we test
41 # initdb's time zone setting code
42 {
43
44         # delete local only works from perl 5.12, so use the older way to do this
45         local (%ENV) = %ENV;
46         delete $ENV{TZ};
47
48         command_ok([ 'initdb', '-N', '-T', 'german', '-X', $xlogdir, $datadir ],
49                 'successful creation');
50
51         # Permissions on PGDATA should be default
52   SKIP:
53         {
54                 skip "unix-style permissions not supported on Windows", 1
55                   if ($windows_os);
56
57                 ok(check_mode_recursive($datadir, 0700, 0600),
58                         "check PGDATA permissions");
59         }
60 }
61 command_ok([ 'initdb', '-S', $datadir ], 'sync only');
62 command_fails([ 'initdb', $datadir ], 'existing data directory');
63
64 # Check group access on PGDATA
65 SKIP:
66 {
67         skip "unix-style permissions not supported on Windows", 2
68           if ($windows_os);
69
70         # Init a new db with group access
71         my $datadir_group = "$tempdir/data_group";
72
73         command_ok(
74                 [ 'initdb', '-g', $datadir_group ],
75                 'successful creation with group access');
76
77         ok(check_mode_recursive($datadir_group, 0750, 0640),
78                 'check PGDATA permissions');
79 }