blob: 411070528fcee171eedd618e4b90ce53e30178a5 [file] [log] [blame]
#!/usr/bin/env python3
# Copyright 2025 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import unittest
import web_idl_diff_tool
# Test to ensure there are no difference in parsing + processing extension API
# schemas when converting them to be written using WebIDL. Uses the alarms API
# schema files as an example to test, copied over at the time they were
# initially converted to WebIDL.
class WebIdlDiffToolTest(unittest.TestCase):
def testIdlToWebIdlConversion(self):
# Note: the following schemas were copied over at the time of their
# conversion and are not intended to be kept up to date with any more recent
# updates. Once all the old IDL has been converted and we are ready to
# remove the old parser, these can all be deleted and this test removed.
converted_schemas = [
('alarms.idl', 'alarms.webidl'),
('app_current_window_internal.idl',
'app_current_window_internal.webidl'),
('bluetooth.idl', 'bluetooth.webidl'),
('dns.idl', 'dns.webidl'),
('audio.idl', 'audio.webidl'),
('cec_private.idl', 'cec_private.webidl'),
('diagnostics.idl', 'diagnostics.webidl'),
('virtual_keyboard.idl', 'virtual_keyboard.webidl'),
('webcam_private.idl', 'webcam_private.webidl'),
('extension_options_internal.idl', 'extension_options_internal.webidl'),
('system_cpu.idl', 'system_cpu.webidl'),
('system_memory.idl', 'system_memory.webidl'),
('system_network.idl', 'system_network.webidl'),
('system_storage.idl', 'system_storage.webidl'),
]
# LoadAndReturnUnifiedDiff expects file paths relative to the repo root.
converted_schema_path = 'tools/json_schema_compiler/test/converted_schemas/'
for old_schema_name, new_schema_name in converted_schemas:
old_filename = converted_schema_path + old_schema_name
new_filename = converted_schema_path + new_schema_name
diff = web_idl_diff_tool.LoadAndReturnUnifiedDiff(old_filename,
new_filename)
self.assertEqual(
'',
diff,
f"Difference detected between '{old_filename}' and"
f" '{new_filename}':\n{diff}",
)
if __name__ == '__main__':
unittest.main()