| Index: tools/testing/dart/test_suite.dart
|
| diff --git a/tools/testing/dart/test_suite.dart b/tools/testing/dart/test_suite.dart
|
| index 475a3589c8ae153ad655ae5dd3c4736910b01315..478fa5d19870d56fc84740a50475f894ae7ee417 100644
|
| --- a/tools/testing/dart/test_suite.dart
|
| +++ b/tools/testing/dart/test_suite.dart
|
| @@ -21,6 +21,7 @@ import "test_runner.dart";
|
| import "multitest.dart";
|
| import "drt_updater.dart";
|
| import "dart:uri";
|
| +import '../../../pkg/path/lib/path.dart' as pathLib;
|
|
|
| part "browser_test.dart";
|
|
|
| @@ -401,11 +402,17 @@ class StandardTestSuite extends TestSuite {
|
| final Path dartDir;
|
| Predicate<String> isTestFilePredicate;
|
| final bool listRecursively;
|
| + /**
|
| + * The set of servers that have been started to run these tests (Could be
|
| + * none).
|
| + */
|
| + List serverList;
|
|
|
| StandardTestSuite(Map configuration,
|
| String suiteName,
|
| Path suiteDirectory,
|
| this.statusFilePaths,
|
| + this.serverList,
|
| {this.isTestFilePredicate,
|
| bool recursive: false})
|
| : super(configuration, suiteName),
|
| @@ -439,14 +446,18 @@ class StandardTestSuite extends TestSuite {
|
| * instead of having to create a custom [StandardTestSuite] subclass. In
|
| * particular, if you add 'path/to/mytestsuite' to [TEST_SUITE_DIRECTORIES]
|
| * in test.dart, this will all be set up for you.
|
| + *
|
| + * The [StandardTestSuite] also optionally takes a list of servers that have
|
| + * been started up by the test harness, to be used by browser tests.
|
| */
|
| factory StandardTestSuite.forDirectory(
|
| - Map configuration, Path directory) {
|
| + Map configuration, Path directory, [List serverList = const []]) {
|
| final name = directory.filename;
|
|
|
| return new StandardTestSuite(configuration,
|
| name, directory,
|
| ['$directory/$name.status', '$directory/${name}_dart2js.status'],
|
| + serverList,
|
| isTestFilePredicate: (filename) => filename.endsWith('_test.dart'),
|
| recursive: true);
|
| }
|
| @@ -853,7 +864,7 @@ class StandardTestSuite extends TestSuite {
|
| File file = new File(dartWrapperFilename);
|
| RandomAccessFile dartWrapper = file.openSync(FileMode.WRITE);
|
| dartWrapper.writeStringSync(
|
| - dartTestWrapper(dartDir, dartLibraryFilename));
|
| + dartTestWrapper(dartDir, file.name, dartLibraryFilename));
|
| dartWrapper.closeSync();
|
| } else {
|
| dartWrapperFilename = filename;
|
| @@ -875,12 +886,6 @@ class StandardTestSuite extends TestSuite {
|
| dartWrapperFilename : compiledDartWrapperFilename;
|
| // Create the HTML file for the test.
|
| RandomAccessFile htmlTest = new File(htmlPath).openSync(FileMode.WRITE);
|
| - String filePrefix = '';
|
| - if (Platform.operatingSystem == 'windows') {
|
| - // Firefox on Windows does not like absolute file path names that start
|
| - // with 'C:' adding 'file:///' solves the problem.
|
| - filePrefix = 'file:///';
|
| - }
|
| String content = null;
|
| Path dir = filePath.directoryPath;
|
| String nameNoExt = filePath.filenameWithoutExtension;
|
| @@ -889,10 +894,12 @@ class StandardTestSuite extends TestSuite {
|
| Path expectedOutput = null;
|
| if (new File.fromPath(pngPath).existsSync()) {
|
| expectedOutput = pngPath;
|
| - content = getHtmlLayoutContents(scriptType, '$filePrefix$scriptPath');
|
| + content = getHtmlLayoutContents(scriptType, pathLib.relative(scriptPath,
|
| + from: pathLib.dirname(htmlPath)));
|
| } else if (new File.fromPath(txtPath).existsSync()) {
|
| expectedOutput = txtPath;
|
| - content = getHtmlLayoutContents(scriptType, '$filePrefix$scriptPath');
|
| + content = getHtmlLayoutContents(scriptType, pathLib.relative(scriptPath,
|
| + from: pathLib.dirname(htmlPath)));
|
| } else {
|
| final htmlLocation = new Path.fromNative(htmlPath);
|
| content = getHtmlContents(
|
| @@ -942,10 +949,15 @@ class StandardTestSuite extends TestSuite {
|
| }
|
|
|
| List<String> args = <String>[];
|
| - String fullHtmlPath = htmlPath.startsWith('http:') ? htmlPath :
|
| - (htmlPath.startsWith('/') ?
|
| - 'file://$htmlPath' :
|
| - 'file:///$htmlPath');
|
| + var basePath = TestUtils.dartDir().toString();
|
| + htmlPath = htmlPath.startsWith(basePath) ?
|
| + htmlPath.substring(basePath.length) : htmlPath;
|
| + String fullHtmlPath = htmlPath;
|
| + if (!htmlPath.startsWith('http')) {
|
| + if (!htmlPath.startsWith('/')) htmlPath = '/$htmlPath';
|
| + fullHtmlPath = 'http://127.0.0.1:${serverList[0].port}$htmlPath?'
|
| + 'crossOriginPort=${serverList[1].port}';
|
| + }
|
| if (info.optionsFromFile['isMultiHtmlTest']
|
| && subtestNames.length > 0) {
|
| fullHtmlPath = '${fullHtmlPath}#${subtestNames[subtestIndex]}';
|
| @@ -987,8 +999,10 @@ class StandardTestSuite extends TestSuite {
|
| var absolutePath =
|
| TestUtils.absolutePath(new Path(packageRootPath));
|
| packageRootUri = new Uri.fromComponents(
|
| - scheme: 'file',
|
| - path: absolutePath.toString());
|
| + scheme: 'http',
|
| + path: '127.0.0.1:${serverList[0].port}/'
|
| + '${pathLib.relative(absolutePath.toString(), from:
|
| + TestUtils.dartDir().toString())}');
|
| }
|
| }
|
|
|
|
|