@@ -49,9 +49,9 @@ func TestMergeEnv(t *testing.T) {
49
49
}
50
50
51
51
func TestGenerate (t * testing.T ) {
52
- testDataDir := t .TempDir ()
53
52
54
53
t .Run ("returns map of environment variables" , func (t * testing.T ) {
54
+ testDataDir := t .TempDir ()
55
55
conf := config.Config {DataDir : testDataDir }
56
56
_ , err := repotest .InstallPlugin ("dummy_plugin" , testDataDir , testPluginName )
57
57
assert .Nil (t , err )
@@ -64,6 +64,7 @@ func TestGenerate(t *testing.T) {
64
64
})
65
65
66
66
t .Run ("returns error when plugin lacks exec-env callback" , func (t * testing.T ) {
67
+ testDataDir := t .TempDir ()
67
68
conf := config.Config {DataDir : testDataDir }
68
69
_ , err := repotest .InstallPlugin ("dummy_plugin" , testDataDir , testPluginName2 )
69
70
assert .Nil (t , err )
@@ -73,6 +74,32 @@ func TestGenerate(t *testing.T) {
73
74
_ , found := env ["FOO" ]
74
75
assert .False (t , found )
75
76
})
77
+
78
+ t .Run ("preserves environment variables that contain equals sign in value" , func (t * testing.T ) {
79
+ testDataDir := t .TempDir ()
80
+ conf := config.Config {DataDir : testDataDir }
81
+ _ , err := repotest .InstallPlugin ("dummy_plugin" , testDataDir , testPluginName )
82
+ assert .Nil (t , err )
83
+ plugin := plugins .New (conf , testPluginName )
84
+ assert .Nil (t , repotest .WritePluginCallback (plugin .Dir , "exec-env" , "#!/usr/bin/env bash\n export BAZ=bar" ))
85
+ env , err := Generate (plugin , map [string ]string {"EQUALSTEST" : "abc=123" })
86
+ assert .Nil (t , err )
87
+ assert .Equal (t , "bar" , env ["BAZ" ])
88
+ assert .Equal (t , "abc=123" , env ["EQUALSTEST" ])
89
+ })
90
+
91
+ t .Run ("preserves environment variables that contain equals sign in value" , func (t * testing.T ) {
92
+ testDataDir := t .TempDir ()
93
+ conf := config.Config {DataDir : testDataDir }
94
+ _ , err := repotest .InstallPlugin ("dummy_plugin" , testDataDir , testPluginName )
95
+ assert .Nil (t , err )
96
+ plugin := plugins .New (conf , testPluginName )
97
+ assert .Nil (t , repotest .WritePluginCallback (plugin .Dir , "exec-env" , "#!/usr/bin/env bash\n export BAZ=bar" ))
98
+ env , err := Generate (plugin , map [string ]string {"EQUALSTEST" : "abc\n 123" })
99
+ assert .Nil (t , err )
100
+ assert .Equal (t , "bar" , env ["BAZ" ])
101
+ assert .Equal (t , "abc\n 123" , env ["EQUALSTEST" ])
102
+ })
76
103
}
77
104
78
105
func TestSliceToMap (t * testing.T ) {
@@ -92,6 +119,14 @@ func TestSliceToMap(t *testing.T) {
92
119
input : []string {"MYVAR=some things = with = in it" },
93
120
output : map [string ]string {"MYVAR" : "some things = with = in it" },
94
121
},
122
+ {
123
+ input : []string {"MYVAR=value\n with\n newlines" },
124
+ output : map [string ]string {"MYVAR" : "value\n with\n newlines" },
125
+ },
126
+ {
127
+ input : []string {"MYVAR=value" , "with" , "newlines" },
128
+ output : map [string ]string {"MYVAR" : "value\n with\n newlines" },
129
+ },
95
130
}
96
131
97
132
for _ , tt := range tests {
0 commit comments