aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Victorovich <yuri@FreeBSD.org>2022-07-03 18:45:28 +0000
committerYuri Victorovich <yuri@FreeBSD.org>2022-07-03 18:47:18 +0000
commitc32decee33ce9db095fb2b77e4ece07c5ec50f59 (patch)
tree2f6b113b676f94594fce1ccbbb54c0cd3391366f
parente1e0b2a0c423b87c469b0c118f6860ad1d5659bf (diff)
devel/criterion: New port: C and C++ unit testing framework for the 21st century
This KISS-compliant library makes testsuites as simple as possible.
-rw-r--r--devel/Makefile1
-rw-r--r--devel/criterion/Makefile48
-rw-r--r--devel/criterion/distinfo7
-rw-r--r--devel/criterion/files/example.c5
-rw-r--r--devel/criterion/files/patch-meson.build22
-rw-r--r--devel/criterion/pkg-descr15
-rw-r--r--devel/criterion/pkg-plist51
7 files changed, 149 insertions, 0 deletions
diff --git a/devel/Makefile b/devel/Makefile
index e8208656b11c..dd52006d2766 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -441,6 +441,7 @@
SUBDIR += crc32c
SUBDIR += creduce
SUBDIR += critcl
+ SUBDIR += criterion
SUBDIR += cscope
SUBDIR += cscout
SUBDIR += csmith
diff --git a/devel/criterion/Makefile b/devel/criterion/Makefile
new file mode 100644
index 000000000000..be7142673f0b
--- /dev/null
+++ b/devel/criterion/Makefile
@@ -0,0 +1,48 @@
+PORTNAME= criterion
+DISTVERSIONPREFIX= v
+DISTVERSION= 2.4.1
+CATEGORIES= devel
+
+MAINTAINER= yuri@FreeBSD.org
+COMMENT= C and C++ unit testing framework for the 21st century
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}protobuf>0:devel/py-protobuf@${PY_FLAVOR} \
+ nanopb>0:devel/nanopb \
+ cmake:devel/cmake \
+ protoc:devel/protobuf
+LIB_DEPENDS= libboxfort.so:devel/boxfort \
+ libffi.so:devel/libffi \
+ libgit2.so:devel/libgit2 \
+ libnanomsg.so:net/nanomsg \
+ libprotobuf-nanopb.so:devel/nanopb
+RUN_DEPENDS= nanopb>0:devel/nanopb
+
+USES= gettext localbase:ldflags meson python pkgconfig shebangfix
+USE_LDCONFIG= yes
+
+USE_GITHUB= yes
+GH_ACCOUNT= Snaipe
+GH_PROJECT= Criterion
+GH_TUPLE= attractivechaos:klib:cdb7e92:klib/dependencies/klib \
+ MrAnno:debugbreak:83bf7e9:debugbreak/dependencies/debugbreak
+
+SHEBANG_FILES= src/protocol/gen-pb.py
+
+MESON_ARGS= -Db_lundef=false # remove -Wl,--no-undefined to work around bug#265008
+MESON_ARGS= -Dtests=false -Dsamples=false
+
+CFLAGS+= -fPIC
+CXXFLAGS+= -fPIC
+
+quick-test:
+ @cd ${TEST_WRKSRC} && \
+ ${CC} ${CFLAGS} -I${STAGEDIR}${PREFIX}/include \
+ ${STAGEDIR}${PREFIX}/lib/libcriterion.a \
+ -L${LOCALBASE}/lib -lboxfort -lprotobuf-nanopb -lgit2 -lnanomsg \
+ ${FILESDIR}/example.c && \
+ ./a.out # test succeeds when simple::Test fails with assertion
+
+.include <bsd.port.mk>
diff --git a/devel/criterion/distinfo b/devel/criterion/distinfo
new file mode 100644
index 000000000000..9e662f28da98
--- /dev/null
+++ b/devel/criterion/distinfo
@@ -0,0 +1,7 @@
+TIMESTAMP = 1656832146
+SHA256 (Snaipe-Criterion-v2.4.1_GH0.tar.gz) = 34eb5c92c2663e0c0a0b77f7c4c2f6d5600ee08a4e41833e06859b7af089c891
+SIZE (Snaipe-Criterion-v2.4.1_GH0.tar.gz) = 870842
+SHA256 (attractivechaos-klib-cdb7e92_GH0.tar.gz) = 659a9b920bc77a88c30e61053cfaecd673ab2120df31efadaf544c195415f390
+SIZE (attractivechaos-klib-cdb7e92_GH0.tar.gz) = 99298
+SHA256 (MrAnno-debugbreak-83bf7e9_GH0.tar.gz) = 6ec24bdf3d361ec2bb7d128c56b8e870a1bb2d6b22eab3c2821eb1e15ccb8919
+SIZE (MrAnno-debugbreak-83bf7e9_GH0.tar.gz) = 7060
diff --git a/devel/criterion/files/example.c b/devel/criterion/files/example.c
new file mode 100644
index 000000000000..57d5bdd31c03
--- /dev/null
+++ b/devel/criterion/files/example.c
@@ -0,0 +1,5 @@
+#include <criterion/criterion.h>
+
+Test(simple, Test) {
+ cr_assert(false, "Hello World!");
+}
diff --git a/devel/criterion/files/patch-meson.build b/devel/criterion/files/patch-meson.build
new file mode 100644
index 000000000000..769ec915be7f
--- /dev/null
+++ b/devel/criterion/files/patch-meson.build
@@ -0,0 +1,22 @@
+- use the shared library for nanopb
+
+--- meson.build.orig 2022-07-03 16:28:55 UTC
++++ meson.build
+@@ -171,7 +171,7 @@ else
+ config.set('NN_REQREP_H', '<nanomsg/reqrep.h>')
+ endif
+
+-nanopb = dependency('nanopb', required: false, method: 'cmake', modules: ['nanopb::protobuf-nanopb-static'])
++nanopb = dependency('nanopb', required: false, method: 'cmake', modules: ['nanopb::protobuf-nanopb'])
+ must_regenerate_pb = nanopb.found()
+ if not nanopb.found()
+ nanopb_proj = cmake.subproject('nanopb',
+@@ -181,7 +181,7 @@ if not nanopb.found()
+ '-DCMAKE_C_FLAGS=-DPB_ENABLE_MALLOC=1 -DPB_NO_PACKED_STRUCTS=1',
+ '-DCMAKE_POSITION_INDEPENDENT_CODE=ON',
+ ])
+- nanopb = nanopb_proj.dependency('protobuf-nanopb-static')
++ nanopb = nanopb_proj.dependency('protobuf-nanopb')
+ endif
+
+ libgit2 = dependency('libgit2', required: false)
diff --git a/devel/criterion/pkg-descr b/devel/criterion/pkg-descr
new file mode 100644
index 000000000000..1040d9d56d4a
--- /dev/null
+++ b/devel/criterion/pkg-descr
@@ -0,0 +1,15 @@
+Criterion is a cross-platform C and C++ unit testing framework for the
+21st century.
+
+Most test frameworks for C require a lot of boilerplate code to set up
+tests and test suites -- you need to create a main, then register new
+test suites, then register the tests within these suites, and finally
+call the right functions.
+
+This gives the user great control, at the unfortunate cost of
+simplicity.
+
+Criterion follows the KISS principle, while keeping the control the
+user would have with other frameworks.
+
+WWW: https://github.com/Snaipe/Criterion
diff --git a/devel/criterion/pkg-plist b/devel/criterion/pkg-plist
new file mode 100644
index 000000000000..700e6d4d3cc6
--- /dev/null
+++ b/devel/criterion/pkg-plist
@@ -0,0 +1,51 @@
+include/criterion/abort.h
+include/criterion/alloc.h
+include/criterion/assert.h
+include/criterion/criterion.h
+include/criterion/embedded.h
+include/criterion/event.h
+include/criterion/hooks.h
+include/criterion/internal/asprintf-compat.h
+include/criterion/internal/assert.h
+include/criterion/internal/assert/complex.h
+include/criterion/internal/assert/exceptions.h
+include/criterion/internal/assert/ieee.h
+include/criterion/internal/assert/memory.h
+include/criterion/internal/assert/op.h
+include/criterion/internal/assert/op.hxx
+include/criterion/internal/assert/stream.h
+include/criterion/internal/assert/tag.h
+include/criterion/internal/assert/tostr.h
+include/criterion/internal/assert/types.h
+include/criterion/internal/capabilities.h
+include/criterion/internal/common.h
+include/criterion/internal/deprecation.h
+include/criterion/internal/designated-initializer-compat.h
+include/criterion/internal/hooks.h
+include/criterion/internal/new_asserts.h
+include/criterion/internal/ordered-set.h
+include/criterion/internal/parameterized.h
+include/criterion/internal/preprocess.h
+include/criterion/internal/redirect.h
+include/criterion/internal/stdio_filebuf.hxx
+include/criterion/internal/stream.hxx
+include/criterion/internal/test.h
+include/criterion/internal/theories.h
+include/criterion/logging.h
+include/criterion/new/assert.h
+include/criterion/new/memory.h
+include/criterion/new/stream.h
+include/criterion/options.h
+include/criterion/output.h
+include/criterion/parameterized.h
+include/criterion/redirect.h
+include/criterion/stats.h
+include/criterion/theories.h
+include/criterion/types.h
+lib/libcriterion.a
+lib/libcriterion.so
+lib/libcriterion.so.3
+lib/libcriterion.so.3.2.0
+libdata/pkgconfig/criterion.pc
+share/locale/de/LC_MESSAGES/criterion.mo
+share/locale/fr/LC_MESSAGES/criterion.mo