Changeset 124581 in webkit
- Timestamp:
- Aug 3, 2012 1:20:19 AM (12 years ago)
- Location:
- trunk/Tools
- Files:
-
- 1 added
- 29 edited
- 4 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r124579 r124581 1 2012-08-03 Balazs Kelemen <kbalazs@webkit.org> 2 3 All ports should support per test switching of pixel testing 4 https://bugs.webkit.org/show_bug.cgi?id=92398 5 6 Reviewed by Dirk Pranke. 7 8 Teach all test drivers to accept a per test control of whether 9 to dump pixels. Drivers now accept a -p/--pixel-test argument 10 on the standart input that means that running the current 11 test as pixel test is allowed (even if the expected hash is 12 missing). Removed the --pixel-tests command line option since 13 there is no need for it anymore. 14 15 * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp: 16 * DumpRenderTree/DumpRenderTree.gypi: 17 * DumpRenderTree/DumpRenderTree.h: 18 (TestCommand::TestCommand): 19 (TestCommand): 20 * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: 21 * DumpRenderTree/DumpRenderTreeCommon.cpp: Added. 22 (CommandTokenizer): 23 (CommandTokenizer::CommandTokenizer): 24 (CommandTokenizer::pump): 25 (CommandTokenizer::next): 26 (CommandTokenizer::hasNext): 27 (die): 28 (parseInputLine): 29 Common logic to parse the input line from the standard input (or from the command line 30 in standalone mode). Made it somewhat general so we can easily add more arguments if 31 there is a need. 32 33 * DumpRenderTree/chromium/DumpRenderTree.cpp: 34 (runTest): 35 (main): 36 37 * DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/AccessibilityController.cpp. 38 * DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/AccessibilityController.h. 39 * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElement.cpp. 40 * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElement.h. 41 Renamed these files with a Chromium suffix because they were clashing with the common ones used by other ports after adding the root 42 DumpRenderTree directory to the include path. 43 44 * DumpRenderTree/chromium/TestRunner/TestInterfaces.cpp: 45 * DumpRenderTree/chromium/TestShell.cpp: 46 (TestShell::TestShell): 47 (TestShell::runFileTest): 48 (TestShell::dump): 49 * DumpRenderTree/chromium/TestShell.h: 50 (TestParams::TestParams): 51 (TestShell): 52 * DumpRenderTree/efl/CMakeLists.txt: 53 * DumpRenderTree/efl/DumpRenderTree.cpp: 54 (parseCommandLineOptions): 55 (runTest): 56 (shouldDumpPixelsAndCompareWithExpected): 57 (main): 58 * DumpRenderTree/gtk/DumpRenderTree.cpp: 59 (initializeGlobalsFromCommandLineOptions): 60 (dump): 61 (runTest): 62 (main): 63 * DumpRenderTree/mac/DumpRenderTree.mm: 64 (initializeGlobalsFromCommandLineOptions): 65 (dumpRenderTree): 66 (dump): 67 (runTest): 68 * DumpRenderTree/qt/DumpRenderTree.pro: 69 * DumpRenderTree/qt/DumpRenderTreeQt.cpp: 70 (WebCore::DumpRenderTree::DumpRenderTree): 71 (WebCore::DumpRenderTree::open): 72 (WebCore::DumpRenderTree::processLine): 73 (WebCore::DumpRenderTree::dump): 74 * DumpRenderTree/qt/DumpRenderTreeQt.h: 75 (DumpRenderTree): 76 * DumpRenderTree/qt/main.cpp: 77 (isOption): 78 (printUsage): 79 (main): 80 * DumpRenderTree/win/DumpRenderTree.cpp: 81 (dump): 82 (runTest): 83 (dllLauncherEntryPoint): 84 * DumpRenderTree/win/DumpRenderTree.vcproj: 85 * DumpRenderTree/wscript: 86 * DumpRenderTree/wx/DumpRenderTreeWx.cpp: 87 (dump): 88 (runTest): 89 (MyApp::OnInit): 90 * GNUmakefile.am: 91 92 * Scripts/old-run-webkit-tests: 93 * Scripts/old-run-webkit-tests: 94 Pass --pixel-test before the hash. 95 96 * Scripts/webkitpy/layout_tests/port/base.py: 97 (Port.should_run_as_pixel_test): Removed now that all ports supports it. 98 * Scripts/webkitpy/layout_tests/port/driver.py: 99 (Driver.cmd_line): Don't pass --pixel-tests anymore. 100 (Driver._command_from_driver_input): 101 * Scripts/webkitpy/layout_tests/port/qt.py: 102 (QtPort.should_run_as_pixel_test): 103 * Scripts/webkitpy/layout_tests/port/test.py: 104 (TestPort.should_run_as_pixel_test): 105 106 * WebKitTestRunner/TestController.cpp: 107 (WTR::TestController::TestController): 108 (WTR::TestController::initialize): 109 (WTR::TestCommand::TestCommand): 110 (TestCommand): 111 (WTR): 112 (CommandTokenizer): 113 (WTR::CommandTokenizer::CommandTokenizer): 114 (WTR::CommandTokenizer::pump): 115 (WTR::CommandTokenizer::next): 116 (WTR::CommandTokenizer::hasNext): 117 (WTR::die): 118 (WTR::parseInputLine): 119 (WTR::TestController::runTest): 120 * WebKitTestRunner/TestController.h: 121 (TestController): 122 Duplicate the logic for parsing the command line because 123 unfortunately there is no way to share code between 124 WebKitTestRunner and DumpRenderTree. 125 1 126 2012-08-03 Ilya Tikhonovsky <loislo@chromium.org> 2 127 -
trunk/Tools/DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp
r124467 r124581 134 134 '<(chromium_src_dir)', 135 135 '<(source_dir)/WebKit/chromium/public', 136 '<(tools_dir)/DumpRenderTree', 136 137 '<(DEPTH)', 137 138 ], -
trunk/Tools/DumpRenderTree/DumpRenderTree.gypi
r124319 r124581 55 55 ], 56 56 'test_runner_files': [ 57 'chromium/TestRunner/AccessibilityController.cpp', 58 'chromium/TestRunner/AccessibilityController.h', 59 'chromium/TestRunner/AccessibilityUIElement.cpp', 60 'chromium/TestRunner/AccessibilityUIElement.h', 57 'DumpRenderTree.h', 58 'DumpRenderTreeCommon.cpp', 59 'chromium/TestRunner/AccessibilityControllerChromium.cpp', 60 'chromium/TestRunner/AccessibilityControllerChromium.h', 61 'chromium/TestRunner/AccessibilityUIElementChromium.cpp', 62 'chromium/TestRunner/AccessibilityUIElementChromium.h', 61 63 'chromium/TestRunner/CppBoundClass.cpp', 62 64 'chromium/TestRunner/CppBoundClass.h', -
trunk/Tools/DumpRenderTree/DumpRenderTree.h
r124319 r124581 66 66 void displayWebView(); 67 67 68 struct TestCommand { 69 TestCommand() : shouldDumpPixels(false) { } 70 71 std::string pathOrURL; 72 bool shouldDumpPixels; 73 std::string expectedPixelHash; 74 }; 75 76 TestCommand parseInputLine(const std::string&); 77 68 78 #endif // DumpRenderTree_h -
trunk/Tools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj
r124319 r124581 90 90 9340994C08540CAE007F3BC8 /* DumpRenderTreePrefix.h in Headers */ = {isa = PBXBuildFile; fileRef = 32A70AAB03705E1F00C91783 /* DumpRenderTreePrefix.h */; }; 91 91 9340995108540CAE007F3BC8 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9335435F03D75502008635CE /* WebKit.framework */; }; 92 9830F31F15C81181005AB206 /* DumpRenderTreeCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9830F31E15C81181005AB206 /* DumpRenderTreeCommon.cpp */; }; 92 93 A817090008B163EF00CCB9FB /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A84F608908B136DA00E9745F /* Cocoa.framework */; }; 93 94 A817090408B164D300CCB9FB /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A817090308B164D300CCB9FB /* JavaScriptCore.framework */; }; … … 290 291 9335435F03D75502008635CE /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 291 292 9340995408540CAF007F3BC8 /* DumpRenderTree */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = DumpRenderTree; sourceTree = BUILT_PRODUCTS_DIR; }; 293 9830F31E15C81181005AB206 /* DumpRenderTreeCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DumpRenderTreeCommon.cpp; sourceTree = "<group>"; }; 292 294 A803FF7409CAAD08009B2A37 /* DumpRenderTree.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = DumpRenderTree.h; sourceTree = "<group>"; }; 293 295 A817090308B164D300CCB9FB /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = JavaScriptCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; … … 422 424 isa = PBXGroup; 423 425 children = ( 426 9830F31E15C81181005AB206 /* DumpRenderTreeCommon.cpp */, 424 427 32A70AAB03705E1F00C91783 /* DumpRenderTreePrefix.h */, 425 428 1422A2750AF6F4BD00E1A883 /* Delegates */, … … 956 959 3A5626CB131CA02A002BE6D9 /* StorageTrackerDelegate.mm in Sources */, 957 960 80045AEE147718E7008290A8 /* AccessibilityNotificationHandler.mm in Sources */, 961 9830F31F15C81181005AB206 /* DumpRenderTreeCommon.cpp in Sources */, 958 962 ); 959 963 runOnlyForDeploymentPostprocessing = 0; -
trunk/Tools/DumpRenderTree/chromium/DumpRenderTree.cpp
r124319 r124581 30 30 31 31 #include "config.h" 32 #include "DumpRenderTree.h" 32 33 33 34 #include "MockWebKitPlatformSupport.h" … … 45 46 static const char optionDumpAllPixels[] = "--dump-all-pixels"; 46 47 static const char optionNotree[] = "--notree"; 47 static const char optionPixelTests[] = "--pixel-tests";48 48 static const char optionThreaded[] = "--threaded"; 49 49 static const char optionDebugRenderTree[] = "--debug-render-tree"; … … 86 86 }; 87 87 88 static void runTest(TestShell& shell, TestParams& params, const string& testName)88 static void runTest(TestShell& shell, TestParams& params, const string& inputLine) 89 89 { 90 90 int oldTimeoutMsec = shell.layoutTestTimeout(); 91 params.pixelHash = ""; 92 string pathOrURL = testName; 93 string::size_type separatorPosition = pathOrURL.find("'"); 94 if (separatorPosition != string::npos) { 95 params.pixelHash = pathOrURL.substr(separatorPosition + 1); 96 pathOrURL.erase(separatorPosition); 97 } 98 params.testUrl = webkit_support::CreateURLForPathOrURL(pathOrURL); 91 TestCommand command = parseInputLine(inputLine); 92 params.testUrl = webkit_support::CreateURLForPathOrURL(command.pathOrURL); 93 params.pixelHash = command.shouldDumpPixels; 99 94 webkit_support::SetCurrentDirectoryForFileURL(params.testUrl); 100 95 v8::V8::SetFlagsFromString(shell.javaScriptFlags().c_str(), shell.javaScriptFlags().length()); … … 109 104 shell.setDumpWhenFinished(isLastLoad); 110 105 shell.resetTestController(); 111 shell.runFileTest(params );106 shell.runFileTest(params, command.shouldDumpPixels); 112 107 } 113 108 } else { 114 109 shell.resetTestController(); 115 shell.runFileTest(params );110 shell.runFileTest(params, command.shouldDumpPixels); 116 111 } 117 112 shell.setLayoutTestTimeout(oldTimeoutMsec); … … 147 142 else if (argument == optionNotree) 148 143 params.dumpTree = false; 149 else if (argument == optionPixelTests)150 params.dumpPixels = true;151 144 else if (argument == optionDebugRenderTree) 152 145 params.debugRenderTree = true; -
trunk/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp
r124580 r124581 30 30 31 31 #include "config.h" 32 #include "AccessibilityController .h"32 #include "AccessibilityControllerChromium.h" 33 33 34 34 #include "WebAccessibilityObject.h" -
trunk/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.h
r124580 r124581 29 29 */ 30 30 31 #ifndef AccessibilityController _h32 #define AccessibilityController _h31 #ifndef AccessibilityControllerChromium_h 32 #define AccessibilityControllerChromium_h 33 33 34 #include "AccessibilityUIElement .h"34 #include "AccessibilityUIElementChromium.h" 35 35 #include "CppBoundClass.h" 36 36 … … 82 82 }; 83 83 84 #endif // AccessibilityController _h84 #endif // AccessibilityControllerChromium_h -
trunk/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp
r124580 r124581 30 30 31 31 #include "config.h" 32 #include "AccessibilityUIElement .h"32 #include "AccessibilityUIElementChromium.h" 33 33 34 34 #include "WebAccessibilityObject.h" -
trunk/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.h
r124580 r124581 29 29 */ 30 30 31 #ifndef AccessibilityUIElement _h32 #define AccessibilityUIElement _h31 #ifndef AccessibilityUIElementChromium_h 32 #define AccessibilityUIElementChromium_h 33 33 34 34 #include "CppBoundClass.h" … … 165 165 }; 166 166 167 #endif // AccessibilityUIElement _h167 #endif // AccessibilityUIElementChromium_h -
trunk/Tools/DumpRenderTree/chromium/TestRunner/TestInterfaces.cpp
r124195 r124581 32 32 #include "TestInterfaces.h" 33 33 34 #include "AccessibilityController .h"34 #include "AccessibilityControllerChromium.h" 35 35 #include "EventSender.h" 36 36 #include "GamepadController.h" -
trunk/Tools/DumpRenderTree/chromium/TestShell.cpp
r124319 r124581 107 107 , m_focusedWidget(0) 108 108 , m_devTools(0) 109 , m_dumpPixelsForCurrentTest(false) 109 110 , m_allowExternalPages(false) 110 111 , m_acceleratedCompositingForVideoEnabled(false) … … 233 234 } 234 235 235 void TestShell::runFileTest(const TestParams& params )236 void TestShell::runFileTest(const TestParams& params, bool shouldDumpPixels) 236 237 { 237 238 ASSERT(params.testUrl.isValid()); 239 m_dumpPixelsForCurrentTest = shouldDumpPixels; 238 240 m_testIsPreparing = true; 239 241 m_params = params; 240 242 string testUrl = m_params.testUrl.spec(); 243 244 m_layoutTestController->setShouldGeneratePixelResults(shouldDumpPixels); 241 245 242 246 if (testUrl.find("loading/") != string::npos … … 604 608 m_printer.handleTextFooter(); 605 609 606 if (m_ params.dumpPixels&& shouldGeneratePixelResults) {610 if (m_dumpPixelsForCurrentTest && shouldGeneratePixelResults) { 607 611 // Image output: we write the image data to the file given on the 608 612 // command line (for the dump pixels argument), and the MD5 sum to -
trunk/Tools/DumpRenderTree/chromium/TestShell.h
r124319 r124581 32 32 #define TestShell_h 33 33 34 #include "AccessibilityController .h"34 #include "AccessibilityControllerChromium.h" 35 35 #include "GamepadController.h" 36 36 #include "LayoutTestController.h" … … 64 64 struct TestParams { 65 65 bool dumpTree; 66 bool dumpPixels;67 66 bool debugRenderTree; 68 67 bool debugLayerTree; … … 73 72 TestParams() 74 73 : dumpTree(true) 75 , dumpPixels(false)76 74 , debugRenderTree(false) 77 75 , debugLayerTree(false) … … 104 102 105 103 void bindJSObjectsToWindow(WebKit::WebFrame*); 106 void runFileTest(const TestParams& );104 void runFileTest(const TestParams&, bool shouldDumpPixelTests); 107 105 void callJSGC(); 108 106 void resetTestController(); … … 225 223 226 224 TestParams m_params; 225 bool m_dumpPixelsForCurrentTest; 227 226 int m_timeout; // timeout value in millisecond 228 227 bool m_allowExternalPages; -
trunk/Tools/DumpRenderTree/efl/CMakeLists.txt
r124319 r124581 1 1 SET(DumpRenderTree_SOURCES 2 ${TOOLS_DIR}/DumpRenderTree/DumpRenderTreeCommon.cpp 2 3 ${TOOLS_DIR}/DumpRenderTree/CyclicRedundancyCheck.cpp 3 4 ${TOOLS_DIR}/DumpRenderTree/GCController.cpp -
trunk/Tools/DumpRenderTree/efl/DumpRenderTree.cpp
r124319 r124581 66 66 volatile bool done = false; 67 67 68 static int dumpPixels = false;68 static bool dumpPixelsForCurrentTest; 69 69 static int dumpTree = true; 70 70 static int printSeparators = true; … … 194 194 static const option options[] = { 195 195 {"notree", no_argument, &dumpTree, false}, 196 {"pixel-tests", no_argument, &dumpPixels, true},197 196 {"tree", no_argument, &dumpTree, true}, 198 197 {"gui", no_argument, &useX11Window, true}, … … 212 211 } 213 212 214 static String getFinalTestURL(const String& testURL)215 {216 const size_t hashSeparatorPos = testURL.find("'");217 if (hashSeparatorPos != notFound)218 return getFinalTestURL(testURL.left(hashSeparatorPos));219 220 // Convert the path into a full file URL if it does not look221 // like an HTTP/S URL (doesn't start with http:// or https://).222 if (!testURL.startsWith("http://") && !testURL.startsWith("https://")) {223 char* cFilePath = ecore_file_realpath(testURL.utf8().data());224 const String filePath = String::fromUTF8(cFilePath);225 free(cFilePath);226 227 if (ecore_file_exists(filePath.utf8().data()))228 return String("file://") + filePath;229 }230 231 return testURL;232 }233 234 static String getExpectedPixelHash(const String& testURL)235 {236 const size_t hashSeparatorPos = testURL.find("'");237 return (hashSeparatorPos != notFound) ? testURL.substring(hashSeparatorPos + 1) : String();238 }239 240 213 static inline bool isGlobalHistoryTest(const String& cTestPathOrURL) 241 214 { … … 269 242 } 270 243 271 static void runTest(const char* cTestPathOrURL)272 { 273 const String testPathOrURL = String::fromUTF8(cTestPathOrURL);274 ASSERT(!testPathOrURL.isEmpty());275 276 const String testURL = getFinalTestURL(testPathOrURL);277 const String expectedPixelHash = getExpectedPixelHash(testPathOrURL);244 static void runTest(const char* inputLine) 245 { 246 TestCommand command = parseInputLine(inputLine); 247 const String testURL(command.pathOrURL.c_str()); 248 ASSERT(!testURL.isEmpty()); 249 dumpPixelsForCurrentTest = command.shouldDumpPixels; 250 const String expectedPixelHash(command.expectedPixelHash.c_str()); 278 251 279 252 browser->resetDefaultsToConsistentValues(); … … 353 326 static bool shouldDumpPixelsAndCompareWithExpected() 354 327 { 355 return dumpPixels && gLayoutTestController->generatePixelResults() && !gLayoutTestController->dumpDOMAsWebArchive() && !gLayoutTestController->dumpSourceAsWebArchive();328 return dumpPixelsForCurrentTest && gLayoutTestController->generatePixelResults() && !gLayoutTestController->dumpDOMAsWebArchive() && !gLayoutTestController->dumpSourceAsWebArchive(); 356 329 } 357 330 … … 462 435 runTestingServerLoop(); 463 436 } else { 464 printSeparators = (optind < argc - 1 || (dumpPixels && dumpTree));437 printSeparators = (optind < argc - 1 || (dumpPixelsForCurrentTest && dumpTree)); 465 438 for (int i = optind; i != argc; ++i) 466 439 runTest(argv[i]); -
trunk/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp
r124319 r124581 74 74 volatile bool done; 75 75 static bool printSeparators; 76 static int dumpPixels;76 static bool dumpPixelsForCurrentTest; 77 77 static int dumpTree = 1; 78 78 static int useTimeoutWatchdog = 1; … … 545 545 struct option options[] = { 546 546 {"notree", no_argument, &dumpTree, false}, 547 {"pixel-tests", no_argument, &dumpPixels, true},548 547 {"tree", no_argument, &dumpTree, true}, 549 548 {"no-timeout", no_argument, &useTimeoutWatchdog, false}, … … 625 624 } 626 625 627 if (dumpPixels 626 if (dumpPixelsForCurrentTest 628 627 && gLayoutTestController->generatePixelResults() 629 628 && !gLayoutTestController->dumpDOMAsWebArchive() … … 688 687 } 689 688 690 static void runTest(const string& testPathOrURL)689 static void runTest(const string& inputLine) 691 690 { 692 691 ASSERT(!testPathOrURL.empty()); 693 692 694 // Look for "'" as a separator between the path or URL, and the pixel dump hash that follows. 695 string testURL(testPathOrURL); 696 string expectedPixelHash; 697 size_t separatorPos = testURL.find("'"); 698 if (separatorPos != string::npos) { 699 testURL = string(testPathOrURL, 0, separatorPos); 700 expectedPixelHash = string(testPathOrURL, separatorPos + 1); 701 } 693 TestCommand command = parseInputLine(inputLine); 694 string& testURL = command.pathOrURL; 695 dumpPixelsForCurrentTest = command.shouldDumpPixels; 702 696 703 697 // Convert the path into a full file URL if it does not look … … 713 707 resetDefaultsToConsistentValues(); 714 708 715 gLayoutTestController = LayoutTestController::create(testURL, expectedPixelHash);709 gLayoutTestController = LayoutTestController::create(testURL, command.expectedPixelHash); 716 710 topLoadingFrame = 0; 717 711 done = false; … … 1448 1442 runTestingServerLoop(); 1449 1443 } else { 1450 printSeparators = (optind < argc-1 || (dumpPixels && dumpTree));1444 printSeparators = (optind < argc-1 || (dumpPixelsForCurrentTest && dumpTree)); 1451 1445 for (int i = optind; i != argc; ++i) 1452 1446 runTest(argv[i]); -
trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm
r124512 r124581 141 141 StorageTrackerDelegate *storageDelegate; 142 142 143 static int dumpPixels;143 static bool dumpPixelsForCurrentTest; 144 144 static int threaded; 145 145 static int dumpTree = YES; … … 782 782 struct option options[] = { 783 783 {"notree", no_argument, &dumpTree, NO}, 784 {"pixel-tests", no_argument, &dumpPixels, YES},785 784 {"tree", no_argument, &dumpTree, YES}, 786 785 {"threaded", no_argument, &threaded, YES}, … … 851 850 prepareConsistentTestingEnvironment(); 852 851 addTestPluginsToPluginSearchPath(argv[0]); 853 if (dumpPixels )852 if (dumpPixelsForCurrentTest) 854 853 installSignalHandlers(); 855 854 … … 876 875 runTestingServerLoop(); 877 876 } else { 878 printSeparators = (optind < argc -1 || (dumpPixels&& dumpTree));877 printSeparators = (optind < argc - 1 || (dumpPixelsForCurrentTest && dumpTree)); 879 878 for (int i = optind; i != argc; ++i) 880 879 runTest(argv[i]); … … 1197 1196 } 1198 1197 1199 if (dumpPixels && gLayoutTestController->generatePixelResults())1198 if (dumpPixelsForCurrentTest && gLayoutTestController->generatePixelResults()) 1200 1199 // FIXME: when isPrinting is set, dump the image with page separators. 1201 1200 dumpWebViewAsPixelsAndCompareWithExpected(gLayoutTestController->expectedPixelHash()); … … 1278 1277 } 1279 1278 1280 static void runTest(const string& testPathOrURL) 1281 { 1282 ASSERT(!testPathOrURL.empty()); 1283 1284 // Look for "'" as a separator between the path or URL, and the pixel dump hash that follows. 1285 string pathOrURL(testPathOrURL); 1286 string expectedPixelHash; 1287 1288 size_t separatorPos = pathOrURL.find("'"); 1289 if (separatorPos != string::npos) { 1290 pathOrURL = string(testPathOrURL, 0, separatorPos); 1291 expectedPixelHash = string(testPathOrURL, separatorPos + 1); 1292 } 1279 static void runTest(const string& inputLine) 1280 { 1281 ASSERT(!inputLine.empty()); 1282 1283 TestCommand command = parseInputLine(inputLine); 1284 const string& pathOrURL = command.pathOrURL; 1285 dumpPixelsForCurrentTest = command.shouldDumpPixels; 1293 1286 1294 1287 NSString *pathOrURLString = [NSString stringWithUTF8String:pathOrURL.c_str()]; … … 1312 1305 resetWebViewToConsistentStateBeforeTesting(); 1313 1306 1314 gLayoutTestController = LayoutTestController::create(testURL, expectedPixelHash);1307 gLayoutTestController = LayoutTestController::create(testURL, command.expectedPixelHash); 1315 1308 topLoadingFrame = nil; 1316 1309 ASSERT(!draggingInfo); // the previous test should have called eventSender.mouseUp to drop! -
trunk/Tools/DumpRenderTree/qt/DumpRenderTree.pro
r124447 r124581 27 27 HEADERS += \ 28 28 $$PWD/../WorkQueue.h \ 29 $$PWD/../DumpRenderTree.h \ 29 30 DumpRenderTreeQt.h \ 30 31 EventSenderQt.h \ … … 38 39 SOURCES += \ 39 40 $$PWD/../WorkQueue.cpp \ 41 $$PWD/../DumpRenderTreeCommon.cpp \ 40 42 DumpRenderTreeQt.cpp \ 41 43 EventSenderQt.cpp \ -
trunk/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp
r124319 r124581 31 31 32 32 #include "config.h" 33 #include "DumpRenderTree.h" 33 34 34 35 #include "DumpRenderTreeQt.h" … … 389 390 390 391 DumpRenderTree::DumpRenderTree() 391 : m_dumpPixelsForAllTests(false) 392 , m_stdin(0) 392 : m_stdin(0) 393 393 , m_enableTextOutput(false) 394 394 , m_standAloneMode(false) … … 605 605 layoutTestController()->showWebInspector(); 606 606 607 if (isDumpAsTextTest(url)) {607 if (isDumpAsTextTest(url)) 608 608 layoutTestController()->dumpAsText(); 609 setDumpPixelsForAllTests(false);610 }611 609 612 610 if (isGlobalHistoryTest(url)) … … 691 689 void DumpRenderTree::processLine(const QString &input) 692 690 { 693 QString line = input; 694 695 m_dumpPixelsForCurrentTest = false; 696 m_expectedHash = QString(); 697 // single quote marks the pixel dump hash 698 int indexOfFirstSeparator = line.indexOf('\''); 699 int indexOfSecondSeparator = line.indexOf('\'', indexOfFirstSeparator + 1); 700 if (indexOfFirstSeparator > -1) { 701 int indexOfPixelHash = indexOfFirstSeparator + 1; 702 703 // NRWT passes --pixel-test if we should dump pixels for the test. 704 const QString expectedArg(QLatin1String("--pixel-test")); 705 QString argTest = line.mid(indexOfFirstSeparator + 1, expectedArg.length()); 706 if (argTest == expectedArg) { 707 m_dumpPixelsForCurrentTest = true; 708 indexOfPixelHash = indexOfSecondSeparator == -1 ? -1 : indexOfSecondSeparator + 1; 709 } 710 if (indexOfPixelHash != -1 && indexOfPixelHash < line.size()) 711 m_expectedHash = line.mid(indexOfPixelHash); 712 line.remove(indexOfFirstSeparator, line.length()); 713 } 714 715 if (line.startsWith(QLatin1String("http:")) 716 || line.startsWith(QLatin1String("https:")) 717 || line.startsWith(QLatin1String("file:")) 718 || line == QLatin1String("about:blank")) { 719 open(QUrl(line)); 691 TestCommand command = parseInputLine(std::string(input.toLatin1().constData())); 692 QString pathOrURL = QLatin1String(command.pathOrURL.c_str()); 693 m_dumpPixelsForCurrentTest = command.shouldDumpPixels; 694 m_expectedHash = QLatin1String(command.expectedPixelHash.c_str()); 695 696 if (pathOrURL.startsWith(QLatin1String("http:")) 697 || pathOrURL.startsWith(QLatin1String("https:")) 698 || pathOrURL.startsWith(QLatin1String("file:")) 699 || pathOrURL == QLatin1String("about:blank")) { 700 open(QUrl(pathOrURL)); 720 701 } else { 721 QFileInfo fi( line);702 QFileInfo fi(pathOrURL); 722 703 723 704 if (!fi.exists()) { … … 726 707 // Try to be smart about where the test is located 727 708 if (currentDir.dirName() == QLatin1String("LayoutTests")) 728 fi = QFileInfo(currentDir, line.replace(QRegExp(".*?LayoutTests/(.*)"), "\\1"));729 else if (! line.contains(QLatin1String("LayoutTests")))730 fi = QFileInfo(currentDir, line.prepend(QLatin1String("LayoutTests/")));709 fi = QFileInfo(currentDir, pathOrURL.replace(QRegExp(".*?LayoutTests/(.*)"), "\\1")); 710 else if (!pathOrURL.contains(QLatin1String("LayoutTests"))) 711 fi = QFileInfo(currentDir, pathOrURL.prepend(QLatin1String("LayoutTests/"))); 731 712 732 713 if (!fi.exists()) { … … 740 721 741 722 fflush(stdout); 742 }743 744 void DumpRenderTree::setDumpPixelsForAllTests(bool dump)745 {746 m_dumpPixelsForAllTests = dump;747 723 } 748 724 … … 962 938 fputs("#EOF\n", stderr); 963 939 964 if ( (m_dumpPixelsForAllTests || m_dumpPixelsForCurrentTest)&& !m_controller->shouldDumpAsText()) {940 if (m_dumpPixelsForCurrentTest && !m_controller->shouldDumpAsText()) { 965 941 QImage image; 966 942 if (!m_controller->isPrinting()) { -
trunk/Tools/DumpRenderTree/qt/DumpRenderTreeQt.h
r123871 r124581 83 83 bool isGraphicsBased() { return m_graphicsBased; } 84 84 85 void setDumpPixelsForAllTests(bool);86 87 85 void closeRemainingWindows(); 88 86 void resetToConsistentStateBeforeTesting(const QUrl&); … … 143 141 LayoutTestController *m_controller; 144 142 145 bool m_dumpPixelsForAllTests;146 143 bool m_dumpPixelsForCurrentTest; 147 144 QString m_expectedHash; -
trunk/Tools/DumpRenderTree/qt/main.cpp
r124215 r124581 67 67 } 68 68 69 // We only support -v or -- pixel-tests or --stdout or --stderr or -, all the others will be69 // We only support -v or --stdout or --stderr or -, all the others will be 70 70 // pass as test case name (even -abc.html is a valid test case name) 71 71 bool isOption(const QString& str) 72 72 { 73 return str == QString("-v") || str == QString("--pixel-tests")73 return str == QString("-v") 74 74 || str == QString("--stdout") || str == QString("--stderr") 75 75 || str == QString("--timeout") || str == QString("--no-timeout") … … 90 90 void printUsage() 91 91 { 92 fprintf(stderr, "Usage: DumpRenderTree [-v |--pixel-tests] [--stdout output_filename] [-stderr error_filename] [--no-timeout] [--timeout timeout_MS] filename [filename2..n]\n");93 fprintf(stderr, "Or folder containing test files: DumpRenderTree [-v |--pixel-tests] dirpath\n");92 fprintf(stderr, "Usage: DumpRenderTree [-v] [--stdout output_filename] [-stderr error_filename] [--no-timeout] [--timeout timeout_MS] filename [filename2..n]\n"); 93 fprintf(stderr, "Or folder containing test files: DumpRenderTree [-v] dirpath\n"); 94 94 fflush(stderr); 95 95 } … … 159 159 WebCore::DumpRenderTree dumper; 160 160 161 int index = args.indexOf(QLatin1String("--pixel-tests")); 162 if (index != -1) { 163 dumper.setDumpPixelsForAllTests(true); 164 args.removeAt(index); 165 } 166 167 index = args.indexOf(QLatin1String("--stdout")); 161 int index = args.indexOf(QLatin1String("--stdout")); 168 162 if (index != -1) { 169 163 QString fileName = takeOptionValue(args, index); -
trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp
r124319 r124581 81 81 82 82 static bool dumpTree = true; 83 static bool dumpPixels ;83 static bool dumpPixelsForCurrentTest; 84 84 static bool dumpAllPixels; 85 85 static bool printSeparators; … … 760 760 } 761 761 762 if (dumpPixels 762 if (dumpPixelsForCurrentTest 763 763 && gLayoutTestController->generatePixelResults() 764 764 && !gLayoutTestController->dumpDOMAsWebArchive() … … 949 949 } 950 950 951 static void runTest(const string& testPathOrURL) 952 { 951 static void runTest(const string& inputLine) 952 { 953 TestCommand command = parseInputLine(inputLine); 954 const string& pathOrURL = command.pathOrURL; 955 dumpPixelsForCurrentTest = command.shouldDumpPixels; 956 953 957 static BSTR methodBStr = SysAllocString(TEXT("GET")); 954 958 955 // Look for "'" as a separator between the path or URL, and the pixel dump hash that follows.956 string pathOrURL(testPathOrURL);957 string expectedPixelHash;958 959 size_t separatorPos = pathOrURL.find("'");960 if (separatorPos != string::npos) {961 pathOrURL = string(testPathOrURL, 0, separatorPos);962 expectedPixelHash = string(testPathOrURL, separatorPos + 1);963 }964 965 959 BSTR urlBStr; 966 960 … … 984 978 CFRelease(url); 985 979 986 ::gLayoutTestController = LayoutTestController::create(pathOrURL, expectedPixelHash);980 ::gLayoutTestController = LayoutTestController::create(pathOrURL, command.expectedPixelHash); 987 981 done = false; 988 982 topLoadingFrame = 0; … … 1335 1329 if (!stricmp(argv[i], "--dump-all-pixels")) { 1336 1330 dumpAllPixels = true; 1337 continue;1338 }1339 1340 if (!stricmp(argv[i], "--pixel-tests")) {1341 dumpPixels = true;1342 1331 continue; 1343 1332 } -
trunk/Tools/DumpRenderTree/win/DumpRenderTree.vcproj
r124319 r124581 564 564 </File> 565 565 <File 566 RelativePath="..\DumpRenderTreeCommon.cpp" 567 > 568 </File> 569 <File 566 570 RelativePath="..\DumpRenderTreePrefix.h" 567 571 > -
trunk/Tools/DumpRenderTree/wscript
r124319 r124581 41 41 ] 42 42 sources = [ 43 'DumpRenderTreeCommon.cpp', 43 44 'LayoutTestController.cpp', 44 45 'WorkQueue.cpp', -
trunk/Tools/DumpRenderTree/wx/DumpRenderTreeWx.cpp
r124319 r124581 51 51 volatile bool notified = false; 52 52 static bool printSeparators = true; 53 static int dumpPixels ;53 static int dumpPixelsForCurrentTest; 54 54 static int dumpTree = 1; 55 55 time_t startTime; // to detect timeouts / failed tests … … 204 204 } 205 205 206 if (dumpPixels 206 if (dumpPixelsForCurrentTest 207 207 && gLayoutTestController->generatePixelResults() 208 208 && !gLayoutTestController->dumpDOMAsWebArchive() … … 219 219 } 220 220 221 static void runTest(const wxString testPathOrURL)221 static void runTest(const wxString inputLine) 222 222 { 223 223 done = false; 224 224 time(&startTime); 225 string pathOrURLString(testPathOrURL.char_str()); 226 string pathOrURL(pathOrURLString); 227 string expectedPixelHash; 228 229 size_t separatorPos = pathOrURL.find("'"); 230 if (separatorPos != string::npos) { 231 pathOrURL = string(pathOrURLString, 0, separatorPos); 232 expectedPixelHash = string(pathOrURLString, separatorPos + 1); 233 } 225 226 TestCommand command = parseInputLine(std::string(inputLine.ToAscii())); 227 string& pathOrURL = command.pathOrURL; 228 dumpPixelsForCurrentTest = command.shouldDumpPixels; 234 229 235 230 // CURL isn't happy if we don't have a protocol. … … 238 233 pathOrURL.insert(0, "file://"); 239 234 240 gLayoutTestController = LayoutTestController::create(pathOrURL, expectedPixelHash);235 gLayoutTestController = LayoutTestController::create(pathOrURL, command.expectedPixelHash); 241 236 if (!gLayoutTestController) { 242 237 wxTheApp->ExitMainLoop(); … … 280 275 if (!option.CmpNoCase(_T("--notree"))) { 281 276 dumpTree = false; 282 continue;283 }284 285 if (!option.CmpNoCase(_T("--pixel-tests"))) {286 dumpPixels = true;287 277 continue; 288 278 } … … 324 314 325 315 } else { 326 printSeparators = (optind < argc -1 || (dumpPixels&& dumpTree));316 printSeparators = (optind < argc - 1 || (dumpPixelsForCurrentTest && dumpTree)); 327 317 for (int i = optind; i != argc; ++i) { 328 318 runTest(wxTheApp->argv[1]); -
trunk/Tools/GNUmakefile.am
r124319 r124581 107 107 Programs_DumpRenderTree_SOURCES = \ 108 108 Tools/DumpRenderTree/DumpRenderTree.h \ 109 Tools/DumpRenderTree/DumpRenderTreeCommon.cpp \ 109 110 Tools/DumpRenderTree/DumpRenderTreePrefix.h \ 110 111 Tools/DumpRenderTree/AccessibilityController.cpp \ -
trunk/Tools/Scripts/old-run-webkit-tests
r124319 r124581 749 749 750 750 # Try to read expected hash file for pixel tests 751 my $suffixExpectedHash = ""; 752 if ($pixelTests && !$resetResults) { 753 my $expectedPixelDir = expectedDirectoryForTest($base, 0, "png"); 754 if (my $expectedHash = readChecksumFromPng(File::Spec->catfile($expectedPixelDir, "$base-$expectedTag.png"))) { 755 # Format expected hash into a suffix string that is appended to the path / URL passed to DRT. 756 $suffixExpectedHash = "'$expectedHash"; 751 my $suffixPixelTest = ""; 752 if ($pixelTests) { 753 # ' is the separator between arguments. 754 $suffixPixelTest = "'--pixel-test"; 755 if (!$resetResults) { 756 my $expectedPixelDir = expectedDirectoryForTest($base, 0, "png"); 757 if (my $expectedHash = readChecksumFromPng(File::Spec->catfile($expectedPixelDir, "$base-$expectedTag.png"))) { 758 # Format expected hash into a suffix string that is appended to the path / URL passed to DRT. 759 $suffixPixelTest = "'--pixel-test'$expectedHash"; 760 } 757 761 } 758 762 } … … 790 794 my $path = canonpath($test); 791 795 $path =~ s/^http\/tests\///; 792 print OUT "http://127.0.0.1:$httpdPort/$path$suffix ExpectedHash\n";796 print OUT "http://127.0.0.1:$httpdPort/$path$suffixPixelTest\n"; 793 797 } elsif ($test =~ /^http\/tests\/ssl\//) { 794 798 my $path = canonpath($test); 795 799 $path =~ s/^http\/tests\///; 796 print OUT "https://127.0.0.1:$httpdSSLPort/$path$suffix ExpectedHash\n";800 print OUT "https://127.0.0.1:$httpdSSLPort/$path$suffixPixelTest\n"; 797 801 } else { 798 802 my $testPath = "$testDirectory/$test"; … … 802 806 $testPath = canonpath($testPath); 803 807 } 804 print OUT "$testPath$suffix ExpectedHash\n";808 print OUT "$testPath$suffixPixelTest\n"; 805 809 } 806 810 } else { … … 811 815 $testPath = canonpath($testPath); 812 816 } 813 print OUT "$testPath$suffix ExpectedHash\n" if defined $testPath;817 print OUT "$testPath$suffixPixelTest\n" if defined $testPath; 814 818 } 815 819 -
trunk/Tools/Scripts/webkitpy/layout_tests/port/base.py
r124401 r124581 1279 1279 return [] 1280 1280 1281 def supports_switching_pixel_tests_per_test(self):1282 if self.get_option('webkit_test_runner'):1283 return True1284 return self._supports_switching_pixel_tests_per_test()1285 1286 def _supports_switching_pixel_tests_per_test(self):1287 # FIXME: all ports should support it.1288 return False1289 1290 1281 def should_run_as_pixel_test(self, test_input): 1291 1282 if not self._options.pixel_tests: 1292 1283 return False 1293 if not self.supports_switching_pixel_tests_per_test():1294 # Cannot do more filtering without this.1295 return True1296 1284 if self._options.pixel_test_directories: 1297 1285 return any(test_input.test_name.startswith(directory) for directory in self._options.pixel_test_directories) -
trunk/Tools/Scripts/webkitpy/layout_tests/port/driver.py
r124481 r124581 296 296 cmd.extend(self._port.get_option('additional_drt_flag', [])) 297 297 298 if pixel_tests and not self._port.supports_switching_pixel_tests_per_test():299 cmd.append('--pixel-tests')300 298 cmd.extend(per_test_args) 301 299 … … 338 336 assert not driver_input.image_hash or driver_input.should_run_pixel_test 339 337 338 # ' is the separator between arguments. 340 339 if driver_input.should_run_pixel_test: 341 if self._port.supports_switching_pixel_tests_per_test(): 342 # We did not start the driver with --pixel-tests, instead we specify it per test. 343 # "'" is the separator of command fields. 344 command += "'" + '--pixel-test' 340 command += "'--pixel-test" 345 341 if driver_input.image_hash: 346 342 command += "'" + driver_input.image_hash -
trunk/Tools/Scripts/webkitpy/layout_tests/port/qt.py
r124319 r124581 185 185 return result 186 186 187 def _supports_switching_pixel_tests_per_test(self):188 return True189 -
trunk/Tools/Scripts/webkitpy/layout_tests/port/test.py
r124319 r124581 514 514 ] 515 515 516 def supports_switching_pixel_tests_per_test(self):517 # Let it true so we can test the --pixel-test-directory option.518 return True519 520 516 521 517 class TestDriver(Driver): -
trunk/Tools/WebKitTestRunner/TestController.cpp
r124319 r124581 36 36 #include <WebKit2/WKPreferencesPrivate.h> 37 37 #include <WebKit2/WKRetainPtr.h> 38 #include <algorithm> 38 39 #include <cstdio> 40 #include <ctype.h> 41 #include <stdlib.h> 42 #include <string> 39 43 #include <wtf/PassOwnPtr.h> 40 44 … … 68 72 69 73 TestController::TestController(int argc, const char* argv[]) 70 : m_dumpPixelsForAllTests(false) 71 , m_verbose(false) 74 : m_verbose(false) 72 75 , m_printSeparators(false) 73 76 , m_usingServerMode(false) … … 268 271 } 269 272 270 if (argument == "--pixel-tests") {271 m_dumpPixelsForAllTests = true;272 continue;273 }274 273 if (argument == "--verbose") { 275 274 m_verbose = true; … … 505 504 } 506 505 507 bool TestController::runTest(const char* test) 506 struct TestCommand { 507 TestCommand() : shouldDumpPixels(false) { } 508 509 std::string pathOrURL; 510 bool shouldDumpPixels; 511 std::string expectedPixelHash; 512 }; 513 514 class CommandTokenizer { 515 public: 516 explicit CommandTokenizer(const std::string& input) 517 : m_input(input) 518 , m_posNextSeparator(0) 519 { 520 pump(); 521 } 522 523 bool hasNext() const; 524 std::string next(); 525 526 private: 527 void pump(); 528 static const char kSeparator = '\''; 529 const std::string& m_input; 530 std::string m_next; 531 size_t m_posNextSeparator; 532 }; 533 534 void CommandTokenizer::pump() 535 { 536 if (m_posNextSeparator == std::string::npos || m_posNextSeparator == m_input.size()) { 537 m_next = std::string(); 538 return; 539 } 540 size_t start = m_posNextSeparator ? m_posNextSeparator + 1 : 0; 541 m_posNextSeparator = m_input.find(kSeparator, start); 542 size_t size = m_posNextSeparator == std::string::npos ? std::string::npos : m_posNextSeparator - start; 543 m_next = std::string(m_input, start, size); 544 } 545 546 std::string CommandTokenizer::next() 547 { 548 ASSERT(hasNext()); 549 550 std::string oldNext = m_next; 551 pump(); 552 return oldNext; 553 } 554 555 bool CommandTokenizer::hasNext() const 556 { 557 return !m_next.empty(); 558 } 559 560 NO_RETURN static void die(const std::string& inputLine) 561 { 562 fprintf(stderr, "Unexpected input line: %s\n", inputLine.c_str()); 563 exit(1); 564 } 565 566 TestCommand parseInputLine(const std::string& inputLine) 567 { 568 TestCommand result; 569 CommandTokenizer tokenizer(inputLine); 570 if (!tokenizer.hasNext()) 571 die(inputLine); 572 573 result.pathOrURL = tokenizer.next(); 574 if (!tokenizer.hasNext()) 575 return result; 576 577 std::string arg = tokenizer.next(); 578 if (arg != std::string("-p") && arg != std::string("--pixel-test")) 579 die(inputLine); 580 result.shouldDumpPixels = true; 581 582 if (tokenizer.hasNext()) 583 result.expectedPixelHash = tokenizer.next(); 584 585 return result; 586 } 587 588 bool TestController::runTest(const char* inputLine) 508 589 { 509 590 if (!resetStateToConsistentValues()) { … … 518 599 } 519 600 520 bool dumpPixelsTest = m_dumpPixelsForAllTests; 521 std::string command(test); 522 std::string pathOrURL = command; 523 std::string expectedPixelHash; 524 size_t firstSeparatorPos = command.find_first_of('\''); 525 size_t secondSeparatorPos = command.find_first_of('\'', firstSeparatorPos + 1); 526 if (firstSeparatorPos != std::string::npos) { 527 pathOrURL = std::string(command, 0, firstSeparatorPos); 528 size_t pixelHashPos = firstSeparatorPos + 1; 529 530 // NRWT passes --pixel-test if we should dump pixels for the test. 531 const std::string expectedPixelTestArg("--pixel-test"); 532 std::string argTest = std::string(command, firstSeparatorPos + 1, expectedPixelTestArg.size()); 533 if (argTest == expectedPixelTestArg) { 534 dumpPixelsTest = true; 535 pixelHashPos = secondSeparatorPos == std::string::npos ? std::string::npos : secondSeparatorPos + 1; 536 } 537 if (pixelHashPos != std::string::npos && pixelHashPos < command.size()) 538 expectedPixelHash = std::string(command, pixelHashPos); 539 } 601 TestCommand command = parseInputLine(std::string(inputLine)); 540 602 541 603 m_state = RunningTest; 542 604 543 m_currentInvocation = adoptPtr(new TestInvocation( pathOrURL));544 if ( dumpPixelsTest)545 m_currentInvocation->setIsPixelTest( expectedPixelHash);605 m_currentInvocation = adoptPtr(new TestInvocation(command.pathOrURL)); 606 if (command.shouldDumpPixels) 607 m_currentInvocation->setIsPixelTest(command.expectedPixelHash); 546 608 547 609 m_currentInvocation->invoke(); -
trunk/Tools/WebKitTestRunner/TestController.h
r124319 r124581 105 105 OwnPtr<TestInvocation> m_currentInvocation; 106 106 107 bool m_dumpPixelsForAllTests;108 107 bool m_verbose; 109 108 bool m_printSeparators;
Note: See TracChangeset
for help on using the changeset viewer.