This repository has been archived on 2020-03-24. You can view files and clone it, but cannot push or open issues or pull requests.
quay/test/test_trigger.py
2016-12-20 15:42:04 -05:00

104 lines
3.3 KiB
Python

import unittest
import re
from buildtrigger.triggerutil import matches_ref, raise_if_skipped_build
from buildtrigger.triggerutil import SkipRequestException
from endpoints.building import PreparedBuild
class TestRegex(unittest.TestCase):
def assertDoesNotMatch(self, ref, filt):
self.assertFalse(matches_ref(ref, re.compile(filt)))
def assertMatches(self, ref, filt):
self.assertTrue(matches_ref(ref, re.compile(filt)))
def test_matches_ref(self):
self.assertMatches('ref/heads/master', '.+')
self.assertMatches('ref/heads/master', 'heads/.+')
self.assertMatches('ref/heads/master', 'heads/master')
self.assertMatches('ref/heads/slash/branch', 'heads/slash/branch')
self.assertMatches('ref/heads/slash/branch', 'heads/.+')
self.assertDoesNotMatch('ref/heads/foobar', 'heads/master')
self.assertDoesNotMatch('ref/heads/master', 'tags/master')
self.assertMatches('ref/heads/master', '(((heads/alpha)|(heads/beta))|(heads/gamma))|(heads/master)')
self.assertMatches('ref/heads/alpha', '(((heads/alpha)|(heads/beta))|(heads/gamma))|(heads/master)')
self.assertMatches('ref/heads/beta', '(((heads/alpha)|(heads/beta))|(heads/gamma))|(heads/master)')
self.assertMatches('ref/heads/gamma', '(((heads/alpha)|(heads/beta))|(heads/gamma))|(heads/master)')
self.assertDoesNotMatch('ref/heads/delta', '(((heads/alpha)|(heads/beta))|(heads/gamma))|(heads/master)')
class TestTags(unittest.TestCase):
def assertTagsForRef(self, ref, tags):
prepared = PreparedBuild()
prepared.tags_from_ref(ref, default_branch='master')
self.assertEquals(set(tags), set(prepared._tags))
def test_normal(self):
self.assertTagsForRef('ref/heads/somebranch', ['somebranch'])
self.assertTagsForRef('ref/heads/master', ['master', 'latest'])
self.assertTagsForRef('ref/tags/somebranch', ['somebranch'])
self.assertTagsForRef('ref/tags/master', ['master', 'latest'])
def test_slash(self):
self.assertTagsForRef('ref/heads/slash/branch', ['slash_branch'])
self.assertTagsForRef('ref/tags/slash/tag', ['slash_tag'])
def test_unusual(self):
self.assertTagsForRef('ref/heads/foobar#2', ['foobar_2'])
class TestSkipBuild(unittest.TestCase):
def testSkipNoMetadata(self):
prepared = PreparedBuild()
prepared.metadata = {}
config = {}
self.assertRaises(SkipRequestException, raise_if_skipped_build, prepared, config)
def testSkipByBranchtagRegex(self):
prepared = PreparedBuild()
prepared.metadata = {
'ref': 'ref/heads/master',
}
config = {
'branchtag_regex': 'nothing'
}
self.assertRaises(SkipRequestException, raise_if_skipped_build, prepared, config)
def testSkipByMessage(self):
prepared = PreparedBuild()
prepared.metadata = {
'ref': 'ref/heads/master',
'commit_info': {
'message': '[skip build]',
},
}
config = {}
self.assertRaises(SkipRequestException, raise_if_skipped_build, prepared, config)
def testDoesNotSkip(self):
prepared = PreparedBuild()
prepared.metadata = {
'ref': 'ref/heads/master',
'commit_info': {
'message': 'some cool message',
},
}
config = {
'branchtag_regex': '(master)|(heads/master)',
}
raise_if_skipped_build(prepared, config)
if __name__ == '__main__':
unittest.main()