summaryrefslogtreecommitdiff
path: root/main_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'main_test.go')
-rw-r--r--main_test.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/main_test.go b/main_test.go
index c4b0ec7..f2aae0a 100644
--- a/main_test.go
+++ b/main_test.go
@@ -361,3 +361,37 @@ func TestSortingFilteringSlicing(t *testing.T) {
t.Fatal("slice")
}
}
+
+func TestUnchangedOutputsKeepMtime(t *testing.T) {
+ root := t.TempDir()
+ writeTestFile(t, root, "layout.tmpl", testLayouts())
+ writeTestFile(t, root, "a.md", "# A\n\nbody\n")
+ writeTestFile(t, root, "b.md", "# B\n\nbody\n")
+ if err := build(root); err != nil {
+ t.Fatal(err)
+ }
+ old := time.Now().Add(-time.Hour)
+ for _, name := range []string{"a.html", "b.html"} {
+ if err := os.Chtimes(filepath.Join(root, name), old, old); err != nil {
+ t.Fatal(err)
+ }
+ }
+ writeTestFile(t, root, "b.md", "# B\n\nchanged\n")
+ if err := build(root); err != nil {
+ t.Fatal(err)
+ }
+ unchanged, err := os.Stat(filepath.Join(root, "a.html"))
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !unchanged.ModTime().Equal(old) {
+ t.Errorf("unchanged output mtime bumped: %v", unchanged.ModTime())
+ }
+ changed, err := os.Stat(filepath.Join(root, "b.html"))
+ if err != nil {
+ t.Fatal(err)
+ }
+ if changed.ModTime().Equal(old) {
+ t.Error("changed output mtime not updated")
+ }
+}