ICU-6337 Add callback to initArgs to handle unknown options. Change iotest to take the STANDARD_TEST_FILE name from the argument list.
X-SVN-Rev: 24158
This commit is contained in:
parent
d59b5c5e4c
commit
8b8e11bb47
@ -83,7 +83,7 @@ int main(int argc, const char* const argv[])
|
|||||||
|
|
||||||
gOrigArgc = argc;
|
gOrigArgc = argc;
|
||||||
gOrigArgv = argv;
|
gOrigArgv = argv;
|
||||||
if (!initArgs(argc, argv)) {
|
if (!initArgs(argc, argv, NULL, NULL)) {
|
||||||
/* Error already displayed. */
|
/* Error already displayed. */
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -107,7 +107,7 @@ int main(int argc, const char* const argv[])
|
|||||||
|
|
||||||
while (REPEAT_TESTS > 0) { /* Loop runs once per complete execution of the tests
|
while (REPEAT_TESTS > 0) { /* Loop runs once per complete execution of the tests
|
||||||
* used for -r (repeat) test option. */
|
* used for -r (repeat) test option. */
|
||||||
if (!initArgs(argc, argv)) {
|
if (!initArgs(argc, argv, NULL, NULL)) {
|
||||||
/* Error already displayed. */
|
/* Error already displayed. */
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -433,7 +433,7 @@ UBool ctest_resetICU() {
|
|||||||
char *dataDir = safeGetICUDataDirectory();
|
char *dataDir = safeGetICUDataDirectory();
|
||||||
|
|
||||||
u_cleanup();
|
u_cleanup();
|
||||||
if (!initArgs(gOrigArgc, gOrigArgv)) {
|
if (!initArgs(gOrigArgc, gOrigArgv, NULL, NULL)) {
|
||||||
/* Error already displayed. */
|
/* Error already displayed. */
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
/*
|
/*
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* Copyright (C) 2004-2006, International Business Machines
|
* Copyright (C) 2004-2008, International Business Machines
|
||||||
* Corporation and others. All Rights Reserved.
|
* Corporation and others. All Rights Reserved.
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* file name: filetst.c
|
* file name: filetst.c
|
||||||
* encoding: US-ASCII
|
* encoding: US-ASCII
|
||||||
* tab size: 8 (not used)
|
* tab size: 8 (not used)
|
||||||
* indentation:4
|
* indentation:4
|
||||||
*
|
*
|
||||||
* created on: 2004apr06
|
* created on: 2004apr06
|
||||||
* created by: George Rhoten
|
* created by: George Rhoten
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "iotest.h"
|
#include "iotest.h"
|
||||||
#include "unicode/ustdio.h"
|
#include "unicode/ustdio.h"
|
||||||
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
const char STANDARD_TEST_FILE[] = "iotest-c.txt";
|
const char *STANDARD_TEST_FILE = "iotest-c.txt";
|
||||||
|
|
||||||
|
|
||||||
#if !UCONFIG_NO_FORMATTING
|
#if !UCONFIG_NO_FORMATTING
|
||||||
@ -233,9 +233,17 @@ static void TestFileFromICU(UFILE *myFile) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
u_fgets(myUString, 4, myFile);
|
u_fgets(myUString, 4, myFile);
|
||||||
|
myString[2] = '!';
|
||||||
|
myString[3] = '!';
|
||||||
u_austrncpy(myString, myUString, sizeof(myUString)/sizeof(*myUString));
|
u_austrncpy(myString, myUString, sizeof(myUString)/sizeof(*myUString));
|
||||||
if (myString == NULL || strcmp(myString, "\t\n") != 0) {
|
if (myString == NULL || strcmp(myString, "\t\n") != 0) {
|
||||||
|
#if 0
|
||||||
log_err("u_fgets got \"%s\"\n", myString);
|
log_err("u_fgets got \"%s\"\n", myString);
|
||||||
|
#else
|
||||||
|
log_err("u_fgets got \"\\u%04X\\u%04X\\u%04X\\u%04X\" u_austrncpy got \"\\x%02.2X\\x%02.2X\\x%02.2X\\x%02.2X\".\n",
|
||||||
|
myUString[0], myUString[1], myUString[2], myUString[3],
|
||||||
|
myString[0], myString[1], myString[2] & 0xFF, myString[3]);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (u_fgets(myUString, sizeof(myUString)/sizeof(*myUString), myFile) != myUString) {
|
if (u_fgets(myUString, sizeof(myUString)/sizeof(*myUString), myFile) != myUString) {
|
||||||
|
@ -777,6 +777,25 @@ static void ctest_setICU_DATA() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
U_CDECL_BEGIN
|
||||||
|
/*
|
||||||
|
* Note: this assumes that context is a pointer to STANDARD_TEST_FILE. It would be
|
||||||
|
* cleaner to define an acutal context with a string pointer in it and set STANDARD_TEST_FILE
|
||||||
|
* after the call to initArgs()...
|
||||||
|
*/
|
||||||
|
static int U_CALLCONV argHandler(int arg, int /*argc*/, const char * const argv[], void *context)
|
||||||
|
{
|
||||||
|
const char **str = (const char **) context;
|
||||||
|
|
||||||
|
if (argv[arg][0] != '/' && argv[arg][0] != '-') {
|
||||||
|
*str = argv[arg];
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
U_CDECL_END
|
||||||
|
|
||||||
int main(int argc, char* argv[])
|
int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
int32_t nerrors = 0;
|
int32_t nerrors = 0;
|
||||||
@ -802,7 +821,7 @@ int main(int argc, char* argv[])
|
|||||||
}
|
}
|
||||||
u_cleanup();
|
u_cleanup();
|
||||||
errorCode = U_ZERO_ERROR;
|
errorCode = U_ZERO_ERROR;
|
||||||
if (!initArgs(argc, argv)) {
|
if (!initArgs(argc, argv, argHandler, (void *) &STANDARD_TEST_FILE)) {
|
||||||
/* Error already displayed. */
|
/* Error already displayed. */
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
/*
|
/*
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* Copyright (C) 2004-2005, International Business Machines
|
* Copyright (C) 2004-2008, International Business Machines
|
||||||
* Corporation and others. All Rights Reserved.
|
* Corporation and others. All Rights Reserved.
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* file name: iotest.h
|
* file name: iotest.h
|
||||||
* encoding: US-ASCII
|
* encoding: US-ASCII
|
||||||
* tab size: 8 (not used)
|
* tab size: 8 (not used)
|
||||||
* indentation:4
|
* indentation:4
|
||||||
*
|
*
|
||||||
* created on: 2004apr06
|
* created on: 2004apr06
|
||||||
* created by: George Rhoten
|
* created by: George Rhoten
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef IOTEST_H
|
#ifndef IOTEST_H
|
||||||
#define IOTEST_H 1
|
#define IOTEST_H 1
|
||||||
@ -33,7 +33,7 @@ addStreamTests(TestNode** root);
|
|||||||
U_CDECL_BEGIN
|
U_CDECL_BEGIN
|
||||||
extern const UChar NEW_LINE[];
|
extern const UChar NEW_LINE[];
|
||||||
extern const char C_NEW_LINE[];
|
extern const char C_NEW_LINE[];
|
||||||
extern const char STANDARD_TEST_FILE[];
|
extern const char *STANDARD_TEST_FILE;
|
||||||
U_CDECL_END
|
U_CDECL_END
|
||||||
|
|
||||||
#define STANDARD_TEST_NUM_RANGE 1000
|
#define STANDARD_TEST_NUM_RANGE 1000
|
||||||
|
@ -1068,7 +1068,7 @@ int main(int argc, char* argv[])
|
|||||||
|
|
||||||
startTime = uprv_getUTCtime();
|
startTime = uprv_getUTCtime();
|
||||||
|
|
||||||
if (!initArgs(argc, argv)) {
|
if (!initArgs(argc, argv, NULL, NULL)) {
|
||||||
/* Error already displayed. */
|
/* Error already displayed. */
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -1091,7 +1091,7 @@ int main(int argc, char* argv[])
|
|||||||
u_cleanup();
|
u_cleanup();
|
||||||
errorCode = U_ZERO_ERROR;
|
errorCode = U_ZERO_ERROR;
|
||||||
|
|
||||||
if (!initArgs(argc, argv)) {
|
if (!initArgs(argc, argv, NULL, NULL)) {
|
||||||
/* Error already displayed. */
|
/* Error already displayed. */
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -586,10 +586,11 @@ static void U_CALLCONV ctest_libFree(const void *context, void *mem) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int T_CTEST_EXPORT2
|
int T_CTEST_EXPORT2
|
||||||
initArgs( int argc, const char* const argv[])
|
initArgs( int argc, const char* const argv[], ArgHandlerPtr argHandler, void *context)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int doList = FALSE;
|
int doList = FALSE;
|
||||||
|
int argSkip = 0;
|
||||||
|
|
||||||
VERBOSITY = FALSE;
|
VERBOSITY = FALSE;
|
||||||
ERR_MSG = TRUE;
|
ERR_MSG = TRUE;
|
||||||
@ -686,6 +687,10 @@ initArgs( int argc, const char* const argv[])
|
|||||||
help( argv[0] );
|
help( argv[0] );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
else if (argHandler != NULL && (argSkip = argHandler(i, argc, argv, context)) > 0)
|
||||||
|
{
|
||||||
|
i += argSkip - 1;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("* unknown option: %s\n", argv[i]);
|
printf("* unknown option: %s\n", argv[i]);
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
/*
|
/*
|
||||||
********************************************************************************
|
********************************************************************************
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2007, International Business Machines
|
* Copyright (C) 1996-2008, International Business Machines
|
||||||
* Corporation and others. All Rights Reserved.
|
* Corporation and others. All Rights Reserved.
|
||||||
*
|
*
|
||||||
********************************************************************************
|
********************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef CTEST_H
|
#ifndef CTEST_H
|
||||||
#define CTEST_H
|
#define CTEST_H
|
||||||
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
U_CDECL_BEGIN
|
U_CDECL_BEGIN
|
||||||
typedef void (U_CALLCONV *TestFunctionPtr)(void);
|
typedef void (U_CALLCONV *TestFunctionPtr)(void);
|
||||||
|
typedef int (U_CALLCONV *ArgHandlerPtr)(int arg, int argc, const char* const argv[], void *context);
|
||||||
typedef struct TestNode TestNode;
|
typedef struct TestNode TestNode;
|
||||||
U_CDECL_END
|
U_CDECL_END
|
||||||
|
|
||||||
@ -193,7 +194,7 @@ log_data_err(const char *pattern, ...);
|
|||||||
* This must be called before runTests.
|
* This must be called before runTests.
|
||||||
*/
|
*/
|
||||||
T_CTEST_API int T_CTEST_EXPORT2
|
T_CTEST_API int T_CTEST_EXPORT2
|
||||||
initArgs( int argc, const char* const argv[]);
|
initArgs( int argc, const char* const argv[], ArgHandlerPtr argHandler, void *context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processes the command line arguments.
|
* Processes the command line arguments.
|
||||||
|
Loading…
Reference in New Issue
Block a user