From 9670b19ce8f7c23c975a34206bb40e2ace152d09 Mon Sep 17 00:00:00 2001 From: Florian Beeres Date: Tue, 21 Feb 2023 20:04:39 +0100 Subject: go-mockery: add package test Add a very basic package test for go-mockery that asserts: * version matches what is expected * running the program generates a *.go file Co-authored-by: Sandro --- pkgs/development/tools/go-mockery/default.nix | 33 ++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'pkgs/development/tools/go-mockery') diff --git a/pkgs/development/tools/go-mockery/default.nix b/pkgs/development/tools/go-mockery/default.nix index ab6723bebba20..a222f4193f3dd 100644 --- a/pkgs/development/tools/go-mockery/default.nix +++ b/pkgs/development/tools/go-mockery/default.nix @@ -1,4 +1,4 @@ -{ lib, buildGoModule, fetchFromGitHub }: +{ lib, buildGoModule, fetchFromGitHub, go-mockery, runCommand, go }: buildGoModule rec { pname = "go-mockery"; @@ -24,6 +24,37 @@ buildGoModule rec { vendorHash = "sha256-Dl8Q6fQa7BKp06a4OT82+wHYQRN1aWZ2qK25GzhOw8A="; + 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"; -- cgit 1.4.1