#!/usr/bin/env python3
# Copyright 2024 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import json
import path_mappings
import os
import shutil
import tempfile
import unittest
_HERE_DIR = os.path.dirname(__file__)
_CWD = os.getcwd()
class PathMappingsTest(unittest.TestCase):
def setUp(self):
self._out_folder = None
self._additional_flags = []
def tearDown(self):
if self._out_folder:
shutil.rmtree(self._out_folder)
def _build_path_map(self):
gen_dir = os.path.join(self._out_folder, 'tools', 'typescript', 'tests',
'test_mappings')
path_mappings.main([
'--root_gen_dir',
os.path.relpath(self._out_folder, gen_dir),
'--root_src_dir',
os.path.relpath(os.path.join(_HERE_DIR, 'tests'), gen_dir),
'--gen_dir',
os.path.relpath(gen_dir, _CWD),
'--raw_deps',
# Shouldn't map dependencies that aren't in the common mappings.
'//chrome/browser/resources/print_preview:build_ts',
'//ui/webui/resources/js:build_ts',
'//ui/webui/resources/cr_components/localized_link:build_ts',
'//third_party/polymer/v3_0:library',
'//third_party/lit/v3_0:build_ts',
'--output_suffix',
'test_mappings',
'--pretty_print',
] + self._additional_flags)
return gen_dir
def _assert_output(self, gen_dir, expected_file):
output_file = 'path_mappings_test_mappings.json'
self.assertTrue(os.path.exists(os.path.join(gen_dir, output_file)))
expectations_dir = os.path.join(_HERE_DIR, 'tests', 'expected',
'path_mappings')
def _read_file(parent_dir, file_name):
file_path = os.path.join(parent_dir, file_name)
with open(file_path, 'r') as f:
return f.read()
actual = _read_file(gen_dir, output_file)
expected = _read_file(expectations_dir, expected_file)
self.assertMultiLineEqual(expected, actual)
def testTrusted(self):
self._out_folder = tempfile.mkdtemp(dir=_CWD)
gen_dir = self._build_path_map()
self._assert_output(gen_dir, 'trusted_mappings_expected.json')
def testUntrusted(self):
self._additional_flags = ['--webui_context_type', 'untrusted']
self._out_folder = tempfile.mkdtemp(dir=_CWD)
gen_dir = self._build_path_map()
self._assert_output(gen_dir, 'untrusted_mappings_expected.json')
def testRelative(self):
self._additional_flags = ['--webui_context_type', 'relative']
self._out_folder = tempfile.mkdtemp(dir=_CWD)
gen_dir = self._build_path_map()
self._assert_output(gen_dir, 'relative_only_mappings_expected.json')
def testTrustedOnly(self):
self._additional_flags = ['--webui_context_type', 'trusted_only']
self._out_folder = tempfile.mkdtemp(dir=_CWD)
gen_dir = self._build_path_map()
self._assert_output(gen_dir, 'trusted_only_mappings_expected.json')
if __name__ == '__main__':
unittest.main()