aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Bachmeyer <jcb@gnu.org>2022-11-29 23:08:42 -0600
committerJacob Bachmeyer <jcb@gnu.org>2022-11-29 23:08:42 -0600
commit5b0b2df48b0d84086c0050628e95bd93eca94a38 (patch)
tree35c239a8098f99e6a881d6ba673409a0116cc559
parent907d26ddf2551d6d6aecccd136c38ba93cc80d06 (diff)
Add tests for mixed C/C++ unit test library usage
-rw-r--r--ChangeLog7
-rw-r--r--Makefile.am4
-rw-r--r--Makefile.in19
-rw-r--r--testsuite/libdejagnu/unit-ccxxmix.cxx78
-rw-r--r--testsuite/libdejagnu/unit.exp6
5 files changed, 111 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 693f077..ce4cdc6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2022-11-29 Jacob Bachmeyer <jcb@gnu.org>
+ * Makefile.in: Regenerate.
+ * Makefile.am (check_PROGRAMS): Add testsuite/libdejagnu/unit-ccxxmix.
+ (testsuite_libdejagnu_unit_ccxxmix_SOURCES): Add.
+ * testsuite/libdejagnu/unit.exp: Add tests for C/C++ mixed usage.
+ * testsuite/libdejagnu/unit-ccxxmix.cxx: New file.
+
* testsuite/libdejagnu/unit.exp: Add note that tests for the
framework side of the unit testing protocol are located in
testsuite/runtest.main/stats.exp and its nested testsuite.
@@ -17,7 +23,6 @@
* Makefile.am (check_PROGRAMS): Add testsuite/libdejagnu/unit-cxx.
(testsuite_libdejagnu_unit_cxx_SOURCES): Add.
* testsuite/libdejagnu/unit.exp: Add tests for C++ unit test API.
-
* testsuite/libdejagnu/unit-cxx.cxx: New file.
* dejagnu.h (TestState::totals): Emit header line, like the C version.
diff --git a/Makefile.am b/Makefile.am
index 41243c8..41f8579 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -232,9 +232,11 @@ RUNTEST = ${top_srcdir}/runtest
AM_CPPFLAGS = -I$(top_srcdir)
check_PROGRAMS = \
testsuite/libdejagnu/unit-c \
- testsuite/libdejagnu/unit-cxx
+ testsuite/libdejagnu/unit-cxx \
+ testsuite/libdejagnu/unit-ccxxmix
testsuite_libdejagnu_unit_c_SOURCES = testsuite/libdejagnu/unit-c.c
testsuite_libdejagnu_unit_cxx_SOURCES = testsuite/libdejagnu/unit-cxx.cxx
+testsuite_libdejagnu_unit_ccxxmix_SOURCES = testsuite/libdejagnu/unit-ccxxmix.cxx
# Documentation.
diff --git a/Makefile.in b/Makefile.in
index cdf958d..f6965a5 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -109,7 +109,8 @@ NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
check_PROGRAMS = testsuite/libdejagnu/unit-c$(EXEEXT) \
- testsuite/libdejagnu/unit-cxx$(EXEEXT)
+ testsuite/libdejagnu/unit-cxx$(EXEEXT) \
+ testsuite/libdejagnu/unit-ccxxmix$(EXEEXT)
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
@@ -129,6 +130,11 @@ am_testsuite_libdejagnu_unit_c_OBJECTS = \
testsuite_libdejagnu_unit_c_OBJECTS = \
$(am_testsuite_libdejagnu_unit_c_OBJECTS)
testsuite_libdejagnu_unit_c_LDADD = $(LDADD)
+am_testsuite_libdejagnu_unit_ccxxmix_OBJECTS = \
+ testsuite/libdejagnu/unit-ccxxmix.$(OBJEXT)
+testsuite_libdejagnu_unit_ccxxmix_OBJECTS = \
+ $(am_testsuite_libdejagnu_unit_ccxxmix_OBJECTS)
+testsuite_libdejagnu_unit_ccxxmix_LDADD = $(LDADD)
am_testsuite_libdejagnu_unit_cxx_OBJECTS = \
testsuite/libdejagnu/unit-cxx.$(OBJEXT)
testsuite_libdejagnu_unit_cxx_OBJECTS = \
@@ -209,8 +215,10 @@ am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
am__v_CXXLD_0 = @echo " CXXLD " $@;
am__v_CXXLD_1 =
SOURCES = $(testsuite_libdejagnu_unit_c_SOURCES) \
+ $(testsuite_libdejagnu_unit_ccxxmix_SOURCES) \
$(testsuite_libdejagnu_unit_cxx_SOURCES)
DIST_SOURCES = $(testsuite_libdejagnu_unit_c_SOURCES) \
+ $(testsuite_libdejagnu_unit_ccxxmix_SOURCES) \
$(testsuite_libdejagnu_unit_cxx_SOURCES)
AM_V_DVIPS = $(am__v_DVIPS_@AM_V@)
am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@)
@@ -593,6 +601,7 @@ RUNTEST = ${top_srcdir}/runtest
AM_CPPFLAGS = -I$(top_srcdir)
testsuite_libdejagnu_unit_c_SOURCES = testsuite/libdejagnu/unit-c.c
testsuite_libdejagnu_unit_cxx_SOURCES = testsuite/libdejagnu/unit-cxx.cxx
+testsuite_libdejagnu_unit_ccxxmix_SOURCES = testsuite/libdejagnu/unit-ccxxmix.cxx
# Documentation.
TEXINFO_TEX = doc/texinfo.tex
@@ -656,6 +665,13 @@ testsuite/libdejagnu/unit-c.$(OBJEXT): \
testsuite/libdejagnu/unit-c$(EXEEXT): $(testsuite_libdejagnu_unit_c_OBJECTS) $(testsuite_libdejagnu_unit_c_DEPENDENCIES) $(EXTRA_testsuite_libdejagnu_unit_c_DEPENDENCIES) testsuite/libdejagnu/$(am__dirstamp)
@rm -f testsuite/libdejagnu/unit-c$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(testsuite_libdejagnu_unit_c_OBJECTS) $(testsuite_libdejagnu_unit_c_LDADD) $(LIBS)
+testsuite/libdejagnu/unit-ccxxmix.$(OBJEXT): \
+ testsuite/libdejagnu/$(am__dirstamp) \
+ testsuite/libdejagnu/$(DEPDIR)/$(am__dirstamp)
+
+testsuite/libdejagnu/unit-ccxxmix$(EXEEXT): $(testsuite_libdejagnu_unit_ccxxmix_OBJECTS) $(testsuite_libdejagnu_unit_ccxxmix_DEPENDENCIES) $(EXTRA_testsuite_libdejagnu_unit_ccxxmix_DEPENDENCIES) testsuite/libdejagnu/$(am__dirstamp)
+ @rm -f testsuite/libdejagnu/unit-ccxxmix$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(testsuite_libdejagnu_unit_ccxxmix_OBJECTS) $(testsuite_libdejagnu_unit_ccxxmix_LDADD) $(LIBS)
testsuite/libdejagnu/unit-cxx.$(OBJEXT): \
testsuite/libdejagnu/$(am__dirstamp) \
testsuite/libdejagnu/$(DEPDIR)/$(am__dirstamp)
@@ -742,6 +758,7 @@ distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@testsuite/libdejagnu/$(DEPDIR)/unit-c.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@testsuite/libdejagnu/$(DEPDIR)/unit-ccxxmix.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@testsuite/libdejagnu/$(DEPDIR)/unit-cxx.Po@am__quote@
.c.o:
diff --git a/testsuite/libdejagnu/unit-ccxxmix.cxx b/testsuite/libdejagnu/unit-ccxxmix.cxx
new file mode 100644
index 0000000..a57b073
--- /dev/null
+++ b/testsuite/libdejagnu/unit-ccxxmix.cxx
@@ -0,0 +1,78 @@
+// Exerciser for Dejagnu C/C++ unit test support library mixed usage
+//
+// Copyright (C) 2022 Free Software Foundation, Inc.
+//
+// This file is part of DejaGnu.
+//
+// DejaGnu is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// DejaGnu is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with DejaGnu; if not, write to the Free Software Foundation,
+// Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// This file was written by Jacob Bachmeyer.
+
+// This version of the program allows verifying that the shared counters
+// between the C API and the C++ API really are shared as documented.
+
+#include <stdio.h>
+#include <string.h>
+
+#include <cstring>
+#include <iostream>
+
+#include "dejagnu.h"
+
+TestState DGT;
+
+int
+main(int argc, char ** argv)
+{
+ if (argc < 2) {
+ std::cerr <<"usage: " <<argv[0] <<" <test name>..."<<std::endl
+ <<"see source for details" <<std::endl;
+ return 2;
+ }
+
+ for (int i = 1; i < argc; i++ ) {
+ if (i & 1) { // alternate with each test on the command line
+ if (!std::strcmp("pass", argv[i])) DGT.pass("test");
+ else if (!std::strcmp("xpass", argv[i])) DGT.xpass("test");
+ else if (!std::strcmp("fail", argv[i])) DGT.fail("test");
+ else if (!std::strcmp("xfail", argv[i])) DGT.xfail("test");
+ else if (!std::strcmp("untested", argv[i])) DGT.untested("test");
+ else if (!std::strcmp("unresolved", argv[i])) DGT.unresolved("test");
+ else if (!std::strcmp("unsupported", argv[i])) DGT.unsupported("test");
+ else if (!std::strcmp("note", argv[i])) DGT.note("test");
+ else {
+ std::cerr <<argv[0] <<": unknown test `" <<argv[i] <<"'" <<std::endl;
+ return 2;
+ }
+ } else { // use C API for every other test
+ if (!strcmp("pass", argv[i])) pass("test");
+ else if (!strcmp("xpass", argv[i])) xpass("test");
+ else if (!strcmp("fail", argv[i])) fail("test");
+ else if (!strcmp("xfail", argv[i])) xfail("test");
+ else if (!strcmp("untested", argv[i])) untested("test");
+ else if (!strcmp("unresolved", argv[i])) unresolved("test");
+ else if (!strcmp("unsupported", argv[i])) unsupported("test");
+ else if (!strcmp("note", argv[i])) note("test");
+ else {
+ fprintf(stderr, "%s: unknown test `%s'\n", argv[0], argv[i]);
+ return 2;
+ }
+ }
+ }
+
+ return 0;
+}
+
+// EOF
diff --git a/testsuite/libdejagnu/unit.exp b/testsuite/libdejagnu/unit.exp
index abbcf8a..34da7b4 100644
--- a/testsuite/libdejagnu/unit.exp
+++ b/testsuite/libdejagnu/unit.exp
@@ -136,3 +136,9 @@ foreach language {c cxx} {
note pass fail xpass xfail untested unresolved unsupported
}
}
+
+test_libdejagnu_unit ccxxmix {
+ {pass pass xpass xfail xfail xpass}
+ {fail fail xfail xpass xpass xfail}
+ {untested unresolved unsupported untested unresolved unsupported}
+}