Skip to content

Commit 31918a8

Browse files
Merge branch 'master' into 134_multiple_stepImplDir
2 parents df7a7c1 + 84c792d commit 31918a8

File tree

4 files changed

+36
-1
lines changed

4 files changed

+36
-1
lines changed

getgauge/processor.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,10 @@ def _cache_file(request, _response, _socket):
210210
def update_registry(file, status, content):
211211
if status == CacheFileRequest.CHANGED or status == CacheFileRequest.OPENED:
212212
reload_steps(file, content)
213-
elif status == CacheFileRequest.CREATED or status == CacheFileRequest.CLOSED:
213+
elif status == CacheFileRequest.CREATED:
214+
if not registry.is_file_cached(file):
215+
_load_from_disk(file)
216+
elif status == CacheFileRequest.CLOSED:
214217
_load_from_disk(file)
215218
else:
216219
registry.remove_steps(file)

getgauge/registry.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,12 @@ def get_all_methods_in(self, file_name):
186186
methods = methods + [i for i in infos if i.file_name == file_name]
187187
return methods + self._get_all_hooks(file_name)
188188

189+
def is_file_cached(self, file_name):
190+
for _, infos in self.__steps_map.items():
191+
if any(i.file_name == file_name for i in infos):
192+
return True
193+
return False
194+
189195
def remove_steps(self, file_name):
190196
new_map = {}
191197
for step, infos in self.__steps_map.items():

tests/test_processor.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -641,6 +641,26 @@ def foo():
641641

642642
self.assertEqual(registry.is_implemented('foo {}'), True)
643643

644+
def test_Processor_cache_file_with_create_status_when_file_is_cached(self):
645+
request = Message()
646+
response = Message()
647+
self.load_content_steps('''\
648+
from getgauge.python import step
649+
650+
@step('foo <bar>')
651+
def foo():
652+
pass
653+
''')
654+
655+
self.assertEqual(registry.is_implemented('foo {}'), True)
656+
657+
request.cacheFileRequest.filePath = 'foo.py'
658+
request.cacheFileRequest.status = CacheFileRequest.CREATED
659+
self.fs.create_file('foo.py')
660+
processors[Message.CacheFileRequest](request, response, None)
661+
662+
self.assertEqual(registry.is_implemented('foo {}'), True)
663+
644664
def test_Processor_cache_file_with_closed_status(self):
645665
request = Message()
646666
response = Message()

tests/test_registry.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,12 @@ def test_Registry_remove_steps_of_a_given_file_with_duplicate_implementations(se
334334
self.assertTrue(registry.is_implemented('Step 1'))
335335
self.assertFalse(registry.has_multiple_impls('Step 1'))
336336

337+
def test_Registry_is_file_cached(self):
338+
info = {'text': 'Say <hello> to <getgauge>', 'func': 'func', 'file_name': 'foo.py'}
339+
registry.add_step(info['text'], info['func'], info['file_name'])
340+
341+
self.assertTrue(registry.is_file_cached(info['file_name']))
342+
337343
def test_Registry_add_step_with_empty_arg(self):
338344
info = {'text': 'Step <>', 'func': 'func', 'file_name': 'foo.py'}
339345

0 commit comments

Comments
 (0)