From 702e7966d08595b753b84389dcd5c6b78b0ae1f4 Mon Sep 17 00:00:00 2001 From: Ian Pun Date: Thu, 1 Feb 2024 15:45:11 -0800 Subject: [PATCH 1/2] add back makefile and gitignore --- .gitignore | 24 ++++++++++++++++++++++++ Makefile | 42 ++++++++++++++++++++++++++++++++++++++++++ mocks/Services.go | 1 - 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 Makefile diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..077dba6e --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Coverage artifacts +coverage.zip +coverage.txt +cover.json +cover-summary +index.html + +.DS_Store + +# Ignore flow json config +flow.json +flow*.json +!tests/flow.json + +# IDE related files +.idea +.vscode +git \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..681796b0 --- /dev/null +++ b/Makefile @@ -0,0 +1,42 @@ +# The short Git commit hash +SHORT_COMMIT := $(shell git rev-parse --short HEAD) +# The Git commit hash +COMMIT := $(shell git rev-parse HEAD) +# The tag of the current commit, otherwise empty +VERSION := $(shell git describe --tags --abbrev=0 --exact-match 2>/dev/null) +# Name of the cover profile +COVER_PROFILE := coverage.txt +# Disable go sum database lookup for private repos +GOPRIVATE := github.com/dapperlabs/* +# Ensure go bin path is in path (Especially for CI) +GOPATH ?= $(HOME)/go +PATH := $(PATH):$(GOPATH)/bin +# OS +UNAME := $(shell uname) + +MIXPANEL_PROJECT_TOKEN := 3fae49de272be1ceb8cf34119f747073 + +.PHONY: test +test: + GO111MODULE=on go test -coverprofile=$(COVER_PROFILE) $(if $(JSON_OUTPUT),-json,) ./... + +.PHONY: install-tools +install-tools: + cd ${GOPATH}; \ + mkdir -p ${GOPATH}; \ + GO111MODULE=on go install github.com/axw/gocov/gocov@latest; \ + GO111MODULE=on go install github.com/matm/gocov-html/cmd/gocov-html@latest; \ + GO111MODULE=on go install github.com/sanderhahn/gozip/cmd/gozip@latest; \ + GO111MODULE=on go install github.com/vektra/mockery/v2@v2.38.0; + +.PHONY: generate-schema +generate-schema: + go run ./cmd/flow-schema/flow-schema.go ./schema.json + +.PHONY: check-schema +check-schema: + go run ./cmd/flow-schema/flow-schema.go --verify=true ./schema.json + +.PHONY: generate +generate: install-tools + go generate ./... \ No newline at end of file diff --git a/mocks/Services.go b/mocks/Services.go index 1e89d7c5..b1fd36f1 100644 --- a/mocks/Services.go +++ b/mocks/Services.go @@ -4,7 +4,6 @@ package mocks import ( cadence "github.com/onflow/cadence" - accounts "github.com/onflow/flowkit/accounts" config "github.com/onflow/flowkit/config" From eade02d15c1777338bde448693a2e3a6669cc551 Mon Sep 17 00:00:00 2001 From: Ian Pun Date: Thu, 1 Feb 2024 15:51:33 -0800 Subject: [PATCH 2/2] add workflows --- .github/workflows/ci.yml | 51 ++++++++++++++++++++++++++++++++++++++++ Makefile | 21 ++++++++++++++++- check-headers.sh | 8 +++++++ 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci.yml create mode 100755 check-headers.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..e4ceb1e6 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,51 @@ +name: CI + +# Controls when the action will run. Triggers the workflow on push or pull request +# events but only for the master branch +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + test: + strategy: + matrix: + os: [ubuntu-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - uses: actions/setup-go@v4 + with: + go-version: "1.20" + - name: Run tests + run: | + make install-tools + make generate + make test + make coverage + make check-tidy + make check-headers + make check-schema + - name: Upload coverage report + uses: codecov/codecov-action@v1 + with: + file: ./coverage.txt + flags: unittests + + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v4 + with: + go-version: "1.20" + - name: generate + run: make generate + - uses: golangci/golangci-lint-action@v3.7.0 + with: + version: v1.52.2 + args: --timeout=3m diff --git a/Makefile b/Makefile index 681796b0..d02e1d0a 100644 --- a/Makefile +++ b/Makefile @@ -37,6 +37,25 @@ generate-schema: check-schema: go run ./cmd/flow-schema/flow-schema.go --verify=true ./schema.json +.PHONY: check-tidy +check-tidy: + go mod tidy + +.PHONY: check-headers +check-headers: + @./check-headers.sh + .PHONY: generate generate: install-tools - go generate ./... \ No newline at end of file + go generate ./... + +.PHONY: coverage +coverage: +ifeq ($(COVER), true) + # file has to be called index.html + gocov convert $(COVER_PROFILE) > cover.json + ./cover-summary.sh + gocov-html cover.json > index.html + # coverage.zip will automatically be picked up by teamcity + gozip -c coverage.zip index.html +endif \ No newline at end of file diff --git a/check-headers.sh b/check-headers.sh new file mode 100755 index 00000000..1fa73394 --- /dev/null +++ b/check-headers.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +files=$(find . -name \*.go -type f -print0 | xargs -0 grep -L -E '(Licensed under the Apache License)|(Code generated (from|by))') +if [ -n "$files" ]; then + echo "Missing license header in:" + echo "$files" + exit 1 +fi \ No newline at end of file