// retoor <retoor@molodetz.nl>
import "fswatch" for FileWatcher, FsEvent
import "timer" for Timer
import "io" for File, FileFlags
var testFile = "/tmp/fswatch_test_%(Num.fromString("%(System.clock)".split(".")[1])).txt"
var f = File.openWithFlags(testFile, FileFlags.writeOnly | FileFlags.create | FileFlags.truncate)
f.writeBytes("initial", 0)
f.close()
var watcher = FileWatcher.new(testFile)
var received = []
watcher.start { |event|
received.add(event)
}
System.print(watcher.isActive) // expect: true
Timer.immediate {
var f2 = File.openWithFlags(testFile, FileFlags.writeOnly | FileFlags.truncate)
f2.writeBytes("modified", 0)
f2.close()
}
Timer.sleep(100)
System.print(received.count > 0) // expect: true
System.print(received[0] is FsEvent) // expect: true
watcher.stop()
System.print(watcher.isActive) // expect: false