From 45f52709d86ceaaf282a440f6311c51fc526340b Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Mon, 13 Dec 2021 11:17:41 -0800 Subject: [PATCH] Make PG_TEST_USE_UNIX_SOCKETS work for tap tests on windows. We need to replace windows-style \ path separators with / when putting socket directories either in postgresql.conf or libpq connection strings, otherwise they are interpreted as escapes. Author: Andres Freund Reviewed-By: Peter Eisentraut Discussion: https://postgr.es/m/4da250a5-4222-1522-f14d-8a72bcf7e38e@enterprisedb.com --- src/bin/pg_ctl/t/001_start_stop.pl | 1 + src/test/perl/PostgreSQL/Test/Cluster.pm | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/bin/pg_ctl/t/001_start_stop.pl b/src/bin/pg_ctl/t/001_start_stop.pl index f95352bf94f..fdde4f0fb75 100644 --- a/src/bin/pg_ctl/t/001_start_stop.pl +++ b/src/bin/pg_ctl/t/001_start_stop.pl @@ -35,6 +35,7 @@ print $conf PostgreSQL::Test::Utils::slurp_file($ENV{TEMP_CONFIG}) if ($use_unix_sockets) { print $conf "listen_addresses = ''\n"; + $tempdir_short =~ s!\\!/!g if $PostgreSQL::Test::Utils::windows_os; print $conf "unix_socket_directories = '$tempdir_short'\n"; } else diff --git a/src/test/perl/PostgreSQL/Test/Cluster.pm b/src/test/perl/PostgreSQL/Test/Cluster.pm index 9467a199c8f..c061e850fb0 100644 --- a/src/test/perl/PostgreSQL/Test/Cluster.pm +++ b/src/test/perl/PostgreSQL/Test/Cluster.pm @@ -119,7 +119,18 @@ INIT $use_tcp = !$PostgreSQL::Test::Utils::use_unix_sockets; $test_localhost = "127.0.0.1"; $last_host_assigned = 1; - $test_pghost = $use_tcp ? $test_localhost : PostgreSQL::Test::Utils::tempdir_short; + if ($use_tcp) + { + $test_pghost = $test_localhost; + } + else + { + # On windows, replace windows-style \ path separators with / when + # putting socket directories either in postgresql.conf or libpq + # connection strings, otherwise they are interpreted as escapes. + $test_pghost = PostgreSQL::Test::Utils::tempdir_short; + $test_pghost =~ s!\\!/!g if $PostgreSQL::Test::Utils::windows_os; + } $ENV{PGHOST} = $test_pghost; $ENV{PGDATABASE} = 'postgres'; -- 2.39.5