1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* ***** BEGIN LICENSE BLOCK *****
3
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
5
* The contents of this file are subject to the Mozilla Public License Version
6
* 1.1 (the "License"); you may not use this file except in compliance with
7
* the License. You may obtain a copy of the License at
8
* http://www.mozilla.org/MPL/
10
* Software distributed under the License is distributed on an "AS IS" basis,
11
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12
* for the specific language governing rights and limitations under the
15
* The Original Code is the Netscape Portable Runtime (NSPR).
17
* The Initial Developer of the Original Code is John Wolfe
18
* Portions created by the Initial Developer are Copyright (C) 1998-2008
19
* the Initial Developer. All Rights Reserved.
23
* Alternatively, the contents of this file may be used under the terms of
24
* either the GNU General Public License Version 2 or later (the "GPL"), or
25
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26
* in which case the provisions of the GPL or the LGPL are applicable instead
27
* of those above. If you wish to allow use of your version of this file only
28
* under the terms of either the GPL or the LGPL, and not to allow others to
29
* use your version of this file under the terms of the MPL, indicate your
30
* decision by deleting the provisions above and replace them with the notice
31
* and other provisions required by the GPL or the LGPL. If you do not delete
32
* the provisions above, a recipient may use your version of this file under
33
* the terms of any one of the MPL, the GPL or the LGPL.
35
* ***** END LICENSE BLOCK ***** */
46
typedef int (*pMainFnc) (int argc, char **argv);
49
#define MAX_ARG_LENGTH 2048
52
/* Set this next global variable to skip down the list of tests */
53
/* A "" string will mean that no modules are skipped */
54
WCHAR * skip_until = TEXT(""); /* */
55
/* WCHAR * skip_until = TEXT("join"); /* */
58
typedef struct TEST_MODULE_ITEM_NAME {
61
} TestModuleItemName, *pTestModuleItemName;
63
#define TEST_MODULE_ITEM(x) { TEXT(x), x }
64
#define END_POINT_MARKER { NULL, NULL }
67
TestModuleItemName test_module_list[] =
69
TEST_MODULE_ITEM("accept"),
70
TEST_MODULE_ITEM("acceptread"),
71
TEST_MODULE_ITEM("acceptreademu"),
72
TEST_MODULE_ITEM("affinity"),
73
TEST_MODULE_ITEM("alarm"),
74
TEST_MODULE_ITEM("anonfm"),
75
TEST_MODULE_ITEM("atomic"),
76
TEST_MODULE_ITEM("attach"),
77
TEST_MODULE_ITEM("bigfile"),
78
TEST_MODULE_ITEM("cleanup"),
79
TEST_MODULE_ITEM("cltsrv"),
80
TEST_MODULE_ITEM("concur"),
81
TEST_MODULE_ITEM("cvar"),
82
TEST_MODULE_ITEM("cvar2"),
83
TEST_MODULE_ITEM("dlltest"),
84
TEST_MODULE_ITEM("dtoa"),
85
TEST_MODULE_ITEM("errcodes"),
86
TEST_MODULE_ITEM("exit"),
87
TEST_MODULE_ITEM("fdcach"),
88
TEST_MODULE_ITEM("fileio"),
89
TEST_MODULE_ITEM("foreign"),
90
TEST_MODULE_ITEM("formattm"),
91
TEST_MODULE_ITEM("fsync"),
92
TEST_MODULE_ITEM("gethost"),
93
TEST_MODULE_ITEM("getproto"),
94
TEST_MODULE_ITEM("i2l"),
95
TEST_MODULE_ITEM("initclk"),
96
TEST_MODULE_ITEM("inrval"),
97
TEST_MODULE_ITEM("instrumt"),
98
TEST_MODULE_ITEM("intrio"),
99
TEST_MODULE_ITEM("intrupt"),
100
TEST_MODULE_ITEM("io_timeout"),
101
TEST_MODULE_ITEM("ioconthr"),
102
TEST_MODULE_ITEM("join"),
103
TEST_MODULE_ITEM("joinkk"),
104
TEST_MODULE_ITEM("joinku"),
105
TEST_MODULE_ITEM("joinuk"),
106
TEST_MODULE_ITEM("joinuu"),
107
TEST_MODULE_ITEM("layer"),
108
TEST_MODULE_ITEM("lazyinit"),
109
TEST_MODULE_ITEM("libfilename"),
110
TEST_MODULE_ITEM("lltest"),
111
TEST_MODULE_ITEM("lock"),
112
TEST_MODULE_ITEM("lockfile"),
113
TEST_MODULE_ITEM("logger"),
114
TEST_MODULE_ITEM("many_cv"),
115
TEST_MODULE_ITEM("multiwait"),
116
TEST_MODULE_ITEM("nameshm1"),
117
TEST_MODULE_ITEM("nblayer"),
118
TEST_MODULE_ITEM("nonblock"),
119
TEST_MODULE_ITEM("ntioto"),
120
TEST_MODULE_ITEM("ntoh"),
121
TEST_MODULE_ITEM("op_2long"),
122
TEST_MODULE_ITEM("op_excl"),
123
TEST_MODULE_ITEM("op_filnf"),
124
TEST_MODULE_ITEM("op_filok"),
125
TEST_MODULE_ITEM("op_nofil"),
126
TEST_MODULE_ITEM("parent"),
127
TEST_MODULE_ITEM("peek"),
128
TEST_MODULE_ITEM("perf"),
129
TEST_MODULE_ITEM("pipeping"),
130
TEST_MODULE_ITEM("pipeping2"),
131
TEST_MODULE_ITEM("pipeself"),
132
TEST_MODULE_ITEM("poll_nm"),
133
TEST_MODULE_ITEM("poll_to"),
134
TEST_MODULE_ITEM("pollable"),
135
TEST_MODULE_ITEM("prftest"),
136
TEST_MODULE_ITEM("primblok"),
137
TEST_MODULE_ITEM("provider"),
138
TEST_MODULE_ITEM("prpollml"),
139
TEST_MODULE_ITEM("ranfile"),
140
TEST_MODULE_ITEM("randseed"),
141
TEST_MODULE_ITEM("rwlocktest"),
142
TEST_MODULE_ITEM("sel_spd"),
143
TEST_MODULE_ITEM("selct_er"),
144
TEST_MODULE_ITEM("selct_nm"),
145
TEST_MODULE_ITEM("selct_to"),
146
TEST_MODULE_ITEM("selintr"),
147
TEST_MODULE_ITEM("sema"),
148
TEST_MODULE_ITEM("semaerr"),
149
TEST_MODULE_ITEM("semaping"),
150
TEST_MODULE_ITEM("sendzlf"),
151
TEST_MODULE_ITEM("server_test"),
152
TEST_MODULE_ITEM("servr_kk"),
153
TEST_MODULE_ITEM("servr_uk"),
154
TEST_MODULE_ITEM("servr_ku"),
155
TEST_MODULE_ITEM("servr_uu"),
156
TEST_MODULE_ITEM("short_thread"),
157
TEST_MODULE_ITEM("sigpipe"),
158
TEST_MODULE_ITEM("socket"),
159
TEST_MODULE_ITEM("sockopt"),
160
TEST_MODULE_ITEM("sockping"),
161
TEST_MODULE_ITEM("sprintf"),
162
TEST_MODULE_ITEM("stack"),
163
TEST_MODULE_ITEM("stdio"),
164
TEST_MODULE_ITEM("str2addr"),
165
TEST_MODULE_ITEM("strod"),
166
TEST_MODULE_ITEM("switch"),
167
TEST_MODULE_ITEM("system"),
168
TEST_MODULE_ITEM("testbit"),
169
TEST_MODULE_ITEM("testfile"),
170
TEST_MODULE_ITEM("threads"),
171
TEST_MODULE_ITEM("timemac"),
172
TEST_MODULE_ITEM("timetest"),
173
TEST_MODULE_ITEM("tpd"),
174
TEST_MODULE_ITEM("udpsrv"),
175
TEST_MODULE_ITEM("vercheck"),
176
TEST_MODULE_ITEM("version"),
177
TEST_MODULE_ITEM("writev"),
178
TEST_MODULE_ITEM("xnotify"),
179
TEST_MODULE_ITEM("zerolen"),
184
int main(int argc, char **argv)
187
char mydir[MAX_ARG_LENGTH];
191
/* Get File Name, strip back to first '\' and what is left is the
192
* path of the executable.
197
TestModuleItemName *p = test_module_list;
201
printf("\nNSPR Test Results\n");
204
GetDateFormat(NULL, NULL, NULL, TEXT("ddd, MMM dd yyyy"), dateWStr, 100);
207
GetTimeFormat(NULL, TIME_NOSECONDS, NULL, TEXT(" - h:mm tt"), timeWStr, 100);
209
wcscat(dateWStr, timeWStr);
212
int rv = WideCharToMultiByte(CP_ACP, NULL, dateWStr, 100, dateStr, 100, NULL, NULL);
214
printf("BEGIN\t%s\n", dateStr);
215
OutputDebugString(L"BEGINNING TEST RUN\n");
217
if ( 0 < wcslen(skip_until) )
219
/* keep going until we find the module at which we want to start */
220
while ( (0 < wcslen(skip_until)) &&
221
(NULL != p) && (NULL != p->pW) && (0 < wcslen(p->pW)) &&
222
(0 != wcscmp(p->pW, skip_until)) )
227
if ( (NULL == p) || (NULL == p->pW) || (0 == wcslen(p->pW)) ) {
228
printf("main: EXITING - no tests to run (Skipped %d tests)\n", skipped);
233
printf(" Test\tResult\n\n");
239
while ( (NULL != p) && (NULL != p->pW) && (0 < wcslen(p->pW)) )
242
BOOL bFailed = FALSE;
246
printf("\nBEGIN TEST %s\n\n", ((NULL != p) ? p->pC : "????")); /* Should be shunted to LOG FILE */
247
wsprintf(wStr, L"BEGIN TEST - %s\n", p->pW);
248
OutputDebugString(wStr);
254
wsprintf(dllName, TEXT("%s.dll"), ((NULL != p) ? p->pW : TEXT("BOGUS_MODULE_NAME")));
256
/* Find and load the DLL */
257
hDll = LoadLibrary(dllName);
261
/* Call the entry point for testing */
262
pMainFnc pMF = (pMainFnc) GetProcAddress( hDll, "nspr_test_runme" );
265
rv = (*pMF)(0, NULL);
268
/* Check the return code (0 == Success) */
275
__except ( 1 ) /* Handle ALL exceptions here */
281
if ( NULL != hDll ) {
288
printf(" %s\t%s\n", ((NULL != p) ? p->pC : "????"), (bFailed ? "FAILED" : "Passed"));
293
wsprintf(str, TEXT("----FAILED----: TEST %s: ------FAILED------\n"), p->pW);
295
wsprintf(str, TEXT("++++PASSED++++: TEST %s: ++++++PASSED++++++\n"), p->pW);
296
OutputDebugString(str);
299
printf("\nEND TEST %s\n\n", ((NULL != p) ? p->pC : "????")); /* Should be shunted to LOG FILE */
304
printf("\n\n**********\nNSPR Test Results:");
305
printf(" Skipped Tests = %d", skipped);
306
printf(" Total Run Tests = %d", total);
307
printf(" Succeeded Tests = %d", succeeded);
308
printf(" Failed Tests = %d\n\n**********\n", failed);
315
int main(int argc, char **argv)
317
printf( "This application is not supported outside of WinCE/WinMobile\n" );