@@ -13,7 +13,7 @@ use thiserror::Error;
13
13
14
14
pub mod platform;
15
15
16
- const DEFAULT_ENV_VARS : [ & str ; 1 ] = [ "VERCEL_ANALYTICS_ID" ] ;
16
+ const DEFAULT_ENV_VARS : & [ & str ] = [ "VERCEL_ANALYTICS_ID" , "VERCEL_ENV" ] . as_slice ( ) ;
17
17
18
18
#[ derive( Clone , Debug , Error ) ]
19
19
pub enum Error {
@@ -22,7 +22,7 @@ pub enum Error {
22
22
}
23
23
24
24
// TODO: Consider using immutable data structures here
25
- #[ derive( Clone , Debug , Default , Serialize ) ]
25
+ #[ derive( Clone , Debug , Default , Serialize , PartialEq ) ]
26
26
#[ serde( transparent) ]
27
27
pub struct EnvironmentVariableMap ( HashMap < String , String > ) ;
28
28
@@ -278,7 +278,7 @@ pub fn get_global_hashable_env_vars(
278
278
env_at_execution_start : & EnvironmentVariableMap ,
279
279
global_env : & [ String ] ,
280
280
) -> Result < DetailedMap , Error > {
281
- let default_env_var_map = env_at_execution_start. from_wildcards ( & DEFAULT_ENV_VARS [ .. ] ) ?;
281
+ let default_env_var_map = env_at_execution_start. from_wildcards ( DEFAULT_ENV_VARS ) ?;
282
282
283
283
let user_env_var_set =
284
284
env_at_execution_start. wildcard_map_from_wildcards_unresolved ( global_env) ?;
@@ -335,4 +335,27 @@ mod tests {
335
335
assert_eq ! ( actual. get( "Turbo" ) , None ) ;
336
336
}
337
337
}
338
+
339
+ #[ test_case( & [ ] , & [ "VERCEL_ANALYTICS_ID" , "VERCEL_ENV" ] ; "defaults" ) ]
340
+ #[ test_case( & [ "!VERCEL*" ] , & [ ] ; "removing defaults" ) ]
341
+ #[ test_case( & [ "FOO*" , "!FOOD" ] , & [ "FOO" , "FOOBAR" , "VERCEL_ANALYTICS_ID" , "VERCEL_ENV" ] ; "intersecting globs" ) ]
342
+ fn test_global_env ( inputs : & [ & str ] , expected : & [ & str ] ) {
343
+ let env_at_start = EnvironmentVariableMap (
344
+ vec ! [
345
+ ( "VERCEL_ENV" , "prod" ) ,
346
+ ( "VERCEL_ANALYTICS_ID" , "1" ) ,
347
+ ( "FOO" , "bar" ) ,
348
+ ( "FOOBAR" , "baz" ) ,
349
+ ( "FOOD" , "cheese" ) ,
350
+ ]
351
+ . into_iter ( )
352
+ . map ( |( k, v) | ( k. to_owned ( ) , v. to_owned ( ) ) )
353
+ . collect ( ) ,
354
+ ) ;
355
+ let inputs = inputs. iter ( ) . map ( |s| s. to_string ( ) ) . collect :: < Vec < _ > > ( ) ;
356
+ let actual = get_global_hashable_env_vars ( & env_at_start, & inputs) . unwrap ( ) ;
357
+ let mut actual = actual. all . keys ( ) . map ( |s| s. as_str ( ) ) . collect :: < Vec < _ > > ( ) ;
358
+ actual. sort ( ) ;
359
+ assert_eq ! ( actual, expected) ;
360
+ }
338
361
}
0 commit comments