diff --git a/.github/workflows/check-mocks.yml b/.github/workflows/check-mocks.yml new file mode 100644 index 0000000000..80d9dbee20 --- /dev/null +++ b/.github/workflows/check-mocks.yml @@ -0,0 +1,50 @@ +# Copyright 2024 Democratized Data Foundation +# +# Use of this software is governed by the Business Source License +# included in the file licenses/BSL.txt. +# +# As of the Change Date specified in that file, in accordance with +# the Business Source License, use of this software will be governed +# by the Apache License, Version 2.0, included in the file +# licenses/APL.txt. + +# This workflow checks that all mocks are up to date. +# If the mocks are not up to date then this action will fail. +name: Check Mocks Workflow + +on: + pull_request: + branches: + - master + - develop + + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + branches: + - master + - develop + +jobs: + check-mocks: + name: Check mocks job + + runs-on: ubuntu-latest + + steps: + - name: Checkout code into the directory + uses: actions/checkout@v3 + + - name: Setup Go environment explicitly + uses: actions/setup-go@v3 + with: + go-version: "1.21" + check-latest: true + + - name: Try generating mocks + run: make mocks + + - name: Check no new changes exist + uses: tj-actions/verify-changed-files@v20 + with: + fail-if-changed: true diff --git a/Makefile b/Makefile index 1f50ab816c..c4c02da3d7 100644 --- a/Makefile +++ b/Makefile @@ -158,8 +158,8 @@ deps\:chglog: deps\:modules: go mod download -.PHONY: deps\:mock -deps\:mock: +.PHONY: deps\:mocks +deps\:mocks: go install github.com/vektra/mockery/v2@v2.32.0 .PHONY: deps\:playground @@ -173,11 +173,11 @@ deps: $(MAKE) deps:chglog && \ $(MAKE) deps:lint && \ $(MAKE) deps:test && \ - $(MAKE) deps:mock + $(MAKE) deps:mocks -.PHONY: mock -mock: - @$(MAKE) deps:mock +.PHONY: mocks +mocks: + @$(MAKE) deps:mocks mockery --config="tools/configs/mockery.yaml" .PHONY: dev\:start diff --git a/tests/README.md b/tests/README.md index a17fbcaf08..2dfe2d17c7 100644 --- a/tests/README.md +++ b/tests/README.md @@ -23,7 +23,7 @@ These tests focus on small, isolated parts of the code to ensure each part is wo For unit tests, we sometimes use mocks. Mocks are automatically generated from Go interfaces using the mockery tool. This helps to isolate the code being tested and provide more focused and reliable tests. -To regenerate the mocks, run `make mock`. +To regenerate the mocks, run `make mocks`. The mocks are typically generated into a separate mocks directory.