config: prevent use of windows reserved names in config file name

This commit is contained in:
albertony
2021-04-08 20:59:15 +02:00
parent 23a0d4a1e6
commit f2d3264054
4 changed files with 77 additions and 4 deletions

View File

@ -6,6 +6,7 @@ import (
"io/ioutil"
"os"
"path"
"runtime"
"testing"
"github.com/stretchr/testify/assert"
@ -152,3 +153,29 @@ func TestOpenFileOperations(t *testing.T) {
})
}
// Smoke test the IsReserved function
func TestIsReserved(t *testing.T) {
if runtime.GOOS != "windows" {
t.Skip("Skipping test on !windows")
}
// Regular name
require.NoError(t, IsReserved("readme.txt"))
require.NoError(t, IsReserved("some/path/readme.txt"))
// Empty
require.Error(t, IsReserved(""))
// Separators only
require.Error(t, IsReserved("/"))
require.Error(t, IsReserved("////"))
require.Error(t, IsReserved("./././././"))
// Legacy device name
require.Error(t, IsReserved("NUL"))
require.Error(t, IsReserved("nul"))
require.Error(t, IsReserved("Nul"))
require.Error(t, IsReserved("NUL.txt"))
require.Error(t, IsReserved("some/path/to/nul.txt"))
require.NoError(t, IsReserved("NULL"))
// Name end with a space or a period
require.Error(t, IsReserved("test."))
require.Error(t, IsReserved("test "))
}