diff --git a/.github/.codecov.yml b/.github/.codecov.yml new file mode 100644 index 000000000..e98756f12 --- /dev/null +++ b/.github/.codecov.yml @@ -0,0 +1,23 @@ +# To validate: +# cat codecov.yml | curl --data-binary @- https://codecov.io/validate + +codecov: + notify: + require_ci_to_pass: yes + +coverage: + precision: 2 + round: down + range: "50...80" + + status: + project: + default: + target: auto + threshold: 1% + patch: + default: + enabled: no # disable patch since it is noisy and not correct + if_not_found: success + +comment: true \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..8846a32cb --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,40 @@ +name: Build Canto Core +# This workflow is run on pushes to main & every Pull Requests where a .go, .mod, .sum have been changed +on: + pull_request: + push: + branches: + - main + - release/** +permissions: + contents: read + +concurrency: + group: ci-${{ github.ref }}-build + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + go-arch: ["amd64"] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v3 + with: + go-version: "^1.18" + - uses: technote-space/get-diff-action@v6.1.2 + id: git_diff + with: + PATTERNS: | + **/*.go + go.mod + go.sum + **/go.mod + **/go.sum + **/Makefile + Makefile + - name: Build + if: env.GIT_DIFF + run: GOARCH=${{ matrix.go-arch }} LEDGER_ENABLED=false make build diff --git a/.github/workflows/sims.yml b/.github/workflows/sims.yml new file mode 100644 index 000000000..c9447eb0d --- /dev/null +++ b/.github/workflows/sims.yml @@ -0,0 +1,121 @@ +#name: Sims +# Sims workflow runs multiple types of simulations (nondeterminism, import-export, after-import) +# This workflow will run on all Pull Requests, if a .go, .mod or .sum file have been changed +# Temporary disable until it is fixed +#on: +# pull_request: +# push: +# branches: +# - main +# - develop +# +#jobs: +# build: +# runs-on: ubuntu-latest +# if: "!contains(github.event.head_commit.message, 'skip-sims')" +# steps: +# - uses: actions/checkout@v2 +# - uses: actions/setup-go@v2.1.3 +# with: +# go-version: 1.18 +# - name: Display go version +# run: go version +# - run: make build +# +# install-runsim: +# runs-on: ubuntu-latest +# needs: build +# steps: +# - uses: actions/setup-go@v2.1.3 +# with: +# go-version: 1.18 +# - name: Display go version +# run: go version +# - name: Install runsim +# run: export GO111MODULE="on" && go install github.com/cosmos/tools/cmd/runsim@v1.0.0 +# - uses: actions/cache@v2.1.6 +# with: +# path: ~/go/bin +# key: ${{ runner.os }}-go-runsim-binary +# +# test-sim-nondeterminism: +# runs-on: ubuntu-latest +# needs: [build, install-runsim] +# steps: +# - uses: actions/checkout@v2 +# - uses: actions/setup-go@v2.1.3 +# with: +# go-version: 1.18 +# - name: Display go version +# run: go version +# - uses: technote-space/get-diff-action@v4 +# with: +# PATTERNS: | +# **/**.go +# go.mod +# go.sum +# - uses: actions/cache@v2.1.6 +# with: +# path: ~/go/bin +# key: ${{ runner.os }}-go-runsim-binary +# if: env.GIT_DIFF +# - name: test-sim-nondeterminism +# run: | +# make test-sim-nondeterminism +# if: env.GIT_DIFF +# +# test-sim-import-export: +# runs-on: ubuntu-latest +# needs: [build, install-runsim] +# steps: +# - uses: actions/checkout@v2 +# - uses: actions/setup-go@v2.1.3 +# with: +# go-version: 1.18 +# - name: Display go version +# run: go version +# - uses: technote-space/get-diff-action@v4 +# with: +# SUFFIX_FILTER: | +# **/**.go +# go.mod +# go.sum +# SET_ENV_NAME_INSERTIONS: 1 +# SET_ENV_NAME_LINES: 1 +# - uses: actions/cache@v2.1.6 +# with: +# path: ~/go/bin +# key: ${{ runner.os }}-go-runsim-binary +# if: env.GIT_DIFF +# - name: test-sim-import-export +# run: | +# make test-sim-import-export +# if: env.GIT_DIFF +# +# test-sim-after-import: +# runs-on: ubuntu-latest +# needs: [build, install-runsim] +# steps: +# - uses: actions/checkout@v2 +# - uses: actions/setup-go@v2.1.3 +# with: +# go-version: 1.18 +# - name: Display go version +# run: go version +# - uses: technote-space/get-diff-action@v4 +# with: +# SUFFIX_FILTER: | +# **/**.go +# go.mod +# go.sum +# SET_ENV_NAME_INSERTIONS: 1 +# SET_ENV_NAME_LINES: 1 +# - uses: actions/cache@v2.1.6 +# with: +# path: ~/go/bin +# key: ${{ runner.os }}-go-runsim-binary +# if: env.GIT_DIFF +# - name: test-sim-after-import +# run: | +# make test-sim-after-import +# if: env.GIT_DIFF diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000..a923c0b7d --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,43 @@ +name: Tests / Code Coverage +# Tests / Code Coverage workflow runs unit tests and uploads a code coverage report +# This workflow is run on pushes to main & every Pull Requests where a .go, .mod, .sum have been changed +on: + pull_request: + push: + branches: + - main +jobs: + cleanup-runs: + runs-on: ubuntu-latest + steps: + - uses: rokroskar/workflow-run-cleanup-action@master + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + if: "!startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/main'" + + test-coverage: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v3 + with: + go-version: 1.18 + - name: display go version + run: go version + - name: test & coverage report creation + run: make test-unit-cover + - name: filter out DONTCOVER + run: | + excludelist="$(find ./ -type f -name '*.go' | xargs grep -l 'DONTCOVER')" + excludelist+=" $(find ./ -type f -name '*.pb.go')" + excludelist+=" $(find ./ -type f -name '*.pb.gw.go')" + excludelist+=" $(find ./ -type f -path './tests/mocks/*.go')" + for filename in ${excludelist}; do + filename=$(echo $filename | sed 's/^./github.com\/Canto-Network\/Canto\/v6/g') + echo "Excluding ${filename} from coverage report..." + sed -i "/$(echo $filename | sed 's/\//\\\//g')/d" coverage.txt + done + - uses: codecov/codecov-action@v2.1.0 + with: + file: ./coverage.txt diff --git a/.gitignore b/.gitignore index 4c46023d9..ed08f892a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,7 @@ .testnets .bencher DS_Store +node_modules +.idea +coverage.txt +build diff --git a/Makefile b/Makefile index 710650ae2..a6553022e 100755 --- a/Makefile +++ b/Makefile @@ -329,14 +329,14 @@ TEST_TARGETS := test-unit test-unit-cover test-race # Test runs-specific rules. To add a new test target, just add # a new rule, customise ARGS or TEST_PACKAGES ad libitum, and # append the new rule to the TEST_TARGETS list. -test-unit: ARGS=-timeout=10m -race +test-unit: ARGS=-timeout=30m -race test-unit: TEST_PACKAGES=$(PACKAGES_UNIT) test-race: ARGS=-race test-race: TEST_PACKAGES=$(PACKAGES_NOSIMULATION) $(TEST_TARGETS): run-tests -test-unit-cover: ARGS=-timeout=10m -race -coverprofile=coverage.txt -covermode=atomic +test-unit-cover: ARGS=-timeout=30m -race -coverprofile=coverage.txt -covermode=atomic test-unit-cover: TEST_PACKAGES=$(PACKAGES_UNIT) run-tests: