Skip to content
This repository has been archived by the owner on May 24, 2018. It is now read-only.

Commit

Permalink
CDSK-817 - move regex tests to integration/test_branch_regexes
Browse files Browse the repository at this point in the history
  • Loading branch information
warcholprzemo committed Mar 28, 2018
1 parent 2d487f1 commit 237c244
Show file tree
Hide file tree
Showing 3 changed files with 142 additions and 121 deletions.
19 changes: 12 additions & 7 deletions master/buildbot/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,16 @@ def error(error):
else:
raise ConfigErrors([error])


TAG_AS_BRANCH_REGEX = r'^(20[0-9][0-9].[0-9]|[0-9].[0-9]|trunk)$'
REGEX_BRANCHES = [
r'^(trunk)', # Trunk
r'^(20[0-9][0-9].[0-9])\/', # 2017.1/
r'^([0-9].[0-9])\/', # 5.0/
r'^release\/([0-9].[0-9])/' # release/4.6
]


class MasterConfig(object):

def __init__(self):
Expand Down Expand Up @@ -121,13 +131,8 @@ def __init__(self):
self.revlink = default_revlink_matcher
self.projects = {}
self.globalFactory = dict(initialSteps=[], lastSteps=[])
self.regex_branches = [
r'^(trunk)', # Trunk
r'^(20[0-9][0-9].[0-9])\/', # 2017.1/
r'^([0-9].[0-9])\/', # 5.0/
r'^release\/([0-9].[0-9])/' # release/4.6
]
self.tag_as_branch_regex = r'^(20[0-9][0-9].[0-9]|[0-9].[0-9]|trunk)$'
self.regex_branches = REGEX_BRANCHES
self.tag_as_branch_regex = TAG_AS_BRANCH_REGEX

_known_config_keys = set([
"buildbotURL", "buildCacheSize", "builders", "buildHorizon", "caches",
Expand Down
130 changes: 130 additions & 0 deletions master/buildbot/test/integration/test_branch_regexes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
import unittest

from buildbot.config import REGEX_BRANCHES, TAG_AS_BRANCH_REGEX
from buildbot.status.web import base


class TestBranchRegexes(unittest.TestCase):
def setUp(self):
self.regex_branches = REGEX_BRANCHES
self.tag_as_branch_regex = TAG_AS_BRANCH_REGEX

### filter_tags_by_codebases ###

def test_filter_tags_by_codebases_many_tags(self):
tags = ['Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2', '2018.2-QV']
codebases = {'unity': '2018.2/'}
expected_tags = ['QV', 'Unstable']

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex,
self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)

def test_filter_tags_by_codebases_many_cb(self):
tags = ['Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2', '2018.2-QV']
codebases = {'unity': 'trunk/', 'mod': '2018.2/'}
expected_tags = ['ABV', 'QV', 'Unstable']

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex,
self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)

def test_filter_tags_by_codebases_simple_unstable(self):
tags = ['Unstable', 'Trunk', 'Trunk-ABV', '2018.2', '2018.2-QV']
codebases = {'unity': 'trunk/'}
expected_tags = ['ABV', 'Unstable']

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex,
self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)

def test_filter_tags_by_codebases_foreign_unstable(self):
tags = ['Trunk', 'Trunk-ABV', '2018.2', '2018.2-QV', '2018.2-QV-Unstable']
codebases = {'unity': 'trunk/'}
expected_tags = ['ABV']

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex,
self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)

def test_filter_tags_by_codebases_empty_cb(self):
tags = ['Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2', '2018.2-QV']
codebases = {}
expected_tags = sorted(tags)

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex,
self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)

def test_filter_tags_by_codebases_uknown_branch(self):
tags = ['Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2', '2018.2-QV']
codebases = {'foo': '2019.2/'} # not unity, good pattern
expected_tags = ['ABV', 'Unstable'] # use Trunk tags

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex,
self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)

def test_filter_tags_by_codebases_unity_cb(self):
tags = ['Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2', '2018.2-QV']
codebases = {'unity': 'foo/'} # unity, wrong pattern
expected_tags = ['ABV', 'Unstable'] # use Trunk tags

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex,
self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)

def test_filter_tags_by_codebases_wrong_cb_and_branch(self):
tags = ['Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2', '2018.2-QV']
codebases = {'foo': 'bar/'} # not unity, wrong pattern
expected_tags = sorted(tags) # return original tags

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex,
self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)

### get_query_branches_for_codebases ###

def test_get_query_branches_for_codebases_good_case(self):
tags = ['Trunk', 'Trunk-ABV', '2018.2', '2018.2-QV']
codebases = {'foo': '2018.2/'}
expected_branches = {'2018.2'}

branches = base.get_query_branches_for_codebases(tags, codebases, self.regex_branches)

self.assertEqual(branches, expected_branches)

def test_get_query_branches_for_codebases_unity_key(self):
tags = ['Trunk', 'Trunk-ABV', '2018.2', '2018.2-QV']
codebases = {'unity': 'bar/'}
expected_branches = {'trunk'}

