--- /dev/null
+$:.unshift "../lib"\r
+require 'eventmachine'\r
+require 'test/unit'\r
+\r
+class TestFileWatch < Test::Unit::TestCase\r
+ module FileWatcher\r
+ def file_modified\r
+ $modified = true\r
+ end\r
+ def file_deleted\r
+ $deleted = true\r
+ end\r
+ def unbind\r
+ $unbind = true\r
+ EM.stop\r
+ end\r
+ end\r
+\r
+ def setup\r
+ EM.kqueue = true if EM.kqueue?\r
+ end\r
+\r
+ def teardown\r
+ EM.kqueue = false if EM.kqueue?\r
+ end\r
+\r
+ def test_events\r
+ EM.run{\r
+ require 'tempfile'\r
+ file = Tempfile.new('em-watch')\r
+ $tmp_path = file.path\r
+\r
+ # watch it\r
+ watch = EM.watch_file(file.path, FileWatcher)\r
+ $path = watch.path\r
+\r
+ # modify it\r
+ File.open(file.path, 'w'){ |f| f.puts 'hi' }\r
+\r
+ # delete it\r
+ EM.add_timer(0.25){ file.close; file.delete }\r
+ }\r
+\r
+ assert_equal($path, $tmp_path)\r
+ assert($modified)\r
+ assert($deleted)\r
+ assert($unbind)\r
+ end\r
+end\r