Fixed umask-related issues in permissions tests.
commit
2f7eff5981
|
@ -70,6 +70,17 @@ func currentGid() uint32 {
|
||||||
return uint32(gid)
|
return uint32(gid)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Transform the supplied mode by the current umask.
|
||||||
|
func applyUmask(m os.FileMode) os.FileMode {
|
||||||
|
// HACK(jacobsa): Use umask(2) to change and restore the umask in order to
|
||||||
|
// figure out what the mask is. See the listing in `man getumask`.
|
||||||
|
umask := syscall.Umask(0)
|
||||||
|
syscall.Umask(umask)
|
||||||
|
|
||||||
|
// Apply it.
|
||||||
|
return m &^ os.FileMode(umask)
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
// Boilerplate
|
// Boilerplate
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -183,7 +194,7 @@ func (t *MemFSTest) Mkdir_OneLevel() {
|
||||||
AssertEq(nil, err)
|
AssertEq(nil, err)
|
||||||
ExpectEq("dir", fi.Name())
|
ExpectEq("dir", fi.Name())
|
||||||
ExpectEq(0, fi.Size())
|
ExpectEq(0, fi.Size())
|
||||||
ExpectEq(os.ModeDir|0754, fi.Mode())
|
ExpectEq(os.ModeDir|applyUmask(0754), fi.Mode())
|
||||||
ExpectThat(fi, fusetesting.MtimeIs(createTime))
|
ExpectThat(fi, fusetesting.MtimeIs(createTime))
|
||||||
ExpectThat(fi, fusetesting.BirthtimeIs(createTime))
|
ExpectThat(fi, fusetesting.BirthtimeIs(createTime))
|
||||||
ExpectTrue(fi.IsDir())
|
ExpectTrue(fi.IsDir())
|
||||||
|
@ -214,7 +225,7 @@ func (t *MemFSTest) Mkdir_OneLevel() {
|
||||||
|
|
||||||
fi = entries[0]
|
fi = entries[0]
|
||||||
ExpectEq("dir", fi.Name())
|
ExpectEq("dir", fi.Name())
|
||||||
ExpectEq(os.ModeDir|0754, fi.Mode())
|
ExpectEq(os.ModeDir|applyUmask(0754), fi.Mode())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *MemFSTest) Mkdir_TwoLevels() {
|
func (t *MemFSTest) Mkdir_TwoLevels() {
|
||||||
|
@ -245,7 +256,7 @@ func (t *MemFSTest) Mkdir_TwoLevels() {
|
||||||
AssertEq(nil, err)
|
AssertEq(nil, err)
|
||||||
ExpectEq("dir", fi.Name())
|
ExpectEq("dir", fi.Name())
|
||||||
ExpectEq(0, fi.Size())
|
ExpectEq(0, fi.Size())
|
||||||
ExpectEq(os.ModeDir|0754, fi.Mode())
|
ExpectEq(os.ModeDir|applyUmask(0754), fi.Mode())
|
||||||
ExpectThat(fi, fusetesting.MtimeIs(createTime))
|
ExpectThat(fi, fusetesting.MtimeIs(createTime))
|
||||||
ExpectThat(fi, fusetesting.BirthtimeIs(createTime))
|
ExpectThat(fi, fusetesting.BirthtimeIs(createTime))
|
||||||
ExpectTrue(fi.IsDir())
|
ExpectTrue(fi.IsDir())
|
||||||
|
@ -275,7 +286,7 @@ func (t *MemFSTest) Mkdir_TwoLevels() {
|
||||||
|
|
||||||
fi = entries[0]
|
fi = entries[0]
|
||||||
ExpectEq("dir", fi.Name())
|
ExpectEq("dir", fi.Name())
|
||||||
ExpectEq(os.ModeDir|0754, fi.Mode())
|
ExpectEq(os.ModeDir|applyUmask(0754), fi.Mode())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *MemFSTest) Mkdir_AlreadyExists() {
|
func (t *MemFSTest) Mkdir_AlreadyExists() {
|
||||||
|
@ -357,7 +368,7 @@ func (t *MemFSTest) CreateNewFile_InRoot() {
|
||||||
AssertEq(nil, err)
|
AssertEq(nil, err)
|
||||||
ExpectEq("foo", fi.Name())
|
ExpectEq("foo", fi.Name())
|
||||||
ExpectEq(len(contents), fi.Size())
|
ExpectEq(len(contents), fi.Size())
|
||||||
ExpectEq(0400, fi.Mode())
|
ExpectEq(applyUmask(0400), fi.Mode())
|
||||||
ExpectThat(fi, fusetesting.MtimeIs(createTime))
|
ExpectThat(fi, fusetesting.MtimeIs(createTime))
|
||||||
ExpectThat(fi, fusetesting.BirthtimeIs(createTime))
|
ExpectThat(fi, fusetesting.BirthtimeIs(createTime))
|
||||||
ExpectFalse(fi.IsDir())
|
ExpectFalse(fi.IsDir())
|
||||||
|
@ -402,7 +413,7 @@ func (t *MemFSTest) CreateNewFile_InSubDir() {
|
||||||
AssertEq(nil, err)
|
AssertEq(nil, err)
|
||||||
ExpectEq("foo", fi.Name())
|
ExpectEq("foo", fi.Name())
|
||||||
ExpectEq(len(contents), fi.Size())
|
ExpectEq(len(contents), fi.Size())
|
||||||
ExpectEq(0400, fi.Mode())
|
ExpectEq(applyUmask(0400), fi.Mode())
|
||||||
ExpectThat(fi, fusetesting.MtimeIs(createTime))
|
ExpectThat(fi, fusetesting.MtimeIs(createTime))
|
||||||
ExpectThat(fi, fusetesting.BirthtimeIs(createTime))
|
ExpectThat(fi, fusetesting.BirthtimeIs(createTime))
|
||||||
ExpectFalse(fi.IsDir())
|
ExpectFalse(fi.IsDir())
|
||||||
|
@ -455,7 +466,7 @@ func (t *MemFSTest) ModifyExistingFile_InRoot() {
|
||||||
AssertEq(nil, err)
|
AssertEq(nil, err)
|
||||||
ExpectEq("foo", fi.Name())
|
ExpectEq("foo", fi.Name())
|
||||||
ExpectEq(len("Hello, world!"), fi.Size())
|
ExpectEq(len("Hello, world!"), fi.Size())
|
||||||
ExpectEq(0600, fi.Mode())
|
ExpectEq(applyUmask(0600), fi.Mode())
|
||||||
ExpectThat(fi, fusetesting.MtimeIs(modifyTime))
|
ExpectThat(fi, fusetesting.MtimeIs(modifyTime))
|
||||||
ExpectThat(fi, fusetesting.BirthtimeIs(createTime))
|
ExpectThat(fi, fusetesting.BirthtimeIs(createTime))
|
||||||
ExpectFalse(fi.IsDir())
|
ExpectFalse(fi.IsDir())
|
||||||
|
@ -513,7 +524,7 @@ func (t *MemFSTest) ModifyExistingFile_InSubDir() {
|
||||||
AssertEq(nil, err)
|
AssertEq(nil, err)
|
||||||
ExpectEq("foo", fi.Name())
|
ExpectEq("foo", fi.Name())
|
||||||
ExpectEq(len("Hello, world!"), fi.Size())
|
ExpectEq(len("Hello, world!"), fi.Size())
|
||||||
ExpectEq(0600, fi.Mode())
|
ExpectEq(applyUmask(0600), fi.Mode())
|
||||||
ExpectThat(fi, fusetesting.MtimeIs(modifyTime))
|
ExpectThat(fi, fusetesting.MtimeIs(modifyTime))
|
||||||
ExpectThat(fi, fusetesting.BirthtimeIs(createTime))
|
ExpectThat(fi, fusetesting.BirthtimeIs(createTime))
|
||||||
ExpectFalse(fi.IsDir())
|
ExpectFalse(fi.IsDir())
|
||||||
|
@ -1059,7 +1070,7 @@ func (t *MemFSTest) Chmod() {
|
||||||
// Stat it.
|
// Stat it.
|
||||||
fi, err := os.Stat(fileName)
|
fi, err := os.Stat(fileName)
|
||||||
AssertEq(nil, err)
|
AssertEq(nil, err)
|
||||||
ExpectEq(os.FileMode(0754), fi.Mode())
|
ExpectEq(0754, fi.Mode())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *MemFSTest) Chtimes() {
|
func (t *MemFSTest) Chtimes() {
|
||||||
|
|
Loading…
Reference in New Issue