diff options
author | Jacob Bachmeyer <jcb@gnu.org> | 2022-11-29 23:08:42 -0600 |
---|---|---|
committer | Jacob Bachmeyer <jcb@gnu.org> | 2022-11-29 23:08:42 -0600 |
commit | 5b0b2df48b0d84086c0050628e95bd93eca94a38 (patch) | |
tree | 35c239a8098f99e6a881d6ba673409a0116cc559 | |
parent | 907d26ddf2551d6d6aecccd136c38ba93cc80d06 (diff) | |
download | dejagnu-5b0b2df48b0d84086c0050628e95bd93eca94a38.zip dejagnu-5b0b2df48b0d84086c0050628e95bd93eca94a38.tar.gz dejagnu-5b0b2df48b0d84086c0050628e95bd93eca94a38.tar.bz2 |
Add tests for mixed C/C++ unit test library usage
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | Makefile.am | 4 | ||||
-rw-r--r-- | Makefile.in | 19 | ||||
-rw-r--r-- | testsuite/libdejagnu/unit-ccxxmix.cxx | 78 | ||||
-rw-r--r-- | testsuite/libdejagnu/unit.exp | 6 |
5 files changed, 111 insertions, 3 deletions
@@ -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} +} |