def test_file_blacklist(self, mock_identify_revision, mock_get_vcs): repo = self.create_repo() revision = self.create_revision(repository=repo) project = self.create_project(repository=repo) self.create_plan(project) mock_vcs = self.get_fake_vcs() mock_vcs.export.side_effect = None mock_vcs.export.return_value = SAMPLE_DIFF mock_vcs.get_changed_files.side_effect = lambda id: Vcs.get_changed_files(mock_vcs, id) mock_vcs.update.side_effect = None mock_identify_revision.return_value = revision mock_vcs.read_file.side_effect = None mock_vcs.read_file.return_value = yaml.safe_dump({ 'build.file-blacklist': ['ci/*'], }) mock_get_vcs.return_value = mock_vcs revision_created_handler(revision_sha=revision.sha, repository_id=repo.id) mock_vcs.export.assert_called_once_with(revision.sha) assert not Build.query.first() mock_vcs.read_file.return_value = yaml.safe_dump({ 'build.file-blacklist': ['ci/not-real'], }) revision_created_handler(revision_sha=revision.sha, repository_id=repo.id) mock_identify_revision.assert_called_once_with(repo, revision.sha) assert Build.query.first()
def test_file_whitelist(self, mock_identify_revision, mock_get_vcs): repo = self.create_repo() revision = self.create_revision(repository=repo) project = self.create_project(repository=repo) self.create_plan(project) option = ProjectOption(project=project, name='build.file-whitelist', value='foo.txt') mock_vcs = Mock() mock_vcs.export.return_value = SAMPLE_DIFF mock_identify_revision.return_value = revision mock_get_vcs.return_value = mock_vcs db.session.add(option) db.session.flush() revision_created_handler(revision_sha=revision.sha, repository_id=repo.id) mock_vcs.export.assert_called_once_with(revision.sha) assert not Build.query.first() option.value = 'ci/*' db.session.add(option) db.session.flush() revision_created_handler(revision_sha=revision.sha, repository_id=repo.id) mock_identify_revision.assert_called_once_with(repo, revision.sha) assert Build.query.first()
def test_disabled(self): repo = self.create_repo() revision = self.create_revision(repository=repo) project = self.create_project(repository=repo) self.create_plan(project) db.session.add(ProjectOption(project=project, name='build.commit-trigger', value='0')) db.session.flush() revision_created_handler(revision_sha=revision.sha, repository_id=repo.id) assert not Build.query.first()
def test_simple(self): repo = self.create_repo() revision = self.create_revision(repository=repo) project = self.create_project(repository=repo) self.create_plan(project) revision_created_handler(revision_sha=revision.sha, repository_id=repo.id) build_list = list(Build.query.filter( Build.project == project, )) assert len(build_list) == 1
def test_simple(self): repo = self.create_repo() revision = self.create_revision(repository=repo) project = self.create_project(repository=repo) plan = self.create_plan() plan.projects.append(project) revision_created_handler(revision) build_list = list(Build.query.filter( Build.project == project, )) assert len(build_list) == 1
def test_simple(self, get_vcs): repo = self.create_repo() revision = self.create_revision(repository=repo) project = self.create_project(repository=repo) self.create_plan(project) get_vcs.return_value = self.get_fake_vcs() revision_created_handler(revision_sha=revision.sha, repository_id=repo.id) build_list = list(Build.query.filter(Build.project == project, )) assert len(build_list) == 1
def test_disabled(self, get_vcs): repo = self.create_repo() revision = self.create_revision(repository=repo) project = self.create_project(repository=repo) self.create_plan(project) get_vcs.return_value = self.get_fake_vcs() db.session.add(ProjectOption(project=project, name='build.commit-trigger', value='0')) db.session.flush() revision_created_handler(revision_sha=revision.sha, repository_id=repo.id) assert not Build.query.first()
def test_disabled(self): repo = self.create_repo() revision = self.create_revision(repository=repo) project = self.create_project(repository=repo) plan = self.create_plan() plan.projects.append(project) db.session.add( ProjectOption(project=project, name='build.commit-trigger', value='0')) db.session.commit() revision_created_handler(revision_sha=revision.sha, repository_id=repo.id) assert not Build.query.first()
def test_file_whitelist(self, mock_identify_revision, mock_get_vcs): repo = self.create_repo() revision = self.create_revision(repository=repo) project = self.create_project(repository=repo) self.create_plan(project) option = ProjectOption(project=project, name='build.file-whitelist', value='foo.txt') mock_vcs = self.get_fake_vcs() mock_vcs.export.side_effect = None mock_vcs.export.return_value = SAMPLE_DIFF mock_vcs.get_changed_files.side_effect = lambda id: Vcs.get_changed_files( mock_vcs, id) mock_vcs.update.side_effect = None mock_identify_revision.return_value = revision mock_get_vcs.return_value = mock_vcs db.session.add(option) db.session.flush() revision_created_handler(revision_sha=revision.sha, repository_id=repo.id) mock_vcs.export.assert_called_once_with(revision.sha) assert not Build.query.first() option.value = 'ci/*' db.session.add(option) db.session.flush() revision_created_handler(revision_sha=revision.sha, repository_id=repo.id) mock_identify_revision.assert_called_once_with(repo, revision.sha) assert Build.query.first()
def test_invalid_config(self, mock_identify_revision, mock_get_vcs): repo = self.create_repo() revision = self.create_revision(repository=repo) project = self.create_project(repository=repo) project2 = self.create_project(repository=repo) self.create_plan(project) self.create_plan(project2) mock_vcs = self.get_fake_vcs() mock_vcs.export.side_effect = None mock_vcs.export.return_value = SAMPLE_DIFF mock_vcs.update.side_effect = None mock_identify_revision.return_value = revision mock_vcs.read_file.side_effect = ('{{invalid yaml}}', yaml.safe_dump({ 'build.file-blacklist': ['ci/not-real'], })) mock_get_vcs.return_value = mock_vcs revision_created_handler(revision_sha=revision.sha, repository_id=repo.id) mock_vcs.export.assert_called_once_with(revision.sha) assert len(list(Build.query)) == 2
def test_file_blacklist(self, mock_identify_revision, mock_get_vcs): repo = self.create_repo() revision = self.create_revision(repository=repo) project = self.create_project(repository=repo) self.create_plan(project) mock_vcs = self.get_fake_vcs() mock_vcs.export.side_effect = None mock_vcs.export.return_value = SAMPLE_DIFF mock_vcs.get_changed_files.side_effect = lambda id: Vcs.get_changed_files( mock_vcs, id) mock_vcs.update.side_effect = None mock_identify_revision.return_value = revision mock_vcs.read_file.side_effect = None mock_vcs.read_file.return_value = yaml.safe_dump({ 'build.file-blacklist': ['ci/*'], }) mock_get_vcs.return_value = mock_vcs revision_created_handler(revision_sha=revision.sha, repository_id=repo.id) mock_vcs.export.assert_called_once_with(revision.sha) assert not Build.query.first() mock_vcs.read_file.return_value = yaml.safe_dump({ 'build.file-blacklist': ['ci/not-real'], }) revision_created_handler(revision_sha=revision.sha, repository_id=repo.id) mock_identify_revision.assert_called_once_with(repo, revision.sha) assert Build.query.first()