@@ -130,3 +130,109 @@ func TestHasPreviousCommit(t *testing.T) {
130
130
assert .NoError (t , err )
131
131
assert .False (t , selfNot )
132
132
}
133
+
134
+ func TestParseCommitFileStatus (t * testing.T ) {
135
+ type testcase struct {
136
+ output string
137
+ added []string
138
+ removed []string
139
+ modified []string
140
+ }
141
+
142
+ kases := []testcase {
143
+ {
144
+ // Merge commit
145
+ output : "MM\x00 options/locale/locale_en-US.ini\x00 " ,
146
+ modified : []string {
147
+ "options/locale/locale_en-US.ini" ,
148
+ },
149
+ added : []string {},
150
+ removed : []string {},
151
+ },
152
+ {
153
+ // Spaces commit
154
+ output : "D\x00 b\x00 D\x00 b b/b\x00 A\x00 b b/b b/b b/b\x00 A\x00 b b/b b/b b/b b/b\x00 " ,
155
+ removed : []string {
156
+ "b" ,
157
+ "b b/b" ,
158
+ },
159
+ modified : []string {},
160
+ added : []string {
161
+ "b b/b b/b b/b" ,
162
+ "b b/b b/b b/b b/b" ,
163
+ },
164
+ },
165
+ {
166
+ // larger commit
167
+ output : "M\x00 go.mod\x00 M\x00 go.sum\x00 M\x00 modules/ssh/ssh.go\x00 M\x00 vendor/github.com/gliderlabs/ssh/circle.yml\x00 M\x00 vendor/github.com/gliderlabs/ssh/context.go\x00 A\x00 vendor/github.com/gliderlabs/ssh/go.mod\x00 A\x00 vendor/github.com/gliderlabs/ssh/go.sum\x00 M\x00 vendor/github.com/gliderlabs/ssh/server.go\x00 M\x00 vendor/github.com/gliderlabs/ssh/session.go\x00 M\x00 vendor/github.com/gliderlabs/ssh/ssh.go\x00 M\x00 vendor/golang.org/x/sys/unix/mkerrors.sh\x00 M\x00 vendor/golang.org/x/sys/unix/syscall_darwin.go\x00 M\x00 vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go\x00 M\x00 vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go\x00 M\x00 vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go\x00 M\x00 vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go\x00 M\x00 vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go\x00 M\x00 vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go\x00 M\x00 vendor/golang.org/x/sys/unix/zerrors_linux.go\x00 M\x00 vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go\x00 M\x00 vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go\x00 M\x00 vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go\x00 M\x00 vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go\x00 M\x00 vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go\x00 M\x00 vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go\x00 M\x00 vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go\x00 M\x00 vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go\x00 M\x00 vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go\x00 M\x00 vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go\x00 M\x00 vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go\x00 M\x00 vendor/modules.txt\x00 " ,
168
+ modified : []string {
169
+ "go.mod" ,
170
+ "go.sum" ,
171
+ "modules/ssh/ssh.go" ,
172
+ "vendor/github.com/gliderlabs/ssh/circle.yml" ,
173
+ "vendor/github.com/gliderlabs/ssh/context.go" ,
174
+ "vendor/github.com/gliderlabs/ssh/server.go" ,
175
+ "vendor/github.com/gliderlabs/ssh/session.go" ,
176
+ "vendor/github.com/gliderlabs/ssh/ssh.go" ,
177
+ "vendor/golang.org/x/sys/unix/mkerrors.sh" ,
178
+ "vendor/golang.org/x/sys/unix/syscall_darwin.go" ,
179
+ "vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go" ,
180
+ "vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go" ,
181
+ "vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go" ,
182
+ "vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go" ,
183
+ "vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go" ,
184
+ "vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go" ,
185
+ "vendor/golang.org/x/sys/unix/zerrors_linux.go" ,
186
+ "vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go" ,
187
+ "vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go" ,
188
+ "vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go" ,
189
+ "vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go" ,
190
+ "vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go" ,
191
+ "vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go" ,
192
+ "vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go" ,
193
+ "vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go" ,
194
+ "vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go" ,
195
+ "vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go" ,
196
+ "vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go" ,
197
+ "vendor/modules.txt" ,
198
+ },
199
+ added : []string {
200
+ "vendor/github.com/gliderlabs/ssh/go.mod" ,
201
+ "vendor/github.com/gliderlabs/ssh/go.sum" ,
202
+ },
203
+ removed : []string {},
204
+ },
205
+ {
206
+ // git 1.7.2 adds an unnecessary \x00 on merge commit
207
+ output : "\x00 MM\x00 options/locale/locale_en-US.ini\x00 " ,
208
+ modified : []string {
209
+ "options/locale/locale_en-US.ini" ,
210
+ },
211
+ added : []string {},
212
+ removed : []string {},
213
+ },
214
+ {
215
+ // git 1.7.2 adds an unnecessary \n on normal commit
216
+ output : "\n D\x00 b\x00 D\x00 b b/b\x00 A\x00 b b/b b/b b/b\x00 A\x00 b b/b b/b b/b b/b\x00 " ,
217
+ removed : []string {
218
+ "b" ,
219
+ "b b/b" ,
220
+ },
221
+ modified : []string {},
222
+ added : []string {
223
+ "b b/b b/b b/b" ,
224
+ "b b/b b/b b/b b/b" ,
225
+ },
226
+ },
227
+ }
228
+
229
+ for _ , kase := range kases {
230
+ fileStatus := NewCommitFileStatus ()
231
+ parseCommitFileStatus (fileStatus , strings .NewReader (kase .output ))
232
+
233
+ assert .Equal (t , kase .added , fileStatus .Added )
234
+ assert .Equal (t , kase .removed , fileStatus .Removed )
235
+ assert .Equal (t , kase .modified , fileStatus .Modified )
236
+ }
237
+
238
+ }
0 commit comments