From 78803b04fc844c5971446a5eecf7e7f77fb8559d Mon Sep 17 00:00:00 2001 From: Christian Kreibich Date: Thu, 8 Jul 2021 12:32:50 -0700 Subject: [PATCH] Add testcases for plugin with doctest usage --- .../plugins.doctest-disabled/testnames | 1 + .../plugins.doctest-supported/testnames | 2 ++ .../plugins.doctest-supported/testresults | 7 ++++++ .../plugins.doctest-unsupported/testnames | 1 + testing/btest/plugins/doctest-disabled.zeek | 12 +++++++++ .../plugins/doctest-plugin/.btest-ignore | 0 .../plugins/doctest-plugin/src/Plugin.cc | 25 +++++++++++++++++++ .../btest/plugins/doctest-plugin/src/Plugin.h | 17 +++++++++++++ testing/btest/plugins/doctest-supported.zeek | 18 +++++++++++++ .../btest/plugins/doctest-unsupported.zeek | 13 ++++++++++ testing/scripts/diff-clean-doctest | 17 +++++++++++++ 11 files changed, 113 insertions(+) create mode 100644 testing/btest/Baseline/plugins.doctest-disabled/testnames create mode 100644 testing/btest/Baseline/plugins.doctest-supported/testnames create mode 100644 testing/btest/Baseline/plugins.doctest-supported/testresults create mode 100644 testing/btest/Baseline/plugins.doctest-unsupported/testnames create mode 100644 testing/btest/plugins/doctest-disabled.zeek create mode 100644 testing/btest/plugins/doctest-plugin/.btest-ignore create mode 100644 testing/btest/plugins/doctest-plugin/src/Plugin.cc create mode 100644 testing/btest/plugins/doctest-plugin/src/Plugin.h create mode 100644 testing/btest/plugins/doctest-supported.zeek create mode 100644 testing/btest/plugins/doctest-unsupported.zeek create mode 100755 testing/scripts/diff-clean-doctest diff --git a/testing/btest/Baseline/plugins.doctest-disabled/testnames b/testing/btest/Baseline/plugins.doctest-disabled/testnames new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/plugins.doctest-disabled/testnames @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/plugins.doctest-supported/testnames b/testing/btest/Baseline/plugins.doctest-supported/testnames new file mode 100644 index 0000000000..88ebfdf6ac --- /dev/null +++ b/testing/btest/Baseline/plugins.doctest-supported/testnames @@ -0,0 +1,2 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +doctest-plugin/demotest diff --git a/testing/btest/Baseline/plugins.doctest-supported/testresults b/testing/btest/Baseline/plugins.doctest-supported/testresults new file mode 100644 index 0000000000..1e4e9af997 --- /dev/null +++ b/testing/btest/Baseline/plugins.doctest-supported/testresults @@ -0,0 +1,7 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +[doctest] doctest version is "x.y.z" +[doctest] run with "--help" for options +=============================================================================== +[doctest] test cases: 1 | 1 passed | 0 failed | XX skipped +[doctest] assertions: 1 | 1 passed | 0 failed | +[doctest] Status: SUCCESS! diff --git a/testing/btest/Baseline/plugins.doctest-unsupported/testnames b/testing/btest/Baseline/plugins.doctest-unsupported/testnames new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/plugins.doctest-unsupported/testnames @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/plugins/doctest-disabled.zeek b/testing/btest/plugins/doctest-disabled.zeek new file mode 100644 index 0000000000..780f280e3b --- /dev/null +++ b/testing/btest/plugins/doctest-disabled.zeek @@ -0,0 +1,12 @@ +# This requires Zeek with unit test support. The following errors if disabled. +# @TEST-REQUIRES: zeek --test -h >/dev/null + +# @TEST-EXEC: ${DIST}/auxil/zeek-aux/plugin-support/init-plugin -u . Demo Doctest +# @TEST-EXEC: cp -r %DIR/doctest-plugin/* . + +# Build the plugin without unit-test support. +# @TEST-EXEC: ./configure --disable-cpp-tests --zeek-dist=${DIST} && make +# +# List the plugin's test names -- there shouldn't be any. +# @TEST-EXEC: ZEEK_PLUGIN_ACTIVATE="Demo::Doctest" ZEEK_PLUGIN_PATH=`pwd` zeek --test -ltc | grep doctest-plugin >testnames || true +# @TEST-EXEC: btest-diff testnames diff --git a/testing/btest/plugins/doctest-plugin/.btest-ignore b/testing/btest/plugins/doctest-plugin/.btest-ignore new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/btest/plugins/doctest-plugin/src/Plugin.cc b/testing/btest/plugins/doctest-plugin/src/Plugin.cc new file mode 100644 index 0000000000..e12c564948 --- /dev/null +++ b/testing/btest/plugins/doctest-plugin/src/Plugin.cc @@ -0,0 +1,25 @@ + +#include "Plugin.h" + +#include + + +namespace btest::plugin::Demo_Doctest { Plugin plugin; } + +using namespace btest::plugin::Demo_Doctest; + +zeek::plugin::Configuration Plugin::Configure() + { + zeek::plugin::Configuration config; + config.name = "Demo::Doctest"; + config.description = "Run doctest in a unit-test enabled build"; + config.version.major = 1; + config.version.minor = 0; + config.version.patch = 0; + return config; + } + +TEST_CASE("doctest-plugin/demotest") + { + CHECK(true); + } diff --git a/testing/btest/plugins/doctest-plugin/src/Plugin.h b/testing/btest/plugins/doctest-plugin/src/Plugin.h new file mode 100644 index 0000000000..ac70241d19 --- /dev/null +++ b/testing/btest/plugins/doctest-plugin/src/Plugin.h @@ -0,0 +1,17 @@ + +#pragma once + +#include + +namespace btest::plugin::Demo_Doctest { + +class Plugin : public zeek::plugin::Plugin +{ +protected: + // Overridden from zeek::plugin::Plugin. + zeek::plugin::Configuration Configure() override; +}; + +extern Plugin plugin; + +} diff --git a/testing/btest/plugins/doctest-supported.zeek b/testing/btest/plugins/doctest-supported.zeek new file mode 100644 index 0000000000..075ab9f2c0 --- /dev/null +++ b/testing/btest/plugins/doctest-supported.zeek @@ -0,0 +1,18 @@ +# This requires Zeek with unit test support. The following errors if disabled. +# @TEST-REQUIRES: zeek --test -h >/dev/null + +# @TEST-EXEC: ${DIST}/auxil/zeek-aux/plugin-support/init-plugin -u . Demo Doctest +# @TEST-EXEC: cp -r %DIR/doctest-plugin/* . + +# Build the plugin with unit-test support. Zeek supports it, so we should +# get runnable tests. +# @TEST-EXEC: ./configure --zeek-dist=${DIST} && make +# +# List the plugin's test names. +# @TEST-EXEC: ZEEK_PLUGIN_ACTIVATE="Demo::Doctest" ZEEK_PLUGIN_PATH=`pwd` zeek --test -ltc | grep doctest-plugin >testnames +# @TEST-EXEC: btest-diff testnames + +# The seed file affects some of the unit tests, so we unset it. +# Running the unit tests implies deterministic mode, -D. +# @TEST-EXEC: ZEEK_SEED_FILE= ZEEK_PLUGIN_ACTIVATE="Demo::Doctest" ZEEK_PLUGIN_PATH=`pwd` zeek --test --test-case='doctest-plugin/*' >testresults +# @TEST-EXEC: TEST_DIFF_CANONIFIER=diff-clean-doctest btest-diff testresults diff --git a/testing/btest/plugins/doctest-unsupported.zeek b/testing/btest/plugins/doctest-unsupported.zeek new file mode 100644 index 0000000000..b1f6480ca4 --- /dev/null +++ b/testing/btest/plugins/doctest-unsupported.zeek @@ -0,0 +1,13 @@ +# This requires Zeek without unit test support. The following errors if enabled. +# @TEST-REQUIRES: ! zeek --test -h >/dev/null + +# @TEST-EXEC: ${DIST}/auxil/zeek-aux/plugin-support/init-plugin -u . Demo Doctest +# @TEST-EXEC: cp -r %DIR/doctest-plugin/* . + +# Build the plugin without disabling unit testing. Zeek doesn't support it, +# so the plugin should automatically build without it. +# @TEST-EXEC: ./configure --zeek-dist=${DIST} && make +# +# List the plugin's test names -- there shouldn't be any. +# @TEST-EXEC: ZEEK_PLUGIN_ACTIVATE="Demo::Doctest" ZEEK_PLUGIN_PATH=`pwd` zeek --test -ltc | grep doctest-plugin >testnames || true +# @TEST-EXEC: btest-diff testnames diff --git a/testing/scripts/diff-clean-doctest b/testing/scripts/diff-clean-doctest new file mode 100755 index 0000000000..613bd2ffc1 --- /dev/null +++ b/testing/scripts/diff-clean-doctest @@ -0,0 +1,17 @@ +#! /usr/bin/env bash +# +# doctest's console reports contain several aspects that change over time: +# - The total number of tests, which we replace with "XX" +# - The version number, which becomes "x.y.z" +# - Spacing in the report, which we normalize to single spaces + +# Get us "modern" regexps with sed. +if [ $(uname) == "Linux" ]; then + sed="sed -r" +else + sed="sed -E" +fi + +$sed -e 's/[0-9]+ skipped/XX skipped/g' | + $sed -e 's/"[0-9]+\.[0-9]+\.[0-9]+"/"x.y.z"/g' | + $sed -e 's/ {2,}/ /g'