forked from btcsuite/btcutil
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
With this commit we add a Makefile with the goal of removing the goclean.sh script. We also use the more powerful golangci-lint linter and split the GitHub actions into multiple sections to parallelize them.
- Loading branch information
Showing
6 changed files
with
220 additions
and
133 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,31 +1,64 @@ | ||
name: Build and Test | ||
on: [push, pull_request] | ||
|
||
env: | ||
# go needs absolute directories, using the $HOME variable doesn't work here. | ||
GOCACHE: /home/runner/work/go/pkg/build | ||
GOPATH: /home/runner/work/go | ||
GO_VERSION: 1.16.8 | ||
|
||
jobs: | ||
build: | ||
name: Go CI | ||
name: Build | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
go: [1.14, 1.15] | ||
steps: | ||
- name: Set up Go | ||
uses: actions/setup-go@v2 | ||
with: | ||
go-version: ${{ matrix.go }} | ||
go-version: ${{ env.GO_VERSION }} | ||
|
||
- name: Check out source | ||
uses: actions/checkout@v2 | ||
- name: Install Linters | ||
run: "curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin v1.31.0" | ||
|
||
- name: Build | ||
env: | ||
GO111MODULE: "on" | ||
run: go build ./... | ||
run: make build | ||
|
||
test-cover: | ||
name: Unit coverage | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Set up Go | ||
uses: actions/setup-go@v2 | ||
with: | ||
go-version: ${{ env.GO_VERSION }} | ||
|
||
- name: Check out source | ||
uses: actions/checkout@v2 | ||
|
||
- name: Test | ||
env: | ||
GO111MODULE: "on" | ||
run: | | ||
sh ./goclean.sh | ||
run: make unit-cover | ||
|
||
- name: Send btcutil coverage | ||
uses: shogo82148/actions-goveralls@v1 | ||
with: | ||
path-to-profile: profile.cov | ||
path-to-profile: coverage.txt | ||
|
||
- name: Send btcutil coverage for psbt package | ||
uses: shogo82148/actions-goveralls@v1 | ||
with: | ||
path-to-profile: psbt/coverage.txt | ||
|
||
test-race: | ||
name: Unit race | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Set up Go | ||
uses: actions/setup-go@v2 | ||
with: | ||
go-version: ${{ env.GO_VERSION }} | ||
|
||
- name: Check out source | ||
uses: actions/checkout@v2 | ||
|
||
- name: Test | ||
run: make unit-race |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -26,3 +26,5 @@ _cgo_export.* | |
_testmain.go | ||
|
||
*.exe | ||
coverage.txt | ||
psbt/coverage.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
run: | ||
# timeout for analysis | ||
deadline: 10m | ||
|
||
linters-settings: | ||
govet: | ||
# Don't report about shadowed variables | ||
check-shadowing: false | ||
gofmt: | ||
# simplify code: gofmt with `-s` option, true by default | ||
simplify: true | ||
|
||
linters: | ||
enable-all: true | ||
disable: | ||
# Global variables are used in many places throughout the code base. | ||
- gochecknoglobals | ||
|
||
# Some lines are over 80 characters on purpose and we don't want to make them | ||
# even longer by marking them as 'nolint'. | ||
- lll | ||
|
||
# We don't care (enough) about misaligned structs to lint that. | ||
- maligned | ||
|
||
# We have long functions, especially in tests. Moving or renaming those would | ||
# trigger funlen problems that we may not want to solve at that time. | ||
- funlen | ||
|
||
# Disable for now as we haven't yet tuned the sensitivity to our codebase | ||
# yet. Enabling by default for example, would also force new contributors to | ||
# potentially extensively refactor code, when they want to smaller change to | ||
# land. | ||
- gocyclo | ||
|
||
# Instances of table driven tests that don't pre-allocate shouldn't trigger | ||
# the linter. | ||
- prealloc | ||
|
||
# Init functions are used by loggers throughout the codebase. | ||
- gochecknoinits | ||
|
||
# Explicit types are okay. | ||
- interfacer | ||
|
||
issues: | ||
exclude-rules: | ||
# Exclude gosec from running for tests so that tests with weak randomness | ||
# (math/rand) will pass the linter. | ||
- path: _test\.go | ||
linters: | ||
- gosec | ||
#- errcheck | ||
- dupl |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
PKG := github.com/btcsuite/btcutil | ||
|
||
LINT_PKG := github.com/golangci/golangci-lint/cmd/golangci-lint | ||
GOACC_PKG := github.com/ory/go-acc | ||
GOIMPORTS_PKG := golang.org/x/tools/cmd/goimports | ||
|
||
GO_BIN := ${GOPATH}/bin | ||
LINT_BIN := $(GO_BIN)/golangci-lint | ||
GOACC_BIN := $(GO_BIN)/go-acc | ||
|
||
LINT_COMMIT := v1.18.0 | ||
GOACC_COMMIT := 80342ae2e0fcf265e99e76bcc4efd022c7c3811b | ||
|
||
DEPGET := cd /tmp && GO111MODULE=on go get -v | ||
GOBUILD := GO111MODULE=on go build -v | ||
GOINSTALL := GO111MODULE=on go install -v | ||
GOTEST := GO111MODULE=on go test | ||
|
||
GOFILES_NOVENDOR = $(shell find . -type f -name '*.go' -not -path "./vendor/*") | ||
|
||
RM := rm -f | ||
CP := cp | ||
MAKE := make | ||
XARGS := xargs -L 1 | ||
|
||
# Linting uses a lot of memory, so keep it under control by limiting the number | ||
# of workers if requested. | ||
ifneq ($(workers),) | ||
LINT_WORKERS = --concurrency=$(workers) | ||
endif | ||
|
||
LINT = $(LINT_BIN) run -v $(LINT_WORKERS) | ||
|
||
GREEN := "\\033[0;32m" | ||
NC := "\\033[0m" | ||
define print | ||
echo $(GREEN)$1$(NC) | ||
endef | ||
|
||
default: build | ||
|
||
all: build check | ||
|
||
# ============ | ||
# DEPENDENCIES | ||
# ============ | ||
|
||
$(LINT_BIN): | ||
@$(call print, "Fetching linter") | ||
$(DEPGET) $(LINT_PKG)@$(LINT_COMMIT) | ||
|
||
$(GOACC_BIN): | ||
@$(call print, "Fetching go-acc") | ||
$(DEPGET) $(GOACC_PKG)@$(GOACC_COMMIT) | ||
|
||
goimports: | ||
@$(call print, "Installing goimports.") | ||
$(DEPGET) $(GOIMPORTS_PKG) | ||
|
||
# ============ | ||
# INSTALLATION | ||
# ============ | ||
|
||
build: | ||
@$(call print, "Compiling btcutil.") | ||
$(GOBUILD) $(PKG)/... | ||
|
||
# ======= | ||
# TESTING | ||
# ======= | ||
|
||
check: unit | ||
|
||
unit: | ||
@$(call print, "Running unit tests.") | ||
$(GOTEST) ./... -test.timeout=20m | ||
cd psbt; $(GOTEST) ./... -test.timeout=20m | ||
|
||
unit-cover: $(GOACC_BIN) | ||
@$(call print, "Running unit coverage tests.") | ||
$(GOACC_BIN) ./... | ||
cd psbt; $(GOACC_BIN) ./... | ||
|
||
unit-race: | ||
@$(call print, "Running unit race tests.") | ||
env CGO_ENABLED=1 GORACE="history_size=7 halt_on_errors=1" $(GOTEST) -race -test.timeout=20m ./... | ||
cd psbt; env CGO_ENABLED=1 GORACE="history_size=7 halt_on_errors=1" $(GOTEST) -race -test.timeout=20m ./... | ||
|
||
# ========= | ||
# UTILITIES | ||
# ========= | ||
|
||
fmt: goimports | ||
@$(call print, "Fixing imports.") | ||
goimports -w $(GOFILES_NOVENDOR) | ||
@$(call print, "Formatting source.") | ||
gofmt -l -w -s $(GOFILES_NOVENDOR) | ||
|
||
lint: $(LINT_BIN) | ||
@$(call print, "Linting source.") | ||
$(LINT) | ||
|
||
clean: | ||
@$(call print, "Cleaning source.$(NC)") | ||
$(RM) coverage.txt psbt/coverage.txt | ||
|
||
.PHONY: all \ | ||
default \ | ||
build \ | ||
check \ | ||
unit \ | ||
unit-cover \ | ||
unit-race \ | ||
fmt \ | ||
lint \ | ||
clean |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.