| # 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 pw_ide.cpp""" |
| |
| import json |
| from pathlib import Path |
| from typing import cast |
| import unittest |
| |
| # pylint: disable=protected-access |
| from pw_ide.cpp import ( |
| COMPDB_FILE_NAME, |
| command_parts, |
| path_to_executable, |
| CppCompilationDatabase, |
| CppCompilationDatabasesMap, |
| CppCompileCommand, |
| CppCompileCommandDict, |
| CppIdeFeaturesTarget, |
| CppIdeFeaturesState, |
| infer_target, |
| _infer_target_pos, |
| ) |
| |
| from pw_ide.exceptions import UnresolvablePathException |
| |
| from test_cases import PwIdeTestCase |
| |
| |
| class TestPathToExecutable(PwIdeTestCase): |
| """Tests path_to_executable""" |
| |
| def test_valid_absolute_path_in_env_returns_same_path(self): |
| executable_path = self.temp_dir_path / 'clang' |
| query_drivers = [f'{self.temp_dir_path}/*'] |
| result = path_to_executable( |
| str(executable_path.absolute()), path_globs=query_drivers |
| ) |
| self.assertIsNotNone(result) |
| self.assertEqual(str(result), str(executable_path.absolute())) |
| |
| def test_valid_absolute_path_outside_env_returns_same_path(self): |
| executable_path = Path('/usr/bin/clang') |
| query_drivers = ['/**/*'] |
| result = path_to_executable( |
| str(executable_path.absolute()), path_globs=query_drivers |
| ) |
| self.assertIsNotNone(result) |
| self.assertEqual(str(result), str(executable_path.absolute())) |
| |
| def test_valid_relative_path_returns_same_path(self): |
| executable_path = Path('../clang') |
| query_drivers = [f'{self.temp_dir_path}/*'] |
| result = path_to_executable( |
| str(executable_path), path_globs=query_drivers |
| ) |
| self.assertIsNotNone(result) |
| self.assertEqual(str(result), str(executable_path)) |
| |
| def test_valid_no_path_returns_new_path(self): |
| executable_path = Path('clang') |
| query_drivers = [f'{self.temp_dir_path}/*'] |
| expected_path = self.temp_dir_path / executable_path |
| self.touch_temp_file(expected_path) |
| result = path_to_executable( |
| str(executable_path), path_globs=query_drivers |
| ) |
| self.assertIsNotNone(result) |
| self.assertEqual(str(result), str(expected_path)) |
| |
| def test_invalid_absolute_path_in_env_returns_same_path(self): |
| executable_path = self.temp_dir_path / '_pw_invalid_exe' |
| query_drivers = [f'{self.temp_dir_path}/*'] |
| result = path_to_executable( |
| str(executable_path.absolute()), path_globs=query_drivers |
| ) |
| self.assertIsNone(result) |
| |
| def test_invalid_absolute_path_outside_env_returns_same_path(self): |
| executable_path = Path('/usr/bin/_pw_invalid_exe') |
| query_drivers = ['/**/*'] |
| result = path_to_executable( |
| str(executable_path.absolute()), path_globs=query_drivers |
| ) |
| self.assertIsNone(result) |
| |
| def test_invalid_relative_path_returns_same_path(self): |
| executable_path = Path('../_pw_invalid_exe') |
| query_drivers = [f'{self.temp_dir_path}/*'] |
| result = path_to_executable( |
| str(executable_path), path_globs=query_drivers |
| ) |
| self.assertIsNone(result) |
| |
| def test_invalid_no_path_returns_new_path(self): |
| executable_path = Path('_pw_invalid_exe') |
| query_drivers = [f'{self.temp_dir_path}/*'] |
| expected_path = self.temp_dir_path / executable_path |
| self.touch_temp_file(expected_path) |
| result = path_to_executable( |
| str(executable_path), path_globs=query_drivers |
| ) |
| self.assertIsNone(result) |
| |
| |
| class TestInferTarget(unittest.TestCase): |
| """Tests infer_target""" |
| |
| def test_infer_target_pos(self): |
| test_cases = [ |
| ('?', [0]), |
| ('*/?', [1]), |
| ('*/*/?', [2]), |
| ('*/?/?', [1, 2]), |
| ] |
| |
| for glob, result in test_cases: |
| self.assertEqual(_infer_target_pos(glob), result) |
| |
| def test_infer_target(self): |
| test_cases = [ |
| ('?', 'target/thing.o', 'target'), |
| ('*/?', 'variants/target/foo/bar/thing.o', 'target'), |
| ('*/*/*/*/?', 'foo/bar/baz/hi/target/obj/thing.o', 'target'), |
| ('*/?/?', 'variants/target/foo/bar/thing.o', 'target_foo'), |
| ] |
| |
| for glob, output_path, result in test_cases: |
| self.assertEqual( |
| infer_target(glob, Path(''), Path(output_path)), result |
| ) |
| |
| |
| class TestCppCompileCommand(PwIdeTestCase): |
| """Tests CppCompileCommand""" |
| |
| def run_process_test_with_valid_commands( |
| self, command: str, expected_executable: str | None |
| ) -> None: |
| compile_command = CppCompileCommand( |
| command=command, file='', directory='' |
| ) |
| processed_compile_command = cast( |
| CppCompileCommand, |
| compile_command.process(default_path=self.temp_dir_path), |
| ) |
| self.assertIsNotNone(processed_compile_command) |
| self.assertEqual( |
| processed_compile_command.executable_name, expected_executable |
| ) |
| |
| def run_process_test_with_invalid_commands(self, command: str) -> None: |
| compile_command = CppCompileCommand( |
| command=command, file='', directory='' |
| ) |
| |
| with self.assertRaises(UnresolvablePathException): |
| compile_command.process(default_path=self.temp_dir_path) |
| |
| def test_process_valid_with_gn_compile_command(self) -> None: |
| """Test output against typical GN-generated compile commands.""" |
| |
| cases: list[dict[str, str]] = [ |
| { |
| # pylint: disable=line-too-long |
| 'command': 'arm-none-eabi-g++ -MMD -MF stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o.d -Wno-psabi -mabi=aapcs -mthumb --sysroot=../environment/cipd/packages/arm -specs=nano.specs -specs=nosys.specs -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Og -Wshadow -Wredundant-decls -u_printf_float -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -DPW_ARMV7M_ENABLE_FPU=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/assert_compatibility_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o', |
| # pylint: enable=line-too-long |
| 'executable': 'arm-none-eabi-g++', |
| }, |
| { |
| # pylint: disable=line-too-long |
| 'command': '../environment/cipd/packages/pigweed/bin/clang++ -MMD -MF pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o', |
| # pylint: enable=line-too-long |
| 'executable': 'clang++', |
| }, |
| ] |
| |
| for case in cases: |
| self.run_process_test_with_valid_commands( |
| case['command'], case['executable'] |
| ) |
| |
| def test_process_invalid_with_gn_compile_command(self) -> None: |
| """Test output against typical GN-generated compile commands.""" |
| |
| # pylint: disable=line-too-long |
| command = "python ../pw_toolchain/py/pw_toolchain/clang_tidy.py --source-exclude 'third_party/.*' --source-exclude '.*packages/mbedtls.*' --source-exclude '.*packages/boringssl.*' --skip-include-path 'mbedtls/include' --skip-include-path 'mbedtls' --skip-include-path 'boringssl/src/include' --skip-include-path 'boringssl' --skip-include-path 'pw_tls_client/generate_test_data' --source-file ../pw_allocator/freelist.cc --source-root '../' --export-fixes pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/freelist.freelist.cc.o.yaml -- ../environment/cipd/packages/pigweed/bin/clang++ END_OF_INVOKER -MMD -MF pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/freelist.freelist.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_containers/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/freelist.cc -o pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/freelist.freelist.cc.o && touch pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/freelist.freelist.cc.o" |
| # pylint: enable=line-too-long |
| |
| compile_command = CppCompileCommand( |
| command=command, file='', directory='' |
| ) |
| self.assertIsNone( |
| compile_command.process(default_path=self.temp_dir_path) |
| ) |
| |
| def test_process_unresolvable_with_gn_compile_command(self) -> None: |
| """Test output against typical GN-generated compile commands.""" |
| |
| # pylint: disable=line-too-long |
| command = 'clang++ -MMD -MF pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o' |
| # pylint: enable=line-too-long |
| |
| compile_command = CppCompileCommand( |
| command=command, file='', directory='' |
| ) |
| |
| processed_compile_command = cast( |
| CppCompileCommand, compile_command.process() |
| ) |
| self.assertIsNotNone(processed_compile_command) |
| self.assertIsNotNone(processed_compile_command.command) |
| # .split() to avoid failing on whitespace differences. |
| self.assertCountEqual( |
| cast(str, processed_compile_command.command).split(), |
| command.split(), |
| ) |
| |
| def test_process_unresolvable_strict_with_gn_compile_command(self) -> None: |
| """Test output against typical GN-generated compile commands.""" |
| |
| # pylint: disable=line-too-long |
| command = 'clang++ -MMD -MF pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o' |
| # pylint: enable=line-too-long |
| |
| compile_command = CppCompileCommand( |
| command=command, file='', directory='' |
| ) |
| |
| with self.assertRaises(UnresolvablePathException): |
| compile_command.process(strict=True) |
| |
| def test_process_blank_with_gn_compile_command(self) -> None: |
| """Test output against typical GN-generated compile commands.""" |
| |
| command = '' |
| compile_command = CppCompileCommand( |
| command=command, file='', directory='' |
| ) |
| |
| result = compile_command.process(default_path=self.temp_dir_path) |
| self.assertIsNone(result) |
| |
| |
| class TestCommandParts(unittest.TestCase): |
| """Test command_parts""" |
| |
| def test_command_parts(self): |
| """Test command_parts""" |
| |
| # pylint: disable=line-too-long |
| test_cases = [ |
| "python ../pw_toolchain/py/pw_toolchain/clang_tidy.py --source-exclude 'third_party/.*' --source-exclude '.*packages/mbedtls.*' --source-exclude '.*packages/boringssl.*' --skip-include-path 'mbedtls/include' --skip-include-path 'mbedtls' --skip-include-path 'boringssl/src/include' --skip-include-path 'boringssl' --skip-include-path 'pw_tls_client/generate_test_data' --source-file ../pw_allocator/block.cc --source-root '../' --export-fixes pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o.yaml -- ../environment/cipd/packages/pigweed/bin/clang++ END_OF_INVOKER -MMD -MF pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o && touch pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o", |
| 'arm-none-eabi-g++ -MMD -MF stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o.d -Wno-psabi -mabi=aapcs -mthumb --sysroot=../environment/cipd/packages/arm -specs=nano.specs -specs=nosys.specs -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Og -Wshadow -Wredundant-decls -u_printf_float -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -DPW_ARMV7M_ENABLE_FPU=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/assert_compatibility_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o', |
| '../environment/cipd/packages/pigweed/bin/isosceles-clang++ -MMD -MF isosceles_debug/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o isosceles_debug/obj/pw_allocator/block.block.cc.o', |
| '../environment/cipd/packages/pigweed/bin/clang++ -MMD -MF pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o', |
| 'ccache arm-none-eabi-g++ -MMD -MF stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o.d -Wno-psabi -mabi=aapcs -mthumb --sysroot=../environment/cipd/packages/arm -specs=nano.specs -specs=nosys.specs -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Og -Wshadow -Wredundant-decls -u_printf_float -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -DPW_ARMV7M_ENABLE_FPU=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/assert_compatibility_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o', |
| 'ccache ../environment/cipd/packages/pigweed/bin/isosceles-clang++ -MMD -MF isosceles_debug/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o isosceles_debug/obj/pw_allocator/block.block.cc.o', |
| 'ccache ../environment/cipd/packages/pigweed/bin/clang++ -MMD -MF pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o', |
| 'ccache debug=true max_size=10G arm-none-eabi-g++ -MMD -MF stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o.d -Wno-psabi -mabi=aapcs -mthumb --sysroot=../environment/cipd/packages/arm -specs=nano.specs -specs=nosys.specs -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Og -Wshadow -Wredundant-decls -u_printf_float -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -DPW_ARMV7M_ENABLE_FPU=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/assert_compatibility_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o', |
| 'ccache debug=true max_size=10G ../environment/cipd/packages/pigweed/bin/isosceles-clang++ -MMD -MF isosceles_debug/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o isosceles_debug/obj/pw_allocator/block.block.cc.o', |
| 'ccache debug=true max_size=10G ../environment/cipd/packages/pigweed/bin/clang++ -MMD -MF pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o', |
| "ccache python ../pw_toolchain/py/pw_toolchain/clang_tidy.py --source-exclude 'third_party/.*' --source-exclude '.*packages/mbedtls.*' --source-exclude '.*packages/boringssl.*' --skip-include-path 'mbedtls/include' --skip-include-path 'mbedtls' --skip-include-path 'boringssl/src/include' --skip-include-path 'boringssl' --skip-include-path 'pw_tls_client/generate_test_data' --source-file ../pw_allocator/block.cc --source-root '../' --export-fixes pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o.yaml -- ../environment/cipd/packages/pigweed/bin/clang++ END_OF_INVOKER -MMD -MF pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o && touch pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o", |
| ] |
| |
| expected_results = [ |
| ( |
| None, |
| 'python', |
| [ |
| '../pw_toolchain/py/pw_toolchain/clang_tidy.py', |
| '--source-exclude', |
| "'third_party/.*'", |
| '--source-exclude', |
| "'.*packages/mbedtls.*'", |
| '--source-exclude', |
| "'.*packages/boringssl.*'", |
| '--skip-include-path', |
| "'mbedtls/include'", |
| '--skip-include-path', |
| "'mbedtls'", |
| '--skip-include-path', |
| "'boringssl/src/include'", |
| '--skip-include-path', |
| "'boringssl'", |
| '--skip-include-path', |
| "'pw_tls_client/generate_test_data'", |
| '--source-file', |
| '../pw_allocator/block.cc', |
| '--source-root', |
| "'../'", |
| '--export-fixes', |
| 'pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o.yaml', |
| '--', |
| '../environment/cipd/packages/pigweed/bin/clang++', |
| 'END_OF_INVOKER', |
| '-MMD', |
| '-MF', |
| 'pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o.d', |
| '-g3', |
| '--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk', |
| '-Og', |
| '-Wshadow', |
| '-Wredundant-decls', |
| '-Wthread-safety', |
| '-Wswitch-enum', |
| '-fdiagnostics-color', |
| '-g', |
| '-fno-common', |
| '-fno-exceptions', |
| '-ffunction-sections', |
| '-fdata-sections', |
| '-Wall', |
| '-Wextra', |
| '-Wimplicit-fallthrough', |
| '-Wcast-qual', |
| '-Wundef', |
| '-Wpointer-arith', |
| '-Werror', |
| '-Wno-error=cpp', |
| '-Wno-error=deprecated-declarations', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-ffile-prefix-map=/pigweed/pigweed/=', |
| '-ffile-prefix-map=../=', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-Wextra-semi', |
| '-fno-rtti', |
| '-Wnon-virtual-dtor', |
| '-std=c++17', |
| '-Wno-register', |
| '-D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1', |
| '-DPW_STATUS_CFG_CHECK_IF_USED=1', |
| '-I../pw_allocator/public', |
| '-I../pw_assert/public', |
| '-I../pw_assert/print_and_abort_assert_public_overrides', |
| '-I../pw_preprocessor/public', |
| '-I../pw_assert_basic/public_overrides', |
| '-I../pw_assert_basic/public', |
| '-I../pw_span/public', |
| '-I../pw_polyfill/public', |
| '-I../pw_polyfill/standard_library_public', |
| '-I../pw_status/public', |
| '-c', |
| '../pw_allocator/block.cc', |
| '-o', |
| 'pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o', |
| '&&', |
| 'touch', |
| 'pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o', |
| ], |
| ), |
| ( |
| None, |
| 'arm-none-eabi-g++', |
| [ |
| '-MMD', |
| '-MF', |
| 'stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o.d', |
| '-Wno-psabi', |
| '-mabi=aapcs', |
| '-mthumb', |
| '--sysroot=../environment/cipd/packages/arm', |
| '-specs=nano.specs', |
| '-specs=nosys.specs', |
| '-mcpu=cortex-m4', |
| '-mfloat-abi=hard', |
| '-mfpu=fpv4-sp-d16', |
| '-Og', |
| '-Wshadow', |
| '-Wredundant-decls', |
| '-u_printf_float', |
| '-fdiagnostics-color', |
| '-g', |
| '-fno-common', |
| '-fno-exceptions', |
| '-ffunction-sections', |
| '-fdata-sections', |
| '-Wall', |
| '-Wextra', |
| '-Wimplicit-fallthrough', |
| '-Wcast-qual', |
| '-Wundef', |
| '-Wpointer-arith', |
| '-Werror', |
| '-Wno-error=cpp', |
| '-Wno-error=deprecated-declarations', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-ffile-prefix-map=/pigweed/pigweed/=', |
| '-ffile-prefix-map=../=', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-fno-rtti', |
| '-Wnon-virtual-dtor', |
| '-std=c++17', |
| '-Wno-register', |
| '-DPW_ARMV7M_ENABLE_FPU=1', |
| '-I../pw_allocator/public', |
| '-I../pw_assert/public', |
| '-I../pw_assert/assert_compatibility_public_overrides', |
| '-I../pw_preprocessor/public', |
| '-I../pw_assert_basic/public_overrides', |
| '-I../pw_assert_basic/public', |
| '-I../pw_span/public', |
| '-I../pw_polyfill/public', |
| '-I../pw_polyfill/standard_library_public', |
| '-I../pw_status/public', |
| '-c', |
| '../pw_allocator/block.cc', |
| '-o', |
| 'stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o', |
| ], |
| ), |
| ( |
| None, |
| '../environment/cipd/packages/pigweed/bin/isosceles-clang++', |
| [ |
| '-MMD', |
| '-MF', |
| 'isosceles_debug/obj/pw_allocator/block.block.cc.o.d', |
| '-g3', |
| '--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk', |
| '-Og', |
| '-Wshadow', |
| '-Wredundant-decls', |
| '-Wthread-safety', |
| '-Wswitch-enum', |
| '-fdiagnostics-color', |
| '-g', |
| '-fno-common', |
| '-fno-exceptions', |
| '-ffunction-sections', |
| '-fdata-sections', |
| '-Wall', |
| '-Wextra', |
| '-Wimplicit-fallthrough', |
| '-Wcast-qual', |
| '-Wundef', |
| '-Wpointer-arith', |
| '-Werror', |
| '-Wno-error=cpp', |
| '-Wno-error=deprecated-declarations', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-ffile-prefix-map=/pigweed/pigweed/=', |
| '-ffile-prefix-map=../=', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-Wextra-semi', |
| '-fno-rtti', |
| '-Wnon-virtual-dtor', |
| '-std=c++17', |
| '-Wno-register', |
| '-D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1', |
| '-DPW_STATUS_CFG_CHECK_IF_USED=1', |
| '-I../pw_allocator/public', |
| '-I../pw_assert/public', |
| '-I../pw_assert/print_and_abort_assert_public_overrides', |
| '-I../pw_preprocessor/public', |
| '-I../pw_assert_basic/public_overrides', |
| '-I../pw_assert_basic/public', |
| '-I../pw_span/public', |
| '-I../pw_polyfill/public', |
| '-I../pw_polyfill/standard_library_public', |
| '-I../pw_status/public', |
| '-c', |
| '../pw_allocator/block.cc', |
| '-o', |
| 'isosceles_debug/obj/pw_allocator/block.block.cc.o', |
| ], |
| ), |
| ( |
| None, |
| '../environment/cipd/packages/pigweed/bin/clang++', |
| [ |
| '-MMD', |
| '-MF', |
| 'pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o.d', |
| '-g3', |
| '--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk', |
| '-Og', |
| '-Wshadow', |
| '-Wredundant-decls', |
| '-Wthread-safety', |
| '-Wswitch-enum', |
| '-fdiagnostics-color', |
| '-g', |
| '-fno-common', |
| '-fno-exceptions', |
| '-ffunction-sections', |
| '-fdata-sections', |
| '-Wall', |
| '-Wextra', |
| '-Wimplicit-fallthrough', |
| '-Wcast-qual', |
| '-Wundef', |
| '-Wpointer-arith', |
| '-Werror', |
| '-Wno-error=cpp', |
| '-Wno-error=deprecated-declarations', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-ffile-prefix-map=/pigweed/pigweed/=', |
| '-ffile-prefix-map=../=', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-Wextra-semi', |
| '-fno-rtti', |
| '-Wnon-virtual-dtor', |
| '-std=c++17', |
| '-Wno-register', |
| '-D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1', |
| '-DPW_STATUS_CFG_CHECK_IF_USED=1', |
| '-I../pw_allocator/public', |
| '-I../pw_assert/public', |
| '-I../pw_assert/print_and_abort_assert_public_overrides', |
| '-I../pw_preprocessor/public', |
| '-I../pw_assert_basic/public_overrides', |
| '-I../pw_assert_basic/public', |
| '-I../pw_span/public', |
| '-I../pw_polyfill/public', |
| '-I../pw_polyfill/standard_library_public', |
| '-I../pw_status/public', |
| '-c', |
| '../pw_allocator/block.cc', |
| '-o', |
| 'pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o', |
| ], |
| ), |
| ( |
| 'ccache', |
| 'arm-none-eabi-g++', |
| [ |
| '-MMD', |
| '-MF', |
| 'stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o.d', |
| '-Wno-psabi', |
| '-mabi=aapcs', |
| '-mthumb', |
| '--sysroot=../environment/cipd/packages/arm', |
| '-specs=nano.specs', |
| '-specs=nosys.specs', |
| '-mcpu=cortex-m4', |
| '-mfloat-abi=hard', |
| '-mfpu=fpv4-sp-d16', |
| '-Og', |
| '-Wshadow', |
| '-Wredundant-decls', |
| '-u_printf_float', |
| '-fdiagnostics-color', |
| '-g', |
| '-fno-common', |
| '-fno-exceptions', |
| '-ffunction-sections', |
| '-fdata-sections', |
| '-Wall', |
| '-Wextra', |
| '-Wimplicit-fallthrough', |
| '-Wcast-qual', |
| '-Wundef', |
| '-Wpointer-arith', |
| '-Werror', |
| '-Wno-error=cpp', |
| '-Wno-error=deprecated-declarations', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-ffile-prefix-map=/pigweed/pigweed/=', |
| '-ffile-prefix-map=../=', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-fno-rtti', |
| '-Wnon-virtual-dtor', |
| '-std=c++17', |
| '-Wno-register', |
| '-DPW_ARMV7M_ENABLE_FPU=1', |
| '-I../pw_allocator/public', |
| '-I../pw_assert/public', |
| '-I../pw_assert/assert_compatibility_public_overrides', |
| '-I../pw_preprocessor/public', |
| '-I../pw_assert_basic/public_overrides', |
| '-I../pw_assert_basic/public', |
| '-I../pw_span/public', |
| '-I../pw_polyfill/public', |
| '-I../pw_polyfill/standard_library_public', |
| '-I../pw_status/public', |
| '-c', |
| '../pw_allocator/block.cc', |
| '-o', |
| 'stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o', |
| ], |
| ), |
| ( |
| 'ccache', |
| '../environment/cipd/packages/pigweed/bin/isosceles-clang++', |
| [ |
| '-MMD', |
| '-MF', |
| 'isosceles_debug/obj/pw_allocator/block.block.cc.o.d', |
| '-g3', |
| '--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk', |
| '-Og', |
| '-Wshadow', |
| '-Wredundant-decls', |
| '-Wthread-safety', |
| '-Wswitch-enum', |
| '-fdiagnostics-color', |
| '-g', |
| '-fno-common', |
| '-fno-exceptions', |
| '-ffunction-sections', |
| '-fdata-sections', |
| '-Wall', |
| '-Wextra', |
| '-Wimplicit-fallthrough', |
| '-Wcast-qual', |
| '-Wundef', |
| '-Wpointer-arith', |
| '-Werror', |
| '-Wno-error=cpp', |
| '-Wno-error=deprecated-declarations', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-ffile-prefix-map=/pigweed/pigweed/=', |
| '-ffile-prefix-map=../=', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-Wextra-semi', |
| '-fno-rtti', |
| '-Wnon-virtual-dtor', |
| '-std=c++17', |
| '-Wno-register', |
| '-D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1', |
| '-DPW_STATUS_CFG_CHECK_IF_USED=1', |
| '-I../pw_allocator/public', |
| '-I../pw_assert/public', |
| '-I../pw_assert/print_and_abort_assert_public_overrides', |
| '-I../pw_preprocessor/public', |
| '-I../pw_assert_basic/public_overrides', |
| '-I../pw_assert_basic/public', |
| '-I../pw_span/public', |
| '-I../pw_polyfill/public', |
| '-I../pw_polyfill/standard_library_public', |
| '-I../pw_status/public', |
| '-c', |
| '../pw_allocator/block.cc', |
| '-o', |
| 'isosceles_debug/obj/pw_allocator/block.block.cc.o', |
| ], |
| ), |
| ( |
| 'ccache', |
| '../environment/cipd/packages/pigweed/bin/clang++', |
| [ |
| '-MMD', |
| '-MF', |
| 'pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o.d', |
| '-g3', |
| '--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk', |
| '-Og', |
| '-Wshadow', |
| '-Wredundant-decls', |
| '-Wthread-safety', |
| '-Wswitch-enum', |
| '-fdiagnostics-color', |
| '-g', |
| '-fno-common', |
| '-fno-exceptions', |
| '-ffunction-sections', |
| '-fdata-sections', |
| '-Wall', |
| '-Wextra', |
| '-Wimplicit-fallthrough', |
| '-Wcast-qual', |
| '-Wundef', |
| '-Wpointer-arith', |
| '-Werror', |
| '-Wno-error=cpp', |
| '-Wno-error=deprecated-declarations', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-ffile-prefix-map=/pigweed/pigweed/=', |
| '-ffile-prefix-map=../=', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-Wextra-semi', |
| '-fno-rtti', |
| '-Wnon-virtual-dtor', |
| '-std=c++17', |
| '-Wno-register', |
| '-D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1', |
| '-DPW_STATUS_CFG_CHECK_IF_USED=1', |
| '-I../pw_allocator/public', |
| '-I../pw_assert/public', |
| '-I../pw_assert/print_and_abort_assert_public_overrides', |
| '-I../pw_preprocessor/public', |
| '-I../pw_assert_basic/public_overrides', |
| '-I../pw_assert_basic/public', |
| '-I../pw_span/public', |
| '-I../pw_polyfill/public', |
| '-I../pw_polyfill/standard_library_public', |
| '-I../pw_status/public', |
| '-c', |
| '../pw_allocator/block.cc', |
| '-o', |
| 'pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o', |
| ], |
| ), |
| ( |
| 'ccache debug=true max_size=10G', |
| 'arm-none-eabi-g++', |
| [ |
| '-MMD', |
| '-MF', |
| 'stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o.d', |
| '-Wno-psabi', |
| '-mabi=aapcs', |
| '-mthumb', |
| '--sysroot=../environment/cipd/packages/arm', |
| '-specs=nano.specs', |
| '-specs=nosys.specs', |
| '-mcpu=cortex-m4', |
| '-mfloat-abi=hard', |
| '-mfpu=fpv4-sp-d16', |
| '-Og', |
| '-Wshadow', |
| '-Wredundant-decls', |
| '-u_printf_float', |
| '-fdiagnostics-color', |
| '-g', |
| '-fno-common', |
| '-fno-exceptions', |
| '-ffunction-sections', |
| '-fdata-sections', |
| '-Wall', |
| '-Wextra', |
| '-Wimplicit-fallthrough', |
| '-Wcast-qual', |
| '-Wundef', |
| '-Wpointer-arith', |
| '-Werror', |
| '-Wno-error=cpp', |
| '-Wno-error=deprecated-declarations', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-ffile-prefix-map=/pigweed/pigweed/=', |
| '-ffile-prefix-map=../=', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-fno-rtti', |
| '-Wnon-virtual-dtor', |
| '-std=c++17', |
| '-Wno-register', |
| '-DPW_ARMV7M_ENABLE_FPU=1', |
| '-I../pw_allocator/public', |
| '-I../pw_assert/public', |
| '-I../pw_assert/assert_compatibility_public_overrides', |
| '-I../pw_preprocessor/public', |
| '-I../pw_assert_basic/public_overrides', |
| '-I../pw_assert_basic/public', |
| '-I../pw_span/public', |
| '-I../pw_polyfill/public', |
| '-I../pw_polyfill/standard_library_public', |
| '-I../pw_status/public', |
| '-c', |
| '../pw_allocator/block.cc', |
| '-o', |
| 'stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o', |
| ], |
| ), |
| ( |
| 'ccache debug=true max_size=10G', |
| '../environment/cipd/packages/pigweed/bin/isosceles-clang++', |
| [ |
| '-MMD', |
| '-MF', |
| 'isosceles_debug/obj/pw_allocator/block.block.cc.o.d', |
| '-g3', |
| '--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk', |
| '-Og', |
| '-Wshadow', |
| '-Wredundant-decls', |
| '-Wthread-safety', |
| '-Wswitch-enum', |
| '-fdiagnostics-color', |
| '-g', |
| '-fno-common', |
| '-fno-exceptions', |
| '-ffunction-sections', |
| '-fdata-sections', |
| '-Wall', |
| '-Wextra', |
| '-Wimplicit-fallthrough', |
| '-Wcast-qual', |
| '-Wundef', |
| '-Wpointer-arith', |
| '-Werror', |
| '-Wno-error=cpp', |
| '-Wno-error=deprecated-declarations', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-ffile-prefix-map=/pigweed/pigweed/=', |
| '-ffile-prefix-map=../=', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-Wextra-semi', |
| '-fno-rtti', |
| '-Wnon-virtual-dtor', |
| '-std=c++17', |
| '-Wno-register', |
| '-D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1', |
| '-DPW_STATUS_CFG_CHECK_IF_USED=1', |
| '-I../pw_allocator/public', |
| '-I../pw_assert/public', |
| '-I../pw_assert/print_and_abort_assert_public_overrides', |
| '-I../pw_preprocessor/public', |
| '-I../pw_assert_basic/public_overrides', |
| '-I../pw_assert_basic/public', |
| '-I../pw_span/public', |
| '-I../pw_polyfill/public', |
| '-I../pw_polyfill/standard_library_public', |
| '-I../pw_status/public', |
| '-c', |
| '../pw_allocator/block.cc', |
| '-o', |
| 'isosceles_debug/obj/pw_allocator/block.block.cc.o', |
| ], |
| ), |
| ( |
| 'ccache debug=true max_size=10G', |
| '../environment/cipd/packages/pigweed/bin/clang++', |
| [ |
| '-MMD', |
| '-MF', |
| 'pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o.d', |
| '-g3', |
| '--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk', |
| '-Og', |
| '-Wshadow', |
| '-Wredundant-decls', |
| '-Wthread-safety', |
| '-Wswitch-enum', |
| '-fdiagnostics-color', |
| '-g', |
| '-fno-common', |
| '-fno-exceptions', |
| '-ffunction-sections', |
| '-fdata-sections', |
| '-Wall', |
| '-Wextra', |
| '-Wimplicit-fallthrough', |
| '-Wcast-qual', |
| '-Wundef', |
| '-Wpointer-arith', |
| '-Werror', |
| '-Wno-error=cpp', |
| '-Wno-error=deprecated-declarations', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-ffile-prefix-map=/pigweed/pigweed/=', |
| '-ffile-prefix-map=../=', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-Wextra-semi', |
| '-fno-rtti', |
| '-Wnon-virtual-dtor', |
| '-std=c++17', |
| '-Wno-register', |
| '-D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1', |
| '-DPW_STATUS_CFG_CHECK_IF_USED=1', |
| '-I../pw_allocator/public', |
| '-I../pw_assert/public', |
| '-I../pw_assert/print_and_abort_assert_public_overrides', |
| '-I../pw_preprocessor/public', |
| '-I../pw_assert_basic/public_overrides', |
| '-I../pw_assert_basic/public', |
| '-I../pw_span/public', |
| '-I../pw_polyfill/public', |
| '-I../pw_polyfill/standard_library_public', |
| '-I../pw_status/public', |
| '-c', |
| '../pw_allocator/block.cc', |
| '-o', |
| 'pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o', |
| ], |
| ), |
| ( |
| 'ccache', |
| 'python', |
| [ |
| '../pw_toolchain/py/pw_toolchain/clang_tidy.py', |
| '--source-exclude', |
| "'third_party/.*'", |
| '--source-exclude', |
| "'.*packages/mbedtls.*'", |
| '--source-exclude', |
| "'.*packages/boringssl.*'", |
| '--skip-include-path', |
| "'mbedtls/include'", |
| '--skip-include-path', |
| "'mbedtls'", |
| '--skip-include-path', |
| "'boringssl/src/include'", |
| '--skip-include-path', |
| "'boringssl'", |
| '--skip-include-path', |
| "'pw_tls_client/generate_test_data'", |
| '--source-file', |
| '../pw_allocator/block.cc', |
| '--source-root', |
| "'../'", |
| '--export-fixes', |
| 'pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o.yaml', |
| '--', |
| '../environment/cipd/packages/pigweed/bin/clang++', |
| 'END_OF_INVOKER', |
| '-MMD', |
| '-MF', |
| 'pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o.d', |
| '-g3', |
| '--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk', |
| '-Og', |
| '-Wshadow', |
| '-Wredundant-decls', |
| '-Wthread-safety', |
| '-Wswitch-enum', |
| '-fdiagnostics-color', |
| '-g', |
| '-fno-common', |
| '-fno-exceptions', |
| '-ffunction-sections', |
| '-fdata-sections', |
| '-Wall', |
| '-Wextra', |
| '-Wimplicit-fallthrough', |
| '-Wcast-qual', |
| '-Wundef', |
| '-Wpointer-arith', |
| '-Werror', |
| '-Wno-error=cpp', |
| '-Wno-error=deprecated-declarations', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-ffile-prefix-map=/pigweed/pigweed/=', |
| '-ffile-prefix-map=../=', |
| '-ffile-prefix-map=/pigweed/pigweed/out=out', |
| '-Wextra-semi', |
| '-fno-rtti', |
| '-Wnon-virtual-dtor', |
| '-std=c++17', |
| '-Wno-register', |
| '-D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1', |
| '-DPW_STATUS_CFG_CHECK_IF_USED=1', |
| '-I../pw_allocator/public', |
| '-I../pw_assert/public', |
| '-I../pw_assert/print_and_abort_assert_public_overrides', |
| '-I../pw_preprocessor/public', |
| '-I../pw_assert_basic/public_overrides', |
| '-I../pw_assert_basic/public', |
| '-I../pw_span/public', |
| '-I../pw_polyfill/public', |
| '-I../pw_polyfill/standard_library_public', |
| '-I../pw_status/public', |
| '-c', |
| '../pw_allocator/block.cc', |
| '-o', |
| 'pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o', |
| '&&', |
| 'touch', |
| 'pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o', |
| ], |
| ), |
| ] |
| # pylint: enable=line-too-long |
| |
| for test_case, expected in zip(test_cases, expected_results): |
| self.assertEqual(command_parts(test_case), expected) |
| |
| |
| class TestCppCompilationDatabase(PwIdeTestCase): |
| """Tests CppCompilationDatabase""" |
| |
| def setUp(self): |
| self.root_dir = Path('/pigweed/pigweed/out') |
| |
| self.fixture: list[CppCompileCommandDict] = [ |
| { |
| # pylint: disable=line-too-long |
| 'command': 'arm-none-eabi-g++ -MMD -MF stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o.d -Wno-psabi -mabi=aapcs -mthumb --sysroot=../environment/cipd/packages/arm -specs=nano.specs -specs=nosys.specs -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Og -Wshadow -Wredundant-decls -u_printf_float -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -DPW_ARMV7M_ENABLE_FPU=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/assert_compatibility_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o', |
| # pylint: enable=line-too-long |
| 'directory': '/pigweed/pigweed/out', |
| 'file': '../pw_allocator/block.cc', |
| }, |
| { |
| # pylint: disable=line-too-long |
| 'command': '../environment/cipd/packages/pigweed/bin/clang++ -MMD -MF pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o', |
| # pylint: enable=line-too-long |
| 'directory': '/pigweed/pigweed/out', |
| 'file': '../pw_allocator/block.cc', |
| }, |
| ] |
| |
| self.expected: list[CppCompileCommandDict] = [ |
| { |
| **self.fixture[0], |
| # pylint: disable=line-too-long |
| 'output': 'stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o', |
| # pylint: enable=line-too-long |
| }, |
| { |
| **self.fixture[1], |
| # pylint: disable=line-too-long |
| 'output': 'pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o', |
| # pylint: enable=line-too-long |
| }, |
| ] |
| |
| self.fixture_merge_1 = [ |
| { |
| # pylint: disable=line-too-long |
| 'command': 'g++ -MMD -MF pw_strict_host_gcc_debug/obj/pw_allocator/block.block.cc.o.d -Wno-psabi -Og -Wshadow -Wredundant-decls -Wswitch-enum -Wpedantic -Wno-c++20-designator -Wno-gnu-zero-variadic-macro-arguments -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -DPW_SPAN_ENABLE_ASSERTS=true -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o pw_strict_host_gcc_debug/obj/pw_allocator/block.block.cc.o', |
| 'directory': '/pigweed/pigweed/out', |
| 'file': '../pw_allocator/block.cc', |
| 'output': 'pw_strict_host_gcc_debug/obj/pw_allocator/block.block.cc.o', |
| # pylint: enable=line-too-long |
| }, |
| { |
| # pylint: disable=line-too-long |
| 'command': 'g++ -MMD -MF pw_strict_host_gcc_debug/obj/pw_allocator/freelist.freelist.cc.o.d -Wno-psabi -Og -Wshadow -Wredundant-decls -Wswitch-enum -Wpedantic -Wno-c++20-designator -Wno-gnu-zero-variadic-macro-arguments -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=//pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -DPW_SPAN_ENABLE_ASSERTS=true -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_containers/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_span/public -I../pw_status/public -c ../pw_allocator/freelist.cc -o pw_strict_host_gcc_debug/obj/pw_allocator/freelist.freelist.cc.o', |
| 'directory': '/pigweed/pigweed/out', |
| 'file': '../pw_allocator/freelist.cc', |
| 'output': 'pw_strict_host_gcc_debug/obj/pw_allocator/freelist.freelist.cc.o', |
| # pylint: enable=line-too-long |
| }, |
| ] |
| |
| self.fixture_merge_2 = [ |
| { |
| # pylint: disable=line-too-long |
| 'command': 'g++ -MMD -MF pw_strict_host_gcc_debug/obj/pw_base64/pw_base64.base64.cc.o.d -Wno-psabi -Og -Wshadow -Wredundant-decls -Wswitch-enum -Wpedantic -Wno-c++20-designator -Wno-gnu-zero-variadic-macro-arguments -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -DPW_SPAN_ENABLE_ASSERTS=true -I../pw_base64/public -I../pw_string/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_span/public -c ../pw_base64/base64.cc -o pw_strict_host_gcc_debug/obj/pw_base64/pw_base64.base64.cc.o', |
| 'directory': '/pigweed/pigweed/out', |
| 'file': '../pw_base64/base64.cc', |
| 'output': 'pw_strict_host_gcc_debug/obj/pw_base64/pw_base64.base64.cc.o', |
| # pylint: enable=line-too-long |
| }, |
| { |
| # pylint: disable=line-too-long |
| 'command': 'g++ -MMD -MF pw_strict_host_gcc_debug/obj/pw_checksum/pw_checksum.crc32.cc.o.d -Wno-psabi -Og -Wshadow -Wredundant-decls -Wswitch-enum -Wpedantic -Wno-c++20-designator -Wno-gnu-zero-variadic-macro-arguments -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -DPW_SPAN_ENABLE_ASSERTS=true -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_checksum/public -I../pw_bytes/public -I../pw_containers/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_preprocessor/public -I../pw_span/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_status/public -c ../pw_checksum/crc32.cc -o pw_strict_host_gcc_debug/obj/pw_checksum/pw_checksum.crc32.cc.o', |
| 'directory': 'pigweed/pigweed/out', |
| 'file': '../pw_checksum/crc32.cc', |
| 'output': 'pw_strict_host_gcc_debug/obj/pw_checksum/pw_checksum.crc32.cc.o', |
| # pylint: enable=line-too-long |
| }, |
| ] |
| |
| return super().setUp() |
| |
| def test_merge(self): |
| compdb1 = CppCompilationDatabase.load( |
| self.fixture_merge_1, self.root_dir |
| ) |
| compdb2 = CppCompilationDatabase.load( |
| self.fixture_merge_2, self.root_dir |
| ) |
| compdb1.merge(compdb2) |
| result = [compile_command.as_dict() for compile_command in compdb1] |
| expected = [*self.fixture_merge_1, *self.fixture_merge_2] |
| self.assertCountEqual(result, expected) |
| |
| def test_merge_no_dupes(self): |
| compdb1 = CppCompilationDatabase.load( |
| self.fixture_merge_1, self.root_dir |
| ) |
| fixture_combo = [*self.fixture_merge_1, *self.fixture_merge_2] |
| compdb2 = CppCompilationDatabase.load(fixture_combo, self.root_dir) |
| compdb1.merge(compdb2) |
| result = [compile_command.as_dict() for compile_command in compdb1] |
| expected = [*self.fixture_merge_1, *self.fixture_merge_2] |
| self.assertCountEqual(result, expected) |
| |
| def test_load_from_dicts(self): |
| compdb = CppCompilationDatabase.load(self.fixture, self.root_dir) |
| self.assertCountEqual(compdb.as_dicts(), self.expected) |
| |
| def test_load_from_json(self): |
| compdb = CppCompilationDatabase.load( |
| json.dumps(self.fixture), self.root_dir |
| ) |
| self.assertCountEqual(compdb.as_dicts(), self.expected) |
| |
| def test_load_from_path(self): |
| with self.make_temp_file( |
| COMPDB_FILE_NAME, |
| json.dumps(self.fixture), |
| ) as (_, file_path): |
| path = file_path |
| |
| compdb = CppCompilationDatabase.load(path, self.root_dir) |
| self.assertCountEqual(compdb.as_dicts(), self.expected) |
| |
| def test_load_from_file_handle(self): |
| with self.make_temp_file( |
| COMPDB_FILE_NAME, |
| json.dumps(self.fixture), |
| ) as (file, _): |
| compdb = CppCompilationDatabase.load(file, self.root_dir) |
| |
| self.assertCountEqual(compdb.as_dicts(), self.expected) |
| |
| def test_process(self): |
| """Test processing against a typical sample of raw output from GN.""" |
| |
| targets = [ |
| 'pw_strict_host_clang_debug', |
| 'stm32f429i_disc1_debug', |
| 'isosceles_debug', |
| ] |
| |
| settings = self.make_ide_settings(targets_include=targets) |
| |
| # pylint: disable=line-too-long |
| raw_db: list[CppCompileCommandDict] = [ |
| { |
| 'command': 'arm-none-eabi-g++ -MMD -MF stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o.d -Wno-psabi -mabi=aapcs -mthumb --sysroot=../environment/cipd/packages/arm -specs=nano.specs -specs=nosys.specs -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Og -Wshadow -Wredundant-decls -u_printf_float -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -DPW_ARMV7M_ENABLE_FPU=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/assert_compatibility_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o', |
| 'directory': str(self.root_dir), |
| 'file': '../pw_allocator/block.cc', |
| }, |
| { |
| 'command': '../environment/cipd/packages/pigweed/bin/isosceles-clang++ -MMD -MF isosceles_debug/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o isosceles_debug/obj/pw_allocator/block.block.cc.o', |
| 'directory': str(self.root_dir), |
| 'file': '../pw_allocator/block.cc', |
| }, |
| { |
| 'command': 'ccache ../environment/cipd/packages/pigweed/bin/clang++ -MMD -MF pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o', |
| 'directory': str(self.root_dir), |
| 'file': '../pw_allocator/block.cc', |
| }, |
| { |
| 'command': "python ../pw_toolchain/py/pw_toolchain/clang_tidy.py --source-exclude 'third_party/.*' --source-exclude '.*packages/mbedtls.*' --source-exclude '.*packages/boringssl.*' --skip-include-path 'mbedtls/include' --skip-include-path 'mbedtls' --skip-include-path 'boringssl/src/include' --skip-include-path 'boringssl' --skip-include-path 'pw_tls_client/generate_test_data' --source-file ../pw_allocator/block.cc --source-root '../' --export-fixes pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o.yaml -- ../environment/cipd/packages/pigweed/bin/clang++ END_OF_INVOKER -MMD -MF pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o && touch pw_strict_host_clang_debug.static_analysis/obj/pw_allocator/block.block.cc.o", |
| 'directory': str(self.root_dir), |
| 'file': '../pw_allocator/block.cc', |
| }, |
| ] |
| |
| expected_compdbs = { |
| 'isosceles_debug': [ |
| { |
| 'command': |
| # Ensures path format matches OS (e.g. Windows) |
| f'{Path("../environment/cipd/packages/pigweed/bin/isosceles-clang++")} -MMD -MF isosceles_debug/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o isosceles_debug/obj/pw_allocator/block.block.cc.o', |
| 'directory': str(self.root_dir), |
| 'file': '../pw_allocator/block.cc', |
| 'output': 'isosceles_debug/obj/pw_allocator/block.block.cc.o', |
| }, |
| ], |
| 'pw_strict_host_clang_debug': [ |
| { |
| 'command': |
| # Ensures path format matches OS (e.g. Windows) |
| f'ccache {Path("../environment/cipd/packages/pigweed/bin/clang++")} -MMD -MF pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o.d -g3 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -Og -Wshadow -Wredundant-decls -Wthread-safety -Wswitch-enum -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o', |
| 'directory': str(self.root_dir), |
| 'file': '../pw_allocator/block.cc', |
| 'output': 'pw_strict_host_clang_debug/obj/pw_allocator/block.block.cc.o', |
| }, |
| ], |
| 'stm32f429i_disc1_debug': [ |
| { |
| 'command': |
| # Ensures this test avoids the unpathed compiler search |
| f'{self.temp_dir_path / "arm-none-eabi-g++"} -MMD -MF stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o.d -Wno-psabi -mabi=aapcs -mthumb --sysroot=../environment/cipd/packages/arm -specs=nano.specs -specs=nosys.specs -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Og -Wshadow -Wredundant-decls -u_printf_float -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -DPW_ARMV7M_ENABLE_FPU=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/assert_compatibility_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o', |
| 'directory': str(self.root_dir), |
| 'file': '../pw_allocator/block.cc', |
| 'output': 'stm32f429i_disc1_debug/obj/pw_allocator/block.block.cc.o', |
| }, |
| ], |
| } |
| # pylint: enable=line-too-long |
| |
| compdbs = CppCompilationDatabase.load( |
| raw_db, root_dir=self.root_dir |
| ).process(settings, default_path=self.temp_dir_path) |
| compdbs_as_dicts = { |
| target: compdb.as_dicts() for target, compdb in compdbs.items() |
| } |
| |
| self.assertCountEqual( |
| list(compdbs_as_dicts.keys()), list(expected_compdbs.keys()) |
| ) |
| self.assertDictEqual(compdbs_as_dicts, expected_compdbs) |
| |
| |
| class TestCppCompilationDatabasesMap(PwIdeTestCase): |
| """Tests CppCompilationDatabasesMap""" |
| |
| def setUp(self): |
| # pylint: disable=line-too-long |
| self.fixture_1 = lambda target: [ |
| CppCompileCommand( |
| **{ |
| 'command': f'g++ -MMD -MF {target}/obj/pw_allocator/block.block.cc.o.d -Wno-psabi -Og -Wshadow -Wredundant-decls -Wswitch-enum -Wpedantic -Wno-c++20-designator -Wno-gnu-zero-variadic-macro-arguments -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -DPW_SPAN_ENABLE_ASSERTS=true -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_span/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_status/public -c ../pw_allocator/block.cc -o pw_strict_host_gcc_debug/obj/pw_allocator/block.block.cc.o', |
| 'directory': '/pigweed/pigweed/out', |
| 'file': '../pw_allocator/block.cc', |
| } |
| ), |
| CppCompileCommand( |
| **{ |
| 'command': f'g++ -MMD -MF {target}/obj/pw_allocator/freelist.freelist.cc.o.d -Wno-psabi -Og -Wshadow -Wredundant-decls -Wswitch-enum -Wpedantic -Wno-c++20-designator -Wno-gnu-zero-variadic-macro-arguments -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=//pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -DPW_SPAN_ENABLE_ASSERTS=true -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_allocator/public -I../pw_containers/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_span/public -I../pw_status/public -c ../pw_allocator/freelist.cc -o pw_strict_host_gcc_debug/obj/pw_allocator/freelist.freelist.cc.o', |
| 'directory': '/pigweed/pigweed/out', |
| 'file': '../pw_allocator/freelist.cc', |
| } |
| ), |
| ] |
| |
| self.fixture_2 = lambda target: [ |
| CppCompileCommand( |
| **{ |
| 'command': f'g++ -MMD -MF {target}/obj/pw_base64/pw_base64.base64.cc.o.d -Wno-psabi -Og -Wshadow -Wredundant-decls -Wswitch-enum -Wpedantic -Wno-c++20-designator -Wno-gnu-zero-variadic-macro-arguments -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -DPW_SPAN_ENABLE_ASSERTS=true -I../pw_base64/public -I../pw_string/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_preprocessor/public -I../pw_assert_basic/public_overrides -I../pw_assert_basic/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_span/public -c ../pw_base64/base64.cc -o pw_strict_host_gcc_debug/obj/pw_base64/pw_base64.base64.cc.o', |
| 'directory': '/pigweed/pigweed/out', |
| 'file': '../pw_base64/base64.cc', |
| } |
| ), |
| CppCompileCommand( |
| **{ |
| 'command': f'g++ -MMD -MF {target}/obj/pw_checksum/pw_checksum.crc32.cc.o.d -Wno-psabi -Og -Wshadow -Wredundant-decls -Wswitch-enum -Wpedantic -Wno-c++20-designator -Wno-gnu-zero-variadic-macro-arguments -fdiagnostics-color -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Wimplicit-fallthrough -Wcast-qual -Wundef -Wpointer-arith -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -ffile-prefix-map=/pigweed/pigweed/out=out -ffile-prefix-map=/pigweed/pigweed/= -ffile-prefix-map=../= -ffile-prefix-map=/pigweed/pigweed/out=out -Wextra-semi -fno-rtti -Wnon-virtual-dtor -std=c++17 -Wno-register -DPW_SPAN_ENABLE_ASSERTS=true -DPW_STATUS_CFG_CHECK_IF_USED=1 -I../pw_checksum/public -I../pw_bytes/public -I../pw_containers/public -I../pw_polyfill/public -I../pw_polyfill/standard_library_public -I../pw_preprocessor/public -I../pw_span/public -I../pw_assert/public -I../pw_assert/print_and_abort_assert_public_overrides -I../pw_status/public -c ../pw_checksum/crc32.cc -o pw_strict_host_gcc_debug/obj/pw_checksum/pw_checksum.crc32.cc.o', |
| 'directory': 'pigweed/pigweed/out', |
| 'file': '../pw_checksum/crc32.cc', |
| } |
| ), |
| ] |
| # pylint: enable=line-too-long |
| super().setUp() |
| |
| def test_merge_0_db_set(self): |
| with self.assertRaises(ValueError): |
| CppCompilationDatabasesMap.merge() |
| |
| def test_merge_1_db_set(self): |
| settings = self.make_ide_settings() |
| target = 'test_target' |
| db_set = CppCompilationDatabasesMap(settings) |
| db_set[target] = self.fixture_1(target) |
| result = CppCompilationDatabasesMap.merge(db_set) |
| self.assertCountEqual(result._dbs, db_set._dbs) |
| |
| def test_merge_2_db_sets_different_targets(self): |
| settings = self.make_ide_settings() |
| target1 = 'test_target_1' |
| target2 = 'test_target_2' |
| db_set1 = CppCompilationDatabasesMap(settings) |
| db_set1[target1] = self.fixture_1(target1) |
| db_set2 = CppCompilationDatabasesMap(settings) |
| db_set2[target2] = self.fixture_2(target2) |
| result = CppCompilationDatabasesMap.merge(db_set1, db_set2) |
| self.assertEqual(len(result), 2) |
| self.assertCountEqual(result._dbs, {**db_set1._dbs, **db_set2._dbs}) |
| |
| def test_merge_2_db_sets_duplicated_targets(self): |
| settings = self.make_ide_settings() |
| target1 = 'test_target_1' |
| target2 = 'test_target_2' |
| db_set1 = CppCompilationDatabasesMap(settings) |
| db_set1[target1] = self.fixture_1(target1) |
| db_set2 = CppCompilationDatabasesMap(settings) |
| db_set2[target2] = self.fixture_2(target2) |
| db_set_combo = CppCompilationDatabasesMap.merge(db_set1, db_set2) |
| result = CppCompilationDatabasesMap.merge(db_set1, db_set_combo) |
| self.assertEqual(len(result), 2) |
| self.assertCountEqual(result._dbs, {**db_set1._dbs, **db_set2._dbs}) |
| |
| def test_cascade_disabled(self): |
| settings = self.make_ide_settings( |
| cascade_targets=False, |
| targets_include=['test_target_1', 'test_target_2'], |
| ) |
| target1 = 'test_target_1' |
| target2 = 'test_target_2' |
| db_set = CppCompilationDatabasesMap(settings) |
| db_set[target1] = self.fixture_1(target1) |
| db_set[target2] = self.fixture_2(target2) |
| result = db_set._compdb_to_write(target1) |
| self.assertCountEqual(result._db, [*db_set[target1]]) |
| |
| def test_cascade_enabled(self): |
| settings = self.make_ide_settings( |
| cascade_targets=True, |
| targets_include=['test_target_1', 'test_target_2'], |
| ) |
| target1 = 'test_target_1' |
| target2 = 'test_target_2' |
| db_set = CppCompilationDatabasesMap(settings) |
| db_set[target1] = self.fixture_1(target1) |
| db_set[target2] = self.fixture_2(target2) |
| result = db_set._compdb_to_write(target1) |
| self.assertCountEqual(result._db, [*db_set[target1], *db_set[target2]]) |
| |
| |
| class TestCppIdeFeaturesState(PwIdeTestCase): |
| """Test CppIdeFeaturesState""" |
| |
| def test_targets_all(self): |
| all_targets = { |
| "a": CppIdeFeaturesTarget("a", Path("/dev/null"), 1), |
| "b": CppIdeFeaturesTarget("b", Path("/dev/null"), 1), |
| "c": CppIdeFeaturesTarget("c", Path("/dev/null"), 1), |
| } |
| |
| settings = self.make_ide_settings() |
| state = CppIdeFeaturesState(settings) |
| state.targets = all_targets |
| self.assertListEqual(list(state.targets.keys()), ["a", "b", "c"]) |
| |
| def test_targets_exclude(self): |
| all_targets = { |
| "a": CppIdeFeaturesTarget("a", Path("/dev/null"), 1), |
| "b": CppIdeFeaturesTarget("b", Path("/dev/null"), 1), |
| "c": CppIdeFeaturesTarget("c", Path("/dev/null"), 1), |
| } |
| |
| settings = self.make_ide_settings(targets_exclude=["a"]) |
| state = CppIdeFeaturesState(settings) |
| state.targets = all_targets |
| self.assertListEqual(list(state.targets.keys()), ["b", "c"]) |
| |
| def test_targets_include(self): |
| all_targets = { |
| "a": CppIdeFeaturesTarget("a", Path("/dev/null"), 1), |
| "b": CppIdeFeaturesTarget("b", Path("/dev/null"), 1), |
| "c": CppIdeFeaturesTarget("c", Path("/dev/null"), 1), |
| } |
| |
| settings = self.make_ide_settings(targets_include=["a"]) |
| state = CppIdeFeaturesState(settings) |
| state.targets = all_targets |
| self.assertListEqual(list(state.targets.keys()), ["a"]) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |