blob: 2c78e0cc047abbde89aa09cb264c51fb609f58d2 [file] [log] [blame]
# 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.'))