blob: 72630b6b759f8a9a198d473038cee2f59b5717e1 [file] [log] [blame]
# Copyright 2022 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
"""Tests for the file_prefix_map utility"""
from io import StringIO
import json
import unittest
from pw_build import file_prefix_map
# pylint: disable=line-too-long
JSON_SOURCE_FILES = json.dumps([
"../pigweed/pw_polyfill/standard_library_public/pw_polyfill/standard_library/assert.h",
"protocol_buffer/gen/pigweed/pw_protobuf/common_protos.proto_library/nanopb/pw_protobuf_protos/status.pb.h",
"../pigweed/pw_rpc/client_server.cc",
"../pigweed/pw_rpc/public/pw_rpc/client_server.h",
"/home/user/pigweed/out/../gen/generated_build_info.cc",
"/home/user/pigweed/pw_protobuf/encoder.cc",
])
JSON_PATH_TRANSFORMATIONS = json.dumps([
"/home/user/pigweed/out=out",
"/home/user/pigweed/=",
"../=",
"/home/user/pigweed/out=out",
])
EXPECTED_TRANSFORMED_PATHS = json.dumps([
"pigweed/pw_polyfill/standard_library_public/pw_polyfill/standard_library/assert.h",
"protocol_buffer/gen/pigweed/pw_protobuf/common_protos.proto_library/nanopb/pw_protobuf_protos/status.pb.h",
"pigweed/pw_rpc/client_server.cc",
"pigweed/pw_rpc/public/pw_rpc/client_server.h",
"out/../gen/generated_build_info.cc",
"pw_protobuf/encoder.cc",
])
class FilePrefixMapTest(unittest.TestCase):
def test_prefix_remap(self):
path_list = [
'/foo_root/root_subdir/source.cc',
'/foo_root/root_subdir/out/../gen.cc'
]
prefix_maps = [('/foo_root/root_subdir/', ''), ('out/../', 'out/')]
expected_paths = ['source.cc', 'out/gen.cc']
self.assertEqual(
list(file_prefix_map.remap_paths(path_list, prefix_maps)),
expected_paths)
def test_json_prefix_map(self):
in_fd = StringIO(JSON_SOURCE_FILES)
prefix_map_fd = StringIO(JSON_PATH_TRANSFORMATIONS)
out_fd = StringIO()
file_prefix_map.remap_json_paths(in_fd, out_fd, prefix_map_fd)
self.assertEqual(json.loads(out_fd.getvalue()),
json.loads(EXPECTED_TRANSFORMED_PATHS))
if __name__ == '__main__':
unittest.main()