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

Unified Diff: lib/src/runner.dart

Issue 1715523003: Warn when an unsupported platform is passed. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Created 4 years, 10 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: lib/src/runner.dart
diff --git a/lib/src/runner.dart b/lib/src/runner.dart
index 4da2710bc7909ce856362c1c3cd44e7b3b50736f..1eb6f2c78dc3ed248215f0738d75778a341f87d1 100644
--- a/lib/src/runner.dart
+++ b/lib/src/runner.dart
@@ -9,6 +9,8 @@ import 'package:async/async.dart';
import 'backend/group.dart';
import 'backend/group_entry.dart';
+import 'backend/operating_system.dart';
+import 'backend/platform_selector.dart';
import 'backend/suite.dart';
import 'backend/test.dart';
import 'backend/test_platform.dart';
@@ -105,6 +107,8 @@ class Runner {
throw new StateError("run() may not be called on a closed Runner.");
}
+ _warnForUnsupportedPlatforms();
+
var suites = _loadSuites();
var success;
@@ -139,6 +143,54 @@ class Runner {
return success == true;
}
+ /// Emits a warning if the user is trying to run on a platform that's
+ /// unsupported for the entire package.
+ void _warnForUnsupportedPlatforms() {
+ if (_config.testOn == PlatformSelector.all) return;
+
+ var unsupportedPlatforms = _config.platforms.where((platform) {
+ return !_config.testOn.evaluate(platform, os: currentOS);
+ }).toList();
+ if (unsupportedPlatforms.isEmpty) return;
+
+ // Human-readable names for all unsupported platforms.
+ var unsupportedNames = [];
+
+ // If the user tried to run on one or moe unsupported browsers, figure out
+ // whether we should warn about the individual browsers or whether all
+ // browsers are unsupported.
+ var unsupportedBrowsers = unsupportedPlatforms
+ .where((platform) => platform.isBrowser);
+ if (unsupportedBrowsers.isNotEmpty) {
+ var supportsAnyBrowser = TestPlatform.all
+ .where((platform) => platform.isBrowser)
+ .any((platform) => _config.testOn.evaluate(platform));
+
+ if (supportsAnyBrowser) {
+ unsupportedNames.addAll(
+ unsupportedBrowsers.map((platform) => platform.name));
+ } else {
+ unsupportedNames.add("browsers");
+ }
+ }
+
+ // If the user tried to run on the VM and it's not supported, figure out if
+ // that's because of the current OS or whether the VM is unsupported.
+ if (unsupportedPlatforms.contains(TestPlatform.vm)) {
+ var supportsAnyOS = OperatingSystem.all.any((os) =>
+ _config.testOn.evaluate(TestPlatform.vm, os: os));
+
+ if (supportsAnyOS) {
+ unsupportedNames.add(currentOS.name);
+ } else {
+ unsupportedNames.add("the Dart VM");
+ }
+ }
+
+ warn("this package doesn't support running tests on " +
+ toSentence(unsupportedNames, conjunction: "or") + ".");
+ }
+
/// Closes the runner.
///
/// This stops any future test suites from running. It will wait for any

Powered by Google App Engine
This is Rietveld 408576698