diff --git a/embedded_postgres.go b/embedded_postgres.go index 33132df..afe8497 100644 --- a/embedded_postgres.go +++ b/embedded_postgres.go @@ -201,8 +201,10 @@ func (ep *EmbeddedPostgres) Stop() error { func encodeOptions(port uint32, parameters map[string]string) string { options := []string{fmt.Sprintf("-p %d", port)} for k, v := range parameters { - // Single-quote parameter values - they may have spaces. - options = append(options, fmt.Sprintf("-c %s='%s'", k, v)) + // Double-quote parameter values - they may have spaces. + // Careful: CMD on Windows uses only double quotes to delimit strings. + // It treats single quotes as regular characters. + options = append(options, fmt.Sprintf("-c %s=\"%s\"", k, v)) } return strings.Join(options, " ") } diff --git a/platform-test/platform_test.go b/platform-test/platform_test.go index 42addc0..ea3a291 100644 --- a/platform-test/platform_test.go +++ b/platform-test/platform_test.go @@ -42,10 +42,14 @@ func Test_AllMajorVersions(t *testing.T) { port := uint32(5555 + testNumber) runtimePath := filepath.Join(tempExtractLocation, string(version)) + maxConnections := 150 database := embeddedpostgres.NewDatabase(embeddedpostgres.DefaultConfig(). Version(version). Port(port). - RuntimePath(runtimePath)) + RuntimePath(runtimePath). + StartParameters(map[string]string{ + "max_connections": fmt.Sprintf("%d", maxConnections), + })) if err := database.Start(); err != nil { shutdownDBAndFail(t, err, database, version) @@ -64,6 +68,24 @@ func Test_AllMajorVersions(t *testing.T) { shutdownDBAndFail(t, err, database, version) } + rows, err = db.Query(`SELECT setting::int max_conn FROM pg_settings WHERE name = 'max_connections';`) + if err != nil { + shutdownDBAndFail(t, err, database, version) + } + if !rows.Next() { + shutdownDBAndFail(t, fmt.Errorf("no rows returned for max_connections"), database, version) + } + var maxConnReturned int + if err := rows.Scan(&maxConnReturned); err != nil { + shutdownDBAndFail(t, err, database, version) + } + if maxConnReturned != maxConnections { + shutdownDBAndFail(t, fmt.Errorf("max_connections is %d, not %d as expected", maxConnReturned, maxConnections), database, version) + } + if err := rows.Close(); err != nil { + shutdownDBAndFail(t, err, database, version) + } + if err := db.Close(); err != nil { shutdownDBAndFail(t, err, database, version) }