mirror of
https://github.com/golang/go.git
synced 2025-10-19 11:03:18 +00:00
os: set full name for Roots created with Root.OpenRoot
Set the Name for a Root created within a Root to be the concatenation of the parent's path and the name used to open the child. This matches the behavior for files opened within a Root with Root.Open. Fixes #73868 Change-Id: Idf4021602ac25556721b7ef6924dec652c7bf4db Reviewed-on: https://go-review.googlesource.com/c/go/+/698376 Reviewed-by: Alan Donovan <adonovan@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
parent
a21249436b
commit
ed7f804775
3 changed files with 35 additions and 2 deletions
|
@ -1919,3 +1919,36 @@ func TestRootWriteReadFile(t *testing.T) {
|
|||
t.Fatalf("root.ReadFile(%q) = %q, %v; want %q, nil", name, got, err, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRootName(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
root, err := os.OpenRoot(dir)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer root.Close()
|
||||
if got, want := root.Name(), dir; got != want {
|
||||
t.Errorf("root.Name() = %q, want %q", got, want)
|
||||
}
|
||||
|
||||
f, err := root.Create("file")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer f.Close()
|
||||
if got, want := f.Name(), filepath.Join(dir, "file"); got != want {
|
||||
t.Errorf(`root.Create("file").Name() = %q, want %q`, got, want)
|
||||
}
|
||||
|
||||
if err := root.Mkdir("dir", 0o777); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
subroot, err := root.OpenRoot("dir")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer subroot.Close()
|
||||
if got, want := subroot.Name(), filepath.Join(dir, "dir"); got != want {
|
||||
t.Errorf(`root.OpenRoot("dir").Name() = %q, want %q`, got, want)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ func openRootInRoot(r *Root, name string) (*Root, error) {
|
|||
if err != nil {
|
||||
return nil, &PathError{Op: "openat", Path: name, Err: err}
|
||||
}
|
||||
return newRoot(fd, name)
|
||||
return newRoot(fd, joinPath(r.Name(), name))
|
||||
}
|
||||
|
||||
// rootOpenFileNolog is Root.OpenFile.
|
||||
|
|
|
@ -123,7 +123,7 @@ func openRootInRoot(r *Root, name string) (*Root, error) {
|
|||
if err != nil {
|
||||
return nil, &PathError{Op: "openat", Path: name, Err: err}
|
||||
}
|
||||
return newRoot(fd, name)
|
||||
return newRoot(fd, joinPath(r.Name(), name))
|
||||
}
|
||||
|
||||
// rootOpenFileNolog is Root.OpenFile.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue