Index: pkg/code_transformers/lib/tests.dart |
diff --git a/pkg/code_transformers/lib/tests.dart b/pkg/code_transformers/lib/tests.dart |
index bd6886cadef7f6cbe77a4974bf5755beb3eadbef..9ed8e0bdc342f52db06bb13011e7984af0398256 100644 |
--- a/pkg/code_transformers/lib/tests.dart |
+++ b/pkg/code_transformers/lib/tests.dart |
@@ -7,11 +7,14 @@ |
library code_transformers.tests; |
import 'dart:async' show Future; |
+import 'dart:io' show Platform; |
import 'package:barback/barback.dart' show Transformer; |
+import 'package:path/path.dart' as path; |
import 'package:unittest/unittest.dart'; |
import 'src/test_harness.dart'; |
+import 'src/dart_sdk.dart'; |
/// Defines a test which invokes [applyTransformers]. |
testPhases(String testName, List<List<Transformer>> phases, |
@@ -38,3 +41,19 @@ Future applyTransformers(List<List<Transformer>> phases, |
var helper = new TestHelper(phases, inputs, messages)..run(); |
return helper.checkAll(results).then((_) => helper.tearDown()); |
} |
+ |
+/// Variant of [dartSdkDirectory] which includes additional cases only |
+/// typically encountered in Dart's testing environment. |
+String get testingDartSdkDirectory { |
+ var sdkDir = dartSdkDirectory; |
+ if (sdkDir == null) { |
+ // If we cannot find the SDK dir, then assume this is being run from Dart's |
+ // source directory and this script is the main script. |
+ var segments = path.split(path.fromUri(Platform.script)); |
+ var index = segments.indexOf('pkg'); |
+ expect(index, greaterThan(0), |
+ reason: 'testingDartSdkDirectory is only supported in pkg/ tests'); |
+ sdkDir = path.joinAll(segments.sublist(0, index)..add('sdk')); |
+ } |
+ return sdkDir; |
+} |