From 2c2ca47e827a93496ff339a61a51e91ed04ffb43 Mon Sep 17 00:00:00 2001 From: DoDiODev Date: Tue, 28 Jul 2026 11:47:34 +0200 Subject: [PATCH] =?UTF-8?q?build(deps):=20mockery=20v2=E2=86=92v3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Upgrade the mock generator from mockery v2.53.6 to v3.7.2 at every install site (backend/Makefile, backend/Dockerfile, backend/Dockerfile.local, devops/docker/lake-builder/Dockerfile). mockery v3 dropped the CLI flags used by the `mock` target and is configured via YAML instead, so two config files are added: - backend/.mockery.core.yml - backend/.mockery.helpers.yml They reproduce the exact layout produced by the previous v2 invocations (--recursive --keeptree --dir=./ --output=./mocks/ --unroll-variadic=false --name='.*'): backend/mocks//.go, package `mocks`, un-prefixed mock struct names. Existing test imports such as `mockdal "github.com/apache/incubator-devlake/mocks/core/dal"` therefore keep working unchanged. Two configs (instead of one) are required because `helpers/unithelper` imports the generated `mocks/core/...` packages: unlike v2, v3 type-checks sources via go/packages, so the core mocks must exist before the helpers tree can be loaded. The `mock` target runs them in that order. Note: v3 only generates mocks for interfaces, no longer for function types. The affected mocks (e.g. plugin.ApiAsyncCallback, api.DataConvertHandler, errors.Option) were not used by any test. `backend/mocks/` is gitignored, so there is no generated-code churn in this diff. Validation: `make mock`, `go build ./...` and `scripts/unit-test-go.sh` (60 packages) all pass. Signed-off-by: DoDiODev --- backend/.mockery.core.yml | 39 +++++++++++++++++++++++++++ backend/.mockery.helpers.yml | 36 +++++++++++++++++++++++++ backend/Dockerfile | 2 +- backend/Dockerfile.local | 2 +- backend/Makefile | 10 ++++--- devops/docker/lake-builder/Dockerfile | 2 +- 6 files changed, 85 insertions(+), 6 deletions(-) create mode 100644 backend/.mockery.core.yml create mode 100644 backend/.mockery.helpers.yml diff --git a/backend/.mockery.core.yml b/backend/.mockery.core.yml new file mode 100644 index 00000000000..067e79cfecc --- /dev/null +++ b/backend/.mockery.core.yml @@ -0,0 +1,39 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# mockery v3 configuration for the ./core tree. +# +# Replaces the v2 command line +# mockery --recursive --keeptree --dir=./core --output=./mocks/core \ +# --unroll-variadic=false --name='.*' +# and reproduces the exact same layout: backend/mocks/core//.go +# with package name `mocks` and an un-prefixed mock struct name. +# +# NOTE: this config is deliberately kept separate from `.mockery.helpers.yml`. +# `helpers/unithelper` imports the generated `mocks/core/...` packages, so the +# core mocks have to exist before the helpers tree can be type-checked by +# mockery v3 (which, unlike v2, loads packages via go/packages). +all: true +recursive: true +template: testify +dir: "mocks/{{.InterfaceDirRelative}}" +filename: "{{.InterfaceName}}.go" +pkgname: "mocks" +structname: "{{.InterfaceName}}" +template-data: + unroll-variadic: false +packages: + github.com/apache/incubator-devlake/core: + diff --git a/backend/.mockery.helpers.yml b/backend/.mockery.helpers.yml new file mode 100644 index 00000000000..79f5014bf01 --- /dev/null +++ b/backend/.mockery.helpers.yml @@ -0,0 +1,36 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# mockery v3 configuration for the ./helpers tree. +# +# Replaces the v2 command line +# mockery --recursive --keeptree --dir=./helpers --output=./mocks/helpers \ +# --unroll-variadic=false --name='.*' +# and reproduces the exact same layout: backend/mocks/helpers//.go +# with package name `mocks` and an un-prefixed mock struct name. +# +# Must run *after* `.mockery.core.yml` — see the note there. +all: true +recursive: true +template: testify +dir: "mocks/{{.InterfaceDirRelative}}" +filename: "{{.InterfaceName}}.go" +pkgname: "mocks" +structname: "{{.InterfaceName}}" +template-data: + unroll-variadic: false +packages: + github.com/apache/incubator-devlake/helpers: + diff --git a/backend/Dockerfile b/backend/Dockerfile index 87e9adaefd8..85fe1e258d1 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -49,7 +49,7 @@ RUN if [ "$(arch)" != "x86_64" ] ; then \ apt-get install -y gcc-x86-64-linux-gnu binutils-x86-64-linux-gnu ; \ fi -RUN go install github.com/vektra/mockery/v2@v2.53.6 +RUN go install github.com/vektra/mockery/v3@v3.7.2 RUN go install github.com/swaggo/swag/cmd/swag@v1.16.6 COPY --from=debian-amd64 /usr/include /rootfs-amd64/usr/include diff --git a/backend/Dockerfile.local b/backend/Dockerfile.local index 2fadbcec90e..c244a886a2f 100644 --- a/backend/Dockerfile.local +++ b/backend/Dockerfile.local @@ -47,7 +47,7 @@ RUN mkdir -p /tmp/build && cd /tmp/build && \ make -j$(nproc) install && \ ldconfig -RUN go install github.com/vektra/mockery/v2@v2.53.6 +RUN go install github.com/vektra/mockery/v3@v3.7.2 RUN go install github.com/swaggo/swag/cmd/swag@v1.16.6 WORKDIR /app diff --git a/backend/Makefile b/backend/Makefile index 7aca0a2e471..8dde31dc6bf 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -27,7 +27,7 @@ PYTHON_DIR ?= "./python" all: build go-dep: - go install github.com/vektra/mockery/v2@v2.53.6 + go install github.com/vektra/mockery/v3@v3.7.2 go install github.com/swaggo/swag/cmd/swag@v1.16.6 go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.12.2 @@ -73,8 +73,12 @@ debug: build-plugin-debug mock: rm -rf mocks - mockery --recursive --keeptree --dir=./core --output=./mocks/core --unroll-variadic=false --name='.*' - mockery --recursive --keeptree --dir=./helpers --output=./mocks/helpers --unroll-variadic=false --name='.*' + # mockery v3 is configured via YAML instead of CLI flags. Two invocations are + # required (and must run in this order): `helpers/unithelper` imports the + # generated `mocks/core/...` packages, and v3 type-checks the sources it + # parses, so the core mocks have to exist before the helpers tree loads. + mockery --config .mockery.core.yml + mockery --config .mockery.helpers.yml test: unit-test e2e-test diff --git a/devops/docker/lake-builder/Dockerfile b/devops/docker/lake-builder/Dockerfile index be6e31f3d7e..3ef2744522e 100644 --- a/devops/docker/lake-builder/Dockerfile +++ b/devops/docker/lake-builder/Dockerfile @@ -62,7 +62,7 @@ RUN mv /root/go /go &&\ # Install Golang Tools RUN export GOPATH=/go && \ - go install github.com/vektra/mockery/v2@v2.53.6 && \ + go install github.com/vektra/mockery/v3@v3.7.2 && \ go install github.com/swaggo/swag/cmd/swag@v1.16.1 # Golang Env