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