def test_errors(monkeypatch, caplog): """Test handled exceptions. :param monkeypatch: pytest fixture. :param caplog: pytest extension fixture. """ replies = { '/projects/user/repo/build/1.6.0.43': dict(), } monkeypatch.setattr('appveyor_artifacts.query_api', partial(mock_query_api, replies=replies)) build_version = '1.6.0.43' config = dict(job_name='unknown', owner='user', repo='repo') with pytest.raises(HandledError): query_job_ids(build_version, config) assert caplog.records[-2].message == 'Bad JSON reply: "build" key missing.' replies['/projects/user/repo/build/1.6.0.43']['build'] = dict() with pytest.raises(HandledError): query_job_ids(build_version, config) assert caplog.records[-2].message == 'Bad JSON reply: "jobs" key missing.' replies['/projects/user/repo/build/1.6.0.43']['build']['jobs'] = [ {'jobId': 'spfxkimxcj6faq57', 'name': '', 'status': 'success'} ] with pytest.raises(HandledError): query_job_ids(build_version, config) assert caplog.records[-2].message == 'Job name "unknown" not found.' config['job_name'] = '' assert query_job_ids(build_version, config) == [('spfxkimxcj6faq57', 'success')]
def test_no_name(monkeypatch): """Test success workflow with nameless job (e.g. when using tox).""" replies = { '/projects/Robpol86/terminaltables/build/1.0.239': dict(build=dict(jobs=[ {'jobId': 'ocw0l628ww5yqqxy', 'name': '', 'status': 'success'}, ])), } monkeypatch.setattr('appveyor_artifacts.query_api', partial(mock_query_api, replies=replies)) build_version = '1.0.239' config = dict(job_name='', owner='Robpol86', repo='terminaltables') actual = query_job_ids(build_version, config) expected = [('ocw0l628ww5yqqxy', 'success')] assert actual == expected
def test_multiple_jobs(monkeypatch, caplog, job_name): """Test success workflow with a multi-job build. :param monkeypatch: pytest fixture. :param caplog: pytest extension fixture. :param str job_name: AppVeyor job name to test against. """ replies = { '/projects/Robpol86/flask-statics-helper/build/1.0.9': dict(build=dict(jobs=[ {'jobId': 'ahj8kvyf8ewsqkqv', 'name': 'Environment: PYTHON=C:\\Python27', 'status': 'success'}, {'jobId': 'a06o6tnx6fjn5kua', 'name': 'Environment: PYTHON=C:\\Python27-x64', 'status': 'running'}, {'jobId': 'xp1sqi838e4h98p2', 'name': 'Environment: PYTHON=C:\\Python33', 'status': 'queued'}, {'jobId': 'b3mbow7ymelmxbwe', 'name': 'Environment: PYTHON=C:\\Python33-x64', 'status': 'failed'}, {'jobId': 'nw8fff3v4ujsvcu1', 'name': 'Environment: PYTHON=C:\\Python34', 'status': 'running'}, {'jobId': 'tlufgeiwhnds036d', 'name': 'Environment: PYTHON=C:\\Python34-x64', 'status': 'success'}, ])), } monkeypatch.setattr('appveyor_artifacts.query_api', partial(mock_query_api, replies=replies)) build_version = '1.0.9' config = dict(job_name=job_name, owner='Robpol86', repo='flask-statics-helper') actual = query_job_ids(build_version, config) if job_name: expected = [('tlufgeiwhnds036d', 'success')] else: expected = [ ('ahj8kvyf8ewsqkqv', 'success'), ('a06o6tnx6fjn5kua', 'running'), ('xp1sqi838e4h98p2', 'queued'), ('b3mbow7ymelmxbwe', 'failed'), ('nw8fff3v4ujsvcu1', 'running'), ('tlufgeiwhnds036d', 'success'), ] assert actual == expected messages = [r.message for r in caplog.records] if job_name: assert messages[-2] == 'Filtering by job name: found match!' else: assert 'Filtering by job name: found match!' not in messages
def test_errors(monkeypatch, caplog): """Test handled exceptions. :param monkeypatch: pytest fixture. :param caplog: pytest extension fixture. """ replies = { '/projects/user/repo/build/1.6.0.43': dict(), } monkeypatch.setattr('appveyor_artifacts.query_api', partial(mock_query_api, replies=replies)) build_version = '1.6.0.43' config = dict(job_name='unknown', owner='user', repo='repo') with pytest.raises(HandledError): query_job_ids(build_version, config) assert caplog.records[-2].message == 'Bad JSON reply: "build" key missing.' replies['/projects/user/repo/build/1.6.0.43']['build'] = dict() with pytest.raises(HandledError): query_job_ids(build_version, config) assert caplog.records[-2].message == 'Bad JSON reply: "jobs" key missing.' replies['/projects/user/repo/build/1.6.0.43']['build']['jobs'] = [{ 'jobId': 'spfxkimxcj6faq57', 'name': '', 'status': 'success' }] with pytest.raises(HandledError): query_job_ids(build_version, config) assert caplog.records[-2].message == 'Job name "unknown" not found.' config['job_name'] = '' assert query_job_ids(build_version, config) == [('spfxkimxcj6faq57', 'success')]
def test_no_name(monkeypatch): """Test success workflow with nameless job (e.g. when using tox). :param monkeypatch: pytest fixture. """ replies = { '/projects/Robpol86/terminaltables/build/1.0.239': dict(build=dict(jobs=[ { 'jobId': 'ocw0l628ww5yqqxy', 'name': '', 'status': 'success' }, ])), } monkeypatch.setattr('appveyor_artifacts.query_api', partial(mock_query_api, replies=replies)) build_version = '1.0.239' config = dict(job_name='', owner='Robpol86', repo='terminaltables') actual = query_job_ids(build_version, config) expected = [('ocw0l628ww5yqqxy', 'success')] assert actual == expected
def test_multiple_jobs(monkeypatch, caplog, job_name): """Test success workflow with a multi-job build. :param monkeypatch: pytest fixture. :param caplog: pytest extension fixture. :param str job_name: AppVeyor job name to test against. """ replies = { '/projects/Robpol86/flask-statics-helper/build/1.0.9': dict(build=dict(jobs=[ { 'jobId': 'ahj8kvyf8ewsqkqv', 'name': 'Environment: PYTHON=C:\\Python27', 'status': 'success' }, { 'jobId': 'a06o6tnx6fjn5kua', 'name': 'Environment: PYTHON=C:\\Python27-x64', 'status': 'running' }, { 'jobId': 'xp1sqi838e4h98p2', 'name': 'Environment: PYTHON=C:\\Python33', 'status': 'queued' }, { 'jobId': 'b3mbow7ymelmxbwe', 'name': 'Environment: PYTHON=C:\\Python33-x64', 'status': 'failed' }, { 'jobId': 'nw8fff3v4ujsvcu1', 'name': 'Environment: PYTHON=C:\\Python34', 'status': 'running' }, { 'jobId': 'tlufgeiwhnds036d', 'name': 'Environment: PYTHON=C:\\Python34-x64', 'status': 'success' }, ])), } monkeypatch.setattr('appveyor_artifacts.query_api', partial(mock_query_api, replies=replies)) build_version = '1.0.9' config = dict(job_name=job_name, owner='Robpol86', repo='flask-statics-helper') actual = query_job_ids(build_version, config) if job_name: expected = [('tlufgeiwhnds036d', 'success')] else: expected = [ ('ahj8kvyf8ewsqkqv', 'success'), ('a06o6tnx6fjn5kua', 'running'), ('xp1sqi838e4h98p2', 'queued'), ('b3mbow7ymelmxbwe', 'failed'), ('nw8fff3v4ujsvcu1', 'running'), ('tlufgeiwhnds036d', 'success'), ] assert actual == expected messages = [r.message for r in caplog.records] if job_name: assert messages[-2] == 'Filtering by job name: found match!' else: assert 'Filtering by job name: found match!' not in messages