Skip to content

Commit

Permalink
Fix LogURI generation-related tests on Windows.
Browse files Browse the repository at this point in the history
Signed-off-by: Nashwan Azhari <nazhari@cloudbasesolutions.com>
  • Loading branch information
aznashwan committed Oct 21, 2022
1 parent 72177ca commit 3f3e2b3
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 37 deletions.
55 changes: 18 additions & 37 deletions cio/io_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,46 +81,27 @@ func TestLogFileFailOnRelativePath(t *testing.T) {
assert.Error(t, err, "absolute path needed")
}

func TestLogURIGenerator(t *testing.T) {
for _, tc := range []struct {
scheme string
path string
args map[string]string
expected string
err string
}{
{
scheme: "fifo",
path: "/full/path/pipe.fifo",
expected: "fifo:///full/path/pipe.fifo",
},
{
scheme: "file",
path: "/full/path/file.txt",
args: map[string]string{
"maxSize": "100MB",
},
expected: "file:///full/path/file.txt?maxSize=100MB",
},
{
scheme: "binary",
path: "/full/path/bin",
args: map[string]string{
"id": "testing",
},
expected: "binary:///full/path/bin?id=testing",
},
{
scheme: "unknown",
path: "nowhere",
err: "absolute path needed",
},
} {
type LogURIGeneratorTestCase struct {
// Arbitrary scheme string (e.g. "binary")
scheme string
// Path to executable/file: (e.g. "/some/path/to/bin.exe")
path string
// Extra query args expected to be in the URL (e.g. "id=123")
args map[string]string
// What the test case is expecting as an output (e.g. "binary:///some/path/to/bin.exe?id=123")
expected string
// Error string to be expected:
err string
}

func baseTestLogURIGenerator(t *testing.T, testCases []LogURIGeneratorTestCase) {
for _, tc := range testCases {
uri, err := LogURIGenerator(tc.scheme, tc.path, tc.args)
if err != nil {
assert.Error(t, err, tc.err)
if tc.err != "" {
assert.ErrorContains(t, err, tc.err)
continue
}
assert.NoError(t, err)
assert.Equal(t, tc.expected, uri.String())
}
}
37 changes: 37 additions & 0 deletions cio/io_unix_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,3 +209,40 @@ func initProducers(t *testing.T, producers producers, stdout, stderr string) {
assert.NoError(t, err)
assert.Nil(t, producers.Stderr.Close())
}

func TestLogURIGenerator(t *testing.T) {
baseTestLogURIGenerator(t, []LogURIGeneratorTestCase{
{
scheme: "fifo",
path: "/full/path/pipe.fifo",
expected: "fifo:///full/path/pipe.fifo",
},
{
scheme: "file",
path: "/full/path/file.txt",
args: map[string]string{
"maxSize": "100MB",
},
expected: "file:///full/path/file.txt?maxSize=100MB",
},
{
scheme: "binary",
path: "/full/path/bin",
args: map[string]string{
"id": "testing",
},
expected: "binary:///full/path/bin?id=testing",
},
{
scheme: "unknown",
path: "nowhere",
err: "must be absolute",
},
{
scheme: "binary",
path: "C:\\path\\to\\binary",
// NOTE: Windows paths should not be be parse-able outside of Windows:
err: "must be absolute",
},
})
}
47 changes: 47 additions & 0 deletions cio/io_windows_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,50 @@ func TestLogFileBackslash(t *testing.T) {
assert.Equal(t, "file:///C:/foo/bar.log", res.Config().Stdout)
}
}

func TestLogURIGenerator(t *testing.T) {
baseTestLogURIGenerator(t, []LogURIGeneratorTestCase{
{
scheme: "slashes",
path: "C:/full/path/pipe.fifo",
expected: "slashes:///C:/full/path/pipe.fifo",
},
{
scheme: "backslashes",
path: "C:\\full\\path\\pipe.fifo",
expected: "backslashes:///C:/full/path/pipe.fifo",
},
{
scheme: "mixedslashes",
path: "C:\\full/path/pipe.fifo",
expected: "mixedslashes:///C:/full/path/pipe.fifo",
},
{
scheme: "file",
path: "C:/full/path/file.txt",
args: map[string]string{
"maxSize": "100MB",
},
expected: "file:///C:/full/path/file.txt?maxSize=100MB",
},
{
scheme: "binary",
path: "C:/full/path/bin",
args: map[string]string{
"id": "testing",
},
expected: "binary:///C:/full/path/bin?id=testing",
},
{
scheme: "unknown",
path: "nowhere",
err: "must be absolute",
},
{
scheme: "unixpath",
path: "/some/unix/path",
// NOTE: Unix paths should not be usable on Windows:
err: "must be absolute",
},
})
}

0 comments on commit 3f3e2b3

Please sign in to comment.