{ lib, buildGoModule, fetchFromGitHub, go-mockery, runCommand, go }: buildGoModule rec { pname = "go-mockery"; version = "2.20.2"; src = fetchFromGitHub { owner = "vektra"; repo = "mockery"; rev = "v${version}"; sha256 = "sha256-MIEVAEjXM3QNz3PnjB/g5Ury+N9NJhxtcXF+SLAvqR4="; }; preCheck = '' substituteInPlace ./pkg/generator_test.go --replace 0.0.0-dev ${version} ''; ldflags = [ "-s" "-w" "-X" "github.com/vektra/mockery/v2/pkg/config.SemVer=v${version}" ]; CGO_ENABLED = false; vendorHash = "sha256-3lx3wHnPQ/slRXnlVAnI1ZqSykDXNivjwg1WUITGj64="; passthru.tests = { generateMock = runCommand "${pname}-test" { nativeBuildInputs = [ go-mockery ]; buildInputs = [ go ]; } '' if [[ $(mockery --version) != *"${version}"* ]]; then echo "Error: program version does not match package version" exit 1 fi export HOME=$TMPDIR cat < foo.go package main type Foo interface { Bark() string } EOF mockery --name Foo --dir . if [[ ! -f "mocks/Foo.go" ]]; then echo "Error: mocks/Foo.go was not generated by ${pname}" exit 1 fi touch $out ''; }; meta = with lib; { homepage = "https://github.com/vektra/mockery"; description = "A mock code autogenerator for Golang"; maintainers = with maintainers; [ fbrs ]; mainProgram = "mockery"; license = licenses.bsd3; }; }