def updateLog(self, watchPath = None): if not self.enableUpdate: return mode = self.comboFilter.itemData(self.comboFilter.currentIndex()) if watchPath and self.sid is None: # remove path from watch to prevent multiple updates at the same time self.watcher.removePath(watchPath) # append only new lines to txtLogView log = snapshotlog.SnapshotLog(self.config, self.comboProfiles.currentProfileID()) for line in log.get(mode = mode, decode = self.decode, skipLines = self.txtLogView.document().lineCount() - 1): self.txtLogView.appendPlainText(line) # re-add path to watch after 5sec delay alarm = tools.Alarm(callback = lambda: self.watcher.addPath(watchPath), overwrite = False) alarm.start(5) elif self.sid is None: log = snapshotlog.SnapshotLog(self.config, self.comboProfiles.currentProfileID()) self.txtLogView.setPlainText('\n'.join(log.get(mode = mode, decode = self.decode))) else: self.txtLogView.setPlainText('\n'.join(self.sid.log(mode, decode = self.decode)))
def test_get(self): log = snapshotlog.SnapshotLog(self.cfg) log.append('foo bar', 1) log.flush() self.assertExists(self.logFile) self.assertEqual('\n'.join(log.get()), 'foo bar')
def test_append(self): log = snapshotlog.SnapshotLog(self.cfg) log.append('foo', 1) log.flush() self.assertExists(self.logFile) with open(self.logFile, 'rt') as f: self.assertEqual(f.read(), 'foo\n')
def test_skipLines(self): log = snapshotlog.SnapshotLog(self.cfg) for i in range(10): log.append(str(i), 1) log.flush() self.assertEqual('\n'.join(log.get(skipLines=4)), '\n'.join([str(i) for i in range(4, 10)]))
def test_get_filter(self): log = snapshotlog.SnapshotLog(self.cfg) log.append('foo bar', 1) log.append('[I] 123', 1) log.append('[C] baz', 1) log.append('[E] bla', 1) log.flush() self.assertTrue(os.path.exists(self.logFile)) self.assertEqual('\n'.join(log.get(mode = snapshotlog.LogFilter.CHANGES)), 'foo bar\n[C] baz')
def test_append_log_level(self): self.cfg.setLogLevel(2) log = snapshotlog.SnapshotLog(self.cfg) log.append('foo', 3) log.flush() self.assertNotExists(self.logFile) log.append('bar', 1) log.flush() self.assertExists(self.logFile) with open(self.logFile, 'rt') as f: self.assertEqual(f.read(), 'bar\n')
def test_new(self): log = snapshotlog.SnapshotLog(self.cfg) now = datetime.today() with open(self.logFile, 'wt') as f: f.write('foo\nbar\n') log.new(now) log.flush() self.assertTrue(os.path.exists(self.logFile)) with open(self.logFile, 'rt') as f: self.assertRegex(f.read(), re.compile(r'''========== Take snapshot \(profile .*\): .* ========== ''', re.MULTILINE))
def test_skipLines_filtered(self): log = snapshotlog.SnapshotLog(self.cfg) log.append('foo bar', 1) log.append('[I] 123', 1) log.append('[C] baz', 1) log.append('[E] bla', 1) log.append('[C] 456', 1) log.append('[C] 789', 1) log.append('[E] qwe', 1) log.append('[C] asd', 1) log.flush() self.assertEqual('\n'.join(log.get(mode = snapshotlog.LogFilter.CHANGES, skipLines = 2)), '[C] 456\n[C] 789\n[C] asd')
def test_new_continue(self): log = snapshotlog.SnapshotLog(self.cfg) now = datetime.today() with open(self.logFile, 'wt') as f: f.write('foo\nbar\n') new = snapshots.NewSnapshot(self.cfg) new.makeDirs() new.saveToContinue = True log.new(now) log.flush() self.assertTrue(os.path.exists(self.logFile)) with open(self.logFile, 'rt') as f: self.assertRegex(f.read(), re.compile(r'''foo bar Last snapshot didn't finish but can be continued. ======== continue snapshot \(profile .*\): .* ======== ''', re.MULTILINE))