xref: /freebsd/contrib/expat/tests/runtests.c (revision 4543ef51)
10a48773fSEric van Gyzen /* Run the Expat test suite
20a48773fSEric van Gyzen                             __  __            _
30a48773fSEric van Gyzen                          ___\ \/ /_ __   __ _| |_
40a48773fSEric van Gyzen                         / _ \\  /| '_ \ / _` | __|
50a48773fSEric van Gyzen                        |  __//  \| |_) | (_| | |_
60a48773fSEric van Gyzen                         \___/_/\_\ .__/ \__,_|\__|
70a48773fSEric van Gyzen                                  |_| XML parser
8220ed979SColeman Kane 
9cc68614dSXin LI    Copyright (c) 2001-2006 Fred L. Drake, Jr. <fdrake@users.sourceforge.net>
10cc68614dSXin LI    Copyright (c) 2003      Greg Stein <gstein@users.sourceforge.net>
11ac69e5d4SEric van Gyzen    Copyright (c) 2005-2007 Steven Solie <steven@solie.ca>
12cc68614dSXin LI    Copyright (c) 2005-2012 Karl Waclawek <karl@waclawek.net>
134543ef51SXin LI    Copyright (c) 2016-2023 Sebastian Pipping <sebastian@pipping.org>
14dc58b3fcSXin LI    Copyright (c) 2017-2022 Rhodri James <rhodri@wildebeest.org.uk>
15cc68614dSXin LI    Copyright (c) 2017      Joe Orton <jorton@redhat.com>
16cc68614dSXin LI    Copyright (c) 2017      José Gutiérrez de la Concha <jose@zeroc.com>
17cc68614dSXin LI    Copyright (c) 2018      Marco Maggi <marco.maggi-ipsu@poste.it>
18cc68614dSXin LI    Copyright (c) 2019      David Loffredo <loffredo@steptools.com>
19cc68614dSXin LI    Copyright (c) 2020      Tim Gates <tim.gates@iress.com>
204543ef51SXin LI    Copyright (c) 2021      Donghee Na <donghee.na@python.org>
214543ef51SXin LI    Copyright (c) 2022      Sean McBride <sean@rogue-research.com>
224543ef51SXin LI    Copyright (c) 2023      Sony Corporation / Snild Dolkow <snild@sony.com>
230a48773fSEric van Gyzen    Licensed under the MIT license:
240a48773fSEric van Gyzen 
250a48773fSEric van Gyzen    Permission is  hereby granted,  free of charge,  to any  person obtaining
260a48773fSEric van Gyzen    a  copy  of  this  software   and  associated  documentation  files  (the
270a48773fSEric van Gyzen    "Software"),  to  deal in  the  Software  without restriction,  including
280a48773fSEric van Gyzen    without  limitation the  rights  to use,  copy,  modify, merge,  publish,
290a48773fSEric van Gyzen    distribute, sublicense, and/or sell copies of the Software, and to permit
300a48773fSEric van Gyzen    persons  to whom  the Software  is  furnished to  do so,  subject to  the
310a48773fSEric van Gyzen    following conditions:
320a48773fSEric van Gyzen 
330a48773fSEric van Gyzen    The above copyright  notice and this permission notice  shall be included
340a48773fSEric van Gyzen    in all copies or substantial portions of the Software.
350a48773fSEric van Gyzen 
360a48773fSEric van Gyzen    THE  SOFTWARE  IS  PROVIDED  "AS  IS",  WITHOUT  WARRANTY  OF  ANY  KIND,
370a48773fSEric van Gyzen    EXPRESS  OR IMPLIED,  INCLUDING  BUT  NOT LIMITED  TO  THE WARRANTIES  OF
380a48773fSEric van Gyzen    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
390a48773fSEric van Gyzen    NO EVENT SHALL THE AUTHORS OR  COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
400a48773fSEric van Gyzen    DAMAGES OR  OTHER LIABILITY, WHETHER  IN AN  ACTION OF CONTRACT,  TORT OR
410a48773fSEric van Gyzen    OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
420a48773fSEric van Gyzen    USE OR OTHER DEALINGS IN THE SOFTWARE.
43220ed979SColeman Kane */
44220ed979SColeman Kane 
454543ef51SXin LI #include "expat_config.h"
46cc68614dSXin LI 
475bb6a25fSPoul-Henning Kamp #include <stdio.h>
485bb6a25fSPoul-Henning Kamp #include <string.h>
490a48773fSEric van Gyzen 
505bb6a25fSPoul-Henning Kamp #include "expat.h"
51cc68614dSXin LI #include "internal.h"
52220ed979SColeman Kane #include "minicheck.h"
534543ef51SXin LI #include "common.h"
54220ed979SColeman Kane 
554543ef51SXin LI #include "basic_tests.h"
564543ef51SXin LI #include "ns_tests.h"
574543ef51SXin LI #include "misc_tests.h"
584543ef51SXin LI #include "alloc_tests.h"
594543ef51SXin LI #include "nsalloc_tests.h"
604543ef51SXin LI #include "acc_tests.h"
615bb6a25fSPoul-Henning Kamp 
624543ef51SXin LI XML_Parser g_parser = NULL;
63cc68614dSXin LI 
645bb6a25fSPoul-Henning Kamp static Suite *
make_suite(void)656b2c1e49SXin LI make_suite(void) {
665bb6a25fSPoul-Henning Kamp   Suite *s = suite_create("basic");
675bb6a25fSPoul-Henning Kamp 
684543ef51SXin LI   make_basic_test_case(s);
694543ef51SXin LI   make_namespace_test_case(s);
704543ef51SXin LI   make_miscellaneous_test_case(s);
714543ef51SXin LI   make_alloc_test_case(s);
724543ef51SXin LI   make_nsalloc_test_case(s);
734543ef51SXin LI #if XML_GE == 1
744543ef51SXin LI   make_accounting_test_case(s);
75cc68614dSXin LI #endif
76cc68614dSXin LI 
775bb6a25fSPoul-Henning Kamp   return s;
785bb6a25fSPoul-Henning Kamp }
795bb6a25fSPoul-Henning Kamp 
805bb6a25fSPoul-Henning Kamp int
main(int argc,char * argv[])816b2c1e49SXin LI main(int argc, char *argv[]) {
825bb6a25fSPoul-Henning Kamp   int i, nf;
835bb6a25fSPoul-Henning Kamp   int verbosity = CK_NORMAL;
84220ed979SColeman Kane   Suite *s = make_suite();
855bb6a25fSPoul-Henning Kamp   SRunner *sr = srunner_create(s);
865bb6a25fSPoul-Henning Kamp 
875bb6a25fSPoul-Henning Kamp   for (i = 1; i < argc; ++i) {
885bb6a25fSPoul-Henning Kamp     char *opt = argv[i];
895bb6a25fSPoul-Henning Kamp     if (strcmp(opt, "-v") == 0 || strcmp(opt, "--verbose") == 0)
905bb6a25fSPoul-Henning Kamp       verbosity = CK_VERBOSE;
915bb6a25fSPoul-Henning Kamp     else if (strcmp(opt, "-q") == 0 || strcmp(opt, "--quiet") == 0)
925bb6a25fSPoul-Henning Kamp       verbosity = CK_SILENT;
935bb6a25fSPoul-Henning Kamp     else {
945bb6a25fSPoul-Henning Kamp       fprintf(stderr, "runtests: unknown option '%s'\n", opt);
955bb6a25fSPoul-Henning Kamp       return 2;
965bb6a25fSPoul-Henning Kamp     }
975bb6a25fSPoul-Henning Kamp   }
98220ed979SColeman Kane   if (verbosity != CK_SILENT)
990a48773fSEric van Gyzen     printf("Expat version: %" XML_FMT_STR "\n", XML_ExpatVersion());
1004543ef51SXin LI 
1014543ef51SXin LI   for (g_chunkSize = 0; g_chunkSize <= 5; g_chunkSize++) {
1024543ef51SXin LI     for (int enabled = 0; enabled <= 1; ++enabled) {
1034543ef51SXin LI       char context[100];
1044543ef51SXin LI       g_reparseDeferralEnabledDefault = enabled;
1054543ef51SXin LI       snprintf(context, sizeof(context), "chunksize=%d deferral=%d",
1064543ef51SXin LI                g_chunkSize, enabled);
1074543ef51SXin LI       context[sizeof(context) - 1] = '\0';
1084543ef51SXin LI       srunner_run_all(sr, context, verbosity);
1094543ef51SXin LI     }
1104543ef51SXin LI   }
1114543ef51SXin LI   srunner_summarize(sr, verbosity);
1125bb6a25fSPoul-Henning Kamp   nf = srunner_ntests_failed(sr);
1135bb6a25fSPoul-Henning Kamp   srunner_free(sr);
1145bb6a25fSPoul-Henning Kamp 
1155bb6a25fSPoul-Henning Kamp   return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
1165bb6a25fSPoul-Henning Kamp }
117