Author SHA1 Message Date
133dde6f1c ci: use go 1.25 and pin GOTOOLCHAIN=local to fix covdata failure
go.mod requires go 1.25.6 but the workflow was requesting go-version: '1.24'.
With GOTOOLCHAIN=auto (the default), the runner auto-downloaded Go 1.25.6
which lacked the covdata sub-tool, causing the test job to fail with
'go: no such tool covdata' for all cmd/* packages.

Changes:
- Bump go-version from '1.24' to '1.25' to match the go.mod directive
- Add a 'Pin toolchain' step that sets GOTOOLCHAIN=local, preventing
  any further auto-upgrade surprises regardless of future go.mod bumps

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-10 15:06:22 +10:00
24 changed files with 47 additions and 45 deletions
+9 -6
View File
@@ -14,25 +14,28 @@ jobs:
- uses: actions/setup-go@v5 - uses: actions/setup-go@v5
with: with:
go-version-file: 'go.mod' go-version: '1.25'
cache: true cache: true
- name: Pin toolchain
run: echo "GOTOOLCHAIN=local" >> $GITHUB_ENV
- name: Vet - name: Vet
run: GOTOOLCHAIN=local go vet ./... run: go vet ./...
- name: Test - name: Test
run: GOTOOLCHAIN=local go test -v -race -coverprofile=coverage.out ./... run: go test -v -race -coverprofile=coverage.out ./...
- name: Coverage report - name: Coverage report
run: GOTOOLCHAIN=local go tool cover -func=coverage.out run: go tool cover -func=coverage.out
- name: Check internal package coverage - name: Check internal package coverage
run: | run: |
COVERAGE=$(GOTOOLCHAIN=local go tool cover -func=coverage.out | grep "^gitea.hansenits.com.au/hits/ExploreDNS/internal" | awk '{print $3}' | sed 's/%//' | awk '{sum+=$1; count++} END {if(count>0) print sum/count; else print 0}') COVERAGE=$(go tool cover -func=coverage.out | grep "^github.com/hits/ExploreDNS/internal" | awk '{print $3}' | sed 's/%//' | awk '{sum+=$1; count++} END {if(count>0) print sum/count; else print 0}')
echo "Average internal package coverage: ${COVERAGE}%" echo "Average internal package coverage: ${COVERAGE}%"
- name: Build - name: Build
run: GOTOOLCHAIN=local go build -v ./... run: go build -v ./...
docker: docker:
runs-on: ubuntu-latest runs-on: ubuntu-latest
-1
View File
@@ -8,7 +8,6 @@
*.dll *.dll
*.so *.so
*.dylib *.dylib
bin/*
# Test binary, built with `go test -c` # Test binary, built with `go test -c`
*.test *.test
+2 -2
View File
@@ -53,8 +53,8 @@ make build-all # produces both binaries
### go install ### go install
```sh ```sh
go install gitea.hansenits.com.au/hits/ExploreDNS/cmd/exploredns@latest go install github.com/hits/ExploreDNS/cmd/exploredns@latest
go install gitea.hansenits.com.au/hits/ExploreDNS/cmd/server@latest go install github.com/hits/ExploreDNS/cmd/server@latest
``` ```
--- ---
+4 -4
View File
@@ -7,10 +7,10 @@ import (
"os" "os"
"time" "time"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/config" "github.com/hits/ExploreDNS/internal/config"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" "github.com/hits/ExploreDNS/internal/dns"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/output" "github.com/hits/ExploreDNS/internal/output"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/traverse" "github.com/hits/ExploreDNS/internal/traverse"
) )
func main() { func main() {
+1 -1
View File
@@ -10,7 +10,7 @@ import (
"syscall" "syscall"
"time" "time"
"gitea.hansenits.com.au/hits/ExploreDNS/web/api" "github.com/hits/ExploreDNS/web/api"
) )
func main() { func main() {
+2 -2
View File
@@ -1,6 +1,6 @@
module gitea.hansenits.com.au/hits/ExploreDNS module github.com/hits/ExploreDNS
go 1.24.0 go 1.25.6
require ( require (
github.com/miekg/dns v1.1.72 github.com/miekg/dns v1.1.72
+2 -2
View File
@@ -8,8 +8,8 @@ import (
"testing" "testing"
"time" "time"
dnsinternal "gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" dnsinternal "github.com/hits/ExploreDNS/internal/dns"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/traverse" "github.com/hits/ExploreDNS/internal/traverse"
"github.com/miekg/dns" "github.com/miekg/dns"
) )
+2 -2
View File
@@ -7,8 +7,8 @@ import (
"strings" "strings"
"testing" "testing"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" "github.com/hits/ExploreDNS/internal/dns"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/traverse" "github.com/hits/ExploreDNS/internal/traverse"
miekgdns "github.com/miekg/dns" miekgdns "github.com/miekg/dns"
) )
+1 -1
View File
@@ -15,7 +15,7 @@ import (
"io" "io"
"os" "os"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/traverse" "github.com/hits/ExploreDNS/internal/traverse"
) )
type Format int type Format int
+2 -2
View File
@@ -8,8 +8,8 @@ import (
"strings" "strings"
"testing" "testing"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" "github.com/hits/ExploreDNS/internal/dns"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/traverse" "github.com/hits/ExploreDNS/internal/traverse"
miekgdns "github.com/miekg/dns" miekgdns "github.com/miekg/dns"
) )
+2 -2
View File
@@ -4,8 +4,8 @@ import (
"encoding/json" "encoding/json"
"io" "io"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" "github.com/hits/ExploreDNS/internal/dns"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/traverse" "github.com/hits/ExploreDNS/internal/traverse"
) )
type jsonFormatter struct { type jsonFormatter struct {
+2 -2
View File
@@ -5,8 +5,8 @@ import (
"fmt" "fmt"
"net" "net"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/fingerprint" "github.com/hits/ExploreDNS/internal/fingerprint"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/traverse" "github.com/hits/ExploreDNS/internal/traverse"
) )
func RunTraversal(ctx context.Context, traverser *traverse.Traverser, cfg *Config, formatter Formatter, domain string) ([]traverse.TraversalResult, error) { func RunTraversal(ctx context.Context, traverser *traverse.Traverser, cfg *Config, formatter Formatter, domain string) ([]traverse.TraversalResult, error) {
+2 -2
View File
@@ -5,8 +5,8 @@ import (
"sort" "sort"
"strings" "strings"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" "github.com/hits/ExploreDNS/internal/dns"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/traverse" "github.com/hits/ExploreDNS/internal/traverse"
miekgdns "github.com/miekg/dns" miekgdns "github.com/miekg/dns"
) )
+2 -2
View File
@@ -4,8 +4,8 @@ import (
"net" "net"
"testing" "testing"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" "github.com/hits/ExploreDNS/internal/dns"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/traverse" "github.com/hits/ExploreDNS/internal/traverse"
miekgdns "github.com/miekg/dns" miekgdns "github.com/miekg/dns"
) )
+2 -2
View File
@@ -6,8 +6,8 @@ import (
"sort" "sort"
"strings" "strings"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" "github.com/hits/ExploreDNS/internal/dns"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/traverse" "github.com/hits/ExploreDNS/internal/traverse"
) )
type textFormatter struct { type textFormatter struct {
+2 -2
View File
@@ -6,8 +6,8 @@ import (
"strings" "strings"
"testing" "testing"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" "github.com/hits/ExploreDNS/internal/dns"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/traverse" "github.com/hits/ExploreDNS/internal/traverse"
miekgdns "github.com/miekg/dns" miekgdns "github.com/miekg/dns"
) )
+1 -1
View File
@@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
dnsinternal "gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" dnsinternal "github.com/hits/ExploreDNS/internal/dns"
"github.com/miekg/dns" "github.com/miekg/dns"
) )
+1 -1
View File
@@ -6,7 +6,7 @@ import (
"net" "net"
"strings" "strings"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" "github.com/hits/ExploreDNS/internal/dns"
miekgdns "github.com/miekg/dns" miekgdns "github.com/miekg/dns"
"golang.org/x/net/idna" "golang.org/x/net/idna"
) )
+1 -1
View File
@@ -4,7 +4,7 @@ import (
"net" "net"
"testing" "testing"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" "github.com/hits/ExploreDNS/internal/dns"
) )
const TypeA = dns.TypeA const TypeA = dns.TypeA
+1 -1
View File
@@ -3,7 +3,7 @@ package traverse
import ( import (
"net" "net"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" "github.com/hits/ExploreDNS/internal/dns"
miekgdns "github.com/miekg/dns" miekgdns "github.com/miekg/dns"
) )
+1 -1
View File
@@ -3,7 +3,7 @@ package traverse
import ( import (
"testing" "testing"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" "github.com/hits/ExploreDNS/internal/dns"
) )
func TestNewStack(t *testing.T) { func TestNewStack(t *testing.T) {
+1 -1
View File
@@ -8,7 +8,7 @@ import (
"sync" "sync"
"time" "time"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" "github.com/hits/ExploreDNS/internal/dns"
miekgdns "github.com/miekg/dns" miekgdns "github.com/miekg/dns"
) )
+3 -3
View File
@@ -10,9 +10,9 @@ import (
"sync" "sync"
"time" "time"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/config" "github.com/hits/ExploreDNS/internal/config"
idns "gitea.hansenits.com.au/hits/ExploreDNS/internal/dns" idns "github.com/hits/ExploreDNS/internal/dns"
"gitea.hansenits.com.au/hits/ExploreDNS/internal/traverse" "github.com/hits/ExploreDNS/internal/traverse"
) )
// Job status values. // Job status values.
+1 -1
View File
@@ -11,7 +11,7 @@ import (
"testing" "testing"
"time" "time"
"gitea.hansenits.com.au/hits/ExploreDNS/web/api" "github.com/hits/ExploreDNS/web/api"
) )
// newTestServer starts a Server on a random port and returns it. // newTestServer starts a Server on a random port and returns it.