1 /* Run the Expat test suite
2 __ __ _
3 ___\ \/ /_ __ __ _| |_
4 / _ \\ /| '_ \ / _` | __|
5 | __// \| |_) | (_| | |_
6 \___/_/\_\ .__/ \__,_|\__|
7 |_| XML parser
8
9 Copyright (c) 2001-2006 Fred L. Drake, Jr. <[email protected]>
10 Copyright (c) 2003 Greg Stein <[email protected]>
11 Copyright (c) 2005-2007 Steven Solie <[email protected]>
12 Copyright (c) 2005-2012 Karl Waclawek <[email protected]>
13 Copyright (c) 2016-2023 Sebastian Pipping <[email protected]>
14 Copyright (c) 2017-2022 Rhodri James <[email protected]>
15 Copyright (c) 2017 Joe Orton <[email protected]>
16 Copyright (c) 2017 José Gutiérrez de la Concha <[email protected]>
17 Copyright (c) 2018 Marco Maggi <[email protected]>
18 Copyright (c) 2019 David Loffredo <[email protected]>
19 Copyright (c) 2020 Tim Gates <[email protected]>
20 Copyright (c) 2021 Donghee Na <[email protected]>
21 Copyright (c) 2022 Sean McBride <[email protected]>
22 Copyright (c) 2023 Sony Corporation / Snild Dolkow <[email protected]>
23 Licensed under the MIT license:
24
25 Permission is hereby granted, free of charge, to any person obtaining
26 a copy of this software and associated documentation files (the
27 "Software"), to deal in the Software without restriction, including
28 without limitation the rights to use, copy, modify, merge, publish,
29 distribute, sublicense, and/or sell copies of the Software, and to permit
30 persons to whom the Software is furnished to do so, subject to the
31 following conditions:
32
33 The above copyright notice and this permission notice shall be included
34 in all copies or substantial portions of the Software.
35
36 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
37 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
38 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
39 NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
40 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
41 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
42 USE OR OTHER DEALINGS IN THE SOFTWARE.
43 */
44
45 #include "expat_config.h"
46
47 #include <stdio.h>
48 #include <string.h>
49
50 #include "expat.h"
51 #include "internal.h"
52 #include "minicheck.h"
53 #include "common.h"
54
55 #include "basic_tests.h"
56 #include "ns_tests.h"
57 #include "misc_tests.h"
58 #include "alloc_tests.h"
59 #include "nsalloc_tests.h"
60 #include "acc_tests.h"
61
62 XML_Parser g_parser = NULL;
63
64 static Suite *
make_suite(void)65 make_suite(void) {
66 Suite *s = suite_create("basic");
67
68 make_basic_test_case(s);
69 make_namespace_test_case(s);
70 make_miscellaneous_test_case(s);
71 make_alloc_test_case(s);
72 make_nsalloc_test_case(s);
73 #if XML_GE == 1
74 make_accounting_test_case(s);
75 #endif
76
77 return s;
78 }
79
80 int
main(int argc,char * argv[])81 main(int argc, char *argv[]) {
82 int i, nf;
83 int verbosity = CK_NORMAL;
84 Suite *s = make_suite();
85 SRunner *sr = srunner_create(s);
86
87 for (i = 1; i < argc; ++i) {
88 char *opt = argv[i];
89 if (strcmp(opt, "-v") == 0 || strcmp(opt, "--verbose") == 0)
90 verbosity = CK_VERBOSE;
91 else if (strcmp(opt, "-q") == 0 || strcmp(opt, "--quiet") == 0)
92 verbosity = CK_SILENT;
93 else {
94 fprintf(stderr, "runtests: unknown option '%s'\n", opt);
95 return 2;
96 }
97 }
98 if (verbosity != CK_SILENT)
99 printf("Expat version: %" XML_FMT_STR "\n", XML_ExpatVersion());
100
101 for (g_chunkSize = 0; g_chunkSize <= 5; g_chunkSize++) {
102 for (int enabled = 0; enabled <= 1; ++enabled) {
103 char context[100];
104 g_reparseDeferralEnabledDefault = enabled;
105 snprintf(context, sizeof(context), "chunksize=%d deferral=%d",
106 g_chunkSize, enabled);
107 context[sizeof(context) - 1] = '\0';
108 srunner_run_all(sr, context, verbosity);
109 }
110 }
111 srunner_summarize(sr, verbosity);
112 nf = srunner_ntests_failed(sr);
113 srunner_free(sr);
114
115 return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
116 }
117