diff options
Diffstat (limited to 'catapult/common/py_utils/py_utils/expectations_parser_unittest.py')
-rw-r--r-- | catapult/common/py_utils/py_utils/expectations_parser_unittest.py | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/catapult/common/py_utils/py_utils/expectations_parser_unittest.py b/catapult/common/py_utils/py_utils/expectations_parser_unittest.py new file mode 100644 index 00000000..a842c4c9 --- /dev/null +++ b/catapult/common/py_utils/py_utils/expectations_parser_unittest.py @@ -0,0 +1,165 @@ +# Copyright 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +import unittest + +from py_utils import expectations_parser + + +class TestExpectationParserTest(unittest.TestCase): + + def testInitWithGoodData(self): + good_data = """ +# This is a test expectation file. +# +# tags: tag1 tag2 tag3 +# tags: tag4 Mac Win Debug + +crbug.com/12345 [ Mac ] b1/s1 [ Skip ] +crbug.com/23456 [ Mac Debug ] b1/s2 [ Skip ] +""" + parser = expectations_parser.TestExpectationParser(good_data) + tags = ['tag1', 'tag2', 'tag3', 'tag4', 'Mac', 'Win', 'Debug'] + self.assertEqual(parser.tags, tags) + expected_outcome = [ + expectations_parser.Expectation( + 'crbug.com/12345', 'b1/s1', ['Mac'], ['Skip']), + expectations_parser.Expectation( + 'crbug.com/23456', 'b1/s2', ['Mac', 'Debug'], ['Skip']) + ] + for i in range(len(parser.expectations)): + self.assertEqual(parser.expectations[i], expected_outcome[i]) + + def testInitWithBadData(self): + bad_data = """ +# This is a test expectation file. +# +# tags: tag1 tag2 tag3 +# tags: tag4 + +crbug.com/12345 [ Mac b1/s1 [ Skip ] +""" + with self.assertRaises(expectations_parser.ParseError): + expectations_parser.TestExpectationParser(bad_data) + + def testTagAfterExpectationsStart(self): + bad_data = """ +# This is a test expectation file. +# +# tags: tag1 tag2 tag3 + +crbug.com/12345 [ tag1 ] b1/s1 [ Skip ] + +# tags: tag4 +""" + with self.assertRaises(expectations_parser.ParseError): + expectations_parser.TestExpectationParser(bad_data) + + def testParseExpectationLineEverythingThere(self): + raw_data = '# tags: Mac\ncrbug.com/23456 [ Mac ] b1/s2 [ Skip ]' + parser = expectations_parser.TestExpectationParser(raw_data) + expected_outcome = [ + expectations_parser.Expectation( + 'crbug.com/23456', 'b1/s2', ['Mac'], ['Skip']) + ] + for i in range(len(parser.expectations)): + self.assertEqual(parser.expectations[i], expected_outcome[i]) + + def testParseExpectationLineBadTag(self): + raw_data = '# tags: None\ncrbug.com/23456 [ Mac ] b1/s2 [ Skip ]' + with self.assertRaises(expectations_parser.ParseError): + expectations_parser.TestExpectationParser(raw_data) + + def testParseExpectationLineNoConditions(self): + raw_data = '# tags: All\ncrbug.com/12345 b1/s1 [ Skip ]' + parser = expectations_parser.TestExpectationParser(raw_data) + expected_outcome = [ + expectations_parser.Expectation( + 'crbug.com/12345', 'b1/s1', [], ['Skip']), + ] + for i in range(len(parser.expectations)): + self.assertEqual(parser.expectations[i], expected_outcome[i]) + + def testParseExpectationLineNoBug(self): + raw_data = '# tags: All\n[ All ] b1/s1 [ Skip ]' + parser = expectations_parser.TestExpectationParser(raw_data) + expected_outcome = [ + expectations_parser.Expectation( + None, 'b1/s1', ['All'], ['Skip']), + ] + for i in range(len(parser.expectations)): + self.assertEqual(parser.expectations[i], expected_outcome[i]) + + def testParseExpectationLineNoBugNoConditions(self): + raw_data = '# tags: All\nb1/s1 [ Skip ]' + parser = expectations_parser.TestExpectationParser(raw_data) + expected_outcome = [ + expectations_parser.Expectation( + None, 'b1/s1', [], ['Skip']), + ] + for i in range(len(parser.expectations)): + self.assertEqual(parser.expectations[i], expected_outcome[i]) + + def testParseExpectationLineMultipleConditions(self): + raw_data = ('# tags:All None Batman\n' + 'crbug.com/123 [ All None Batman ] b1/s1 [ Skip ]') + parser = expectations_parser.TestExpectationParser(raw_data) + expected_outcome = [ + expectations_parser.Expectation( + 'crbug.com/123', 'b1/s1', ['All', 'None', 'Batman'], ['Skip']), + ] + for i in range(len(parser.expectations)): + self.assertEqual(parser.expectations[i], expected_outcome[i]) + + def testParseExpectationLineBadConditionBracket(self): + raw_data = '# tags: Mac\ncrbug.com/23456 ] Mac ] b1/s2 [ Skip ]' + with self.assertRaises(expectations_parser.ParseError): + expectations_parser.TestExpectationParser(raw_data) + + def testParseExpectationLineBadResultBracket(self): + raw_data = '# tags: Mac\ncrbug.com/23456 ] Mac ] b1/s2 ] Skip ]' + with self.assertRaises(expectations_parser.ParseError): + expectations_parser.TestExpectationParser(raw_data) + + def testParseExpectationLineBadConditionBracketSpacing(self): + raw_data = '# tags: Mac\ncrbug.com/2345 [Mac] b1/s1 [ Skip ]' + with self.assertRaises(expectations_parser.ParseError): + expectations_parser.TestExpectationParser(raw_data) + + def testParseExpectationLineBadResultBracketSpacing(self): + raw_data = '# tags: Mac\ncrbug.com/2345 [ Mac ] b1/s1 [Skip]' + with self.assertRaises(expectations_parser.ParseError): + expectations_parser.TestExpectationParser(raw_data) + + def testParseExpectationLineNoClosingConditionBracket(self): + raw_data = '# tags: Mac\ncrbug.com/2345 [ Mac b1/s1 [ Skip ]' + with self.assertRaises(expectations_parser.ParseError): + expectations_parser.TestExpectationParser(raw_data) + + def testParseExpectationLineNoClosingResultBracket(self): + raw_data = '# tags: Mac\ncrbug.com/2345 [ Mac ] b1/s1 [ Skip' + with self.assertRaises(expectations_parser.ParseError): + expectations_parser.TestExpectationParser(raw_data) + + def testParseExpectationLineUrlInTestName(self): + raw_data = ( + '# tags: Mac\ncrbug.com/123 [ Mac ] b.1/http://google.com [ Skip ]') + expected_outcomes = [ + expectations_parser.Expectation( + 'crbug.com/123', 'b.1/http://google.com', ['Mac'], ['Skip']) + ] + parser = expectations_parser.TestExpectationParser(raw_data) + for i in range(len(parser.expectations)): + self.assertEqual(parser.expectations[i], expected_outcomes[i]) + + def testParseExpectationLineEndingComment(self): + raw_data = '# tags: Mac\ncrbug.com/23456 [ Mac ] b1/s2 [ Skip ] # abc 123' + parser = expectations_parser.TestExpectationParser(raw_data) + expected_outcome = [ + expectations_parser.Expectation( + 'crbug.com/23456', 'b1/s2', ['Mac'], ['Skip']) + ] + for i in range(len(parser.expectations)): + self.assertEqual(parser.expectations[i], expected_outcome[i]) |