Skip to content

Commit

Permalink
ci(i): Add workflow to detect out of date mocks (#2679)
Browse files Browse the repository at this point in the history
## Relevant issue(s)
Resolves #1616

## Description
- Add github action that will fail if there are any out of date mocks
- Proposed a year ago here:
#1612 (review)


## How has this been tested?
- using `act` tool
- manually through introducing a mock change in this commit: [`4b20f8f`
(#2679)](4b20f8f)
and then seeing the action fail here:
https://github.com/sourcenetwork/defradb/actions/runs/9361512099/job/25768647150?pr=2679
- the last commit reverts the commit that was introduce the test the
mock detection works, I didn't drop the commit and used the revert to
have it documented better.

Specify the platform(s) on which this was tested:
- WSL2
  • Loading branch information
shahzadlone authored Jun 4, 2024
1 parent 7dc07e7 commit 25fc07d
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 7 deletions.
50 changes: 50 additions & 0 deletions .github/workflows/check-mocks.yml
Original file line number Diff line number Diff line change
@@ -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
12 changes: 6 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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/[email protected]

.PHONY: deps\:playground
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down

0 comments on commit 25fc07d

Please sign in to comment.