@@ -24,6 +24,7 @@ class TestProcessInfo : XCTestCase {
2424 ( " test_operatingSystemVersion " , test_operatingSystemVersion ) ,
2525 ( " test_processName " , test_processName ) ,
2626 ( " test_globallyUniqueString " , test_globallyUniqueString ) ,
27+ ( " test_environment " , test_environment) ,
2728 ]
2829 }
2930
@@ -66,5 +67,41 @@ class TestProcessInfo : XCTestCase {
6667 XCTAssertEqual ( parts [ 3 ] . utf16. count, 4 )
6768 XCTAssertEqual ( parts [ 4 ] . utf16. count, 12 )
6869 }
69-
70+
71+ func test_environment( ) {
72+ let preset = ProcessInfo . processInfo. environment [ " test " ]
73+ setenv ( " test " , " worked " , 1 )
74+ let postset = ProcessInfo . processInfo. environment [ " test " ]
75+ XCTAssertNil ( preset)
76+ XCTAssertEqual ( postset, " worked " )
77+
78+ // Bad values that wont be stored
79+ XCTAssertEqual ( setenv ( " " , " " , 1 ) , - 1 )
80+ XCTAssertEqual ( setenv ( " bad1= " , " " , 1 ) , - 1 )
81+ XCTAssertEqual ( setenv ( " bad2= " , " 1 " , 1 ) , - 1 )
82+ XCTAssertEqual ( setenv ( " bad3= " , " =2 " , 1 ) , - 1 )
83+
84+ // Good values that will be, check splitting on '='
85+ XCTAssertEqual ( setenv ( " var1 " , " " , 1 ) , 0 )
86+ XCTAssertEqual ( setenv ( " var2 " , " = " , 1 ) , 0 )
87+ XCTAssertEqual ( setenv ( " var3 " , " =x " , 1 ) , 0 )
88+ XCTAssertEqual ( setenv ( " var4 " , " x= " , 1 ) , 0 )
89+ XCTAssertEqual ( setenv ( " var5 " , " =x= " , 1 ) , 0 )
90+
91+ let env = ProcessInfo . processInfo. environment
92+
93+ XCTAssertNil ( env [ " " ] )
94+ XCTAssertNil ( env [ " bad1 " ] )
95+ XCTAssertNil ( env [ " bad1= " ] )
96+ XCTAssertNil ( env [ " bad2 " ] )
97+ XCTAssertNil ( env [ " bad2= " ] )
98+ XCTAssertNil ( env [ " bad3 " ] )
99+ XCTAssertNil ( env [ " bad3= " ] )
100+
101+ XCTAssertEqual ( env [ " var1 " ] , " " )
102+ XCTAssertEqual ( env [ " var2 " ] , " = " )
103+ XCTAssertEqual ( env [ " var3 " ] , " =x " )
104+ XCTAssertEqual ( env [ " var4 " ] , " x= " )
105+ XCTAssertEqual ( env [ " var5 " ] , " =x= " )
106+ }
70107}
0 commit comments