branches = base.get_query_branches_for_codebases(tags, codebases, self.regex_branches)

self.assertEqual(branches, expected_branches)

def test_get_query_branches_for_codebases_wrong_codebase(self):
tags = ['Trunk', 'Trunk-ABV', '2018.2', '2018.2-QV']
codebases = {'foo': 'bar/'}
expected_branches = set()

branches = base.get_query_branches_for_codebases(tags, codebases, self.regex_branches)

self.assertEqual(branches, expected_branches)

def test_get_query_branches_for_codebases_not_tags(self):
tags = ['Trunk', 'Trunk-ABV', '2018.2', '2018.2-QV']
codebases = {'foo': '2019.2/'}
expected_branches = {'trunk'}

branches = base.get_query_branches_for_codebases(tags, codebases, self.regex_branches)

self.assertEqual(branches, expected_branches)
114 changes: 0 additions & 114 deletions master/buildbot/test/unit/test_status_web_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,120 +89,6 @@ def test_getRequestCharset_other_params(self):
'UTF-16')


### filter_tags_by_codebases ###

def test_filter_tags_by_codebases_many_tags(self):
tags = ['Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2', '2018.2-QV']
codebases = {'unity': '2018.2/'}
expected_tags = ['QV', 'Unstable']

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex, self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)

def test_filter_tags_by_codebases_many_cb(self):
tags = ['Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2', '2018.2-QV']
codebases = {'unity': 'trunk/', 'mod': '2018.2/'}
expected_tags = ['ABV', 'QV', 'Unstable']

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex, self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)

def test_filter_tags_by_codebases_simple_unstable(self):
tags = ['Unstable', 'Trunk', 'Trunk-ABV', '2018.2', '2018.2-QV']
codebases = {'unity': 'trunk/'}
expected_tags = ['ABV', 'Unstable']

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex, self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)

def test_filter_tags_by_codebases_foreign_unstable(self):
tags = ['Trunk', 'Trunk-ABV', '2018.2', '2018.2-QV', '2018.2-QV-Unstable']
codebases = {'unity': 'trunk/'}
expected_tags = ['ABV']

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex, self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)

def test_filter_tags_by_codebases_empty_cb(self):
tags = ['Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2', '2018.2-QV']
codebases = {}
expected_tags = sorted(tags)

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex, self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)

def test_filter_tags_by_codebases_uknown_branch(self):
tags = ['Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2', '2018.2-QV']
codebases = {'foo': '2019.2/'} # not unity, good pattern
expected_tags = ['ABV', 'Unstable'] # use Trunk tags

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex, self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)

def test_filter_tags_by_codebases_unity_cb(self):
tags = ['Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2', '2018.2-QV']
codebases = {'unity': 'zupa/'} # unity, wrong pattern
expected_tags = ['ABV', 'Unstable'] # use Trunk tags

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex, self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)

def test_filter_tags_by_codebases_wrong_cb_and_branch(self):
tags = ['Unstable', 'Trunk', 'Trunk-ABV', 'Trunk-Unstable', '2018.2', '2018.2-QV']
codebases = {'foo': 'zupa/'} # not unity, wrong pattern
expected_tags = sorted(tags) # return original tags

filtered_tags = base.filter_tags_by_codebases(tags, codebases, self.tag_as_branch_regex, self.regex_branches)

self.assertEqual(expected_tags, filtered_tags)


### get_query_branches_for_codebases ###

def test_get_query_branches_for_codebases_good_case(self):
tags = ['Trunk', 'Trunk-ABV', '2018.2', '2018.2-QV']
codebases = {'foo': '2018.2/'}
expected_branches = {'2018.2'}

branches = base.get_query_branches_for_codebases(tags, codebases, self.regex_branches)

self.assertEqual(branches, expected_branches)

def test_get_query_branches_for_codebases_unity_key(self):
tags = ['Trunk', 'Trunk-ABV', '2018.2', '2018.2-QV']
codebases = {'unity': 'bar/'}
expected_branches = {'trunk'}

branches = base.get_query_branches_for_codebases(tags, codebases, self.regex_branches)

self.assertEqual(branches, expected_branches)

def test_get_query_branches_for_codebases_wrong_codebase(self):
tags = ['Trunk', 'Trunk-ABV', '2018.2', '2018.2-QV']
codebases = {'foo': 'bar/'}
expected_branches = set()

branches = base.get_query_branches_for_codebases(tags, codebases, self.regex_branches)

self.assertEqual(branches, expected_branches)

def test_get_query_branches_for_codebases_not_tags(self):
tags = ['Trunk', 'Trunk-ABV', '2018.2', '2018.2-QV']
codebases = {'foo': '2019.2/'}
expected_branches = {'trunk'}

branches = base.get_query_branches_for_codebases(tags, codebases, self.regex_branches)

self.assertEqual(branches, expected_branches)


class TestGetResultsArg(unittest.TestCase):
def setUpRequest(self, results=None):
args = {}
Expand Down

0 comments on commit 237c244

Please sign in to comment.