81 lines
2.4 KiB
Python
81 lines
2.4 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.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 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()
|