From dbe63bcdcd3813df21d669051aea23b3e3c931df Mon Sep 17 00:00:00 2001 From: exploreriii <133720349+exploreriii@users.noreply.github.com> Date: Sat, 4 Apr 2026 17:18:31 +0100 Subject: [PATCH 1/6] ci: expand test naming check globally, include tck and fuzz, and resolve misnamed tests Signed-off-by: exploreriii <133720349+exploreriii@users.noreply.github.com> --- .github/scripts/pr-check-test-files.js | 72 ++++++++++++++ .github/scripts/pr-check-test-files.sh | 93 ------------------- .../workflows/pr-check-primary-test-files.yml | 23 ++--- ...contract_function_parameters_fuzz_test.py} | 0 ...tity_id_fuzz.py => entity_id_fuzz_test.py} | 0 .../{test_hbar_fuzz.py => hbar_fuzz_test.py} | 0 .../{test_keys_fuzz.py => keys_fuzz_test.py} | 0 ...py => transaction_from_bytes_fuzz_test.py} | 0 ...unt_balance.py => account_balance_test.py} | 0 ...{test_key_format.py => key_format_test.py} | 0 ...receipt.py => transaction_receipt_test.py} | 0 tests/unit/transaction_response_2_test.py | 89 ++++++++++++++++++ 12 files changed, 168 insertions(+), 109 deletions(-) create mode 100755 .github/scripts/pr-check-test-files.js delete mode 100755 .github/scripts/pr-check-test-files.sh rename tests/fuzz/{test_contract_function_parameters_fuzz.py => contract_function_parameters_fuzz_test.py} (100%) rename tests/fuzz/{test_entity_id_fuzz.py => entity_id_fuzz_test.py} (100%) rename tests/fuzz/{test_hbar_fuzz.py => hbar_fuzz_test.py} (100%) rename tests/fuzz/{test_keys_fuzz.py => keys_fuzz_test.py} (100%) rename tests/fuzz/{test_transaction_from_bytes_fuzz.py => transaction_from_bytes_fuzz_test.py} (100%) rename tests/unit/{test_account_balance.py => account_balance_test.py} (100%) rename tests/unit/{test_key_format.py => key_format_test.py} (100%) rename tests/unit/{test_transaction_receipt.py => transaction_receipt_test.py} (100%) create mode 100644 tests/unit/transaction_response_2_test.py diff --git a/.github/scripts/pr-check-test-files.js b/.github/scripts/pr-check-test-files.js new file mode 100755 index 000000000..8dc590b08 --- /dev/null +++ b/.github/scripts/pr-check-test-files.js @@ -0,0 +1,72 @@ +#!/usr/bin/env node + +const { execSync } = require("child_process"); +const fs = require("fs"); + +// These are the directories we want to check for correct naming +const TEST_DIRS = ["tests/unit", "tests/integration", "tests/tck", "tests/fuzz"]; + +// These are the excluded paths and file names inside the TEST_DIRS +const IGNORED = ["tests/fuzz/support"]; +const EXCEPTIONS = ["conftest.py", "__init__.py", "init.py", "mock_server.py", "utils.py"]; + +// Collect naming errors to report at the end +const name_errors = []; + +// Use "git ls-files" to get all tracked files in the repository +const output = execSync("git ls-files", { encoding: "utf-8" }); +// Split output into lines and filter out empty lines for easy manipulation +// e.g. output = "tests/unit/my_test.py\ntests/integration/other_test.py" +const files = output.split("\n").filter(Boolean); + +for (const file of files) { + // --- PATH FILTERING --- + // Skip files that are not in any of the specified test directories + if (!TEST_DIRS.some(dir => file.startsWith(dir))) continue; + + // Skip ignored paths (e.g. helpers) + if (IGNORED.some(path => file.startsWith(path))) continue; + + // Now we have file paths that we need to check for correct naming + // e.g. file = "tests/unit/my_test.py" + + // --- Correct PATH now apply NAMING checks --- + + // Extract the file name from the path + // e.g. from file = "tests/unit/my_test.py" get name = "my_test.py" + const name = file.split("/").pop(); + + // Skip allowed special files + if (EXCEPTIONS.includes(name)) continue; + + // Enforce naming rule on files + if (!name.endsWith("_test.py")) { + console.error(`Name invalid test file: ${file}`); + console.error(`::error file=${file}::Must end with '_test.py'`); + name_errors.push(file); + } +} + +// Generate a summary of the results for the GitHub Actions UI +const summaryPath = process.env.GITHUB_STEP_SUMMARY; + +if (summaryPath) { + let summary = `## ๐Ÿงช Test File Naming Check\n\n`; + + if (name_errors.length === 0) { + summary += `โœ… All test files are correctly named\n`; + } else { + // Counts and lists all the incorrectly named test files + summary += `โŒ Found ${name_errors.length} incorrectly named test files:\n\n`; + name_errors.forEach(f => { + summary += `- \`${f}\`\n`; + }); + } + + fs.appendFileSync(summaryPath, summary); +} + +// Fail job if needed +if (name_errors.length > 0) { + process.exit(1); +} \ No newline at end of file diff --git a/.github/scripts/pr-check-test-files.sh b/.github/scripts/pr-check-test-files.sh deleted file mode 100755 index e4e3a00db..000000000 --- a/.github/scripts/pr-check-test-files.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# ====================================================================================================================================================== -# @file: pr-check-test-files.sh -# -# @Description A CI check written in bash that enforces the '_test.py' suffix to ensure Pytest can automatically discover -# new or renamed test files in a Pull Request. -# -# @logic: -# 1. Identifies files as (A) Added, (R) Renamed, or (C) Copied using 'git diff' to check -# relevant filename ($file1 for added files, $file2 for renamed/copied files). -# 2. Validates paths against allowed test directories (unit/integration). -# 3. Excludes specific utility (ex., conftest.py, utils.py) and non-Python files. -# 4. Parses tab-separated Git output via IFS=$'\t' to ensure robust filename handling. -# 5. Routes files using case statement based on git status -# -# @types: -# - String: Used for file paths and git status codes. -# - Array: Used for 'TEST_DIRS', 'EXCEPTION_NAMES', and accumulating errors. -# -# @Parameters: -# - None: This script does not accept CLI arguments. It derives the input from the current Git state compared against origin/main. -# -# @Dependencies: -# - Git: (for diff) -# - Bash: (runs the script) -# - Pytest: (naming standard) -# -# @Permissions: -# - Requires Execute permissions (chmod +x) to run. Also needs Read access to the git repository to perform the diff. -# -# @Return -# - 0: All test files follow the naming standard. -# - 1: Exits with status 1 and outputs error messages in red. -# Includes a yellow instructional block providing reason why the file failed. -# ====================================================================================================================================================== - -RED="\033[31m" -YELLOW="\033[33m" -RESET="\033[0m" - -# Base directories where test files should reside -TEST_DIRS=("tests/unit" "tests/integration") -EXCEPTION_NAMES=("conftest.py" "init.py" "__init__.py" "mock_server.py" "utils.py") -DIFF_FILES=$(git diff --name-status origin/main) -ERRORS=() - -function is_in_test_dir() { - local file="$1" - for dir in "${TEST_DIRS[@]}"; do - case "$file" in - "$dir"*) - return 0 - ;; - esac - done - return 1 -} - -function check_test_file_name() { - local filename="$1" - if is_in_test_dir "$filename"; then - if [[ $(basename "$filename") != *.py ]]; then - return 0 - fi - for exception in "${EXCEPTION_NAMES[@]}"; do - if [[ $(basename "$filename") == "$exception" ]]; then - return 0 - fi - done - if [[ $(basename "$filename") != *_test.py ]]; then - ERRORS+=("${RED}ERROR${RESET}: Test file '$filename' doesn't end with '_test.py'. ${YELLOW}It has to follow the pytest naming convention.") - return 1 - fi - fi - return 0 -} - -while IFS=$'\t' read -r status file1 file2; do - case "$status" in - A) check_test_file_name "$file1" ;; - R*) check_test_file_name "$file2" ;; - C*) check_test_file_name "$file2" ;; - esac -done <<< "$DIFF_FILES" - -if (( ${#ERRORS[@]} > 0 )); then - for err in "${ERRORS[@]}"; do - echo -e "$err" - done - exit 1 -fi diff --git a/.github/workflows/pr-check-primary-test-files.yml b/.github/workflows/pr-check-primary-test-files.yml index a78646880..ea25d0b2c 100644 --- a/.github/workflows/pr-check-primary-test-files.yml +++ b/.github/workflows/pr-check-primary-test-files.yml @@ -15,13 +15,12 @@ permissions: contents: read concurrency: - group: pr-checks-${{ github.workflow }}-${{ github.ref || github.run_id }} + group: pr-checks-${{ github.workflow }}-${{ github.event.pull_request.number }} cancel-in-progress: true jobs: check-test-files: - # No fork check needed: push-only workflow; fork pushes have different repository_owner - runs-on: ${{ (github.repository_owner != 'hiero-ledger') && 'ubuntu-latest' || 'hl-sdk-py-lin-md' }} + runs-on: ${{ (github.event.pull_request.head.repo.full_name == github.repository && github.repository_owner == 'hiero-ledger') && 'hl-sdk-py-lin-md' || 'ubuntu-latest' }} steps: - name: Harden the runner (Audit all outbound calls) @@ -29,18 +28,10 @@ jobs: with: egress-policy: audit - - name: Checkout repository + - name: Checkout repository (shallow) uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 + with: + fetch-depth: 1 # Only fetch the latest commit - - name: Set up Hiero SDK Upstream - run: | - git remote set-url origin https://github.com/hiero-ledger/hiero-sdk-python.git - - - name: Fetch main branch - run: | - git fetch origin main - - - name: Check added test file names - run: | - chmod +x .github/scripts/pr-check-test-files.sh - .github/scripts/pr-check-test-files.sh + - name: Run test file naming check + run: node .github/scripts/pr-check-test-files.js diff --git a/tests/fuzz/test_contract_function_parameters_fuzz.py b/tests/fuzz/contract_function_parameters_fuzz_test.py similarity index 100% rename from tests/fuzz/test_contract_function_parameters_fuzz.py rename to tests/fuzz/contract_function_parameters_fuzz_test.py diff --git a/tests/fuzz/test_entity_id_fuzz.py b/tests/fuzz/entity_id_fuzz_test.py similarity index 100% rename from tests/fuzz/test_entity_id_fuzz.py rename to tests/fuzz/entity_id_fuzz_test.py diff --git a/tests/fuzz/test_hbar_fuzz.py b/tests/fuzz/hbar_fuzz_test.py similarity index 100% rename from tests/fuzz/test_hbar_fuzz.py rename to tests/fuzz/hbar_fuzz_test.py diff --git a/tests/fuzz/test_keys_fuzz.py b/tests/fuzz/keys_fuzz_test.py similarity index 100% rename from tests/fuzz/test_keys_fuzz.py rename to tests/fuzz/keys_fuzz_test.py diff --git a/tests/fuzz/test_transaction_from_bytes_fuzz.py b/tests/fuzz/transaction_from_bytes_fuzz_test.py similarity index 100% rename from tests/fuzz/test_transaction_from_bytes_fuzz.py rename to tests/fuzz/transaction_from_bytes_fuzz_test.py diff --git a/tests/unit/test_account_balance.py b/tests/unit/account_balance_test.py similarity index 100% rename from tests/unit/test_account_balance.py rename to tests/unit/account_balance_test.py diff --git a/tests/unit/test_key_format.py b/tests/unit/key_format_test.py similarity index 100% rename from tests/unit/test_key_format.py rename to tests/unit/key_format_test.py diff --git a/tests/unit/test_transaction_receipt.py b/tests/unit/transaction_receipt_test.py similarity index 100% rename from tests/unit/test_transaction_receipt.py rename to tests/unit/transaction_receipt_test.py diff --git a/tests/unit/transaction_response_2_test.py b/tests/unit/transaction_response_2_test.py new file mode 100644 index 000000000..af7afbc81 --- /dev/null +++ b/tests/unit/transaction_response_2_test.py @@ -0,0 +1,89 @@ +""" +Tests for TransactionResponse behavior. +""" + +import pytest + +from hiero_sdk_python.account.account_id import AccountId +from hiero_sdk_python.response_code import ResponseCode +from hiero_sdk_python.transaction.transaction_response import TransactionResponse +from hiero_sdk_python.hapi.services import ( + response_header_pb2, + response_pb2, + transaction_get_receipt_pb2, + transaction_receipt_pb2, +) + +from tests.unit.mock_server import mock_hedera_servers + +pytestmark = pytest.mark.unit + + +def test_transaction_response_fields(transaction_id): + """asserting response is correctly populated""" + resp = TransactionResponse() + + # Assert public attributes exist (PRIORITY 1: protect against breaking changes) + assert hasattr(resp, 'transaction_id'), "Missing public attribute: transaction_id" + assert hasattr(resp, 'node_id'), "Missing public attribute: node_id" + assert hasattr(resp, 'hash'), "Missing public attribute: hash" + assert hasattr(resp, 'validate_status'), "Missing public attribute: validate_status" + assert hasattr(resp, 'transaction'), "Missing public attribute: transaction" + + # Assert default values + assert resp.hash == bytes(), "Default hash should be empty bytes" + assert resp.validate_status is False, "Default validate_status should be False" + assert resp.transaction is None, "Default transaction should be None" + + resp.transaction_id = transaction_id + resp.node_id = AccountId(0, 0, 3) + + assert resp.transaction_id == transaction_id + assert resp.node_id == AccountId(0, 0, 3) + + +def test_transaction_response_get_receipt_is_pinned_to_submitting_node(transaction_id): + """ + mock_hedera_servers assigns: + - server[0] -> node 0.0.3 + - server[1] -> node 0.0.4 + + We make node 0.0.3 return a NON-retryable precheck error, and node 0.0.4 return SUCCESS. + If TransactionResponse.get_receipt() does not pin, it will likely hit 0.0.3 and fail. + If it pins to self.node_id (0.0.4), it will succeed. + """ + bad_node_response = response_pb2.Response( + transactionGetReceipt=transaction_get_receipt_pb2.TransactionGetReceiptResponse( + header=response_header_pb2.ResponseHeader( + nodeTransactionPrecheckCode=ResponseCode.INVALID_TRANSACTION + ), + receipt=transaction_receipt_pb2.TransactionReceipt( + status=ResponseCode.UNKNOWN + ), + ) + ) + + good_node_response = response_pb2.Response( + transactionGetReceipt=transaction_get_receipt_pb2.TransactionGetReceiptResponse( + header=response_header_pb2.ResponseHeader( + nodeTransactionPrecheckCode=ResponseCode.OK + ), + receipt=transaction_receipt_pb2.TransactionReceipt( + status=ResponseCode.SUCCESS + ), + ) + ) + + response_sequences = [ + [bad_node_response], # node 0.0.3 + [good_node_response], # node 0.0.4 + ] + + with mock_hedera_servers(response_sequences) as client: + resp = TransactionResponse() + resp.transaction_id = transaction_id + resp.node_id = AccountId(0, 0, 4) # submitting node (server[1]) + + receipt = resp.get_receipt(client) + + assert receipt.status == ResponseCode.SUCCESS From 30f0b042ae40a9656fc548aa4c6b10b6a4f689e1 Mon Sep 17 00:00:00 2001 From: exploreriii <133720349+exploreriii@users.noreply.github.com> Date: Sat, 4 Apr 2026 17:35:04 +0100 Subject: [PATCH 2/6] fix: copilot fixes Signed-off-by: exploreriii <133720349+exploreriii@users.noreply.github.com> --- .github/scripts/pr-check-test-files.js | 14 +++++++------- .github/workflows/pr-check-primary-test-files.yml | 2 -- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/.github/scripts/pr-check-test-files.js b/.github/scripts/pr-check-test-files.js index 8dc590b08..fc30a1bd2 100755 --- a/.github/scripts/pr-check-test-files.js +++ b/.github/scripts/pr-check-test-files.js @@ -11,7 +11,7 @@ const IGNORED = ["tests/fuzz/support"]; const EXCEPTIONS = ["conftest.py", "__init__.py", "init.py", "mock_server.py", "utils.py"]; // Collect naming errors to report at the end -const name_errors = []; +const nameErrors = []; // Use "git ls-files" to get all tracked files in the repository const output = execSync("git ls-files", { encoding: "utf-8" }); @@ -41,9 +41,9 @@ for (const file of files) { // Enforce naming rule on files if (!name.endsWith("_test.py")) { - console.error(`Name invalid test file: ${file}`); + console.error(`Invalid test file name: ${file}`); console.error(`::error file=${file}::Must end with '_test.py'`); - name_errors.push(file); + nameErrors.push(file); } } @@ -53,12 +53,12 @@ const summaryPath = process.env.GITHUB_STEP_SUMMARY; if (summaryPath) { let summary = `## ๐Ÿงช Test File Naming Check\n\n`; - if (name_errors.length === 0) { + if (nameErrors.length === 0) { summary += `โœ… All test files are correctly named\n`; } else { // Counts and lists all the incorrectly named test files - summary += `โŒ Found ${name_errors.length} incorrectly named test files:\n\n`; - name_errors.forEach(f => { + summary += `โŒ Found ${nameErrors.length} incorrectly named test files:\n\n`; + nameErrors.forEach(f => { summary += `- \`${f}\`\n`; }); } @@ -67,6 +67,6 @@ if (summaryPath) { } // Fail job if needed -if (name_errors.length > 0) { +if (nameErrors.length > 0) { process.exit(1); } \ No newline at end of file diff --git a/.github/workflows/pr-check-primary-test-files.yml b/.github/workflows/pr-check-primary-test-files.yml index ea25d0b2c..450a7e33a 100644 --- a/.github/workflows/pr-check-primary-test-files.yml +++ b/.github/workflows/pr-check-primary-test-files.yml @@ -8,8 +8,6 @@ on: - "tests/**" pull_request: types: [opened, synchronize, review_requested, ready_for_review, reopened] - paths: - - "tests/**" permissions: contents: read From bced7cff5dea59008d4205c309a47512035cb832 Mon Sep 17 00:00:00 2001 From: exploreriii <133720349+exploreriii@users.noreply.github.com> Date: Sun, 12 Apr 2026 14:55:53 +0100 Subject: [PATCH 3/6] chore: set up node Signed-off-by: exploreriii <133720349+exploreriii@users.noreply.github.com> --- .github/workflows/pr-check-primary-test-files.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pr-check-primary-test-files.yml b/.github/workflows/pr-check-primary-test-files.yml index 450a7e33a..8bb145332 100644 --- a/.github/workflows/pr-check-primary-test-files.yml +++ b/.github/workflows/pr-check-primary-test-files.yml @@ -31,5 +31,8 @@ jobs: with: fetch-depth: 1 # Only fetch the latest commit + - name: Set up Node.js + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 + - name: Run test file naming check run: node .github/scripts/pr-check-test-files.js From f6ae6621d05de16fba7cdd2a43c6028f9ddc09dd Mon Sep 17 00:00:00 2001 From: exploreriii <133720349+exploreriii@users.noreply.github.com> Date: Mon, 13 Apr 2026 14:52:36 +0100 Subject: [PATCH 4/6] fix: rebase Signed-off-by: exploreriii <133720349+exploreriii@users.noreply.github.com> --- .../workflows/pr-check-primary-test-files.yml | 2 + tests/unit/transaction_response_2_test.py | 89 ------------------- tests/unit/transaction_response_test.py | 2 +- 3 files changed, 3 insertions(+), 90 deletions(-) delete mode 100644 tests/unit/transaction_response_2_test.py diff --git a/.github/workflows/pr-check-primary-test-files.yml b/.github/workflows/pr-check-primary-test-files.yml index 8bb145332..20e758d62 100644 --- a/.github/workflows/pr-check-primary-test-files.yml +++ b/.github/workflows/pr-check-primary-test-files.yml @@ -8,6 +8,8 @@ on: - "tests/**" pull_request: types: [opened, synchronize, review_requested, ready_for_review, reopened] + paths: + - "tests/**" permissions: contents: read diff --git a/tests/unit/transaction_response_2_test.py b/tests/unit/transaction_response_2_test.py deleted file mode 100644 index af7afbc81..000000000 --- a/tests/unit/transaction_response_2_test.py +++ /dev/null @@ -1,89 +0,0 @@ -""" -Tests for TransactionResponse behavior. -""" - -import pytest - -from hiero_sdk_python.account.account_id import AccountId -from hiero_sdk_python.response_code import ResponseCode -from hiero_sdk_python.transaction.transaction_response import TransactionResponse -from hiero_sdk_python.hapi.services import ( - response_header_pb2, - response_pb2, - transaction_get_receipt_pb2, - transaction_receipt_pb2, -) - -from tests.unit.mock_server import mock_hedera_servers - -pytestmark = pytest.mark.unit - - -def test_transaction_response_fields(transaction_id): - """asserting response is correctly populated""" - resp = TransactionResponse() - - # Assert public attributes exist (PRIORITY 1: protect against breaking changes) - assert hasattr(resp, 'transaction_id'), "Missing public attribute: transaction_id" - assert hasattr(resp, 'node_id'), "Missing public attribute: node_id" - assert hasattr(resp, 'hash'), "Missing public attribute: hash" - assert hasattr(resp, 'validate_status'), "Missing public attribute: validate_status" - assert hasattr(resp, 'transaction'), "Missing public attribute: transaction" - - # Assert default values - assert resp.hash == bytes(), "Default hash should be empty bytes" - assert resp.validate_status is False, "Default validate_status should be False" - assert resp.transaction is None, "Default transaction should be None" - - resp.transaction_id = transaction_id - resp.node_id = AccountId(0, 0, 3) - - assert resp.transaction_id == transaction_id - assert resp.node_id == AccountId(0, 0, 3) - - -def test_transaction_response_get_receipt_is_pinned_to_submitting_node(transaction_id): - """ - mock_hedera_servers assigns: - - server[0] -> node 0.0.3 - - server[1] -> node 0.0.4 - - We make node 0.0.3 return a NON-retryable precheck error, and node 0.0.4 return SUCCESS. - If TransactionResponse.get_receipt() does not pin, it will likely hit 0.0.3 and fail. - If it pins to self.node_id (0.0.4), it will succeed. - """ - bad_node_response = response_pb2.Response( - transactionGetReceipt=transaction_get_receipt_pb2.TransactionGetReceiptResponse( - header=response_header_pb2.ResponseHeader( - nodeTransactionPrecheckCode=ResponseCode.INVALID_TRANSACTION - ), - receipt=transaction_receipt_pb2.TransactionReceipt( - status=ResponseCode.UNKNOWN - ), - ) - ) - - good_node_response = response_pb2.Response( - transactionGetReceipt=transaction_get_receipt_pb2.TransactionGetReceiptResponse( - header=response_header_pb2.ResponseHeader( - nodeTransactionPrecheckCode=ResponseCode.OK - ), - receipt=transaction_receipt_pb2.TransactionReceipt( - status=ResponseCode.SUCCESS - ), - ) - ) - - response_sequences = [ - [bad_node_response], # node 0.0.3 - [good_node_response], # node 0.0.4 - ] - - with mock_hedera_servers(response_sequences) as client: - resp = TransactionResponse() - resp.transaction_id = transaction_id - resp.node_id = AccountId(0, 0, 4) # submitting node (server[1]) - - receipt = resp.get_receipt(client) - - assert receipt.status == ResponseCode.SUCCESS diff --git a/tests/unit/transaction_response_test.py b/tests/unit/transaction_response_test.py index 49858a92e..cd4b0dd20 100644 --- a/tests/unit/transaction_response_test.py +++ b/tests/unit/transaction_response_test.py @@ -250,4 +250,4 @@ def test_transaction_response_get_receipt_is_pinned_to_submitting_node( # # submitting node (server[1]) receipt = resp.get_receipt(client) - assert receipt.status == ResponseCode.SUCCESS + assert receipt.status == ResponseCode.SUCCESS \ No newline at end of file From 3aadaf56caa6c62dd6c7d5321692813100a01e0e Mon Sep 17 00:00:00 2001 From: exploreriii <133720349+exploreriii@users.noreply.github.com> Date: Tue, 14 Apr 2026 21:19:13 +0100 Subject: [PATCH 5/6] fix: new line at end of file Signed-off-by: exploreriii <133720349+exploreriii@users.noreply.github.com> --- tests/unit/transaction_response_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/transaction_response_test.py b/tests/unit/transaction_response_test.py index cd4b0dd20..49858a92e 100644 --- a/tests/unit/transaction_response_test.py +++ b/tests/unit/transaction_response_test.py @@ -250,4 +250,4 @@ def test_transaction_response_get_receipt_is_pinned_to_submitting_node( # # submitting node (server[1]) receipt = resp.get_receipt(client) - assert receipt.status == ResponseCode.SUCCESS \ No newline at end of file + assert receipt.status == ResponseCode.SUCCESS From 1063547d6b7a61deee9af10f26407819d988283f Mon Sep 17 00:00:00 2001 From: exploreriii <133720349+exploreriii@users.noreply.github.com> Date: Tue, 14 Apr 2026 21:24:41 +0100 Subject: [PATCH 6/6] chore: apply pre commit Signed-off-by: exploreriii <133720349+exploreriii@users.noreply.github.com> --- .github/scripts/pr-check-test-files.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/scripts/pr-check-test-files.js b/.github/scripts/pr-check-test-files.js index fc30a1bd2..f7fcc94dd 100755 --- a/.github/scripts/pr-check-test-files.js +++ b/.github/scripts/pr-check-test-files.js @@ -39,7 +39,7 @@ for (const file of files) { // Skip allowed special files if (EXCEPTIONS.includes(name)) continue; - // Enforce naming rule on files + // Enforce naming rule on files if (!name.endsWith("_test.py")) { console.error(`Invalid test file name: ${file}`); console.error(`::error file=${file}::Must end with '_test.py'`); @@ -69,4 +69,4 @@ if (summaryPath) { // Fail job if needed if (nameErrors.length > 0) { process.exit(1); -} \ No newline at end of file +}