def setUp(self): dir = os.path.dirname(__file__) self.file = os.path.join(dir, 'watcher', 'test.txt') factory = Mock() factory.factory = MagicMock(return_value='return') self.watcher = CoverageWatcher(self.file, factory) self.detected = threading.Event() self.delete()
def add(self, view): """ Sets up a watcher for a newly opened view. """ if not config.watch_report: return # find coverage file for the view's file filename = view.file_name() if filename is None: return if not self.matcher.should_include(filename): debug_message("Ignoring excluded file '%s'" % filename) return coverage = self.coverage_finder.find(filename) # nothing can be done if the coverage file can't be found if not coverage: return # ensure a CoverageWatcher exists for the coverage file if not coverage in self.watchers: debug_message("Creating CoverageWatcher for " + coverage) self.watchers[coverage] = CoverageWatcher(coverage) else: debug_message("Found existing CoverageWatcher for " + coverage) watcher = self.watchers[coverage] # add callbacks as defined at construction time, also adding in # the relevant view as a parameter to the callback for event, callback in self.callbacks.items(): wrapped = self.prepare_callback(callback, view) watcher.add_callback(event, view.id(), wrapped) # start the watcher if it's not already running if not watcher.is_alive(): debug_message("Starting CoverageWatcher for " + coverage) watcher.start()
class TestCoverageWatcher(TestFileWatcher): def setUp(self): dir = os.path.dirname(__file__) self.file = os.path.join(dir, 'watcher', 'test.txt') factory = Mock() factory.factory = MagicMock(return_value='return') self.watcher = CoverageWatcher(self.file, factory) self.detected = threading.Event() self.delete() def tearDown(self): super(TestCoverageWatcher, self).tearDown() factory = self.watcher.get_coverage_factory() factory.factory.assert_called_once_with(self.file) def test_created(self): self.watcher.add_callback(CREATED, 1, lambda x: self.detect(x)) self.watcher.start() self.create('created') self.assertTrue(self.detected.wait(1)) def test_deleted(self): self.watcher.add_callback(DELETED, 1, lambda x: self.detect(x)) self.create('deleted') self.watcher.start() self.delete() self.assertTrue(self.detected.wait(1)) def test_modified(self): self.watcher.add_callback(MODIFIED, 1, lambda x: self.detect(x)) self.create('modified1') self.watcher.start() self.modify('modified2') self.assertTrue(self.detected.wait(1)) def test_unchanged(self): self.watcher.add_callback(UNCHANGED, 1, lambda x: self.detect(x)) self.create('unchanged') self.watcher.start() self.modify('unchanged') self.assertTrue(self.detected.wait(1)) def detect(self, data): "Perform callback parameter assertions and set detected event" self.assertEquals(data, 'return') self.detected.set()