Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(486)

Unified Diff: tools/testing/dart/test_suite.dart

Issue 11641005: Add cross-origin test with credentials. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..6c56e1b2da9f64690941600d5f16e16578dd8bb2 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;
Mads Ager (google) 2013/01/07 07:15:52 I would prefer that we only use one path library i
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())}');
}
}
@@ -1097,7 +1111,8 @@ class StandardTestSuite extends TestSuite {
var minified = configuration['minified'] ? '-minified' : '';
var dirName = "${configuration['compiler']}-${configuration['runtime']}"
"$checked$minified";
- Path generatedTestPath = new Path.fromNative(buildDir)
+ Path generatedTestPath = new Path.fromNative(dartDir.toString())
+ .append(buildDir.toString())
.append('generated_tests')
.append(dirName)
.append(testUniqueName);

Powered by Google App Engine
This is Rietveld 408576698