mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-17 12:21:38 +00:00
cmd/pushtx, .github/workflows: add build workflow, show raw hex in output
Co-authored-by: drQedwards <213266729+drQedwards@users.noreply.github.com>
This commit is contained in:
parent
b91a437b09
commit
9ed063f56e
3 changed files with 84 additions and 0 deletions
37
.github/workflows/build.yml
vendored
Normal file
37
.github/workflows/build.yml
vendored
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
name: Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- copilot/**
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build All
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: false
|
||||||
|
|
||||||
|
- uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: build/cache
|
||||||
|
key: ${{ runner.os }}-build-tools-cache-${{ hashFiles('build/checksums.txt') }}
|
||||||
|
|
||||||
|
- name: Set up Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: '1.24'
|
||||||
|
cache: false
|
||||||
|
|
||||||
|
- name: Build all commands
|
||||||
|
run: make all
|
||||||
|
|
||||||
|
- name: Run pushtx tests
|
||||||
|
run: go test ./cmd/pushtx/ -v
|
||||||
|
|
@ -107,6 +107,10 @@ func run(args []string, stdin io.Reader) error {
|
||||||
}
|
}
|
||||||
fmt.Println("Transaction submitted successfully")
|
fmt.Println("Transaction submitted successfully")
|
||||||
fmt.Println("Hash:", hash.Hex())
|
fmt.Println("Hash:", hash.Hex())
|
||||||
|
|
||||||
|
// Print the raw hex transaction as the last output for easy
|
||||||
|
// copy-paste into block explorers like etherscan.io/pushTx.
|
||||||
|
fmt.Println("Raw tx: 0x" + hex.EncodeToString(rawTx))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,11 @@ package main
|
||||||
import (
|
import (
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"io"
|
||||||
"math/big"
|
"math/big"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
|
@ -241,3 +243,44 @@ func TestRunEqualsSyntax(t *testing.T) {
|
||||||
t.Fatal("unexpected error:", err)
|
t.Fatal("unexpected error:", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRunOutputEndsWithRawHex(t *testing.T) {
|
||||||
|
srv := fakeRPC(t, false)
|
||||||
|
defer srv.Close()
|
||||||
|
|
||||||
|
_, txHex := signedTestTx(t)
|
||||||
|
|
||||||
|
// Capture stdout to verify "Raw tx:" appears in output.
|
||||||
|
oldStdout := os.Stdout
|
||||||
|
r, w, err := os.Pipe()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
os.Stdout = w
|
||||||
|
|
||||||
|
runErr := run([]string{"--rpc", srv.URL, txHex}, strings.NewReader(""))
|
||||||
|
|
||||||
|
w.Close()
|
||||||
|
os.Stdout = oldStdout
|
||||||
|
|
||||||
|
if runErr != nil {
|
||||||
|
t.Fatal("unexpected error:", runErr)
|
||||||
|
}
|
||||||
|
|
||||||
|
out, err := io.ReadAll(r)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
lines := strings.Split(strings.TrimSpace(string(out)), "\n")
|
||||||
|
lastLine := lines[len(lines)-1]
|
||||||
|
|
||||||
|
// The last line must be the raw hex transaction.
|
||||||
|
if !strings.HasPrefix(lastLine, "Raw tx: 0x") {
|
||||||
|
t.Fatalf("last output line = %q, want prefix \"Raw tx: 0x\"", lastLine)
|
||||||
|
}
|
||||||
|
// Verify the hex payload round-trips back to the input.
|
||||||
|
rawHex := strings.TrimPrefix(lastLine, "Raw tx: ")
|
||||||
|
if rawHex != txHex {
|
||||||
|
t.Fatalf("raw hex mismatch:\n got %s\n want %s", rawHex, txHex)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue