"os"
"os/exec"
"path/filepath"
+ "runtime"
"sync/atomic"
"testing"
"time"
time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
- cmd := exec.Command("mv", testFile, testFileRenamed)
- err = cmd.Run()
+ err = testRename(testFile, testFileRenamed)
if err != nil {
t.Fatalf("rename failed: %s", err)
}
t.Fatalf("Watcher.Watch() failed: %s", err)
}
- cmd := exec.Command("mv", testFile, testFileRenamed)
- err = cmd.Run()
+ err = testRename(testFile, testFileRenamed)
if err != nil {
t.Fatalf("rename failed: %s", err)
}
f.Sync()
f.Close()
- cmd := exec.Command("mv", testFile, testFileRenamed)
- err = cmd.Run()
+ err = testRename(testFile, testFileRenamed)
if err != nil {
t.Fatalf("rename failed: %s", err)
}
f.Sync()
f.Close()
- cmd := exec.Command("mv", testFile, testFileRenamed)
- err = cmd.Run()
+ err = testRename(testFile, testFileRenamed)
if err != nil {
t.Fatalf("rename failed: %s", err)
}
t.Fatal("expected error on Watch() after Close(), got nil")
}
}
+
+func testRename(file1, file2 string) error {
+ switch runtime.GOOS {
+ case "windows", "plan9":
+ return os.Rename(file1, file2)
+ default:
+ cmd := exec.Command("mv", file1, file2)
+ return cmd.Run()
+ }
+}