@@ -1295,6 +1295,77 @@ describe('docker-manager', () => {
12951295 }
12961296 } ) ;
12971297
1298+ it ( 'should exclude specified variables when excludeEnv is set with envAll' , ( ) => {
1299+ process . env . CUSTOM_HOST_VAR = 'test_value' ;
1300+ process . env . SECRET_TOKEN = 'super-secret' ;
1301+
1302+ try {
1303+ const configWithExcludeEnv = { ...mockConfig , envAll : true , excludeEnv : [ 'SECRET_TOKEN' ] } ;
1304+ const result = generateDockerCompose ( configWithExcludeEnv , mockNetworkConfig ) ;
1305+ const env = result . services . agent . environment as Record < string , string > ;
1306+
1307+ // Should pass through non-excluded vars
1308+ expect ( env . CUSTOM_HOST_VAR ) . toBe ( 'test_value' ) ;
1309+ // Should NOT pass through excluded var
1310+ expect ( env . SECRET_TOKEN ) . toBeUndefined ( ) ;
1311+ } finally {
1312+ delete process . env . CUSTOM_HOST_VAR ;
1313+ delete process . env . SECRET_TOKEN ;
1314+ }
1315+ } ) ;
1316+
1317+ it ( 'should exclude multiple variables when excludeEnv contains multiple names' , ( ) => {
1318+ process . env . TOKEN_A = 'value-a' ;
1319+ process . env . TOKEN_B = 'value-b' ;
1320+ process . env . SAFE_VAR = 'safe' ;
1321+
1322+ try {
1323+ const configWithExcludeEnv = { ...mockConfig , envAll : true , excludeEnv : [ 'TOKEN_A' , 'TOKEN_B' ] } ;
1324+ const result = generateDockerCompose ( configWithExcludeEnv , mockNetworkConfig ) ;
1325+ const env = result . services . agent . environment as Record < string , string > ;
1326+
1327+ expect ( env . TOKEN_A ) . toBeUndefined ( ) ;
1328+ expect ( env . TOKEN_B ) . toBeUndefined ( ) ;
1329+ expect ( env . SAFE_VAR ) . toBe ( 'safe' ) ;
1330+ } finally {
1331+ delete process . env . TOKEN_A ;
1332+ delete process . env . TOKEN_B ;
1333+ delete process . env . SAFE_VAR ;
1334+ }
1335+ } ) ;
1336+
1337+ it ( 'should have no effect when excludeEnv is set but envAll is false' , ( ) => {
1338+ process . env . SECRET_TOKEN = 'super-secret' ;
1339+
1340+ try {
1341+ const configWithExcludeEnv = { ...mockConfig , envAll : false , excludeEnv : [ 'SECRET_TOKEN' ] } ;
1342+ const result = generateDockerCompose ( configWithExcludeEnv , mockNetworkConfig ) ;
1343+ const env = result . services . agent . environment as Record < string , string > ;
1344+
1345+ // envAll is false so SECRET_TOKEN was never going to be injected anyway
1346+ expect ( env . SECRET_TOKEN ) . toBeUndefined ( ) ;
1347+ } finally {
1348+ delete process . env . SECRET_TOKEN ;
1349+ }
1350+ } ) ;
1351+
1352+ it ( 'should exclude GITHUB_TOKEN from env-all passthrough when specified in excludeEnv' , ( ) => {
1353+ const prevToken = process . env . GITHUB_TOKEN ;
1354+ process . env . GITHUB_TOKEN = 'ghp_test_token' ;
1355+
1356+ try {
1357+ const configWithExcludeEnv = { ...mockConfig , envAll : true , excludeEnv : [ 'GITHUB_TOKEN' ] } ;
1358+ const result = generateDockerCompose ( configWithExcludeEnv , mockNetworkConfig ) ;
1359+ const env = result . services . agent . environment as Record < string , string > ;
1360+
1361+ // GITHUB_TOKEN should be excluded from the env-all passthrough
1362+ expect ( env . GITHUB_TOKEN ) . toBeUndefined ( ) ;
1363+ } finally {
1364+ if ( prevToken !== undefined ) process . env . GITHUB_TOKEN = prevToken ;
1365+ else delete process . env . GITHUB_TOKEN ;
1366+ }
1367+ } ) ;
1368+
12981369 it ( 'should auto-inject GH_HOST from GITHUB_SERVER_URL when envAll is true' , ( ) => {
12991370 const prevServerUrl = process . env . GITHUB_SERVER_URL ;
13001371 const prevGhHost = process . env . GH_HOST ;
0 commit comments