66 lines
1.5 KiB
Nix
66 lines
1.5 KiB
Nix
{ 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 <<EOF > 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;
|
|
};
|
|
}
|