tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ctest.h (8995B)


      1 // © 2016 and later: Unicode, Inc. and others.
      2 // License & terms of use: http://www.unicode.org/copyright.html
      3 /*
      4 ********************************************************************************
      5 *
      6 *   Copyright (C) 1996-2013, International Business Machines
      7 *   Corporation and others.  All Rights Reserved.
      8 *
      9 ********************************************************************************
     10 */
     11 
     12 #ifndef CTEST_H
     13 #define CTEST_H
     14 
     15 #include "unicode/testtype.h"
     16 #include "unicode/utrace.h"
     17 
     18 
     19 /* prototypes *********************************/
     20 
     21 U_CDECL_BEGIN
     22 typedef void (U_CALLCONV *TestFunctionPtr)(void);
     23 typedef int (U_CALLCONV *ArgHandlerPtr)(int arg, int argc, const char* const argv[], void *context);
     24 typedef struct TestNode TestNode;
     25 U_CDECL_END
     26 
     27 /**
     28 * This is use to set or get the option value for REPEAT_TESTS.
     29 * Use with set/getTestOption().
     30 *
     31 * @internal
     32 */
     33 #define REPEAT_TESTS_OPTION 1
     34 
     35 /**
     36 * This is use to set or get the option value for VERBOSITY.
     37 * When option is set to zero to disable log_verbose() messages.
     38 * Otherwise nonzero to see log_verbose() messages.
     39 * Use with set/getTestOption().
     40 *
     41 * @internal
     42 */
     43 #define VERBOSITY_OPTION 2
     44 
     45 /**
     46 * This is use to set or get the option value for ERR_MSG.
     47 * Use with set/getTestOption().
     48 *
     49 * @internal
     50 */
     51 #define ERR_MSG_OPTION 3
     52 
     53 /**
     54 * This is use to set or get the option value for QUICK.
     55 * When option is zero, disable some of the slower tests.
     56 * Otherwise nonzero to run the slower tests.
     57 * Use with set/getTestOption().
     58 *
     59 * @internal
     60 */
     61 #define QUICK_OPTION 4
     62 
     63 /**
     64 * This is use to set or get the option value for WARN_ON_MISSING_DATA.
     65 * When option is nonzero, warn on missing data.
     66 * Otherwise, errors are propagated when data is not available.
     67 * Affects the behavior of log_dataerr.
     68 * Use with set/getTestOption().
     69 *
     70 * @see log_data_err
     71 * @internal
     72 */
     73 #define WARN_ON_MISSING_DATA_OPTION 5
     74 
     75 /**
     76 * This is use to set or get the option value for ICU_TRACE.
     77 * ICU tracing level, is set by command line option.
     78 * Use with set/getTestOption().
     79 *
     80 * @internal
     81 */
     82 #define ICU_TRACE_OPTION 6
     83 
     84 /**
     85 * This is used to set or get the option value for WRITE_GOLDEN_DATA.
     86 * Set to 1 to overwrite golden data files, such as those in testdata/ucptrie.
     87 * Use with set/getTestOption().
     88 */
     89 #define WRITE_GOLDEN_DATA_OPTION 7
     90 
     91 /**
     92 * Maximum amount of memory uprv_malloc should allocate before returning NULL.
     93 *
     94 * @internal
     95 */
     96 extern T_CTEST_EXPORT_API size_t MAX_MEMORY_ALLOCATION;
     97 
     98 /**
     99 * If memory tracing was enabled, contains the number of unfreed allocations.
    100 *
    101 * @internal
    102 */
    103 extern T_CTEST_EXPORT_API int32_t ALLOCATION_COUNT;
    104 
    105 /**
    106 * Pass to setTestOption to decrement the test option value.
    107 *
    108 * @internal
    109 */
    110 #define DECREMENT_OPTION_VALUE -99
    111 
    112 /**
    113 * Gets the test option set on commandline.
    114 *
    115 * @param testOption macro definition for the individual test option
    116 * @return value of test option, zero if option is not set or off
    117 * @internal Internal APIs for testing purpose only
    118 */
    119 T_CTEST_API int32_t T_CTEST_EXPORT2
    120 getTestOption ( int32_t testOption );
    121 
    122 /**
    123 * Sets the test option with value given on commandline.
    124 *
    125 * @param testOption macro definition for the individual test option
    126 * @param value to set the test option to
    127 * @internal Internal APIs for testing purpose only
    128 */
    129 T_CTEST_API void T_CTEST_EXPORT2
    130 setTestOption ( int32_t testOption, int32_t value);
    131 
    132 /**
    133 * Show the names of all nodes.
    134 *
    135 * @param root Subtree of tests.
    136 * @internal Internal APIs for testing purpose only
    137 */
    138 T_CTEST_API void T_CTEST_EXPORT2
    139 showTests ( const TestNode *root);
    140 
    141 /**
    142 * Run a subtree of tests.
    143 *
    144 * @param root Subtree of tests.
    145 * @internal Internal APIs for testing purpose only
    146 */
    147 T_CTEST_API void T_CTEST_EXPORT2
    148 runTests ( const TestNode* root);
    149 
    150 /**
    151 * Add a test to the subtree.
    152 * Example usage:
    153 * <PRE>
    154 *     TestNode* root=NULL;
    155 *     addTest(&root, &mytest, "/a/b/mytest" );
    156 * </PRE>
    157 * @param root Pointer to the root pointer.
    158 * @param test Pointer to 'void function(void)' for actual test.
    159 * @param path Path from root under which test will be placed. Ex. '/a/b/mytest'
    160 * @internal Internal APIs for testing purpose only
    161 */
    162 T_CTEST_API void T_CTEST_EXPORT2
    163 addTest(TestNode** root,
    164        TestFunctionPtr test,
    165        const char *path);
    166 
    167 /**
    168 * Clean up any allocated memory.
    169 * Conditions for calling this function are the same as u_cleanup().
    170 * @see u_cleanup
    171 * @internal Internal APIs for testing purpose only
    172 */
    173 T_CTEST_API void T_CTEST_EXPORT2
    174 cleanUpTestTree(TestNode *tn);
    175 
    176 /**
    177 * Retrieve a specific subtest. (subtree).
    178 *
    179 * @param root Pointer to the root.
    180 * @param path Path relative to the root, Ex. '/a/b'
    181 * @return The subtest, or NULL on failure.
    182 * @internal Internal APIs for testing purpose only
    183 */
    184 T_CTEST_API const TestNode* T_CTEST_EXPORT2
    185 getTest(const TestNode* root,
    186        const char *path);
    187 
    188 
    189 /**
    190 * Log an error message. (printf style)
    191 * @param pattern printf-style format string
    192 * @internal Internal APIs for testing purpose only
    193 */
    194 T_CTEST_API void T_CTEST_EXPORT2
    195 log_err(const char* pattern, ...);
    196 
    197 T_CTEST_API void T_CTEST_EXPORT2
    198 log_err_status(UErrorCode status, const char* pattern, ...);
    199 /**
    200 * Log an informational message. (printf style)
    201 * @param pattern printf-style format string
    202 * @internal Internal APIs for testing purpose only
    203 */
    204 T_CTEST_API void T_CTEST_EXPORT2
    205 log_info(const char* pattern, ...);
    206 
    207 /**
    208 * Log an informational message. (vprintf style)
    209 * @param prefix a string that is output before the pattern and without formatting
    210 * @param pattern printf-style format string
    211 * @param ap variable-arguments list
    212 * @internal Internal APIs for testing purpose only
    213 */
    214 T_CTEST_API void T_CTEST_EXPORT2
    215 vlog_info(const char *prefix, const char *pattern, va_list ap);
    216 
    217 /**
    218 * Log a verbose informational message. (printf style)
    219 * This message will only appear if the global VERBOSITY is nonzero
    220 * @param pattern printf-style format string
    221 * @internal Internal APIs for testing purpose only
    222 */
    223 T_CTEST_API void T_CTEST_EXPORT2
    224 log_verbose(const char* pattern, ...);
    225 
    226 /**
    227 * Log an error message concerning missing data. (printf style)
    228 * If WARN_ON_MISSING_DATA is nonzero, this will case a log_info (warning) to be
    229 * printed, but if it is zero this will produce an error (log_err).
    230 * @param pattern printf-style format string
    231 * @internal Internal APIs for testing purpose only
    232 */
    233 T_CTEST_API void T_CTEST_EXPORT2
    234 log_data_err(const char *pattern, ...);
    235 
    236 /**
    237 * Log a known issue.
    238 * @param ticket ticket number such as "ICU-12345" for ICU tickets or "CLDR-6636" for CLDR tickets.
    239 * @param fmt ...  sprintf-style format, optional message. can be NULL.
    240 * @return true if known issue test should be skipped, false if it should be run
    241 */
    242 T_CTEST_API UBool
    243 T_CTEST_EXPORT2
    244 log_knownIssue(const char *ticket, const char *fmt, ...);
    245 
    246 /**
    247 * Initialize the variables above. This allows the test to set up accordingly
    248 * before running the tests.
    249 * This must be called before runTests.
    250 */
    251 T_CTEST_API int T_CTEST_EXPORT2 
    252 initArgs( int argc, const char* const argv[], ArgHandlerPtr argHandler, void *context);
    253 
    254 /**
    255 * Processes the command line arguments.
    256 * This is a sample implementation
    257 * <PRE>Usage: %s [ -l ] [ -v ] [ -? ] [ /path/to/test ]
    258 *        -l List only, do not run\
    259 *        -v turn OFF verbosity
    260 *        -? print this message</PRE>
    261 * @param root Testnode root with tests already attached to it
    262 * @param argv argument list from main (stdio.h)
    263 * @param argc argument list count from main (stdio.h)
    264 * @return positive for error count, 0 for success, negative for illegal argument
    265 * @internal Internal APIs for testing purpose only
    266 */
    267 T_CTEST_API int T_CTEST_EXPORT2 
    268 runTestRequest(const TestNode* root,
    269            int argc,
    270            const char* const argv[]);
    271 
    272 
    273 T_CTEST_API const char* T_CTEST_EXPORT2
    274 getTestName(void);
    275 
    276 /**
    277 * Append a time delta to str if it is significant (>5 ms) otherwise no change
    278 * @param delta a delta in millis
    279 * @param str a string to append to.
    280 */
    281 T_CTEST_API void T_CTEST_EXPORT2
    282 str_timeDelta(char *str, UDate delta);
    283 
    284 
    285 /* ======== XML (JUnit output) ========= */
    286 
    287 /**
    288 * Set the filename for the XML output. 
    289 * @param fileName file name. Caller must retain storage.
    290 * @return 0 on success, 1 on failure.
    291 */
    292 T_CTEST_API int32_t T_CTEST_EXPORT2
    293 ctest_xml_setFileName(const char *fileName);
    294 
    295 
    296 /**
    297 * Init XML subsystem. Call ctest_xml_setFileName first
    298 * @param rootName the test root name to be written
    299 * @return 0 on success, 1 on failure.
    300 */
    301 T_CTEST_API int32_t T_CTEST_EXPORT2
    302 ctest_xml_init(const char *rootName);
    303 
    304 
    305 /**
    306 * Set the filename for the XML output. Caller must retain storage.
    307 * @return 0 on success, 1 on failure.
    308 */
    309 T_CTEST_API int32_t T_CTEST_EXPORT2
    310 ctest_xml_fini(void);
    311 
    312 
    313 /**
    314 * report a test case
    315 * @return 0 on success, 1 on failure.
    316 */
    317 T_CTEST_API int32_t
    318 T_CTEST_EXPORT2
    319 ctest_xml_testcase(const char *classname, const char *name, const char *time, const char *failMsg);
    320 
    321 #endif