Skip to content

Commit

Permalink
Fixing mockery infinitely generating interfaces
Browse files Browse the repository at this point in the history
- Fixes #632
- Removing string comparison tests. These are not useful and are extremely burdensome.
- Regenerating mocks using new mock generation logic.

Renaming mocks, adding config for recursive generation

Adding a fixture for in-package recursive generation. I added config in
.mockery.yaml for this to test that mockery doesn't re-generate
interfaces it has created. I need to add an explicit integration test for
this.

Add end-to-end tests
  • Loading branch information
LandonTClipp committed Jun 13, 2023
1 parent d667a59 commit 7d5b1fc
Show file tree
Hide file tree
Showing 56 changed files with 642 additions and 2,558 deletions.
12 changes: 12 additions & 0 deletions .mockery.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,22 @@ packages:
- mockname: RequesterVariadicOneArgument
unroll-variadic: False
- mockname: RequesterVariadic
unroll-variadic: True
Expecter:
config:
with-expecter: True
configs:
- mockname: ExpecterAndRolledVariadic
unroll-variadic: False
- mockname: Expecter
unroll-variadic: True
RequesterReturnElided:
github.com/vektra/mockery/v2/pkg/fixtures/recursive_generation:
config:
recursive: True
all: True
dir: "{{.InterfaceDir}}"
filename: "{{.InterfaceName}}_mock.go"
mockname: "Mock{{.InterfaceName}}"
outpkg: "{{.PackageName}}"
inpackage: True
21 changes: 20 additions & 1 deletion Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,15 @@ tasks:
- "**/*.go"
cmds:
- go fmt ./...

rm_mocks:
cmds:
- find . -name '*_mock.go' | xargs rm
- rm -rf mocks/

mocks:
desc: generate mockery mocks
deps: [rm_mocks]
cmds:
- go run .

Expand All @@ -51,8 +57,21 @@ tasks:
cmds:
- go run github.com/golangci/golangci-lint/cmd/golangci-lint run

test.e2e:
desc: run end-to-end tests
sources:
- "**/*.go"
- "./.mockery.yaml"
cmds:
- ./e2e/run_all.sh

test.ci:
deps: [fmt, lint, mocks, test]
deps: [fmt, lint]
cmds:
- task: mocks
- task: test
- task: test.e2e


default:
deps: [test.ci]
6 changes: 6 additions & 0 deletions e2e/run_all.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

for file in $(ls $SCRIPT_DIR/test_*.sh); do
$file
done
21 changes: 21 additions & 0 deletions e2e/test_infinite_mocking.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/bash
# This tests https://github.com/vektra/mockery/issues/632, where
# mockery was generating mocks of its own auto-generated code.

echo "=========="
echo "RUNNING $0"
echo "=========="

# New mocks may legimitately be created, so we run mockery once first
go run .
num_files_before=$(find . -type f | wc -l)
go run .
num_files_after=$(find . -type f | wc -l)

if [ $num_files_before -ne $num_files_after ]; then
echo "ERROR: detected increased file count over multiple mockery runs."
echo "before: $num_files_before. after: $num_files_after"
exit 1
fi
echo "SUCCESS: identical number of files over multiple mockery runs"

13 changes: 13 additions & 0 deletions e2e/test_mockery_generation.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash

echo "=========="
echo "RUNNING $0"
echo "=========="

go run .
rt=$?
if [ $rt -ne 0 ]; then
echo "ERROR: non-zero return code from mockery"
exit 1
fi
echo "SUCCESS: successfully generated mocks defined in .mockery.yaml"
9 changes: 4 additions & 5 deletions mocks/github.com/vektra/mockery/v2/pkg/TypesPackage.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 4 additions & 5 deletions mocks/github.com/vektra/mockery/v2/pkg/fixtures/A.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 4 additions & 5 deletions mocks/github.com/vektra/mockery/v2/pkg/fixtures/Blank.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 4 additions & 5 deletions mocks/github.com/vektra/mockery/v2/pkg/fixtures/ConsulLock.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 4 additions & 5 deletions mocks/github.com/vektra/mockery/v2/pkg/fixtures/Example.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 4 additions & 5 deletions mocks/github.com/vektra/mockery/v2/pkg/fixtures/Expecter.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 4 additions & 5 deletions mocks/github.com/vektra/mockery/v2/pkg/fixtures/Fooer.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 4 additions & 5 deletions mocks/github.com/vektra/mockery/v2/pkg/fixtures/GetGeneric.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 4 additions & 5 deletions mocks/github.com/vektra/mockery/v2/pkg/fixtures/GetInt.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 4 additions & 5 deletions mocks/github.com/vektra/mockery/v2/pkg/fixtures/KeyManager.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 7d5b1fc

Please sign in to comment.