mirror of
https://github.com/jimeh/go-golden.git
synced 2026-02-19 11:16:47 +00:00
127 lines
3.7 KiB
Go
127 lines
3.7 KiB
Go
package sanitize_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/jimeh/go-golden/sanitize"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestFilename(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
filename string
|
|
want string
|
|
}{
|
|
{
|
|
name: "empty",
|
|
filename: "",
|
|
want: "",
|
|
},
|
|
{
|
|
name: ".",
|
|
filename: ".",
|
|
want: "_",
|
|
},
|
|
{
|
|
name: "..",
|
|
filename: "..",
|
|
want: "__",
|
|
},
|
|
{
|
|
name: "...",
|
|
filename: "...",
|
|
want: "___",
|
|
},
|
|
{
|
|
name: "clean",
|
|
filename: "foo-bar-nope.golden",
|
|
want: "foo-bar-nope.golden",
|
|
},
|
|
{
|
|
name: "with spaces",
|
|
filename: "foo bar nope.golden",
|
|
want: "foo__bar_nope.golden",
|
|
},
|
|
{
|
|
name: "illegal chars",
|
|
filename: `foo/?<>\:*|"bar.golden`,
|
|
want: "foo_________bar.golden",
|
|
},
|
|
{
|
|
name: "control chars",
|
|
filename: "foo\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b" +
|
|
"\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a" +
|
|
"\x1b\x1c\x1d\x1e\x1fbar.golden",
|
|
want: "foo________________________________bar.golden",
|
|
},
|
|
{
|
|
name: "trailing whitespace",
|
|
filename: "foobar.golden ",
|
|
want: "foobar.golden",
|
|
},
|
|
{
|
|
name: "trailing dots",
|
|
filename: "foobar.golden......",
|
|
want: "foobar.golden",
|
|
},
|
|
{
|
|
name: "trailing whitespace and dots",
|
|
filename: "foobar.golden .. .. .. ",
|
|
want: "foobar.golden",
|
|
},
|
|
// Protected Windows filenames.
|
|
{name: "con", filename: "con", want: "___"},
|
|
{name: "prn", filename: "prn", want: "___"},
|
|
{name: "aux", filename: "aux", want: "___"},
|
|
{name: "nul", filename: "nul", want: "___"},
|
|
{name: "com1", filename: "com1", want: "____"},
|
|
{name: "com2", filename: "com2", want: "____"},
|
|
{name: "com3", filename: "com3", want: "____"},
|
|
{name: "com4", filename: "com4", want: "____"},
|
|
{name: "com5", filename: "com5", want: "____"},
|
|
{name: "com6", filename: "com6", want: "____"},
|
|
{name: "com7", filename: "com7", want: "____"},
|
|
{name: "com8", filename: "com8", want: "____"},
|
|
{name: "com9", filename: "com9", want: "____"},
|
|
{name: "lpt1", filename: "lpt1", want: "____"},
|
|
{name: "lpt2", filename: "lpt2", want: "____"},
|
|
{name: "lpt3", filename: "lpt3", want: "____"},
|
|
{name: "lpt4", filename: "lpt4", want: "____"},
|
|
{name: "lpt5", filename: "lpt5", want: "____"},
|
|
{name: "lpt6", filename: "lpt6", want: "____"},
|
|
{name: "lpt7", filename: "lpt7", want: "____"},
|
|
{name: "lpt8", filename: "lpt8", want: "____"},
|
|
{name: "lpt9", filename: "lpt9", want: "____"},
|
|
{name: "CON", filename: "CON", want: "___"},
|
|
{name: "PRN", filename: "PRN", want: "___"},
|
|
{name: "AUX", filename: "AUX", want: "___"},
|
|
{name: "NUL", filename: "NUL", want: "___"},
|
|
{name: "COM1", filename: "COM1", want: "____"},
|
|
{name: "COM2", filename: "COM2", want: "____"},
|
|
{name: "COM3", filename: "COM3", want: "____"},
|
|
{name: "COM4", filename: "COM4", want: "____"},
|
|
{name: "COM5", filename: "COM5", want: "____"},
|
|
{name: "COM6", filename: "COM6", want: "____"},
|
|
{name: "COM7", filename: "COM7", want: "____"},
|
|
{name: "COM8", filename: "COM8", want: "____"},
|
|
{name: "COM9", filename: "COM9", want: "____"},
|
|
{name: "LPT1", filename: "LPT1", want: "____"},
|
|
{name: "LPT2", filename: "LPT2", want: "____"},
|
|
{name: "LPT3", filename: "LPT3", want: "____"},
|
|
{name: "LPT4", filename: "LPT4", want: "____"},
|
|
{name: "LPT5", filename: "LPT5", want: "____"},
|
|
{name: "LPT6", filename: "LPT6", want: "____"},
|
|
{name: "LPT7", filename: "LPT7", want: "____"},
|
|
{name: "LPT8", filename: "LPT8", want: "____"},
|
|
{name: "LPT9", filename: "LPT9", want: "____"},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := sanitize.Filename(tt.filename)
|
|
|
|
assert.Equal(t, tt.want, got)
|
|
})
|
|
}
|
|
}
|