def test_updated(self, log): # test pr = ProgressReport() pr._updated() # validation self.assertTrue(log.info.called)
def test_report_steps(self): steps = ('A', 'B', 'C') action = ('downloading', 'package-xyz-1.0-1.f16.rpm') # test and validation pr = ProgressReport() pr._updated = Mock() for s in steps: # validate steps pushed with status of None pr.push_step(s) name, status = pr.steps[-1] self.assertEqual(name, s) self.assertTrue(status is None) # validate details cleared on state pushed self.assertEqual(len(pr.details), 0) # set the action pr.set_action(action[0], action[1]) # validate action self.assertEqual(pr.details['action'], action[0]) self.assertEqual(pr.details['package'], action[1]) # validate previous step status is set (True) on next # push when status is None prev = pr.steps[-2:-1] if prev: self.assertTrue(prev[0][1])
def test_errorlog(self): pr = ProgressReport() pr._updated = Mock() # test cb = RPMCallback(pr) message = 'Something bad happened' cb.errorlog(message) # validation self.assertEqual(pr.details['error'], message) self.assertEqual(len(pr.steps), 0)
def test_filelog(self): pr = ProgressReport() pr._updated = Mock() # test and validation cb = RPMCallback(pr) for action in sorted(cb.fileaction.keys()): package = '%s_package' % action cb.filelog(package, action) self.assertEqual(pr.details['action'], cb.fileaction[action]) self.assertEqual(pr.details['package'], package) self.assertEqual(len(pr.steps), 0)
def test_download_callback(self): files = ('A', 'B', 'C') pr = ProgressReport() pr._updated = Mock() # test and validation cb = DownloadCallback(pr) for file in files: path = '/path/%s' % file cb.start(filename=path, basename=file, size=1024) self.assertEqual(pr.details['action'], 'Downloading') self.assertEqual(pr.details['package'], '%s | 1.0 k' % file) self.assertEqual(len(pr.steps), 0)
def test_filelog_invalid_action(self): pr = ProgressReport() pr._updated = Mock() # test cb = RPMCallback(pr) package = 'openssl' action = 12345678 cb.filelog(package, action) # validation self.assertEqual(pr.details['action'], str(action)) self.assertEqual(pr.details['package'], package) self.assertEqual(len(pr.steps), 0)
def test_report_steps_with_errors(self): # Test that previous state with status=False is not # set (True) on next state push steps = ('A', 'B', 'C') # test pr = ProgressReport() pr._updated = Mock() pr.push_step(steps[0]) pr.push_step(steps[1]) pr.set_status(False) pr.push_step(steps[2]) # validation self.assertTrue(pr.steps[0][1]) self.assertFalse(pr.steps[1][1]) self.assertTrue(pr.steps[2][1] is None)
def test_trans_callback(self): pr = ProgressReport() pr._updated = Mock() # test cb = ProcessTransCallback(pr) for state in sorted(PT_MESSAGES.keys()): cb.event(state) pr.set_status(True) # validation self.assertEqual(len(PT_MESSAGES), len(pr.steps)) i = 0 for state in sorted(PT_MESSAGES.keys()): step = pr.steps[i] name = PT_MESSAGES[state] self.assertEqual(step[0], name) self.assertTrue(step[1]) i += 1