Bug 1357673 - Fix try syntax tests r=dustin

MozReview-Commit-ID: D8kNDXyhAUq

--HG--
extra : source : b4de4eac22e877f0949bf4bb06aabcc6b820eefb
extra : intermediate-source : 7d1fa6a47ab91cf16c52e6dc49d70b50ea02332a
This commit is contained in:
Brian Stack 2017-04-21 09:27:46 -07:00
parent 05a47acee9
commit da905bf195

View File

@ -13,32 +13,47 @@ from ..taskgraph import TaskGraph
from ..task import Task
from mozunit import main
# an empty graph, for things that don't look at it
empty_graph = TaskGraph({}, Graph(set(), set()))
def unittest_task(n, tp):
def unittest_task(n, tp, bt='opt'):
return (n, Task('test', n, {
'unittest_try_name': n,
'test_platform': tp,
'test_platform': tp.split('/')[0],
'build_type': bt,
}, {}))
def talos_task(n, tp):
def talos_task(n, tp, bt='opt'):
return (n, Task('test', n, {
'talos_try_name': n,
'test_platform': tp,
'test_platform': tp.split('/')[0],
'build_type': bt,
}, {}))
tasks = {k: v for k, v in [
unittest_task('mochitest-browser-chrome', 'linux/opt'),
unittest_task('mochitest-browser-chrome-e10s', 'linux64/debug'),
unittest_task('mochitest-chrome', 'linux/this'),
unittest_task('mochitest-webgl', 'linux/that'),
unittest_task('mochitest-browser-chrome-e10s', 'linux64/opt'),
unittest_task('mochitest-chrome', 'linux/debug', 'debug'),
unittest_task('mochitest-webgl', 'linux/debug', 'debug'),
unittest_task('extra1', 'linux', 'debug/opt'),
unittest_task('extra2', 'win32/opt'),
unittest_task('crashtest-e10s', 'linux/other'),
unittest_task('gtest', 'linux64/asan'),
talos_task('dromaeojs', 'linux64/psan'),
unittest_task('extra3', 'linux/opt'),
unittest_task('extra4', 'linux64/debug', 'debug'),
unittest_task('extra5', 'linux/this'),
unittest_task('extra6', 'linux/that'),
unittest_task('extra7', 'linux/other'),
unittest_task('extra8', 'linux64/asan'),
talos_task('extra9', 'linux64/psan'),
]}
for r in RIDEALONG_BUILDS.values():
tasks.update({k: v for k, v in [
unittest_task(n + '-test', n) for n in r
]})
unittest_tasks = {k: v for k, v in tasks.iteritems()
if 'unittest_try_name' in v.attributes}
talos_tasks = {k: v for k, v in tasks.iteritems()
@ -50,7 +65,7 @@ class TestTryOptionSyntax(unittest.TestCase):
def test_empty_message(self):
"Given an empty message, it should return an empty value"
tos = TryOptionSyntax('', empty_graph)
tos = TryOptionSyntax('', graph_with_jobs)
self.assertEqual(tos.build_types, [])
self.assertEqual(tos.jobs, [])
self.assertEqual(tos.unittests, [])
@ -65,7 +80,7 @@ class TestTryOptionSyntax(unittest.TestCase):
def test_message_without_try(self):
"Given a non-try message, it should return an empty value"
tos = TryOptionSyntax('Bug 1234: frobnicte the foo', empty_graph)
tos = TryOptionSyntax('Bug 1234: frobnicte the foo', graph_with_jobs)
self.assertEqual(tos.build_types, [])
self.assertEqual(tos.jobs, [])
self.assertEqual(tos.unittests, [])
@ -80,74 +95,74 @@ class TestTryOptionSyntax(unittest.TestCase):
def test_unknown_args(self):
"unknown arguments are ignored"
tos = TryOptionSyntax('try: --doubledash -z extra', empty_graph)
tos = TryOptionSyntax('try: --doubledash -z extra', graph_with_jobs)
# equilvant to "try:"..
self.assertEqual(tos.build_types, [])
self.assertEqual(tos.jobs, None)
def test_b_do(self):
"-b do should produce both build_types"
tos = TryOptionSyntax('try: -b do', empty_graph)
tos = TryOptionSyntax('try: -b do', graph_with_jobs)
self.assertEqual(sorted(tos.build_types), ['debug', 'opt'])
def test_b_d(self):
"-b d should produce build_types=['debug']"
tos = TryOptionSyntax('try: -b d', empty_graph)
tos = TryOptionSyntax('try: -b d', graph_with_jobs)
self.assertEqual(sorted(tos.build_types), ['debug'])
def test_b_o(self):
"-b o should produce build_types=['opt']"
tos = TryOptionSyntax('try: -b o', empty_graph)
tos = TryOptionSyntax('try: -b o', graph_with_jobs)
self.assertEqual(sorted(tos.build_types), ['opt'])
def test_build_o(self):
"--build o should produce build_types=['opt']"
tos = TryOptionSyntax('try: --build o', empty_graph)
tos = TryOptionSyntax('try: --build o', graph_with_jobs)
self.assertEqual(sorted(tos.build_types), ['opt'])
def test_b_dx(self):
"-b dx should produce build_types=['debug'], silently ignoring the x"
tos = TryOptionSyntax('try: -b dx', empty_graph)
tos = TryOptionSyntax('try: -b dx', graph_with_jobs)
self.assertEqual(sorted(tos.build_types), ['debug'])
def test_j_job(self):
"-j somejob sets jobs=['somejob']"
tos = TryOptionSyntax('try: -j somejob', empty_graph)
tos = TryOptionSyntax('try: -j somejob', graph_with_jobs)
self.assertEqual(sorted(tos.jobs), ['somejob'])
def test_j_jobs(self):
"-j job1,job2 sets jobs=['job1', 'job2']"
tos = TryOptionSyntax('try: -j job1,job2', empty_graph)
tos = TryOptionSyntax('try: -j job1,job2', graph_with_jobs)
self.assertEqual(sorted(tos.jobs), ['job1', 'job2'])
def test_j_all(self):
"-j all sets jobs=None"
tos = TryOptionSyntax('try: -j all', empty_graph)
tos = TryOptionSyntax('try: -j all', graph_with_jobs)
self.assertEqual(tos.jobs, None)
def test_j_twice(self):
"-j job1 -j job2 sets jobs=job1, job2"
tos = TryOptionSyntax('try: -j job1 -j job2', empty_graph)
tos = TryOptionSyntax('try: -j job1 -j job2', graph_with_jobs)
self.assertEqual(sorted(tos.jobs), sorted(['job1', 'job2']))
def test_p_all(self):
"-p all sets platforms=None"
tos = TryOptionSyntax('try: -p all', empty_graph)
tos = TryOptionSyntax('try: -p all', graph_with_jobs)
self.assertEqual(tos.platforms, None)
def test_p_linux(self):
"-p linux sets platforms=['linux', 'linux-l10n']"
tos = TryOptionSyntax('try: -p linux', empty_graph)
tos = TryOptionSyntax('try: -p linux', graph_with_jobs)
self.assertEqual(tos.platforms, ['linux', 'linux-l10n'])
def test_p_linux_win32(self):
"-p linux,win32 sets platforms=['linux', 'linux-l10n', 'win32']"
tos = TryOptionSyntax('try: -p linux,win32', empty_graph)
tos = TryOptionSyntax('try: -p linux,win32', graph_with_jobs)
self.assertEqual(sorted(tos.platforms), ['linux', 'linux-l10n', 'win32'])
def test_p_expands_ridealongs(self):
"-p linux,linux64 includes the RIDEALONG_BUILDS"
tos = TryOptionSyntax('try: -p linux,linux64', empty_graph)
tos = TryOptionSyntax('try: -p linux,linux64', graph_with_jobs)
platforms = set(['linux'] + RIDEALONG_BUILDS['linux'])
platforms |= set(['linux64'] + RIDEALONG_BUILDS['linux64'])
self.assertEqual(sorted(tos.platforms), sorted(platforms))
@ -218,9 +233,10 @@ class TestTryOptionSyntax(unittest.TestCase):
def test_u_platforms_negated(self):
"-u gtest[-linux] selects all platforms but linux for gtest"
tos = TryOptionSyntax('try: -u gtest[-linux]', graph_with_jobs)
self.assertEqual(sorted(tos.unittests), sorted([
{'test': 'gtest', 'platforms': ['linux64']},
]))
all_platforms = set([x.attributes['test_platform'] for x in unittest_tasks.values()])
self.assertEqual(sorted(tos.unittests[0]['platforms']), sorted(
[x for x in all_platforms if x != 'linux']
))
def test_u_platforms_negated_pretty(self):
"-u gtest[Ubuntu,-x64] selects just linux for gtest"
@ -255,52 +271,52 @@ class TestTryOptionSyntax(unittest.TestCase):
def test_trigger_tests(self):
"--rebuild 10 sets trigger_tests"
tos = TryOptionSyntax('try: --rebuild 10', empty_graph)
tos = TryOptionSyntax('try: --rebuild 10', graph_with_jobs)
self.assertEqual(tos.trigger_tests, 10)
def test_talos_trigger_tests(self):
"--rebuild-talos 10 sets talos_trigger_tests"
tos = TryOptionSyntax('try: --rebuild-talos 10', empty_graph)
tos = TryOptionSyntax('try: --rebuild-talos 10', graph_with_jobs)
self.assertEqual(tos.talos_trigger_tests, 10)
def test_interactive(self):
"--interactive sets interactive"
tos = TryOptionSyntax('try: --interactive', empty_graph)
tos = TryOptionSyntax('try: --interactive', graph_with_jobs)
self.assertEqual(tos.interactive, True)
def test_all_email(self):
"--all-emails sets notifications"
tos = TryOptionSyntax('try: --all-emails', empty_graph)
tos = TryOptionSyntax('try: --all-emails', graph_with_jobs)
self.assertEqual(tos.notifications, 'all')
def test_fail_email(self):
"--failure-emails sets notifications"
tos = TryOptionSyntax('try: --failure-emails', empty_graph)
tos = TryOptionSyntax('try: --failure-emails', graph_with_jobs)
self.assertEqual(tos.notifications, 'failure')
def test_no_email(self):
"no email settings don't set notifications"
tos = TryOptionSyntax('try:', empty_graph)
tos = TryOptionSyntax('try:', graph_with_jobs)
self.assertEqual(tos.notifications, None)
def test_setenv(self):
"--setenv VAR=value adds a environment variables setting to env"
tos = TryOptionSyntax('try: --setenv VAR1=value1 --setenv VAR2=value2', empty_graph)
tos = TryOptionSyntax('try: --setenv VAR1=value1 --setenv VAR2=value2', graph_with_jobs)
self.assertEqual(tos.env, ['VAR1=value1', 'VAR2=value2'])
def test_profile(self):
"--geckoProfile sets profile to true"
tos = TryOptionSyntax('try: --geckoProfile', empty_graph)
tos = TryOptionSyntax('try: --geckoProfile', graph_with_jobs)
self.assertTrue(tos.profile)
def test_tag(self):
"--tag TAG sets tag to TAG value"
tos = TryOptionSyntax('try: --tag tagName', empty_graph)
tos = TryOptionSyntax('try: --tag tagName', graph_with_jobs)
self.assertEqual(tos.tag, 'tagName')
def test_no_retry(self):
"--no-retry sets no_retry to true"
tos = TryOptionSyntax('try: --no-retry', empty_graph)
tos = TryOptionSyntax('try: --no-retry', graph_with_jobs)
self.assertTrue(tos.no_retry)
if __name__ == '__main__':