@@ -153,6 +153,40 @@ func TestRepoUpdate(t *testing.T) {
153
153
assert .Equal (t , latestHash , currentHash )
154
154
})
155
155
156
+ t .Run ("updates repo while leaving untracked files in place" , func (t * testing.T ) {
157
+ latestHash , err := getCurrentCommit (directory )
158
+ assert .Nil (t , err )
159
+
160
+ _ , err = checkoutPreviousCommit (directory )
161
+ assert .Nil (t , err )
162
+
163
+ untrackedDir := filepath .Join (directory , "untracked" )
164
+ err = os .Mkdir (untrackedDir , 0o777 )
165
+ assert .Nil (t , err )
166
+
167
+ expectedContent := []byte ("dummy_content" )
168
+ err = os .WriteFile (filepath .Join (untrackedDir , "file_one" ), expectedContent , 0o777 )
169
+ assert .Nil (t , err )
170
+ err = os .WriteFile (filepath .Join (untrackedDir , "file_two" ), expectedContent , 0o777 )
171
+ assert .Nil (t , err )
172
+
173
+ updatedToRef , _ , _ , err := repo .Update ("" )
174
+ assert .Nil (t , err )
175
+ assert .Equal (t , "refs/heads/master" , updatedToRef )
176
+
177
+ currentHash , err := getCurrentCommit (directory )
178
+ assert .Nil (t , err )
179
+ assert .Equal (t , latestHash , currentHash )
180
+
181
+ content , err := os .ReadFile (filepath .Join (untrackedDir , "file_one" ))
182
+ assert .Nil (t , err )
183
+ assert .Equal (t , expectedContent , content )
184
+
185
+ content , err = os .ReadFile (filepath .Join (untrackedDir , "file_two" ))
186
+ assert .Nil (t , err )
187
+ assert .Equal (t , expectedContent , content )
188
+ })
189
+
156
190
t .Run ("Returns error when specified ref does not exist" , func (t * testing.T ) {
157
191
ref := "non-existent"
158
192
updatedToRef , _ , _ , err := repo .Update (ref )
0 commit comments