Skip to content

Commit f5c275b

Browse files
authored
fix: StartParameters on Windows (#146)
* change string delimiting char based on os * test StartParameters in platform_test * explanatory comment * use double quotes instead of single quotes for parameter values on all platforms
1 parent 7c0ced3 commit f5c275b

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

embedded_postgres.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,10 @@ func (ep *EmbeddedPostgres) Stop() error {
201201
func encodeOptions(port uint32, parameters map[string]string) string {
202202
options := []string{fmt.Sprintf("-p %d", port)}
203203
for k, v := range parameters {
204-
// Single-quote parameter values - they may have spaces.
205-
options = append(options, fmt.Sprintf("-c %s='%s'", k, v))
204+
// Double-quote parameter values - they may have spaces.
205+
// Careful: CMD on Windows uses only double quotes to delimit strings.
206+
// It treats single quotes as regular characters.
207+
options = append(options, fmt.Sprintf("-c %s=\"%s\"", k, v))
206208
}
207209
return strings.Join(options, " ")
208210
}

platform-test/platform_test.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,14 @@ func Test_AllMajorVersions(t *testing.T) {
4242
port := uint32(5555 + testNumber)
4343
runtimePath := filepath.Join(tempExtractLocation, string(version))
4444

45+
maxConnections := 150
4546
database := embeddedpostgres.NewDatabase(embeddedpostgres.DefaultConfig().
4647
Version(version).
4748
Port(port).
48-
RuntimePath(runtimePath))
49+
RuntimePath(runtimePath).
50+
StartParameters(map[string]string{
51+
"max_connections": fmt.Sprintf("%d", maxConnections),
52+
}))
4953

5054
if err := database.Start(); err != nil {
5155
shutdownDBAndFail(t, err, database, version)
@@ -64,6 +68,24 @@ func Test_AllMajorVersions(t *testing.T) {
6468
shutdownDBAndFail(t, err, database, version)
6569
}
6670

71+
rows, err = db.Query(`SELECT setting::int max_conn FROM pg_settings WHERE name = 'max_connections';`)
72+
if err != nil {
73+
shutdownDBAndFail(t, err, database, version)
74+
}
75+
if !rows.Next() {
76+
shutdownDBAndFail(t, fmt.Errorf("no rows returned for max_connections"), database, version)
77+
}
78+
var maxConnReturned int
79+
if err := rows.Scan(&maxConnReturned); err != nil {
80+
shutdownDBAndFail(t, err, database, version)
81+
}
82+
if maxConnReturned != maxConnections {
83+
shutdownDBAndFail(t, fmt.Errorf("max_connections is %d, not %d as expected", maxConnReturned, maxConnections), database, version)
84+
}
85+
if err := rows.Close(); err != nil {
86+
shutdownDBAndFail(t, err, database, version)
87+
}
88+
6789
if err := db.Close(); err != nil {
6890
shutdownDBAndFail(t, err, database, version)
6991
}

0 commit comments

Comments
 (0)