Subject: [PATCH] gnu: Add munit.
From: "Wamm K. D" <[email-masked]>
To: [email-masked]
Cc: "Wamm K. D" <[email-masked]>
Date: Sun, 26 Nov 2023 03:19:04 -0600
List-Id: <debbugs-submit.debbugs.gnu.org>

While the library is incredibly simple, – for some reason – the most
important file of the package gets skipped by =meson-build-system=.

To compensate for this, I've added a phase that just manually copies
the file over but let me know if there's a more appropriate way to
handle this.

* gnu/packages/check.scm (munit): New variable.
---
 gnu/packages/check.scm | 52 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 1f5b886977..ca6d8fe3be 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -47,6 +47,7 @@
 ;;; Copyright © 2023 Bruno Victal <[email-masked]>
 ;;; Copyright © 2023 Reza Housseini <[email-masked]>
 ;;; Copyright © 2023 Hilton Chain <[email-masked]>
+;;; Copyright © 2023 Wamm K. D. <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3648,3 +3649,54 @@ (define-public subunit
 command line filters to process a subunit stream and language bindings for
 Python, C, C++ and shell.  Bindings are easy to write for other languages.")
     (license (list license:asl2.0 license:bsd-3)))) ;user can pick
+
+(define-public munit
+  ;; A ton of commits have been made since the last version tag was done (in 2016)
+  (let ((version "0.2.0")
+        (commit "fbbdf1467eb0d04a6ee465def2e529e4c87f2118")
+        (revision "0"))
+    (package
+      (name "munit")
+      (version (git-version version revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url (string-append "https://github.com/nemequ/" name "/"))
+                      (commit commit)))
+                (sha256
+                 (base32 "13725v4pps2bpndniksa58nqi9gvx0f0900k0rqvp95bxw5z8vda"))))
+      (build-system meson-build-system)
+      (arguments
+       (list
+        #:phases #~(modify-phases %standard-phases
+                     (add-after 'install 'install-lib
+                       (lambda _
+                         (copy-file "libmunit.so"
+                                    (string-append #$output
+                                                   "/lib/libmunit.so")))))))
+      (synopsis "Unit testing framework for C")
+      (description "µnit is a unit testing framework.  Prioritizing a small
+size, it has no dependencies beyond @code{libc}.
+
+Features include:
+@itemize @bullet
+@item
+Assertion macros for nice error messages
+@item
+Reproducible cross-platform random number generation, including support for
+supplying a seed via CLI
+@item
+Timing of both wall-clock and CPU time
+@item
+Parameterized tests
+@item
+Nested test suites
+@item
+Flexible CLI
+@item
+Forking (except on Windows)
+@item
+Hiding output of successful tests
+@end itemize")
+      (home-page "https://nemequ.github.io/munit/")
+      (license license:expat))))
-- 
2.41.0