From 1dc0ec73b9940e9a7374a5cf6ed1c3b9de46b5d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bojan=20Ro=C5=A1ko?= <156314064+broskoTT@users.noreply.github.com> Date: Wed, 6 Nov 2024 13:36:31 +0100 Subject: [PATCH] spdx headers (#231) Related to #47 Adding pre-commit check for SPDX headers. Deprecates #185 ### API Changes No API changes introduced --- .check-copyright-config.yaml | 44 +++++++++++++++++++ .github/workflows/on-pr.yml | 19 +------- .github/workflows/on-push.yml | 24 ++-------- .github/workflows/pre-commit.yml | 26 +++++++++++ .pre-commit-config.yaml | 7 ++- common/backtrace.hpp | 7 ++- common/gtest_initializer.hpp | 2 +- common/logger.hpp | 2 +- .../blackhole_coordinate_manager.cpp | 7 ++- .../blackhole/blackhole_coordinate_manager.h | 2 +- device/coordinate_manager.cpp | 7 ++- device/coordinate_manager.h | 2 +- device/driver_atomics.h | 2 +- .../grayskull/grayskull_coordinate_manager.h | 2 +- .../deprecated/tt_emulation_device.cpp | 5 +++ .../deprecated/tt_emulation_stub.cpp | 5 +++ .../deprecated/tt_versim_device.cpp | 2 +- device/tt_io.hpp | 2 +- device/tt_xy_pair.h | 2 +- .../wormhole/wormhole_coordinate_manager.cpp | 7 ++- src/firmware/riscv/wormhole/eth_interface.h | 2 +- tests/api/test_cluster_descriptor.cpp | 2 +- tests/api/test_soc_descriptor_bh.cpp | 7 ++- tests/api/test_soc_descriptor_gs.cpp | 5 +++ tests/api/test_soc_descriptor_wh.cpp | 5 +++ tests/blackhole/test_bh_common.h | 2 +- tests/emulation/test_emulation_device.cpp | 5 +++ tests/microbenchmark/test_rw_tensix.cpp | 5 +++ tests/pcie/test_pcie_device.cpp | 7 ++- tests/test_utils/device_test_utils.hpp | 5 +++ tests/test_utils/soc_desc_test_utils.hpp | 5 +++ tests/test_utils/stimulus_generators.hpp | 5 +++ tests/wormhole/test_wh_common.h | 7 ++- 33 files changed, 181 insertions(+), 57 deletions(-) create mode 100644 .check-copyright-config.yaml create mode 100644 .github/workflows/pre-commit.yml diff --git a/.check-copyright-config.yaml b/.check-copyright-config.yaml new file mode 100644 index 00000000..e5f98f35 --- /dev/null +++ b/.check-copyright-config.yaml @@ -0,0 +1,44 @@ +DEFAULT: + perform_check: yes # should the check be performed? + # Sections setting this to 'no' don't need to include any other options as they are ignored + # When a file is using a section with the option set to 'no', no checks are performed. + + # what licenses (or license expressions) are allowed for files in this section + # when setting this option in a section, you need to list all the allowed licenses + allowed_licenses: + - Apache-2.0 + license_for_new_files: Apache-2.0 # license to be used when inserting a new copyright notice + new_notice_c: | # notice for new C, CPP, H, HPP and LD files + /* + * SPDX-FileCopyrightText: (c) {years} Tenstorrent Inc. + * + * SPDX-License-Identifier: {license} + */ + new_notice_python: | # notice for new python files + # SPDX-FileCopyrightText: {years} Tenstorrent Inc. + # SPDX-License-Identifier: {license} + + # comment lines matching: + # SPDX-FileCopyrightText: year[-year] Espressif Systems + # or + # SPDX-FileContributor: year[-year] Espressif Systems + # are replaced with this template prefixed with the correct comment notation (# or // or *) and SPDX- notation + espressif_copyright: '{years} Tenstorrent Inc.' + +# You can create your own rules for files or group of files +# examples_and_unit_tests: +# include: +# - 'examples/' +# - 'components/**/test/**' +# - 'components/**/test_apps/**' +# - 'tools/test_apps/**' +# allowed_licenses: +# - Apache-2.0 +# - Unlicense +# - CC0-1.0 +# license_for_new_files: Unlicense OR CC0-1.0 + +# ignore: # You can also select ignoring files here +# perform_check: no # Don't check files from that block +# include: +# - example/file/path \ No newline at end of file diff --git a/.github/workflows/on-pr.yml b/.github/workflows/on-pr.yml index 41d6c954..158026dd 100644 --- a/.github/workflows/on-pr.yml +++ b/.github/workflows/on-pr.yml @@ -14,20 +14,5 @@ jobs: timeout: 15 pre-commit: - name: Run Pre-commit Hooks and Propose Fixes - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 # Fetch all history so 'origin/main' is available - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: 3.11 - - - name: Run Pre-commit and Fix Issues - uses: pre-commit/action@v3.0.1 - with: - extra_args: "--from-ref origin/main --to-ref HEAD" + secrets: inherit + uses: ./.github/workflows/pre-commit.yml diff --git a/.github/workflows/on-push.yml b/.github/workflows/on-push.yml index 45f4c1a2..673be510 100644 --- a/.github/workflows/on-push.yml +++ b/.github/workflows/on-push.yml @@ -12,6 +12,10 @@ jobs: with: timeout: 15 + pre-commit: + secrets: inherit + uses: ./.github/workflows/pre-commit.yml + build-tests: secrets: inherit strategy: @@ -48,23 +52,3 @@ jobs: arch: ${{ matrix.test-group.arch }} card: ${{ matrix.test-group.card }} timeout: ${{ matrix.test-group.timeout }} - - pre-commit: - name: Run Pre-commit Hooks and Propose Fixes - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 # Fetch all history so 'origin/main' is available - ref: ${{ github.head_ref }} - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: 3.11 - - - name: Run Pre-commit and Fix Issues - uses: pre-commit/action@v3.0.1 - with: - extra_args: "--from-ref origin/main --to-ref HEAD" diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml new file mode 100644 index 00000000..a4ecb678 --- /dev/null +++ b/.github/workflows/pre-commit.yml @@ -0,0 +1,26 @@ +# Run Pre-commit Hooks +name: Run Pre-commit Hooks + +on: + workflow_call: + workflow_dispatch: + +jobs: + pre-commit: + name: Run Pre-commit Hooks + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 # Fetch all history so 'origin/main' is available + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: 3.11 + + - name: Run Pre-commit and Fix Issues + uses: pre-commit/action@v3.0.1 + with: + extra_args: "--from-ref origin/main --to-ref HEAD" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 78ca6cd2..f7993306 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -11,4 +11,9 @@ repos: rev: v1.35.1 hooks: - id: yamllint - exclude: ^(?!\.github/).* # Only include files in .github/ \ No newline at end of file + exclude: ^(?!\.github/).* # Only include files in .github/ +- repo: https://github.com/espressif/check-copyright/ + rev: v1.0.3 + hooks: + - id: check-copyright + args: ['--config', '.check-copyright-config.yaml', "--ignore", ""] diff --git a/common/backtrace.hpp b/common/backtrace.hpp index ddb0a71a..b2089f11 100644 --- a/common/backtrace.hpp +++ b/common/backtrace.hpp @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #pragma once #include @@ -81,4 +86,4 @@ inline void register_segfault_handler() { exit(EXIT_FAILURE); } } -} // namespace tt::assert \ No newline at end of file +} // namespace tt::assert diff --git a/common/gtest_initializer.hpp b/common/gtest_initializer.hpp index da9ac41c..72aacc2a 100644 --- a/common/gtest_initializer.hpp +++ b/common/gtest_initializer.hpp @@ -79,4 +79,4 @@ void initialize_gtest(int argc, char** argv) { } else { setenv("LOGGER_LEVEL", "Debug", overwrite_env); } -} \ No newline at end of file +} diff --git a/common/logger.hpp b/common/logger.hpp index 1ae04d6e..9529d162 100644 --- a/common/logger.hpp +++ b/common/logger.hpp @@ -263,4 +263,4 @@ static void log_trace_(LogTypeDevice type, std::string const& src_info, char con #define log_trace(...) ((void)0) #define log_debug(...) ((void)0) #define log_profile(...) ((void)0) -#endif \ No newline at end of file +#endif diff --git a/device/blackhole/blackhole_coordinate_manager.cpp b/device/blackhole/blackhole_coordinate_manager.cpp index cbe3e9a5..32775ece 100644 --- a/device/blackhole/blackhole_coordinate_manager.cpp +++ b/device/blackhole/blackhole_coordinate_manager.cpp @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "blackhole_coordinate_manager.h" std::set BlackholeCoordinateManager::get_x_coordinates_to_harvest(std::size_t harvesting_mask) { @@ -21,4 +26,4 @@ tt_translated_coords BlackholeCoordinateManager::to_translated_coords(tt_logical tt_logical_coords BlackholeCoordinateManager::to_logical_coords(tt_translated_coords translated_coords) { tt_virtual_coords virtual_coords = tt_virtual_coords(translated_coords.x, translated_coords.y); return CoordinateManager::to_logical_coords(virtual_coords); -} \ No newline at end of file +} diff --git a/device/blackhole/blackhole_coordinate_manager.h b/device/blackhole/blackhole_coordinate_manager.h index 76f1ebc6..6eef92eb 100644 --- a/device/blackhole/blackhole_coordinate_manager.h +++ b/device/blackhole/blackhole_coordinate_manager.h @@ -20,4 +20,4 @@ class BlackholeCoordinateManager : public CoordinateManager { protected: std::set get_x_coordinates_to_harvest(std::size_t harvesting_mask) override; -}; \ No newline at end of file +}; diff --git a/device/coordinate_manager.cpp b/device/coordinate_manager.cpp index 438e002f..32406693 100644 --- a/device/coordinate_manager.cpp +++ b/device/coordinate_manager.cpp @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "device/coordinate_manager.h" #include #include "coordinate_manager.h" @@ -184,4 +189,4 @@ std::unique_ptr CoordinateManager::get_coordinate_manager( } throw std::runtime_error("Invalid architecture for creating coordinate manager"); -} \ No newline at end of file +} diff --git a/device/coordinate_manager.h b/device/coordinate_manager.h index a71764df..a4786b66 100644 --- a/device/coordinate_manager.h +++ b/device/coordinate_manager.h @@ -73,4 +73,4 @@ class CoordinateManager { const tt_xy_pair worker_grid_size; const std::vector& workers; const std::size_t harvesting_mask; -}; \ No newline at end of file +}; diff --git a/device/driver_atomics.h b/device/driver_atomics.h index cbf4f6c7..ec213438 100644 --- a/device/driver_atomics.h +++ b/device/driver_atomics.h @@ -62,4 +62,4 @@ static inline __attribute__((always_inline)) void mfence() { #error "Unsupported architecture" #endif -} // namespace tt_driver_atomics \ No newline at end of file +} // namespace tt_driver_atomics diff --git a/device/grayskull/grayskull_coordinate_manager.h b/device/grayskull/grayskull_coordinate_manager.h index f7f6720c..ac6ee60d 100644 --- a/device/grayskull/grayskull_coordinate_manager.h +++ b/device/grayskull/grayskull_coordinate_manager.h @@ -13,4 +13,4 @@ class GrayskullCoordinateManager : public CoordinateManager { public: GrayskullCoordinateManager(const tt_xy_pair& worker_grid_size, const std::vector& workers, std::size_t harvesting_mask) : CoordinateManager(worker_grid_size, workers, harvesting_mask) {} -}; \ No newline at end of file +}; diff --git a/device/simulation/deprecated/tt_emulation_device.cpp b/device/simulation/deprecated/tt_emulation_device.cpp index 3e64c15e..4705864d 100644 --- a/device/simulation/deprecated/tt_emulation_device.cpp +++ b/device/simulation/deprecated/tt_emulation_device.cpp @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #include #include diff --git a/device/simulation/deprecated/tt_emulation_stub.cpp b/device/simulation/deprecated/tt_emulation_stub.cpp index 33fc3c90..24143fcf 100644 --- a/device/simulation/deprecated/tt_emulation_stub.cpp +++ b/device/simulation/deprecated/tt_emulation_stub.cpp @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #include #include diff --git a/device/simulation/deprecated/tt_versim_device.cpp b/device/simulation/deprecated/tt_versim_device.cpp index e7ac7506..d670f6a7 100644 --- a/device/simulation/deprecated/tt_versim_device.cpp +++ b/device/simulation/deprecated/tt_versim_device.cpp @@ -320,4 +320,4 @@ std::uint32_t tt_VersimDevice::get_num_host_channels(std::uint32_t device_id) { std::uint32_t tt_VersimDevice::get_host_channel_size(std::uint32_t device_id, std::uint32_t channel) { // Host buffers not allocated for Versim Devices return 0; -} \ No newline at end of file +} diff --git a/device/tt_io.hpp b/device/tt_io.hpp index 5daa7262..28433691 100644 --- a/device/tt_io.hpp +++ b/device/tt_io.hpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: (c) 2024 Tenstorrent Inc. +// SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. // // SPDX-License-Identifier: Apache-2.0 diff --git a/device/tt_xy_pair.h b/device/tt_xy_pair.h index 052b6130..fde3b457 100644 --- a/device/tt_xy_pair.h +++ b/device/tt_xy_pair.h @@ -55,4 +55,4 @@ struct tt_chip_translated_coords : public tt_cxy_pair { tt_chip_translated_coords() : tt_cxy_pair() {} tt_chip_translated_coords(std::size_t ichip, xy_pair pair) : tt_cxy_pair(ichip, pair) {} tt_chip_translated_coords(std::size_t ichip, std::size_t x, std::size_t y) : tt_cxy_pair(ichip, x, y) {} -}; \ No newline at end of file +}; diff --git a/device/wormhole/wormhole_coordinate_manager.cpp b/device/wormhole/wormhole_coordinate_manager.cpp index eccc0a70..ddb088de 100644 --- a/device/wormhole/wormhole_coordinate_manager.cpp +++ b/device/wormhole/wormhole_coordinate_manager.cpp @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "wormhole_coordinate_manager.h" std::set WormholeCoordinateManager::get_y_coordinates_to_harvest(std::size_t harvesting_mask) { @@ -19,4 +24,4 @@ tt_translated_coords WormholeCoordinateManager::to_translated_coords(tt_logical_ tt_logical_coords WormholeCoordinateManager::to_logical_coords(tt_translated_coords translated_coords) { return tt_logical_coords(translated_coords.x - translated_coordinate_start_x, translated_coords.y - translated_coordinate_start_y); -} \ No newline at end of file +} diff --git a/src/firmware/riscv/wormhole/eth_interface.h b/src/firmware/riscv/wormhole/eth_interface.h index 73ffb3bb..a43da1fd 100644 --- a/src/firmware/riscv/wormhole/eth_interface.h +++ b/src/firmware/riscv/wormhole/eth_interface.h @@ -98,4 +98,4 @@ static_assert(sizeof(cmd_q_t) == CMD_Q_SIZE_BYTES); constexpr uint32_t REQUEST_CMD_QUEUE_BASE = ETH_ROUTING_STRUCT_ADDR + 128; constexpr uint32_t REQUEST_ROUTING_CMD_QUEUE_BASE = REQUEST_CMD_QUEUE_BASE + sizeof(remote_update_ptr_t) + sizeof(remote_update_ptr_t) + sizeof(cmd_counters_t); constexpr uint32_t RESPONSE_CMD_QUEUE_BASE = REQUEST_CMD_QUEUE_BASE + 2*CMD_Q_SIZE_BYTES; -constexpr uint32_t RESPONSE_ROUTING_CMD_QUEUE_BASE = RESPONSE_CMD_QUEUE_BASE + sizeof(remote_update_ptr_t) + sizeof(remote_update_ptr_t) + sizeof(cmd_counters_t); \ No newline at end of file +constexpr uint32_t RESPONSE_ROUTING_CMD_QUEUE_BASE = RESPONSE_CMD_QUEUE_BASE + sizeof(remote_update_ptr_t) + sizeof(remote_update_ptr_t) + sizeof(cmd_counters_t); diff --git a/tests/api/test_cluster_descriptor.cpp b/tests/api/test_cluster_descriptor.cpp index 1441a991..8e3791c6 100644 --- a/tests/api/test_cluster_descriptor.cpp +++ b/tests/api/test_cluster_descriptor.cpp @@ -167,4 +167,4 @@ TEST(ApiClusterDescriptorTest, SeparateClusters) { chip_id_t closest_mmio_chip = cluster_desc->get_closest_mmio_capable_chip(chip); EXPECT_TRUE(chip_clusters.are_same_set(chip, closest_mmio_chip)); } -} \ No newline at end of file +} diff --git a/tests/api/test_soc_descriptor_bh.cpp b/tests/api/test_soc_descriptor_bh.cpp index 29a3866c..8032d02c 100644 --- a/tests/api/test_soc_descriptor_bh.cpp +++ b/tests/api/test_soc_descriptor_bh.cpp @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "gtest/gtest.h" #include "device/tt_soc_descriptor.h" @@ -205,4 +210,4 @@ TEST(SocDescriptor, SocDescriptorBHVirtualEqualTranslated) { } } } -} \ No newline at end of file +} diff --git a/tests/api/test_soc_descriptor_gs.cpp b/tests/api/test_soc_descriptor_gs.cpp index d00bf3d0..1c72449b 100644 --- a/tests/api/test_soc_descriptor_gs.cpp +++ b/tests/api/test_soc_descriptor_gs.cpp @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "gtest/gtest.h" #include "device/tt_soc_descriptor.h" diff --git a/tests/api/test_soc_descriptor_wh.cpp b/tests/api/test_soc_descriptor_wh.cpp index 6cc3d790..37923210 100644 --- a/tests/api/test_soc_descriptor_wh.cpp +++ b/tests/api/test_soc_descriptor_wh.cpp @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "gtest/gtest.h" #include "device/tt_soc_descriptor.h" diff --git a/tests/blackhole/test_bh_common.h b/tests/blackhole/test_bh_common.h index 3002eb93..5f36fe72 100644 --- a/tests/blackhole/test_bh_common.h +++ b/tests/blackhole/test_bh_common.h @@ -87,4 +87,4 @@ class BlackholeTestFixture : public ::testing::Test { }; -} // namespace tt::umd::test::utils \ No newline at end of file +} // namespace tt::umd::test::utils diff --git a/tests/emulation/test_emulation_device.cpp b/tests/emulation/test_emulation_device.cpp index c78af81b..257ef155 100644 --- a/tests/emulation/test_emulation_device.cpp +++ b/tests/emulation/test_emulation_device.cpp @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "gtest/gtest.h" #include "device/tt_soc_descriptor.h" #include "device/tt_device.h" diff --git a/tests/microbenchmark/test_rw_tensix.cpp b/tests/microbenchmark/test_rw_tensix.cpp index daa05506..274e17a7 100644 --- a/tests/microbenchmark/test_rw_tensix.cpp +++ b/tests/microbenchmark/test_rw_tensix.cpp @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #include diff --git a/tests/pcie/test_pcie_device.cpp b/tests/pcie/test_pcie_device.cpp index a9d07790..942ad074 100644 --- a/tests/pcie/test_pcie_device.cpp +++ b/tests/pcie/test_pcie_device.cpp @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #include #include "fmt/xchar.h" @@ -33,4 +38,4 @@ TEST(PcieDeviceTest, Numa) { } else { SUCCEED() << "No PCIe devices were enumerated"; } -} \ No newline at end of file +} diff --git a/tests/test_utils/device_test_utils.hpp b/tests/test_utils/device_test_utils.hpp index 1c5cf528..d49f13f6 100644 --- a/tests/test_utils/device_test_utils.hpp +++ b/tests/test_utils/device_test_utils.hpp @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #pragma once #include diff --git a/tests/test_utils/soc_desc_test_utils.hpp b/tests/test_utils/soc_desc_test_utils.hpp index 954868de..30fb90d2 100644 --- a/tests/test_utils/soc_desc_test_utils.hpp +++ b/tests/test_utils/soc_desc_test_utils.hpp @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #pragma once #include diff --git a/tests/test_utils/stimulus_generators.hpp b/tests/test_utils/stimulus_generators.hpp index 6d35afb8..a208f1da 100644 --- a/tests/test_utils/stimulus_generators.hpp +++ b/tests/test_utils/stimulus_generators.hpp @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #pragma once #include "tt_xy_pair.h" #include "tt_cluster_descriptor.h" diff --git a/tests/wormhole/test_wh_common.h b/tests/wormhole/test_wh_common.h index 288d0ff6..b3ff4e83 100644 --- a/tests/wormhole/test_wh_common.h +++ b/tests/wormhole/test_wh_common.h @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: (c) 2023 Tenstorrent Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ #pragma once #include "tt_cluster_descriptor.h" @@ -85,4 +90,4 @@ class WormholeTestFixture : public ::testing::Test { }; -} // namespace tt::umd::test::utils \ No newline at end of file +} // namespace tt::umd::test::utils