Index: tools/testing/dart/test_suite.dart |
diff --git a/tools/testing/dart/test_suite.dart b/tools/testing/dart/test_suite.dart |
index 11b9ef1e6ce5afbb0441ceac8382eab0c90be17a..894fb5a6f5a6644b892859b9d941be804c665679 100644 |
--- a/tools/testing/dart/test_suite.dart |
+++ b/tools/testing/dart/test_suite.dart |
@@ -812,78 +812,7 @@ class StandardTestSuite extends TestSuite { |
}; |
} |
- |
- /** |
- * _createUrlPathFromFile takes a [file], which is either located in the dart |
- * or in the build directory, and will return a String representing |
- * the relative path to either the dart or the build directory. |
- * Thus, the returned [String] will be the path component of the URL |
- * corresponding to [file] (the http server serves files relative to the |
- * dart/build directories). |
- */ |
- String _createUrlPathFromFile(Path file) { |
- file = TestUtils.absolutePath(file); |
- var fileString = file.toString(); |
- |
- var relativeBuildDir = new Path(TestUtils.buildDir(configuration)); |
- var buildDir = TestUtils.absolutePath(relativeBuildDir); |
- var dartDir = TestUtils.dartDir(); |
- |
- var pathComponent; |
- if (fileString.startsWith(buildDir.toString())) { |
- var fileRelativeToBuildDir = file.relativeTo(buildDir); |
- pathComponent = "$relativeBuildDir/$fileRelativeToBuildDir"; |
- } else if (fileString.startsWith(dartDir.toString())) { |
- pathComponent = file.relativeTo(dartDir); |
- } else { |
- // Unreachable |
- Except.isTrue(false); |
- } |
- return "/$pathComponent"; |
- } |
- |
- void _getUriForBrowserTest(TestInformation info, |
- String pathComponent, |
- subtestNames, |
- subtestIndex) { |
- // Note: If we run test.py with the "--list" option, no http servers |
- // will be started. Therefore serverList is an empty list in this |
- // case. So we use PORT/CROSS_ORIGIN_PORT instead of real ports. |
- var serverPort = "PORT"; |
- var crossOriginPort = "CROSS_ORIGIN_PORT"; |
- if (!configuration['list']) { |
- serverPort = serverList[0].port.toString(); |
- crossOriginPort = serverList[1].port.toString(); |
- } |
- |
- var url= 'http://127.0.0.1:$serverPort$pathComponent' |
- '?crossOriginPort=$crossOriginPort'; |
- if (info.optionsFromFile['isMultiHtmlTest'] && subtestNames.length > 0) { |
- url= '${url}&group=${subtestNames[subtestIndex]}'; |
- } |
- return url; |
- } |
- |
- void _createWrapperFile(String dartWrapperFilename, dartLibraryFilename) { |
- File file = new File(dartWrapperFilename); |
- RandomAccessFile dartWrapper = file.openSync(FileMode.WRITE); |
- |
- var usePackageImport = dartLibraryFilename.segments().contains("pkg"); |
- var libraryPathComponent = _createUrlPathFromFile(dartLibraryFilename); |
- dartWrapper.writeStringSync(dartTestWrapper(usePackageImport, |
- libraryPathComponent)); |
- dartWrapper.closeSync(); |
- } |
- |
- void _createLibraryWrapperFile(Path dartLibraryFilename, filePath) { |
- File file = new File(dartLibraryFilename.toNativePath()); |
- RandomAccessFile dartLibrary = file.openSync(FileMode.WRITE); |
- dartLibrary.writeStringSync( |
- wrapDartTestInLibrary(filePath.relativeTo(TestUtils.dartDir()))); |
- dartLibrary.closeSync(); |
- } |
- |
- /** |
+ /** |
* The [StandardTestSuite] has support for tests that |
* compile a test from Dart to JavaScript, and then run the resulting |
* JavaScript. This function creates a working directory to hold the |
@@ -938,9 +867,18 @@ class StandardTestSuite extends TestSuite { |
if (!isLibraryDefinition) { |
dartLibraryFilename = new Path(tempDir).append( |
'test_as_library.dart'); |
- _createLibraryWrapperFile(dartLibraryFilename, filePath); |
+ File file = new File(dartLibraryFilename.toNativePath()); |
+ RandomAccessFile dartLibrary = file.openSync(FileMode.WRITE); |
+ dartLibrary.writeStringSync( |
+ wrapDartTestInLibrary(filePath, file.name)); |
+ dartLibrary.closeSync(); |
} |
- _createWrapperFile(dartWrapperFilename, dartLibraryFilename); |
+ |
+ File file = new File(dartWrapperFilename); |
+ RandomAccessFile dartWrapper = file.openSync(FileMode.WRITE); |
+ dartWrapper.writeStringSync( |
+ dartTestWrapper(dartDir, file.name, dartLibraryFilename)); |
+ dartWrapper.closeSync(); |
} else { |
dartWrapperFilename = filename; |
// TODO(whesse): Once test.py is retired, adjust the relative path in |
@@ -957,10 +895,8 @@ class StandardTestSuite extends TestSuite { |
} |
htmlPath = '$tempDir/../$htmlFilename'; |
} |
- String scriptPath = (compiler == 'none') ? |
+ final String scriptPath = (compiler == 'none') ? |
dartWrapperFilename : compiledDartWrapperFilename; |
- scriptPath = _createUrlPathFromFile(new Path(scriptPath)); |
- |
// Create the HTML file for the test. |
RandomAccessFile htmlTest = new File(htmlPath).openSync(FileMode.WRITE); |
String content = null; |
@@ -971,13 +907,22 @@ class StandardTestSuite extends TestSuite { |
Path expectedOutput = null; |
if (new File.fromPath(pngPath).existsSync()) { |
expectedOutput = pngPath; |
- content = getHtmlLayoutContents(scriptType, new Path("$scriptPath")); |
+ // TODO(efortuna): Unify path libraries in test.dart. |
+ content = getHtmlLayoutContents(scriptType, pathLib.relative(scriptPath, |
+ from: pathLib.dirname(htmlPath))); |
} else if (new File.fromPath(txtPath).existsSync()) { |
expectedOutput = txtPath; |
- content = getHtmlLayoutContents(scriptType, new Path("$scriptPath")); |
+ content = getHtmlLayoutContents(scriptType, pathLib.relative(scriptPath, |
+ from: pathLib.dirname(htmlPath))); |
} else { |
- content = getHtmlContents(filename, scriptType, |
- new Path("$scriptPath")); |
+ final htmlLocation = new Path(htmlPath); |
+ content = getHtmlContents( |
+ filename, |
+ dartDir.append('pkg/unittest/lib/test_controller.js') |
+ .relativeTo(htmlLocation), |
+ dartDir.append('pkg/browser/lib/dart.js').relativeTo(htmlLocation), |
+ scriptType, |
+ new Path(scriptPath).relativeTo(htmlLocation)); |
} |
htmlTest.writeStringSync(content); |
htmlTest.closeSync(); |
@@ -1017,11 +962,35 @@ class StandardTestSuite extends TestSuite { |
commandSet = []; |
} |
- var htmlPath_subtest = _createUrlPathFromFile(new Path(htmlPath)); |
- var fullHtmlPath = _getUriForBrowserTest(info, htmlPath_subtest, |
- subtestNames, subtestIndex); |
- |
List<String> args = <String>[]; |
+ var basePath = TestUtils.dartDir().toString(); |
+ if (!htmlPath.startsWith('/') && !htmlPath.startsWith('http')) { |
+ htmlPath = '/$htmlPath'; |
+ } |
+ htmlPath = htmlPath.startsWith(basePath) ? |
+ htmlPath.substring(basePath.length) : htmlPath; |
+ String fullHtmlPath = htmlPath; |
+ var searchStr = '?'; |
+ if (!htmlPath.startsWith('http')) { |
+ // Note: If we run test.py with the "--list" option, no http servers |
+ // will be started. Therefore serverList is an empty list in this |
+ // case. So we use PORT/CROSS_ORIGIN_PORT instead of real ports. |
+ var serverPort = "PORT"; |
+ var crossOriginPort = "CROSS_ORIGIN_PORT"; |
+ if (!configuration['list']) { |
+ serverPort = serverList[0].port.toString(); |
+ crossOriginPort = serverList[1].port.toString(); |
+ } |
+ fullHtmlPath = 'http://127.0.0.1:$serverPort$htmlPath${searchStr}' |
+ 'crossOriginPort=$crossOriginPort'; |
+ searchStr = '&'; |
+ } |
+ if (info.optionsFromFile['isMultiHtmlTest'] |
+ && subtestNames.length > 0) { |
+ fullHtmlPath = '${fullHtmlPath}${searchStr}group=' |
+ '${subtestNames[subtestIndex]}'; |
+ } |
+ |
if (TestUtils.usesWebDriver(runtime)) { |
args = [ |
dartDir.append('tools/testing/run_selenium.py').toNativePath(), |
@@ -1156,7 +1125,8 @@ class StandardTestSuite extends TestSuite { |
var minified = configuration['minified'] ? '-minified' : ''; |
var dirName = "${configuration['compiler']}-${configuration['runtime']}" |
"$checked$minified"; |
- Path generatedTestPath = new Path(buildDir) |
+ Path generatedTestPath = new Path(dartDir.toNativePath()) |
+ .append(buildDir) |
.append('generated_tests') |
.append(dirName) |
.append(testUniqueName); |
@@ -1846,10 +1816,6 @@ class TestUtils { |
const ['d8', 'jsshell'].contains(runtime); |
static String buildDir(Map configuration) { |
- // FIXME(kustermann,ricow): Our code assumes that the returned 'buildDir' |
- // is relative to the current working directory. |
- // Thus, if we pass in an absolute path (e.g. '--build-directory=/tmp/out') |
- // we get into trouble. |
if (configuration['build_directory'] != '') { |
return configuration['build_directory']; |
} |