From fca9d4b5b6271865cd5f90f24877e88017b619f2 Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Mon, 27 Jun 2016 13:17:03 -0400 Subject: [PATCH] check: failing test case for #8 https://github.com/vbatts/go-mtree/issues/8 Signed-off-by: Vincent Batts --- check_test.go | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/check_test.go b/check_test.go index de7c96c..81dab47 100644 --- a/check_test.go +++ b/check_test.go @@ -1,6 +1,7 @@ package mtree import ( + "bytes" "io/ioutil" "os" "path/filepath" @@ -95,3 +96,46 @@ func ExampleCheck() { // handle failed validity ... } } + +// https://github.com/vbatts/go-mtree/issues/8 +func TestTimeComparison(t *testing.T) { + dir, err := ioutil.TempDir("", "test-time.") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(dir) + + // This is the format of time from FreeBSD + spec := ` +/set type=file time=0.000000000 +. type=dir + file time=0.000000000 +.. +` + + fh, err := os.Create(filepath.Join(dir, "file")) + if err != nil { + t.Fatal(err) + } + // This is what mode we're checking for. Round integer of epoch seconds + epoch := time.Unix(0, 0) + if err := os.Chtimes(fh.Name(), epoch, epoch); err != nil { + t.Fatal(err) + } + if err := fh.Close(); err != nil { + t.Error(err) + } + + dh, err := ParseSpec(bytes.NewBufferString(spec)) + if err != nil { + t.Fatal(err) + } + + res, err := Check(dir, dh, nil) + if err != nil { + t.Error(err) + } + if len(res.Failures) > 0 { + t.Fatal(res.Failures) + } +}