def test_import_config_set_without_cs(self): self.mock_get_log() self.mock(gitiles_import, '_import_revision', mock.Mock()) gitiles_import._import_config_set( 'config_set', gitiles.Location.parse('https://localhost/project/+/master/x')) self.assertTrue(gitiles_import._import_revision.called)
def test_import_config_set(self): self.mock_get_log() self.mock_get_archive() gitiles_import._import_config_set( 'config_set', gitiles.Location.parse('https://localhost/project')) gitiles.get_log.assert_called_once_with( 'localhost', 'project', 'HEAD', '/', limit=1, deadline=15) saved_config_set = storage.ConfigSet.get_by_id('config_set') self.assertIsNotNone(saved_config_set) self.assertEqual( saved_config_set.latest_revision, 'a1841f40264376d170269ee9473ce924b7c2c4e9') self.assertTrue(storage.Revision.get_by_id( 'a1841f40264376d170269ee9473ce924b7c2c4e9', parent=saved_config_set.key)) self.assert_attempt(True, 'Imported') # Import second time, import_revision should not be called. self.mock(gitiles_import, '_import_revision', mock.Mock()) gitiles_import._import_config_set( 'config_set', gitiles.Location.parse('https://localhost/project')) self.assertFalse(gitiles_import._import_revision.called) self.assert_attempt(True, 'Up-to-date')
def test_import_config_set_with_log_failed(self): self.mock(gitiles_import, '_import_revision', mock.Mock()) self.mock(gitiles, 'get_log', mock.Mock(return_value = None)) with self.assertRaises(gitiles_import.NotFoundError): gitiles_import._import_config_set( 'config_set', gitiles.Location.parse('https://localhost/project')) self.assert_attempt(False, 'Could not load commit log', no_revision=True)
def test_deadline_exceeded(self): self.mock_get_log() self.mock(gitiles, 'get_archive', mock.Mock()) gitiles.get_archive.side_effect = urlfetch_errors.DeadlineExceededError with self.assertRaises(gitiles_import.Error): gitiles_import._import_config_set( 'config_set', gitiles.Location.parse('https://localhost/project')) self.assert_attempt(False, 'Could not import: deadline exceeded')
def test_import_config_set_with_auth_error(self): self.mock(gitiles, 'get_log', mock.Mock()) gitiles.get_log.side_effect = net.AuthError('Denied', 500, 'Denied') with self.assertRaises(gitiles_import.Error): gitiles_import._import_config_set( 'config_set', gitiles.Location.parse('https://localhost/project')) self.assert_attempt( False, 'Could not import: permission denied', no_revision=True)
def test_import_config_set_without_force_update(self): self.mock_get_log() storage.ConfigSet( id='config_set', latest_revision='a1841f40264376d170269ee9473ce924b7c2c4e9', latest_revision_url='https://localhost/project/+/deadbeef/x', latest_revision_committer_email=self.john.email, latest_revision_time=self.john.time, location='https://localhost/project/+/master/x', version=2, ).put() self.mock(gitiles_import, '_import_revision', mock.Mock()) gitiles_import._import_config_set( 'config_set', gitiles.Location.parse('https://localhost/project/+/master/x')) self.assertFalse(gitiles_import._import_revision.called)
def test_deadline_exceeded(self): self.mock_get_log() self.mock(gitiles, 'get_archive', mock.Mock()) gitiles.get_archive.side_effect = urlfetch_errors.DeadlineExceededError storage.ConfigSet( location='https://localhost/project', latest_revision='deadbeef', version=0, id='config_set', ).put() with self.assertRaises(gitiles_import.Error): gitiles_import._import_config_set( 'config_set', gitiles.Location.parse('https://localhost/project'), self.test_project_id) self.assert_attempt(False, 'Could not import: deadline exceeded')
def test_import_existing_config_set_with_log_failed(self): self.mock(gitiles_import, '_import_revision', mock.Mock()) self.mock(gitiles, 'get_log', mock.Mock(return_value=None)) cs = storage.ConfigSet( id='config_set', latest_revision='deadbeef', latest_revision_url='https://localhost/project/+/deadbeef/x', latest_revision_committer_email=self.john.email, latest_revision_time=self.john.time, location='https://localhost/project/+/master/x', ) cs.put() with self.assertRaises(gitiles_import.HistoryDisappeared): gitiles_import._import_config_set( 'config_set', gitiles.Location.parse('https://localhost/project')) self.assertIsNone(storage.last_import_attempt_key('config_set').get()) cs_fresh = cs.key.get() self.assertEqual(cs.latest_revision, cs_fresh.latest_revision)