Thread: 003_extrafiles.pl test fails on Windows with the newer Perl versions
Hi, I was trying to install newer Perl versions to Windows CI images and found that 003_extrafiles.pl test fails on Windows with: (0.183s) not ok 2 - file lists match (0.000s) # Failed test 'file lists match' # at C:/cirrus/src/bin/pg_rewind/t/003_extrafiles.pl line 81. (0.000s) # Structures begin differing at: # $got->[0] = 'C:/cirrus/build/testrun/pg_rewind/003_extrafiles/data/t_003_extrafiles_primary_local_data/pgdata/tst_both_dir' # $expected->[0] = 'C:\cirrus\build/testrun/pg_rewind/003_extrafiles\data/t_003_extrafiles_primary_local_data/pgdata/tst_both_dir' (0.263s) not ok 5 - file lists match (0.000s) # Failed test 'file lists match' # at C:/cirrus/src/bin/pg_rewind/t/003_extrafiles.pl line 81. (0.000s) # Structures begin differing at: # $got->[0] = 'C:/cirrus/build/testrun/pg_rewind/003_extrafiles/data/t_003_extrafiles_primary_remote_data/pgdata/tst_both_dir' # $expected->[0] = 'C:\cirrus\build/testrun/pg_rewind/003_extrafiles\data/t_003_extrafiles_primary_remote_data/pgdata/tst_both_dir' It looks like File::Find converts backslashes to slashes in the newer Perl versions. I tried to find the related commit and found this: https://github.com/Perl/perl5/commit/414f14df98cb1c9a20f92c5c54948b67c09f072d To solve this, I did the same conversion for Windows before comparing the paths. And to support all Perl versions, I decided to always convert them on Windows regardless of the Perl's version. The fix is attached. I looked at other File::Find appearances in the code but they do not compare the paths. So, I do not think there is any need to fix them. Any kind of feedback would be appreciated. -- Regards, Nazir Bilal Yavuz Microsoft
Attachment
Re: 003_extrafiles.pl test fails on Windows with the newer Perl versions
From
Nazir Bilal Yavuz
Date:
Hi, On Tue, 30 Jan 2024 at 14:21, Nazir Bilal Yavuz <byavuz81@gmail.com> wrote: > > It looks like File::Find converts backslashes to slashes in the newer > Perl versions. I tried to find the related commit and found this: > https://github.com/Perl/perl5/commit/414f14df98cb1c9a20f92c5c54948b67c09f072d I forgot to mention that I used Strawberry Perl and these errors started with 'Perl v5.36.1.1'. -- Regards, Nazir Bilal Yavuz Microsoft
On 2024-01-30 Tu 06:21, Nazir Bilal Yavuz wrote: > Hi, > > I was trying to install newer Perl versions to Windows CI images and > found that 003_extrafiles.pl test fails on Windows with: > > (0.183s) not ok 2 - file lists match > (0.000s) # Failed test 'file lists match' > # at C:/cirrus/src/bin/pg_rewind/t/003_extrafiles.pl line 81. > (0.000s) # Structures begin differing at: > # $got->[0] = > 'C:/cirrus/build/testrun/pg_rewind/003_extrafiles/data/t_003_extrafiles_primary_local_data/pgdata/tst_both_dir' > # $expected->[0] = > 'C:\cirrus\build/testrun/pg_rewind/003_extrafiles\data/t_003_extrafiles_primary_local_data/pgdata/tst_both_dir' > > (0.263s) not ok 5 - file lists match > (0.000s) # Failed test 'file lists match' > # at C:/cirrus/src/bin/pg_rewind/t/003_extrafiles.pl line 81. > (0.000s) # Structures begin differing at: > # $got->[0] = > 'C:/cirrus/build/testrun/pg_rewind/003_extrafiles/data/t_003_extrafiles_primary_remote_data/pgdata/tst_both_dir' > # $expected->[0] = > 'C:\cirrus\build/testrun/pg_rewind/003_extrafiles\data/t_003_extrafiles_primary_remote_data/pgdata/tst_both_dir' > > It looks like File::Find converts backslashes to slashes in the newer > Perl versions. I tried to find the related commit and found this: > https://github.com/Perl/perl5/commit/414f14df98cb1c9a20f92c5c54948b67c09f072d > > To solve this, I did the same conversion for Windows before comparing > the paths. And to support all Perl versions, I decided to always > convert them on Windows regardless of the Perl's version. The fix is > attached. > > I looked at other File::Find appearances in the code but they do not > compare the paths. So, I do not think there is any need to fix them. > > Any kind of feedback would be appreciated. > Looks reasonable on the face of it. I'll see about pushing this today. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com
On 2024-01-30 Tu 06:49, Andrew Dunstan wrote: > > On 2024-01-30 Tu 06:21, Nazir Bilal Yavuz wrote: >> Hi, >> >> I was trying to install newer Perl versions to Windows CI images and >> found that 003_extrafiles.pl test fails on Windows with: >> >> (0.183s) not ok 2 - file lists match >> (0.000s) # Failed test 'file lists match' >> # at C:/cirrus/src/bin/pg_rewind/t/003_extrafiles.pl line 81. >> (0.000s) # Structures begin differing at: >> # $got->[0] = >> 'C:/cirrus/build/testrun/pg_rewind/003_extrafiles/data/t_003_extrafiles_primary_local_data/pgdata/tst_both_dir' >> >> # $expected->[0] = >> 'C:\cirrus\build/testrun/pg_rewind/003_extrafiles\data/t_003_extrafiles_primary_local_data/pgdata/tst_both_dir' >> >> >> (0.263s) not ok 5 - file lists match >> (0.000s) # Failed test 'file lists match' >> # at C:/cirrus/src/bin/pg_rewind/t/003_extrafiles.pl line 81. >> (0.000s) # Structures begin differing at: >> # $got->[0] = >> 'C:/cirrus/build/testrun/pg_rewind/003_extrafiles/data/t_003_extrafiles_primary_remote_data/pgdata/tst_both_dir' >> >> # $expected->[0] = >> 'C:\cirrus\build/testrun/pg_rewind/003_extrafiles\data/t_003_extrafiles_primary_remote_data/pgdata/tst_both_dir' >> >> >> It looks like File::Find converts backslashes to slashes in the newer >> Perl versions. I tried to find the related commit and found this: >> https://github.com/Perl/perl5/commit/414f14df98cb1c9a20f92c5c54948b67c09f072d >> >> >> To solve this, I did the same conversion for Windows before comparing >> the paths. And to support all Perl versions, I decided to always >> convert them on Windows regardless of the Perl's version. The fix is >> attached. >> >> I looked at other File::Find appearances in the code but they do not >> compare the paths. So, I do not think there is any need to fix them. >> >> Any kind of feedback would be appreciated. >> > > Looks reasonable on the face of it. I'll see about pushing this today. Pushed to all live branches. Thanks for the patch. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com
Andrew Dunstan <andrew@dunslane.net> writes: > Pushed to all live branches. Thanks for the patch. v12 and v13 branches aren't looking good: Global symbol "$test_primary_datadir" requires explicit package name (did you forget to declare "my $test_primary_datadir"?)at t/003_extrafiles.pl line 80. Execution of t/003_extrafiles.pl aborted due to compilation errors. # Looks like your test exited with 255 before it could output anything. [17:19:57] t/003_extrafiles.pl .......... Dubious, test returned 255 (wstat 65280, 0xff00) Failed 5/5 subtests regards, tom lane
On 2024-01-30 Tu 18:06, Tom Lane wrote: > Andrew Dunstan <andrew@dunslane.net> writes: >> Pushed to all live branches. Thanks for the patch. > v12 and v13 branches aren't looking good: > > Global symbol "$test_primary_datadir" requires explicit package name (did you forget to declare "my $test_primary_datadir"?)at t/003_extrafiles.pl line 80. > Execution of t/003_extrafiles.pl aborted due to compilation errors. > # Looks like your test exited with 255 before it could output anything. > [17:19:57] t/003_extrafiles.pl .......... > Dubious, test returned 255 (wstat 65280, 0xff00) > Failed 5/5 subtests > > Will fix. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com
Re: 003_extrafiles.pl test fails on Windows with the newer Perl versions
From
Nazir Bilal Yavuz
Date:
Hi, On Wed, 31 Jan 2024 at 01:18, Andrew Dunstan <andrew@dunslane.net> wrote: > > Pushed to all live branches. Thanks for the patch. Thanks for the push! -- Regards, Nazir Bilal Yavuz Microsoft
Seems like the back branches are still not quite there: I'm seeing Name "PostgreSQL::Test::Utils::windows_os" used only once: possible typo at t/003_extrafiles.pl line 74. in v12 and v13, while it's Name "PostgreSQL::Test::Utils::windows_os" used only once: possible typo at t/003_extrafiles.pl line 85. in v14. v15 and up are OK. regards, tom lane
On 2024-02-01 Th 12:32, Tom Lane wrote: > Seems like the back branches are still not quite there: I'm seeing > > Name "PostgreSQL::Test::Utils::windows_os" used only once: possible typo at t/003_extrafiles.pl line 74. > > in v12 and v13, while it's > > Name "PostgreSQL::Test::Utils::windows_os" used only once: possible typo at t/003_extrafiles.pl line 85. > > in v14. v15 and up are OK. > > *sigh* Have pushed a fix. Thanks for noticing. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com