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