| # Copyright 2014 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 webkitpy.layout_tests.models import testharness_results |
| |
| |
| class TestHarnessResultCheckerTest(unittest.TestCase): |
| |
| def test_is_all_pass_testharness_result_positive_cases(self): |
| self.assertTrue(testharness_results.is_all_pass_testharness_result( |
| 'This is a testharness.js-based test.\n' |
| ' PASS: foo bar \n' |
| ' Harness: the test ran to completion.')) |
| self.assertTrue(testharness_results.is_all_pass_testharness_result( |
| 'This is a testharness.js-based test.\n' |
| 'PASS \'grid\' with: grid-template-areas: "a b"\n' |
| '"c d";\n' |
| 'Harness: the test ran to completion.\n')) |
| |
| def test_is_all_pass_testharness_result_negative_cases(self): |
| self.assertFalse(testharness_results.is_all_pass_testharness_result( |
| 'This is a testharness.js-based test.\n' |
| 'CONSOLE WARNING: This is a warning.\n' |
| 'Test ran to completion.')) |
| self.assertFalse(testharness_results.is_all_pass_testharness_result( |
| 'This is a testharness.js-based test.\n' |
| ' PASS: foo bar \n' |
| 'FAIL \n' |
| ' Harness: the test ran to completion.')) |
| |
| def test_is_testharness_output_positive_cases(self): |
| self.assertTrue(testharness_results.is_testharness_output( |
| 'This is a testharness.js-based test.\n' |
| 'Harness: the test ran to completion.')) |
| self.assertTrue(testharness_results.is_testharness_output( |
| '\n' |
| ' \r This is a testharness.js-based test. \n' |
| ' \r \n' |
| ' \rHarness: the test ran to completion. \n' |
| '\n')) |
| self.assertTrue(testharness_results.is_testharness_output( |
| 'This is a testharness.js-based test.\n' |
| 'Foo bar \n' |
| ' Harness: the test ran to completion.')) |
| self.assertTrue(testharness_results.is_testharness_output( |
| 'This is a testharness.js-based test.\n' |
| 'FAIL: bah \n' |
| ' Harness: the test ran to completion.\n' |
| '\n' |
| '\n')) |
| |
| def test_is_testharness_output_negative_cases(self): |
| self.assertFalse(testharness_results.is_testharness_output('foo')) |
| self.assertFalse(testharness_results.is_testharness_output('')) |
| self.assertFalse(testharness_results.is_testharness_output(' ')) |
| self.assertFalse(testharness_results.is_testharness_output( |
| 'This is a testharness.js-based test. Harness: the test ran to completion.')) |
| self.assertFalse(testharness_results.is_testharness_output( |
| ' This \n' |
| 'is a testharness.js-based test.\n' |
| 'Harness: the test ran to completion.')) |
| |
| def test_is_testharness_output_passing_empty_content(self): |
| self.assertFalse(testharness_results.is_testharness_output_passing( |
| 'This is a testharness.js-based test.\n' |
| ' Harness: the test ran to completion.')) |
| |
| def test_is_testharness_output_passing_no_pass(self): |
| # If there are no PASS lines, then the test is not considered to pass. |
| self.assertFalse(testharness_results.is_testharness_output_passing( |
| 'This is a testharness.js-based test.\n' |
| ' \n' |
| ' Harness: the test ran to completion.')) |
| self.assertFalse(testharness_results.is_testharness_output_passing( |
| 'This is a testharness.js-based test.\n' |
| ' Foo bar \n' |
| ' Harness: the test ran to completion.')) |
| |
| def test_is_testharness_output_passing_with_pass_and_random_text(self): |
| self.assertTrue(testharness_results.is_testharness_output_passing( |
| 'RANDOM TEXT.\n' |
| 'This is a testharness.js-based test.\n' |
| 'PASS: things are fine.\n' |
| ' Harness: the test ran to completion.\n' |
| '\n')) |
| |
| def test_is_testharness_output_passing_basic_examples(self): |
| self.assertTrue(testharness_results.is_testharness_output_passing( |
| 'This is a testharness.js-based test.\n' |
| ' PASS: foo bar \n' |
| ' Harness: the test ran to completion.')) |
| self.assertTrue(testharness_results.is_testharness_output_passing( |
| 'This is a testharness.js-based test.\n' |
| ' PASS: foo bar FAIL \n' |
| ' Harness: the test ran to completion.')) |
| self.assertFalse(testharness_results.is_testharness_output_passing( |
| 'This is a testharness.js-based test.\n' |
| ' PASS: foo bar \n' |
| 'FAIL \n' |
| ' Harness: the test ran to completion.')) |
| self.assertFalse(testharness_results.is_testharness_output_passing( |
| 'This is a testharness.js-based test.\n' |
| ' FAIL: bah \n' |
| ' Harness: the test ran to completion.')) |
| |
| def test_is_testharness_output_passing_with_console_messages(self): |
| self.assertFalse(testharness_results.is_testharness_output_passing( |
| 'This is a testharness.js-based test.\n' |
| ' CONSOLE ERROR: BLAH \n' |
| ' Harness: the test ran to completion.')) |
| self.assertTrue(testharness_results.is_testharness_output_passing( |
| 'This is a testharness.js-based test.\n' |
| ' CONSOLE WARNING: BLAH \n' |
| 'PASS: some passing method\n' |
| ' Harness: the test ran to completion.')) |
| self.assertTrue(testharness_results.is_testharness_output_passing( |
| 'CONSOLE LOG: error.\n' |
| 'This is a testharness.js-based test.\n' |
| 'PASS: things are fine.\n' |
| 'Harness: the test ran to completion.\n' |
| '\n')) |
| self.assertTrue(testharness_results.is_testharness_output_passing( |
| 'CONSOLE ERROR: error.\n' |
| 'This is a testharness.js-based test.\n' |
| 'PASS: things are fine.\n' |
| 'Harness: the test ran to completion.\n' |
| '\n')) |
| self.assertTrue(testharness_results.is_testharness_output_passing( |
| 'CONSOLE WARNING: error.\n' |
| 'This is a testharness.js-based test.\n' |
| 'PASS: things are fine.\n' |
| 'Harness: the test ran to completion.\n' |
| '\n')) |
| |
| def test_is_testharness_output_passing_with_timeout_or_notrun(self): |
| self.assertFalse(testharness_results.is_testharness_output_passing( |
| 'This is a testharness.js-based test.\n' |
| ' TIMEOUT: bah \n' |
| ' Harness: the test ran to completion.')) |
| self.assertFalse(testharness_results.is_testharness_output_passing( |
| 'This is a testharness.js-based test.\n' |
| ' NOTRUN: bah \n' |
| ' Harness: the test ran to completion.')) |
| |
| def test_has_console_errors_or_warnings_positive_cases(self): |
| self.assertTrue(testharness_results.has_console_errors_or_warnings( |
| 'This is a testharness.js-based test.\n' |
| 'CONSOLE ERROR: This is an error.\n' |
| 'Test ran to completion.')) |
| self.assertTrue(testharness_results.has_console_errors_or_warnings( |
| 'This is a testharness.js-based test.\n' |
| 'CONSOLE WARNING: This is a warning.\n' |
| 'Test ran to completion.')) |
| self.assertTrue(testharness_results.has_console_errors_or_warnings( |
| 'CONSOLE ERROR: This is an error.\n' |
| 'Test ran to completion.')) |
| self.assertTrue(testharness_results.has_console_errors_or_warnings( |
| 'CONSOLE WARNING: This is a warning.\n' |
| 'Test ran to completion.')) |
| self.assertTrue(testharness_results.has_console_errors_or_warnings( |
| 'This is a testharness.js-based test.\n' |
| 'CONSOLE ERROR: This is an error.')) |
| self.assertTrue(testharness_results.has_console_errors_or_warnings( |
| 'CONSOLE ERROR: This is an error.')) |
| self.assertTrue(testharness_results.has_console_errors_or_warnings( |
| 'CONSOLE WARNING: This is a warning.')) |
| |
| def test_has_console_errors_or_warnings_negative_cases(self): |
| self.assertFalse(testharness_results.has_console_errors_or_warnings( |
| 'This is a testharness.js-based test.\n' |
| 'CONSOLE MESSAGE: This is not error.')) |
| self.assertFalse(testharness_results.has_console_errors_or_warnings( |
| 'This is a testharness.js-based test.\n' |
| 'No errors here.')) |
| self.assertFalse(testharness_results.has_console_errors_or_warnings( |
| 'This is not a CONSOLE ERROR, sorry.')) |
| self.assertFalse(testharness_results.has_console_errors_or_warnings( |
| 'This is not a CONSOLE WARNING, sorry.')) |