summaryrefslogtreecommitdiff
path: root/Source/WebKit2/Scripts/webkit/messages_unittest.py
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/Scripts/webkit/messages_unittest.py')
-rw-r--r--Source/WebKit2/Scripts/webkit/messages_unittest.py142
1 files changed, 87 insertions, 55 deletions
diff --git a/Source/WebKit2/Scripts/webkit/messages_unittest.py b/Source/WebKit2/Scripts/webkit/messages_unittest.py
index e12dfd41e..164199fc2 100644
--- a/Source/WebKit2/Scripts/webkit/messages_unittest.py
+++ b/Source/WebKit2/Scripts/webkit/messages_unittest.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2010 Apple Inc. All rights reserved.
+# Copyright (C) 2010-2017 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@@ -21,44 +21,33 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import os
+import re
+import sys
import unittest
from StringIO import StringIO
-import messages
-import parser
-
-print os.getcwd()
+sys.path.append(os.path.dirname(os.path.dirname(__file__)))
+from webkit import messages
+from webkit import parser
script_directory = os.path.dirname(os.path.realpath(__file__))
-with open(os.path.join(script_directory, 'test-messages.in')) as file:
- _messages_file_contents = file.read()
-
-with open(os.path.join(script_directory, 'test-legacy-messages.in')) as file:
- _legacy_messages_file_contents = file.read()
-
-with open(os.path.join(script_directory, 'test-superclass-messages.in')) as file:
- _superclass_messages_file_contents = file.read()
-
-
-with open(os.path.join(script_directory, 'Messages-expected.h')) as file:
- _expected_receiver_header = file.read()
+with open(os.path.join(script_directory, 'test-messages.in')) as in_file:
+ _messages_file_contents = in_file.read()
-with open(os.path.join(script_directory, 'LegacyMessages-expected.h')) as file:
- _expected_legacy_receiver_header = file.read()
+with open(os.path.join(script_directory, 'test-legacy-messages.in')) as in_file:
+ _legacy_messages_file_contents = in_file.read()
-with open(os.path.join(script_directory, 'MessagesSuperclass-expected.h')) as file:
- _expected_superclass_receiver_header = file.read()
-
+with open(os.path.join(script_directory, 'test-superclass-messages.in')) as in_file:
+ _superclass_messages_file_contents = in_file.read()
-with open(os.path.join(script_directory, 'MessageReceiver-expected.cpp')) as file:
- _expected_receiver_implementation = file.read()
+_expected_receiver_header_file_name = 'Messages-expected.h'
+_expected_legacy_receiver_header_file_name = 'LegacyMessages-expected.h'
+_expected_superclass_receiver_header_file_name = 'MessagesSuperclass-expected.h'
-with open(os.path.join(script_directory, 'LegacyMessageReceiver-expected.cpp')) as file:
- _expected_legacy_receiver_implementation = file.read()
-
-with open(os.path.join(script_directory, 'MessageReceiverSuperclass-expected.cpp')) as file:
- _expected_superclass_receiver_implementation = file.read()
+_expected_receiver_implementation_file_name = 'MessageReceiver-expected.cpp'
+_expected_legacy_receiver_implementation_file_name = 'LegacyMessageReceiver-expected.cpp'
+_expected_superclass_receiver_implementation_file_name = 'MessageReceiverSuperclass-expected.cpp'
_expected_results = {
'name': 'WebPage',
@@ -243,7 +232,7 @@ _expected_results = {
_expected_superclass_results = {
'name': 'WebPage',
- 'superclass' : 'WebPageBase',
+ 'superclass': 'WebPageBase',
'conditions': None,
'messages': (
{
@@ -278,7 +267,7 @@ class ParsingTest(MessagesTest):
self.assertTrue(parameter.has_attribute(attribute))
else:
self.assertEquals(parameter.attributes, frozenset())
- if message.reply_parameters != None:
+ if message.reply_parameters is not None:
for index, parameter in enumerate(message.reply_parameters):
self.assertEquals(parameter.type, expected_message['reply_parameters'][index][0])
self.assertEquals(parameter.name, expected_message['reply_parameters'][index][1])
@@ -307,40 +296,50 @@ class ParsingTest(MessagesTest):
self.check_message(message, _expected_superclass_results['messages'][index])
-
class GeneratedFileContentsTest(unittest.TestCase):
- def assertGeneratedFileContentsEqual(self, first, second):
- first_list = first.split('\n')
- second_list = second.split('\n')
+ def assertGeneratedFileContentsEqual(self, actual_file_contents, expected_file_name):
+ if reset_results:
+ with open(os.path.join(script_directory, expected_file_name), mode='w') as out_file:
+ out_file.write(actual_file_contents)
+ return
- for index, first_line in enumerate(first_list):
- self.assertEquals(first_line, second_list[index])
+ with open(os.path.join(script_directory, expected_file_name), mode='r') as in_file:
+ expected_file_contents = in_file.read()
+ actual_line_list = actual_file_contents.splitlines(False)
+ expected_line_list = expected_file_contents.splitlines(False)
- self.assertEquals(len(first_list), len(second_list))
+ for index, actual_line in enumerate(actual_line_list):
+ self.assertEquals(actual_line, expected_line_list[index])
+ self.assertEquals(len(actual_line_list), len(expected_line_list))
-class HeaderTest(GeneratedFileContentsTest):
- def test_header(self):
- file_contents = messages.generate_messages_header(StringIO(_messages_file_contents))
- self.assertGeneratedFileContentsEqual(file_contents, _expected_receiver_header)
+ def assertHeaderEqual(self, input_messages_file_contents, expected_file_name):
+ actual_file_contents = messages.generate_messages_header(StringIO(input_messages_file_contents))
+ self.assertGeneratedFileContentsEqual(actual_file_contents, expected_file_name)
- legacy_file_contents = messages.generate_messages_header(StringIO(_legacy_messages_file_contents))
- self.assertGeneratedFileContentsEqual(legacy_file_contents, _expected_legacy_receiver_header)
+ def assertImplementationEqual(self, input_messages_file_contents, expected_file_name):
+ actual_file_contents = messages.generate_message_handler(StringIO(input_messages_file_contents))
+ self.assertGeneratedFileContentsEqual(actual_file_contents, expected_file_name)
- superclass_file_contents = messages.generate_messages_header(StringIO(_superclass_messages_file_contents))
- self.assertGeneratedFileContentsEqual(superclass_file_contents, _expected_superclass_receiver_header)
+class HeaderTest(GeneratedFileContentsTest):
+ def test_receiver_headers(self):
+ self.assertHeaderEqual(_messages_file_contents,
+ _expected_receiver_header_file_name)
+ self.assertHeaderEqual(_legacy_messages_file_contents,
+ _expected_legacy_receiver_header_file_name)
+ self.assertHeaderEqual(_superclass_messages_file_contents,
+ _expected_superclass_receiver_header_file_name)
-class ReceiverImplementationTest(GeneratedFileContentsTest):
- def test_receiver_implementation(self):
- file_contents = messages.generate_message_handler(StringIO(_messages_file_contents))
- self.assertGeneratedFileContentsEqual(file_contents, _expected_receiver_implementation)
-
- legacy_file_contents = messages.generate_message_handler(StringIO(_legacy_messages_file_contents))
- self.assertGeneratedFileContentsEqual(legacy_file_contents, _expected_legacy_receiver_implementation)
- superclass_file_contents = messages.generate_message_handler(StringIO(_superclass_messages_file_contents))
- self.assertGeneratedFileContentsEqual(superclass_file_contents, _expected_superclass_receiver_implementation)
+class ReceiverImplementationTest(GeneratedFileContentsTest):
+ def test_receiver_implementations(self):
+ self.assertImplementationEqual(_messages_file_contents,
+ _expected_receiver_implementation_file_name)
+ self.assertImplementationEqual(_legacy_messages_file_contents,
+ _expected_legacy_receiver_implementation_file_name)
+ self.assertImplementationEqual(_superclass_messages_file_contents,
+ _expected_superclass_receiver_implementation_file_name)
class UnsupportedPrecompilerDirectiveTest(unittest.TestCase):
@@ -353,5 +352,38 @@ class UnsupportedPrecompilerDirectiveTest(unittest.TestCase):
messages.generate_message_handler(StringIO("asd\n#elif bla\nfoo"))
+def add_reset_results_to_unittest_help():
+ script_name = os.path.basename(__file__)
+ reset_results_help = '''
+Custom Options:
+ -r, --reset-results Reset expected results for {0}
+'''.format(script_name)
+
+ options_regex = re.compile('^Usage:')
+ lines = unittest.TestProgram.USAGE.splitlines(True)
+ index = 0
+ for index, line in enumerate(lines):
+ if options_regex.match(line) and index + 1 < len(lines):
+ lines.insert(index + 1, reset_results_help)
+ break
+
+ if index == (len(lines) - 1):
+ lines.append(reset_results_help)
+
+ unittest.TestProgram.USAGE = ''.join(lines)
+
+
+def parse_sys_argv():
+ global reset_results
+ for index, arg in enumerate(sys.argv[1:]):
+ if arg in ('-r', '--r', '--reset', '--reset-results') or '--reset-results'.startswith(arg):
+ reset_results = True
+ del sys.argv[index + 1]
+ break
+
+
if __name__ == '__main__':
+ reset_results = False
+ add_reset_results_to_unittest_help()
+ parse_sys_argv()
unittest.main()