e0d05b0f1e
This enhances our regex to support windows style paths. The regex will match invalid path specifications, but we'll still validate file existence and filter out mismatches
51 lines
1.8 KiB
Go
51 lines
1.8 KiB
Go
package cmd
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestExtractFilenames(t *testing.T) {
|
|
// Unix style paths
|
|
input := ` some preamble
|
|
./relative\ path/one.png inbetween1 ./not a valid two.jpg inbetween2
|
|
/unescaped space /three.jpeg inbetween3 /valid\ path/dir/four.png "./quoted with spaces/five.svg`
|
|
res := extractFileNames(input)
|
|
assert.Len(t, res, 5)
|
|
assert.Contains(t, res[0], "one.png")
|
|
assert.Contains(t, res[1], "two.jpg")
|
|
assert.Contains(t, res[2], "three.jpeg")
|
|
assert.Contains(t, res[3], "four.png")
|
|
assert.Contains(t, res[4], "five.svg")
|
|
assert.NotContains(t, res[4], '"')
|
|
assert.NotContains(t, res, "inbtween")
|
|
|
|
// Windows style paths
|
|
input = ` some preamble
|
|
c:/users/jdoe/one.png inbetween1 c:/program files/someplace/two.jpg inbetween2
|
|
/absolute/nospace/three.jpeg inbetween3 /absolute/with space/four.png inbetween4
|
|
./relative\ path/five.svg inbetween5 "./relative with/spaces/six.png inbetween6
|
|
d:\path with\spaces\seven.svg inbetween7 c:\users\jdoe\eight.png inbetween8
|
|
d:\program files\someplace\nine.png inbetween9 "E:\program files\someplace\ten.svg some ending
|
|
`
|
|
res = extractFileNames(input)
|
|
assert.Len(t, res, 10)
|
|
assert.NotContains(t, res, "inbtween")
|
|
assert.Contains(t, res[0], "one.png")
|
|
assert.Contains(t, res[0], "c:")
|
|
assert.Contains(t, res[1], "two.jpg")
|
|
assert.Contains(t, res[1], "c:")
|
|
assert.Contains(t, res[2], "three.jpeg")
|
|
assert.Contains(t, res[3], "four.png")
|
|
assert.Contains(t, res[4], "five.svg")
|
|
assert.Contains(t, res[5], "six.png")
|
|
assert.Contains(t, res[6], "seven.svg")
|
|
assert.Contains(t, res[6], "d:")
|
|
assert.Contains(t, res[7], "eight.png")
|
|
assert.Contains(t, res[7], "c:")
|
|
assert.Contains(t, res[8], "nine.png")
|
|
assert.Contains(t, res[8], "d:")
|
|
assert.Contains(t, res[9], "ten.svg")
|
|
assert.Contains(t, res[9], "E:")
|
|
}
|