@@ -226,14 +226,34 @@ func TestStartCommandSetsUpContainerCorrectly(t *testing.T) {
226226 })
227227}
228228
229- // containerEnvToMap converts a Docker container's []string env to a map.
230- func containerEnvToMap (envList []string ) map [string ]string {
231- m := make (map [string ]string , len (envList ))
232- for _ , e := range envList {
233- k , v , _ := strings .Cut (e , "=" )
234- m [k ] = v
235- }
236- return m
229+ func TestStartCommandPassesCIAndLocalStackEnvVars (t * testing.T ) {
230+ requireDocker (t )
231+ _ = env .Require (t , env .AuthToken )
232+
233+ cleanup ()
234+ t .Cleanup (cleanup )
235+
236+ t .Setenv ("CI" , "true" )
237+ t .Setenv ("LOCALSTACK_DISABLE_EVENTS" , "1" )
238+ t .Setenv ("LOCALSTACK_AUTH_TOKEN" , "host-token" )
239+
240+ mockServer := createMockLicenseServer (true )
241+ defer mockServer .Close ()
242+
243+ ctx := testContext (t )
244+ _ , stderr , err := runLstk (t , ctx , "" , env .With (env .APIEndpoint , mockServer .URL ), "start" )
245+ require .NoError (t , err , "lstk start failed: %s" , stderr )
246+ requireExitCode (t , 0 , err )
247+
248+ inspect , err := dockerClient .ContainerInspect (ctx , containerName )
249+ require .NoError (t , err , "failed to inspect container" )
250+ require .True (t , inspect .State .Running )
251+
252+ envVars := containerEnvToMap (inspect .Config .Env )
253+ assert .Equal (t , "true" , envVars ["CI" ])
254+ assert .Equal (t , "1" , envVars ["LOCALSTACK_DISABLE_EVENTS" ])
255+ assert .NotEmpty (t , envVars ["LOCALSTACK_AUTH_TOKEN" ])
256+ assert .NotEqual (t , "host-token" , envVars ["LOCALSTACK_AUTH_TOKEN" ], "host LOCALSTACK_AUTH_TOKEN should not be passed through" )
237257}
238258
239259// hasBindTarget checks if any bind mount targets the given container path.
@@ -247,6 +267,16 @@ func hasBindTarget(binds []string, containerPath string) bool {
247267 return false
248268}
249269
270+ // containerEnvToMap converts a Docker container's []string env to a map.
271+ func containerEnvToMap (envList []string ) map [string ]string {
272+ m := make (map [string ]string , len (envList ))
273+ for _ , e := range envList {
274+ k , v , _ := strings .Cut (e , "=" )
275+ m [k ] = v
276+ }
277+ return m
278+ }
279+
250280func cleanup () {
251281 ctx := context .Background ()
252282 _ = dockerClient .ContainerStop (ctx , containerName , container.StopOptions {})
0 commit comments