forked from eventmachine/eventmachine
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest_file_watch.rb
49 lines (41 loc) · 881 Bytes
/
test_file_watch.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
$:.unshift "../lib"
require 'eventmachine'
require 'test/unit'
class TestFileWatch < Test::Unit::TestCase
module FileWatcher
def file_modified
$modified = true
end
def file_deleted
$deleted = true
end
def unbind
$unbind = true
EM.stop
end
end
def setup
EM.kqueue = true if EM.kqueue?
end
def teardown
EM.kqueue = false if EM.kqueue?
end
def test_events
EM.run{
require 'tempfile'
file = Tempfile.new('em-watch')
$tmp_path = file.path
# watch it
watch = EM.watch_file(file.path, FileWatcher)
$path = watch.path
# modify it
File.open(file.path, 'w'){ |f| f.puts 'hi' }
# delete it
EM.add_timer(0.01){ file.close; file.delete }
}
assert_equal($path, $tmp_path)
assert($modified)
assert($deleted)
assert($unbind)
end
end