github.com/2lambda123/git-lfs@v2.5.2+incompatible/lfs/scanner_test.go (about) 1 package lfs 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/git-lfs/git-lfs/filepathfilter" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 var ( 12 pointerParseLogOutput = `lfs-commit-sha: 637908bf28b38ab238e1b5e6a5bfbfb2e513a0df 07d571b413957508679042e45508af5945b3f1e5 13 14 diff --git a/smoke_1.png b/smoke_1.png 15 deleted file mode 100644 16 index 2fe5451..0000000 17 --- a/smoke_1.png 18 +++ /dev/null 19 @@ -1,3 +0,0 @@ 20 -version https://git-lfs.github.com/spec/v1 21 -oid sha256:8eb65d66303acc60062f44b44ef1f7360d7189db8acf3d066e59e2528f39514e 22 -size 35022 23 lfs-commit-sha: 07d571b413957508679042e45508af5945b3f1e5 8e5bd456b754f7d61c7157e82edc5ed124be4da6 24 25 diff --git a/flare_1.png b/flare_1.png 26 deleted file mode 100644 27 index 1cfc5a1..0000000 28 --- a/flare_1.png 29 +++ /dev/null 30 @@ -1,3 +0,0 @@ 31 -version https://git-lfs.github.com/spec/v1 32 -ext-0-foo sha256:36485434f4f8a55150282ae7c78619a89de52721c00f48159f2562463df9c043 33 -ext-1-bar sha256:382a2a13e705bbd8de7e2e13857c26551db17121ac57edca5dec9b5bd753e9c8 34 -ext-2-ray sha256:423ee9e5988fb4670bf815990e9307c3b23296210c31581dec4d4ae89dabae46 35 -oid sha256:ea61c67cc5e8b3504d46de77212364045f31d9a023ad4448a1ace2a2fb4eed28 36 -size 72982 37 diff --git a/radial_1.png b/radial_1.png 38 index 9daa2e5..c648385 100644 39 --- a/radial_1.png 40 +++ b/radial_1.png 41 @@ -1,3 +1,3 @@ 42 version https://git-lfs.github.com/spec/v1 43 -oid sha256:334c8a0a520cf9f58189dba5a9a26c7bff2769b4a3cc199650c00618bde5b9dd 44 -size 16849 45 +oid sha256:3301b3da173d231f0f6b1f9bf075e573758cd79b3cfeff7623a953d708d6688b 46 +size 3152388 47 diff --git a/radial_2.png b/radial_2.png 48 index 9daa2e5..c648385 100644 49 --- a/radial_2.png 50 +++ b/radial_2.png 51 @@ -1,3 +1,3 @@ 52 version https://git-lfs.github.com/spec/v1 53 -ext-0-foo sha256:36485434f4f8a55150282ae7c78619a89de52721c00f48159f2562463df9c043 54 -ext-1-bar sha256:382a2a13e705bbd8de7e2e13857c26551db17121ac57edca5dec9b5bd753e9c8 55 -ext-2-ray sha256:423ee9e5988fb4670bf815990e9307c3b23296210c31581dec4d4ae89dabae46 56 -oid sha256:334c8a0a520cf9f58189dba5a9a26c7bff2769b4a3cc199650c00618bde5b9dd 57 -size 16849 58 +ext-0-foo sha256:95d8260e8365a9dfd39842bdeee9b20e0e3fe3daf9bb4a8c0a1acb31008ed7b4 59 +ext-1-bar sha256:674bf4995720a43e03e174bcc1132ca95de6a8e4155fe3b2c482dceb42cbc0a5 60 +ext-2-ray sha256:0d323c95ae4b0a9c195ddc437c470678bddd2ee0906fb2f7b8166cd2474e22d9 61 +oid sha256:4b666195c133d8d0541ad0bc0e77399b9dc81861577a98314ac1ff1e9877893a 62 +size 3152388 63 lfs-commit-sha: 60fde3d23553e10a55e2a32ed18c20f65edd91e7 e2eaf1c10b57da7b98eb5d722ec5912ddeb53ea1 64 65 diff --git a/1D_Noise.png b/1D_Noise.png 66 new file mode 100644 67 index 0000000..2622b4a 68 --- /dev/null 69 +++ b/1D_Noise.png 70 @@ -0,0 +1,3 @@ 71 +version https://git-lfs.github.com/spec/v1 72 +oid sha256:f5d84da40ab1f6aa28df2b2bf1ade2cdcd4397133f903c12b4106641b10e1ed6 73 +size 1289 74 diff --git a/waveNM.png b/waveNM.png 75 new file mode 100644 76 index 0000000..8519883 77 --- /dev/null 78 +++ b/waveNM.png 79 @@ -0,0 +1,3 @@ 80 +version https://git-lfs.github.com/spec/v1 81 +oid sha256:fe2c2f236b97bba4585d9909a227a8fa64897d9bbe297fa272f714302d86c908 82 +size 125873 83 lfs-commit-sha: 64b3372e108daaa593412d5e1d9df8169a9547ea e99c9cac7ff3f3cf1b2e670a64a5a381c44ffceb 84 85 diff --git a/hobbit_5armies_2.mov b/hobbit_5armies_2.mov 86 new file mode 100644 87 index 0000000..92a88f8 88 --- /dev/null 89 +++ b/hobbit_5armies_2.mov 90 @@ -0,0 +1,3 @@ 91 +version https://git-lfs.github.com/spec/v1 92 +ext-0-foo sha256:b37197ac149950d057521bcb7e00806f0528e19352bd72767165bc390d4f055e 93 +ext-1-bar sha256:c71772e5ea8e8c6f053f0f1dc89f8c01243975b1a040acbcf732fe2dbc0bcb61 94 +oid sha256:ebff26d6b557b1416a6fded097fd9b9102e2d8195532c377ac365c736c87d4bc 95 +size 127142413 96 ` 97 ) 98 99 func TestLogScannerAdditionsNoFiltering(t *testing.T) { 100 r := strings.NewReader(pointerParseLogOutput) 101 scanner := newLogScanner(LogDiffAdditions, r) 102 103 // modification, + side 104 assertNextScan(t, scanner) 105 p := scanner.Pointer() 106 if assert.NotNil(t, p) { 107 assert.Equal(t, "radial_1.png", p.Name) 108 assert.Equal(t, "3301b3da173d231f0f6b1f9bf075e573758cd79b3cfeff7623a953d708d6688b", p.Oid) 109 assert.Equal(t, int64(3152388), p.Size) 110 } 111 112 // modification, + side with extensions 113 assertNextScan(t, scanner) 114 p = scanner.Pointer() 115 if assert.NotNil(t, p) { 116 assert.Equal(t, "radial_2.png", p.Name) 117 assert.Equal(t, "4b666195c133d8d0541ad0bc0e77399b9dc81861577a98314ac1ff1e9877893a", p.Oid) 118 assert.Equal(t, int64(3152388), p.Size) 119 } 120 121 // addition, + side 122 assertNextScan(t, scanner) 123 p = scanner.Pointer() 124 if assert.NotNil(t, p) { 125 assert.Equal(t, "1D_Noise.png", p.Name) 126 assert.Equal(t, "f5d84da40ab1f6aa28df2b2bf1ade2cdcd4397133f903c12b4106641b10e1ed6", p.Oid) 127 assert.Equal(t, int64(1289), p.Size) 128 } 129 130 // addition, + side 131 assertNextScan(t, scanner) 132 p = scanner.Pointer() 133 if assert.NotNil(t, p) { 134 assert.Equal(t, "waveNM.png", p.Name) 135 assert.Equal(t, "fe2c2f236b97bba4585d9909a227a8fa64897d9bbe297fa272f714302d86c908", p.Oid) 136 assert.Equal(t, int64(125873), p.Size) 137 } 138 139 // addition, + side with extensions 140 assertNextScan(t, scanner) 141 p = scanner.Pointer() 142 if assert.NotNil(t, p) { 143 assert.Equal(t, "hobbit_5armies_2.mov", p.Name) 144 assert.Equal(t, "ebff26d6b557b1416a6fded097fd9b9102e2d8195532c377ac365c736c87d4bc", p.Oid) 145 assert.Equal(t, int64(127142413), p.Size) 146 } 147 148 assertScannerDone(t, scanner) 149 assert.Nil(t, scanner.Pointer()) 150 } 151 152 func TestLogScannerAdditionsFilterInclude(t *testing.T) { 153 r := strings.NewReader(pointerParseLogOutput) 154 scanner := newLogScanner(LogDiffAdditions, r) 155 scanner.Filter = filepathfilter.New([]string{"wave*"}, nil) 156 157 // addition, + side 158 assertNextScan(t, scanner) 159 p := scanner.Pointer() 160 if assert.NotNil(t, p) { 161 assert.Equal(t, "waveNM.png", p.Name) 162 assert.Equal(t, "fe2c2f236b97bba4585d9909a227a8fa64897d9bbe297fa272f714302d86c908", p.Oid) 163 assert.Equal(t, int64(125873), p.Size) 164 } 165 assertScannerDone(t, scanner) 166 assert.Nil(t, scanner.Pointer()) 167 } 168 169 func TestLogScannerAdditionsFilterExclude(t *testing.T) { 170 r := strings.NewReader(pointerParseLogOutput) 171 scanner := newLogScanner(LogDiffAdditions, r) 172 scanner.Filter = filepathfilter.New(nil, []string{"wave*"}) 173 174 // modification, + side 175 assertNextScan(t, scanner) 176 p := scanner.Pointer() 177 if assert.NotNil(t, p) { 178 assert.Equal(t, "radial_1.png", p.Name) 179 assert.Equal(t, "3301b3da173d231f0f6b1f9bf075e573758cd79b3cfeff7623a953d708d6688b", p.Oid) 180 assert.Equal(t, int64(3152388), p.Size) 181 } 182 183 // modification, + side with extensions 184 assertNextScan(t, scanner) 185 p = scanner.Pointer() 186 if assert.NotNil(t, p) { 187 assert.Equal(t, "radial_2.png", p.Name) 188 assert.Equal(t, "4b666195c133d8d0541ad0bc0e77399b9dc81861577a98314ac1ff1e9877893a", p.Oid) 189 assert.Equal(t, int64(3152388), p.Size) 190 } 191 192 // addition, + side 193 assertNextScan(t, scanner) 194 p = scanner.Pointer() 195 if assert.NotNil(t, p) { 196 assert.Equal(t, "1D_Noise.png", p.Name) 197 assert.Equal(t, "f5d84da40ab1f6aa28df2b2bf1ade2cdcd4397133f903c12b4106641b10e1ed6", p.Oid) 198 assert.Equal(t, int64(1289), p.Size) 199 } 200 201 // addition, + side with extensions 202 assertNextScan(t, scanner) 203 p = scanner.Pointer() 204 if assert.NotNil(t, p) { 205 assert.Equal(t, "hobbit_5armies_2.mov", p.Name) 206 assert.Equal(t, "ebff26d6b557b1416a6fded097fd9b9102e2d8195532c377ac365c736c87d4bc", p.Oid) 207 assert.Equal(t, int64(127142413), p.Size) 208 } 209 210 assertScannerDone(t, scanner) 211 assert.Nil(t, scanner.Pointer()) 212 } 213 214 func TestLogScannerDeletionsNoFiltering(t *testing.T) { 215 r := strings.NewReader(pointerParseLogOutput) 216 scanner := newLogScanner(LogDiffDeletions, r) 217 218 // deletion, - side 219 assertNextScan(t, scanner) 220 p := scanner.Pointer() 221 if assert.NotNil(t, p) { 222 assert.Equal(t, "smoke_1.png", p.Name) 223 assert.Equal(t, "8eb65d66303acc60062f44b44ef1f7360d7189db8acf3d066e59e2528f39514e", p.Oid) 224 assert.Equal(t, int64(35022), p.Size) 225 } 226 227 // deletion, - side with extensions 228 assertNextScan(t, scanner) 229 p = scanner.Pointer() 230 if assert.NotNil(t, p) { 231 assert.Equal(t, "flare_1.png", p.Name) 232 assert.Equal(t, "ea61c67cc5e8b3504d46de77212364045f31d9a023ad4448a1ace2a2fb4eed28", p.Oid) 233 assert.Equal(t, int64(72982), p.Size) 234 } 235 236 // modification, - side 237 assertNextScan(t, scanner) 238 p = scanner.Pointer() 239 if assert.NotNil(t, p) { 240 assert.Equal(t, "radial_1.png", p.Name) 241 assert.Equal(t, "334c8a0a520cf9f58189dba5a9a26c7bff2769b4a3cc199650c00618bde5b9dd", p.Oid) 242 assert.Equal(t, int64(16849), p.Size) 243 } 244 245 // modification, - side with extensions 246 assertNextScan(t, scanner) 247 p = scanner.Pointer() 248 if assert.NotNil(t, p) { 249 assert.Equal(t, "radial_2.png", p.Name) 250 assert.Equal(t, "334c8a0a520cf9f58189dba5a9a26c7bff2769b4a3cc199650c00618bde5b9dd", p.Oid) 251 assert.Equal(t, int64(16849), p.Size) 252 } 253 254 assertScannerDone(t, scanner) 255 } 256 257 func TestLogScannerDeletionsFilterInclude(t *testing.T) { 258 r := strings.NewReader(pointerParseLogOutput) 259 scanner := newLogScanner(LogDiffDeletions, r) 260 scanner.Filter = filepathfilter.New([]string{"flare*"}, nil) 261 262 // deletion, - side with extensions 263 assertNextScan(t, scanner) 264 p := scanner.Pointer() 265 if assert.NotNil(t, p) { 266 assert.Equal(t, "flare_1.png", p.Name) 267 assert.Equal(t, "ea61c67cc5e8b3504d46de77212364045f31d9a023ad4448a1ace2a2fb4eed28", p.Oid) 268 assert.Equal(t, int64(72982), p.Size) 269 } 270 271 assertScannerDone(t, scanner) 272 } 273 274 func TestLogScannerDeletionsFilterExclude(t *testing.T) { 275 r := strings.NewReader(pointerParseLogOutput) 276 scanner := newLogScanner(LogDiffDeletions, r) 277 scanner.Filter = filepathfilter.New(nil, []string{"flare*"}) 278 279 // deletion, - side 280 assertNextScan(t, scanner) 281 p := scanner.Pointer() 282 if assert.NotNil(t, p) { 283 assert.Equal(t, "smoke_1.png", p.Name) 284 assert.Equal(t, "8eb65d66303acc60062f44b44ef1f7360d7189db8acf3d066e59e2528f39514e", p.Oid) 285 assert.Equal(t, int64(35022), p.Size) 286 } 287 288 // modification, - side 289 assertNextScan(t, scanner) 290 p = scanner.Pointer() 291 if assert.NotNil(t, p) { 292 assert.Equal(t, "radial_1.png", p.Name) 293 assert.Equal(t, "334c8a0a520cf9f58189dba5a9a26c7bff2769b4a3cc199650c00618bde5b9dd", p.Oid) 294 assert.Equal(t, int64(16849), p.Size) 295 } 296 297 // modification, - side with extensions 298 assertNextScan(t, scanner) 299 p = scanner.Pointer() 300 if assert.NotNil(t, p) { 301 assert.Equal(t, "radial_2.png", p.Name) 302 assert.Equal(t, "334c8a0a520cf9f58189dba5a9a26c7bff2769b4a3cc199650c00618bde5b9dd", p.Oid) 303 assert.Equal(t, int64(16849), p.Size) 304 } 305 306 assertScannerDone(t, scanner) 307 } 308 309 func TestLsTreeParser(t *testing.T) { 310 stdout := "100644 blob d899f6551a51cf19763c5955c7a06a2726f018e9 42 .gitattributes\000100644 blob 4d343e022e11a8618db494dc3c501e80c7e18197 126 PB SCN 16 Odhrán.wav" 311 scanner := newLsTreeScanner(strings.NewReader(stdout)) 312 313 assertNextTreeBlob(t, scanner, "d899f6551a51cf19763c5955c7a06a2726f018e9", ".gitattributes") 314 assertNextTreeBlob(t, scanner, "4d343e022e11a8618db494dc3c501e80c7e18197", "PB SCN 16 Odhrán.wav") 315 assertScannerDone(t, scanner) 316 } 317 318 func assertNextTreeBlob(t *testing.T, scanner *lsTreeScanner, oid, filename string) { 319 assertNextScan(t, scanner) 320 b := scanner.TreeBlob() 321 assert.NotNil(t, b) 322 assert.Equal(t, oid, b.Sha1) 323 assert.Equal(t, filename, b.Filename) 324 } 325 326 func BenchmarkLsTreeParser(b *testing.B) { 327 stdout := "100644 blob d899f6551a51cf19763c5955c7a06a2726f018e9 42 .gitattributes\000100644 blob 4d343e022e11a8618db494dc3c501e80c7e18197 126 PB SCN 16 Odhrán.wav" 328 329 // run the Fib function b.N times 330 for n := 0; n < b.N; n++ { 331 scanner := newLsTreeScanner(strings.NewReader(stdout)) 332 for scanner.Scan() { 333 } 334 } 335 }