| Index: testing/multiprocess_func_list.h
|
| diff --git a/testing/multiprocess_func_list.h b/testing/multiprocess_func_list.h
|
| index 6ba84954feec0ef31ba6d767e062ae92c4bb2f5f..984e96f7e968d5dcea37351e4169c93cd2308da7 100644
|
| --- a/testing/multiprocess_func_list.h
|
| +++ b/testing/multiprocess_func_list.h
|
| @@ -29,13 +29,20 @@
|
| namespace multi_process_function_list {
|
|
|
| // Type for child process main functions.
|
| -typedef int (*ChildFunctionPtr)();
|
| +typedef int (*TestMainFunctionPtr)();
|
| +
|
| +// Type for child setup functions.
|
| +typedef void (*SetupFunctionPtr)();
|
|
|
| // Helper class to append a test function to the global mapping.
|
| // Used by the MULTIPROCESS_TEST_MAIN macro.
|
| class AppendMultiProcessTest {
|
| public:
|
| - AppendMultiProcessTest(std::string test_name, ChildFunctionPtr func_ptr);
|
| + // |main_func_ptr| is the main function that is run in the child process.
|
| + // |setup_func_ptr| is a function run when the global mapping is added.
|
| + AppendMultiProcessTest(std::string test_name,
|
| + TestMainFunctionPtr main_func_ptr,
|
| + SetupFunctionPtr setup_func_ptr);
|
| };
|
|
|
| // Invoke the main function of a test previously registered with
|
| @@ -45,10 +52,16 @@ int InvokeChildProcessTest(std::string test_name);
|
| // This macro creates a global MultiProcessTest::AppendMultiProcessTest object
|
| // whose constructor does the work of adding the global mapping.
|
| #define MULTIPROCESS_TEST_MAIN(test_main) \
|
| + MULTIPROCESS_TEST_MAIN_WITH_SETUP(test_main, NULL)
|
| +
|
| +// Same as above but lets callers specify a setup method that is run in the
|
| +// child process, just before the main function is run. This facilitates
|
| +// adding a generic one-time setup function for multiple tests.
|
| +#define MULTIPROCESS_TEST_MAIN_WITH_SETUP(test_main, test_setup) \
|
| int test_main(); \
|
| namespace { \
|
| multi_process_function_list::AppendMultiProcessTest \
|
| - AddMultiProcessTest##_##test_main(#test_main, (test_main)); \
|
| + AddMultiProcessTest##_##test_main(#test_main, (test_main), (test_setup)); \
|
| } \
|
| int test_main()
|
|
|
|
|