OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 17 matching lines...) Expand all Loading... |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 | 30 |
31 #ifndef WebUnitTests_h | 31 #ifndef WebUnitTests_h |
32 #define WebUnitTests_h | 32 #define WebUnitTests_h |
33 | 33 |
34 #include "public/platform/WebCommon.h" | 34 #include "public/platform/WebCommon.h" |
35 | 35 |
36 namespace blink { | 36 namespace blink { |
37 | 37 |
38 // In chromium multi-dll build, webkit unittest code are compiled in | 38 // In a chromium multi-dll build, blink unittest code is compiled into |
39 // blink_web.dll. This means the test suite object needs to be initialized | 39 // blink_web.dll, since some of the tests cover unexported methods. |
40 // inside Blink. | |
41 // | 40 // |
42 // However, the webkit unittest code needs to also initialize/teardown. | 41 // While gtest does support running tests in libraries, the chromium gtest is |
43 // This leads to the API here, which has explicit managment of the TestSuite | 42 // not built with shared library support. As a result, if the test runner tries |
44 // lifetime. | 43 // to instantiate the test suite outside of blink_web.dll, it won't correctly |
45 | 44 // register the tests. In order to get around that, blink_web.dll exports this |
46 // Initialize the global testSuite object inside blink_web.dll | 45 // helper function to instantiate and run the test suite in the right module. |
47 BLINK_EXPORT void InitTestSuite(int argc, char** argv); | 46 // |
48 | 47 // Unfortunately, to make things more complicated, blink tests require some test |
49 // Runs all tests found inside blink_web.dll | 48 // support initialization in the content layer. Since the content layer depends |
50 BLINK_EXPORT int RunAllUnitTests(); | 49 // on blink_web.dll, runWebTests() can't initialize it directly since that |
51 | 50 // introduces a dependency cycle. |
52 // Deletes the global testSuite object inside blink_web.dll | 51 // |
53 BLINK_EXPORT void DeleteTestSuite(); | 52 // To get around that, runWebTests() allows the caller to supply hooks to |
| 53 // execute code before and after running tests. |
| 54 BLINK_EXPORT int runWebTests(int argc, char** argv, void (*preTestHook)(void), v
oid (*postTestHook)(void)); |
54 | 55 |
55 } // namespace blink | 56 } // namespace blink |
56 | 57 |
57 #endif | 58 #endif |
OLD | NEW |