From 8f7b4d3221a510cd1b4ce61c838587219d709f8f Mon Sep 17 00:00:00 2001 From: John Saigle Date: Fri, 17 Jul 2026 15:09:24 -0400 Subject: [PATCH 1/3] ci: Compile integration tests in CI --- .github/workflows/build.yml | 3 +++ Makefile | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ee4d306aa2b..974171c3448 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -348,6 +348,9 @@ jobs: - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 with: go-version: "1.25.10" + # /usr/bin/true replaces test-binary execution, so live integration tests are compiled but never run. + - name: Compile integration-tagged Go tests without running them + run: make test-integration-compile # The go-ethereum and celo-blockchain packages both implement secp256k1 using the exact same header, but that causes duplicate symbols. - name: Run golang tests with coverage run: make test-coverage diff --git a/Makefile b/Makefile index bb5d031552d..65d584ef4cd 100755 --- a/Makefile +++ b/Makefile @@ -59,6 +59,13 @@ test-coverage: @set -o pipefail && (cd node && go test -count=1 -v -timeout 5m -race -cover ./...) 2>&1 | tee coverage.txt @set -o pipefail && (cd sdk && go test -count=1 -v -timeout 5m -race -cover ./...) 2>&1 | tee -a coverage.txt +.PHONY: test-integration-compile +## Compile integration-tagged Go tests without running live integration tests +# /usr/bin/true replaces test-binary execution, while go test still compiles every selected package and test. +test-integration-compile: + @cd node && go test -tags integration -exec /usr/bin/true ./... + @cd sdk && go test -tags integration -exec /usr/bin/true ./... + .PHONY: test-fast ## Run fast tests for node and sdk, skipping tests gated by testing.Short() and fuzz smoke tests test-fast: From 1bcfc758e82aaa50f1a9563d4635b79a66e9f9a4 Mon Sep 17 00:00:00 2001 From: John Saigle Date: Fri, 17 Jul 2026 15:16:21 -0400 Subject: [PATCH 2/3] repair xrpl integration test: fix stale integration test validator call Update the live integration test to call the package-level validateTransactionResult function introduced in #4705. This preserves the same validation behavior; only the obsolete Parser receiver is removed. Drop the tagged synthetic failure and empty-result cases because equivalent tests already run in parse_test.go without build tags. The XRPL package passes both its normal tests and integration-tagged compile check. --- .../watchers/xrpl/parse_integration_test.go | 38 +------------------ 1 file changed, 1 insertion(+), 37 deletions(-) diff --git a/node/pkg/watchers/xrpl/parse_integration_test.go b/node/pkg/watchers/xrpl/parse_integration_test.go index 68f2bca6d43..27515c9b67f 100644 --- a/node/pkg/watchers/xrpl/parse_integration_test.go +++ b/node/pkg/watchers/xrpl/parse_integration_test.go @@ -47,17 +47,13 @@ func TestValidateTransactionResult_Integration(t *testing.T) { // Verify the transaction is validated require.True(t, txResp.Validated, "transaction should be validated") - // Create a parser and test validateTransactionResult - parser := NewParser("", nil, nil) - // Create a GenericTx with the transaction result from the response tx := GenericTx{ - Transaction: txResp.TxJSON, MetaTransactionResult: txResp.Meta.TransactionResult, } // Test validateTransactionResult - should succeed for a successful transaction - err = parser.validateTransactionResult(tx) + err = validateTransactionResult(tx) require.NoError(t, err, "validateTransactionResult should succeed for tesSUCCESS transaction") // Log some details about the fetched transaction @@ -68,38 +64,6 @@ func TestValidateTransactionResult_Integration(t *testing.T) { t.Logf("Validated: %t", txResp.Validated) } -// TestValidateTransactionResult_Integration_FailedTransaction tests that -// validateTransactionResult correctly rejects a failed transaction. -func TestValidateTransactionResult_Integration_FailedTransaction(t *testing.T) { - // Create a parser - parser := NewParser("", nil, nil) - - // Create a GenericTx with a non-success result - tx := GenericTx{ - MetaTransactionResult: "tecPATH_DRY", - } - - // Test validateTransactionResult - should fail for non-success transaction - err := parser.validateTransactionResult(tx) - require.Error(t, err, "validateTransactionResult should fail for non-tesSUCCESS transaction") - require.Contains(t, err.Error(), "tecPATH_DRY") - require.Contains(t, err.Error(), "not tesSUCCESS") -} - -// TestValidateTransactionResult_Integration_EmptyResult tests that -// validateTransactionResult correctly handles a transaction with empty result. -func TestValidateTransactionResult_Integration_EmptyResult(t *testing.T) { - parser := NewParser("", nil, nil) - - tx := GenericTx{ - MetaTransactionResult: "", - } - - err := parser.validateTransactionResult(tx) - require.Error(t, err, "validateTransactionResult should fail when result is empty") - require.Contains(t, err.Error(), "not tesSUCCESS") -} - const xrplMainnetWSS = "wss://xrplcluster.com" // TestFetchAndParseTransaction_Mainnet verifies that fetchAndParseTransaction From c7903444e0a5de43d2ba274bebcf3d17d4d3a1dd Mon Sep 17 00:00:00 2001 From: John Saigle Date: Mon, 20 Jul 2026 06:14:56 -0400 Subject: [PATCH 3/3] fix: sui integration test SuiTransaction.Digest was renamed to TxDigest in commit 518d13e96 (PR #4850). The live integration test was not updated. Fixed the test by: - Using tx.TxDigest. - Retaining the nil check. - Adding an equality assertion against the requested digest. --- node/pkg/suiclient/suigrpc_live_test.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/node/pkg/suiclient/suigrpc_live_test.go b/node/pkg/suiclient/suigrpc_live_test.go index 972ba3d5928..828f1acc571 100644 --- a/node/pkg/suiclient/suigrpc_live_test.go +++ b/node/pkg/suiclient/suigrpc_live_test.go @@ -96,9 +96,10 @@ func TestGrpcClientGetTransaction(t *testing.T) { }) require.NoError(t, err) - require.NotNil(t, tx.Digest) + require.NotNil(t, tx.TxDigest) + require.Equal(t, transactionDigest, *tx.TxDigest) - fmt.Println("[+] Transaction Digest: ", *tx.Digest) + fmt.Println("[+] Transaction Digest: ", *tx.TxDigest) for _, ev := range tx.Events { fmt.Printf("\tEventType=%s\n", ev.EventType) fmt.Println("\t\tPackageID:", ev.PackageID)