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

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 4d0447275815800715b575d2e178214739be9c54..70c9735f31c2b97f0939687b5b31d7d1123c05ae 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";
@@ -384,11 +385,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),
@@ -422,14 +429,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);
}
@@ -704,7 +715,7 @@ class StandardTestSuite extends TestSuite {
String tempDir = createOutputDirectory(info.filePath, '');
args.add('--out=$tempDir/out.js');
- List<Command> commands =
+ List<Command> commands =
<Command>[new CompilationCommand("$tempDir/out.js",
!useDart2JsFromSdk,
dart2JsBootstrapDependencies,
@@ -840,7 +851,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;
@@ -862,12 +873,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;
@@ -876,10 +881,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(
@@ -922,17 +929,22 @@ class StandardTestSuite extends TestSuite {
do {
List<Command> commandSet = new List<Command>.from(commands);
if (subtestIndex != 0) {
- // NOTE: The first time we enter this loop, all the compilation
- // commands will be executed. On subsequent loop iterations, we
+ // NOTE: The first time we enter this loop, all the compilation
+ // commands will be executed. On subsequent loop iterations, we
// don't need to do any compilations. Thus we set "commandSet = []".
commandSet = [];
}
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]}';
@@ -971,11 +983,13 @@ class StandardTestSuite extends TestSuite {
if (compiler == 'none') {
var packageRootPath = packageRoot(optionsFromFile['packageRoot']);
if (packageRootPath != null) {
- var absolutePath =
+ 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())}');
}
}

Powered by Google App Engine
This is Rietveld 408576698