os: use relative paths in a test dir in TestOpenError

Refactor TestOpenError to use relative paths in test cases,
in preparation for extending it to test os.Root.

Use a test temporary directory instead of system directory
with presumed-known contents.

Move the testcase type and case definitions inline with the test.

For #67002

Change-Id: Idc53dd9fcecf763d3e4eb3b4643032e3003d7ef4
Reviewed-on: https://go-review.googlesource.com/c/go/+/620157
Reviewed-by: Ian Lance Taylor <iant@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
Damien Neil 2024-10-14 15:30:13 -07:00
parent cbdb3545ad
commit 70f4717e96
1 changed files with 27 additions and 26 deletions

View File

@ -1777,35 +1777,36 @@ func TestSeekError(t *testing.T) {
}
}
type openErrorTest struct {
path string
mode int
error error
}
var openErrorTests = []openErrorTest{
{
sfdir + "/no-such-file",
O_RDONLY,
syscall.ENOENT,
},
{
sfdir,
O_WRONLY,
syscall.EISDIR,
},
{
sfdir + "/" + sfname + "/no-such-file",
O_WRONLY,
syscall.ENOTDIR,
},
}
func TestOpenError(t *testing.T) {
t.Parallel()
for _, tt := range openErrorTests {
f, err := OpenFile(tt.path, tt.mode, 0)
dir := t.TempDir()
if err := WriteFile(filepath.Join(dir, "is-a-file"), nil, 0o666); err != nil {
t.Fatal(err)
}
if err := Mkdir(filepath.Join(dir, "is-a-dir"), 0o777); err != nil {
t.Fatal(err)
}
for _, tt := range []struct {
path string
mode int
error error
}{{
"no-such-file",
O_RDONLY,
syscall.ENOENT,
}, {
"is-a-dir",
O_WRONLY,
syscall.EISDIR,
}, {
"is-a-file/no-such-file",
O_WRONLY,
syscall.ENOTDIR,
}} {
path := filepath.Join(dir, tt.path)
f, err := OpenFile(path, tt.mode, 0)
if err == nil {
t.Errorf("Open(%q, %d) succeeded", tt.path, tt.mode)
f.Close()