@@ -101,6 +101,7 @@ public class EmbeddedPostgres implements Closeable
101101 private final Map <String , String > postgresConfig ;
102102 private final Map <String , String > localeConfig ;
103103 private final Map <String , String > connectConfig ;
104+ private final Map <String , String > environmentVariables ;
104105
105106 private volatile FileOutputStream lockStream ;
106107 private volatile FileLock lock ;
@@ -111,14 +112,15 @@ public class EmbeddedPostgres implements Closeable
111112
112113 EmbeddedPostgres (File parentDirectory , File dataDirectory , boolean cleanDataDirectory ,
113114 Map <String , String > postgresConfig , Map <String , String > localeConfig , int port , Map <String , String > connectConfig ,
114- PgBinaryResolver pgBinaryResolver , ProcessBuilder .Redirect errorRedirector , ProcessBuilder .Redirect outputRedirector ) throws IOException
115+ Map < String , String > environmentVariables , PgBinaryResolver pgBinaryResolver , ProcessBuilder .Redirect errorRedirector , ProcessBuilder .Redirect outputRedirector ) throws IOException
115116 {
116- this (parentDirectory , dataDirectory , cleanDataDirectory , postgresConfig , localeConfig , port , connectConfig ,
117+ this (parentDirectory , dataDirectory , cleanDataDirectory , postgresConfig , localeConfig , port , connectConfig , environmentVariables ,
117118 pgBinaryResolver , errorRedirector , outputRedirector , DEFAULT_PG_STARTUP_WAIT , null );
118119 }
119120
120121 EmbeddedPostgres (File parentDirectory , File dataDirectory , boolean cleanDataDirectory ,
121122 Map <String , String > postgresConfig , Map <String , String > localeConfig , int port , Map <String , String > connectConfig ,
123+ Map <String , String > environmentVariables ,
122124 PgBinaryResolver pgBinaryResolver , ProcessBuilder .Redirect errorRedirector ,
123125 ProcessBuilder .Redirect outputRedirector , Duration pgStartupWait ,
124126 File overrideWorkingDirectory ) throws IOException
@@ -127,6 +129,7 @@ public class EmbeddedPostgres implements Closeable
127129 this .postgresConfig = new HashMap <>(postgresConfig );
128130 this .localeConfig = new HashMap <>(localeConfig );
129131 this .connectConfig = new HashMap <>(connectConfig );
132+ this .environmentVariables = new HashMap <>(environmentVariables );
130133 this .port = port ;
131134 this .pgDir = prepareBinaries (pgBinaryResolver , overrideWorkingDirectory );
132135 this .errorRedirector = errorRedirector ;
@@ -490,6 +493,7 @@ public static class Builder
490493 private File builderDataDirectory ;
491494 private final Map <String , String > config = new HashMap <>();
492495 private final Map <String , String > localeConfig = new HashMap <>();
496+ private final Map <String , String > environmentVariables = new HashMap <>();
493497 private boolean builderCleanDataDirectory = true ;
494498 private int builderPort = 0 ;
495499 private final Map <String , String > connectConfig = new HashMap <>();
@@ -546,6 +550,11 @@ public Builder setConnectConfig(String key, String value) {
546550 connectConfig .put (key , value );
547551 return this ;
548552 }
553+
554+ public Builder setEnvironmentVariable (String key , String value ) {
555+ environmentVariables .put (key , value );
556+ return this ;
557+ }
549558
550559 public Builder setOverrideWorkingDirectory (File workingDirectory ) {
551560 overrideWorkingDirectory = workingDirectory ;
@@ -582,7 +591,7 @@ public EmbeddedPostgres start() throws IOException {
582591 builderDataDirectory = Files .createTempDirectory ("epg" ).toFile ();
583592 }
584593 return new EmbeddedPostgres (parentDirectory , builderDataDirectory , builderCleanDataDirectory , config ,
585- localeConfig , builderPort , connectConfig , pgBinaryResolver , errRedirector , outRedirector ,
594+ localeConfig , builderPort , connectConfig , environmentVariables , pgBinaryResolver , errRedirector , outRedirector ,
586595 pgStartupWait , overrideWorkingDirectory );
587596 }
588597
@@ -602,6 +611,7 @@ public boolean equals(Object o) {
602611 Objects .equals (config , builder .config ) &&
603612 Objects .equals (localeConfig , builder .localeConfig ) &&
604613 Objects .equals (connectConfig , builder .connectConfig ) &&
614+ Objects .equals (environmentVariables , builder .environmentVariables ) &&
605615 Objects .equals (pgBinaryResolver , builder .pgBinaryResolver ) &&
606616 Objects .equals (pgStartupWait , builder .pgStartupWait ) &&
607617 Objects .equals (errRedirector , builder .errRedirector ) &&
@@ -610,7 +620,7 @@ public boolean equals(Object o) {
610620
611621 @ Override
612622 public int hashCode () {
613- return Objects .hash (parentDirectory , builderDataDirectory , config , localeConfig , builderCleanDataDirectory , builderPort , connectConfig , pgBinaryResolver , pgStartupWait , errRedirector , outRedirector );
623+ return Objects .hash (parentDirectory , builderDataDirectory , config , localeConfig , builderCleanDataDirectory , builderPort , connectConfig , environmentVariables , pgBinaryResolver , pgStartupWait , errRedirector , outRedirector );
614624 }
615625 }
616626
@@ -894,6 +904,8 @@ public void applyTo(ProcessBuilder builder, List<String> arguments) {
894904 command .addAll (arguments );
895905
896906 builder .command (command );
907+
908+ builder .environment ().putAll (environmentVariables );
897909 }
898910 }
899911}
0 commit comments