Skip to content

Commit a3bf6fe

Browse files
committed
Testcases for subscribing a single file.
1 parent 2d05e76 commit a3bf6fe

File tree

1 file changed

+180
-0
lines changed

1 file changed

+180
-0
lines changed

tests/test_single_file_watched.py

+180
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
# coding: utf-8
2+
3+
""" Test cases when a single file is subscribed. """
4+
5+
from os import mkdir
6+
import time
7+
8+
from .utils import P, StartWatching, TestEventQueue
9+
10+
SLEEP = 0.001
11+
12+
13+
def test_selftest(p: P, start_watching: StartWatching, event_queue: TestEventQueue) -> None:
14+
""" Check if all events are catched in SLEEP time. """
15+
16+
emitter = start_watching(path=p()) # Pretty sure this should work
17+
18+
with open(p('file1.bak'), 'wt') as fp:
19+
fp.write('test1')
20+
21+
with open(p('file2.bak'), 'wt') as fp:
22+
fp.write('test2')
23+
24+
time.sleep(SLEEP)
25+
26+
found_files = set()
27+
try:
28+
while event_queue.qsize():
29+
event, _ = event_queue.get()
30+
if event.is_directory: # Not catched on Windows
31+
assert event.src_path == p()
32+
else:
33+
found_files.add(event.src_path)
34+
finally:
35+
emitter.stop()
36+
37+
assert len(found_files) == 2, 'Number of expected files differ. Increase sleep time.'
38+
39+
40+
def test_file_access(p: P, start_watching: StartWatching, event_queue: TestEventQueue) -> None:
41+
""" Check if file fires events. """
42+
43+
file1 = 'file1.bak'
44+
tmpfile = p(file1)
45+
46+
with open(tmpfile, 'wt') as fp:
47+
fp.write('init1')
48+
49+
emitter = start_watching(path=tmpfile)
50+
51+
# This is what we want to see
52+
with open(tmpfile, 'wt') as fp:
53+
fp.write('test1')
54+
55+
time.sleep(SLEEP)
56+
57+
try:
58+
while event_queue.qsize():
59+
event, _ = event_queue.get()
60+
if event.is_directory:
61+
assert event.src_path == p()
62+
continue
63+
else:
64+
assert event.src_path.endswith(file1)
65+
break
66+
else:
67+
assert False, 'No event catched.'
68+
finally:
69+
emitter.stop()
70+
71+
72+
def test_file_access_multiple(
73+
p: P, start_watching: StartWatching, event_queue: TestEventQueue
74+
) -> None:
75+
""" Check if file fires events multiple times. """
76+
77+
file1 = 'file1.bak'
78+
tmpfile = p(file1)
79+
80+
with open(tmpfile, 'wt') as fp:
81+
fp.write('init1')
82+
83+
emitter = start_watching(path=tmpfile)
84+
85+
try:
86+
for i in range(5):
87+
# This is what we want to see multiple times
88+
with open(tmpfile, 'wt') as fp:
89+
fp.write('test1')
90+
91+
time.sleep(SLEEP)
92+
93+
while event_queue.qsize():
94+
event, _ = event_queue.get()
95+
if event.is_directory:
96+
assert event.src_path == p()
97+
continue
98+
else:
99+
assert event.src_path.endswith(file1)
100+
break
101+
else:
102+
assert False, 'No event catched.'
103+
104+
finally:
105+
emitter.stop()
106+
107+
108+
def test_file_access_other_file(
109+
p: P, start_watching: StartWatching, event_queue: TestEventQueue
110+
) -> None:
111+
""" Check if other files doesn't fires events. """
112+
113+
file1 = 'file1.bak'
114+
tmpfile = p(file1)
115+
116+
with open(tmpfile, 'wt') as fp:
117+
fp.write('init1')
118+
119+
emitter = start_watching(path=tmpfile)
120+
121+
# Don't wanted
122+
with open(p('file2.bak'), 'wt') as fp:
123+
fp.write('test2')
124+
125+
# but this
126+
with open(tmpfile, 'wt') as fp:
127+
fp.write('test1')
128+
129+
time.sleep(SLEEP)
130+
131+
found_files = set()
132+
try:
133+
while event_queue.qsize():
134+
event, _ = event_queue.get()
135+
if event.is_directory:
136+
assert event.src_path == p()
137+
else:
138+
found_files.add(event.src_path)
139+
assert event.src_path.endswith(file1)
140+
finally:
141+
emitter.stop()
142+
143+
assert len(found_files) == 1, 'Number of expected files differ. Wrong file catched.'
144+
145+
146+
def test_create_folder(p: P, start_watching: StartWatching, event_queue: TestEventQueue) -> None:
147+
""" Check if creation of a directory and inside files doesn't fires events. """
148+
149+
file1 = 'file1.bak'
150+
tmpfile = p(file1)
151+
152+
with open(tmpfile, 'wt') as fp:
153+
fp.write('init1')
154+
155+
emitter = start_watching(path=tmpfile)
156+
157+
# Don't wanted
158+
mkdir(p('myfolder'))
159+
with open(p('myfolder/file2.bak'), 'wt') as fp:
160+
fp.write('test2')
161+
162+
# but this
163+
with open(tmpfile, 'wt') as fp:
164+
fp.write('test1')
165+
166+
time.sleep(SLEEP)
167+
168+
found_files = set()
169+
try:
170+
while event_queue.qsize():
171+
event, _ = event_queue.get()
172+
if event.is_directory:
173+
assert event.src_path == p()
174+
else:
175+
found_files.add(event.src_path)
176+
assert event.src_path.endswith(file1)
177+
finally:
178+
emitter.stop()
179+
180+
assert len(found_files) == 1, 'Number of expected files differ. Wrong file catched.'

0 commit comments

Comments
 (0)