I've updated the test to use `command_fails_like()` instead of `command_fails()`, so it now asserts that the error message matches the expected stderr output.
I also changed the test invocation to use the `-U => ''` syntax for consistency, as seen in the adjacent `--username` test.
Let me know if any further adjustments are needed.
> - A regression test is added to `src/bin/initdb/t/001_initdb.pl` to verify > that the case `initdb -U ''` fails as expected. [ ... ] > diff --git a/src/bin/initdb/t/001_initdb.pl b/src/bin/initdb/t/001_initdb.pl > index 15dd10ce40a..67eb53064f6 100644 > --- a/src/bin/initdb/t/001_initdb.pl > +++ b/src/bin/initdb/t/001_initdb.pl > @@ -37,6 +37,10 @@ command_fails( > command_fails([ 'initdb', '--username' => 'pg_test', $datadir ], > 'role names cannot begin with "pg_"'); > > +command_fails( > + [ 'initdb', '-U', '', $datadir ], > + 'empty username not allowed'); > +
This only tests that it fails, not that it fails as expected. It should use command_fails_like() to check that stderr contains the expected error. Also, it shoud use => between the -U option and its argument, as seen in the above test with --username.