summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJakob Unterwurzacher2016-10-19 22:25:54 +0200
committerJakob Unterwurzacher2016-10-19 22:25:54 +0200
commit589748548f24429bb30a8aafb3cae0d295b07da0 (patch)
tree24f60b0d7c199e8da75236747c9bf0a0f2d2da5c /tests
parent600ceece359d835934ad039bdd0e83cd647c410f (diff)
tests: add 1980.tar.gz extract test
Test that we get the right timestamp when extracting a tarball. Also simplify the workaround in doTestUtimesNano() and fix the fact that it was running no test at all.
Diffstat (limited to 'tests')
-rw-r--r--tests/defaults/main_test.go20
-rw-r--r--tests/matrix/matrix_test.go17
2 files changed, 25 insertions, 12 deletions
diff --git a/tests/defaults/main_test.go b/tests/defaults/main_test.go
index a623c48..849aa69 100644
--- a/tests/defaults/main_test.go
+++ b/tests/defaults/main_test.go
@@ -3,6 +3,7 @@ package defaults
import (
"os"
+ "os/exec"
"testing"
"github.com/rfjakob/gocryptfs/tests/test_helpers"
@@ -15,3 +16,22 @@ func TestMain(m *testing.M) {
test_helpers.UnmountPanic(test_helpers.DefaultPlainDir)
os.Exit(r)
}
+
+// Test that we get the right timestamp when extracting a tarball.
+func Test1980Tar(t *testing.T) {
+ c := exec.Command("tar", "xzf", "1980.tar.gz", "-C", test_helpers.DefaultPlainDir)
+ c.Stderr = os.Stderr
+ c.Stdout = os.Stdout
+ err := c.Run()
+ if err != nil {
+ t.Fatal(err)
+ }
+ fi, err := os.Stat(test_helpers.DefaultPlainDir + "/1980.txt")
+ if err != nil {
+ t.Fatal(err)
+ }
+ m := fi.ModTime().Unix()
+ if m != 315619323 {
+ t.Errorf("Wrong mtime: %d", m)
+ }
+}
diff --git a/tests/matrix/matrix_test.go b/tests/matrix/matrix_test.go
index 9d42115..05b58ee 100644
--- a/tests/matrix/matrix_test.go
+++ b/tests/matrix/matrix_test.go
@@ -660,21 +660,10 @@ type utimesTestcaseStruct struct {
func compareUtimes(want [2]syscall.Timespec, actual [2]syscall.Timespec) error {
tsNames := []string{"atime", "mtime"}
for i := range want {
- if fusefrontend.BrokenAtimeOmit && i == 0 {
- // Don't check atime. It's broken in go-fuse.
- // TODO remove this once the pull request is merged:
- // https://github.com/hanwen/go-fuse/pull/131
- continue
- }
if want[i].Sec != actual[i].Sec {
return fmt.Errorf("Wrong %s seconds: want=%d actual=%d", tsNames[i], want[i].Sec, actual[i].Sec)
}
if want[i].Nsec != actual[i].Nsec {
- if actual[i].Nsec == 0 {
- // TODO remove this once the pull request is merged:
- // https://github.com/hanwen/go-fuse/pull/131
- continue
- }
return fmt.Errorf("Wrong %s nanoseconds: want=%d actual=%d", tsNames[i], want[i].Nsec, actual[i].Nsec)
}
}
@@ -688,6 +677,10 @@ const _UTIME_OMIT = ((1 << 30) - 2)
func doTestUtimesNano(t *testing.T, path string) {
utimeTestcases := []utimesTestcaseStruct{
{
+ in: [2]syscall.Timespec{{Sec: 50, Nsec: 0}, {Sec: 50, Nsec: 0}},
+ out: [2]syscall.Timespec{{Sec: 50, Nsec: 0}, {Sec: 50, Nsec: 0}},
+ },
+ {
in: [2]syscall.Timespec{{Sec: 1, Nsec: 2}, {Sec: 3, Nsec: 4}},
out: [2]syscall.Timespec{{Sec: 1, Nsec: 2}, {Sec: 3, Nsec: 4}},
},
@@ -703,7 +696,7 @@ func doTestUtimesNano(t *testing.T, path string) {
if fusefrontend.BrokenAtimeOmit {
// TODO remove this once the pull request is merged:
// https://github.com/hanwen/go-fuse/pull/131
- utimeTestcases = utimeTestcases[0:0]
+ utimeTestcases = utimeTestcases[:1]
}
for i, tc := range utimeTestcases {
err := syscall.UtimesNano(path, tc.in[:])