Index: pkg/front_end/test/src/base/processed_options_test.dart |
diff --git a/pkg/front_end/test/src/base/processed_options_test.dart b/pkg/front_end/test/src/base/processed_options_test.dart |
index 365c5f2ce5d38e4f63bc1abeee6fd284a79f5ca3..ca17096c2712207fea948b260d0887dda3e2d6dd 100644 |
--- a/pkg/front_end/test/src/base/processed_options_test.dart |
+++ b/pkg/front_end/test/src/base/processed_options_test.dart |
@@ -9,7 +9,7 @@ import 'package:front_end/memory_file_system.dart'; |
import 'package:front_end/src/base/processed_options.dart'; |
import 'package:front_end/src/fasta/fasta.dart' show ByteSink; |
import 'package:kernel/binary/ast_to_binary.dart' show BinaryPrinter; |
-import 'package:kernel/kernel.dart' show Program, Library; |
+import 'package:kernel/kernel.dart' show Program, Library, CanonicalName; |
import 'package:test/test.dart'; |
import 'package:test_reflective_loader/test_reflective_loader.dart'; |
@@ -37,6 +37,22 @@ class ProcessedOptionsTest { |
} |
} |
+ test_sdk_summary_inferred() { |
+ // The sdk-summary is inferred by default form sdk-root, when compile-sdk is |
+ // false |
+ var raw = new CompilerOptions() |
+ ..sdkRoot = Uri.parse('file:///sdk/dir/') |
+ ..compileSdk = false; |
+ expect(new ProcessedOptions(raw).sdkSummary, |
+ Uri.parse('file:///sdk/dir/outline.dill')); |
+ |
+ // But it is left null when compile-sdk is true |
+ raw = new CompilerOptions() |
+ ..sdkRoot = Uri.parse('file:///sdk/dir/') |
+ ..compileSdk = true; |
+ expect(new ProcessedOptions(raw).sdkSummary, null); |
+ } |
+ |
test_fileSystem_noBazelRoots() { |
// When no bazel roots are specified, the filesystem should be passed |
// through unmodified. |
@@ -61,7 +77,7 @@ class ProcessedOptionsTest { |
Future<Null> checkMockSummary(CompilerOptions raw) async { |
var processed = new ProcessedOptions(raw); |
- var sdkSummary = await processed.sdkSummaryProgram; |
+ var sdkSummary = await processed.loadSdkSummary(new CanonicalName.root()); |
expect(sdkSummary.libraries.single.importUri, |
mockSummary.libraries.single.importUri); |
} |
@@ -113,4 +129,97 @@ class ProcessedOptionsTest { |
var uriTranslator = await processed.getUriTranslator(); |
expect(uriTranslator.packages, isEmpty); |
} |
+ |
+ test_validateOptions_root_exists() async { |
+ var sdkRoot = Uri.parse('file:///sdk/root/'); |
+ fileSystem |
+ // Note: this test is a bit hackish because the memory file system |
+ // doesn't have the notion of directories. |
+ .entityForUri(sdkRoot) |
+ .writeAsStringSync('\n'); |
+ fileSystem |
+ .entityForUri(sdkRoot.resolve('outline.dill')) |
+ .writeAsStringSync('\n'); |
+ |
+ var errors = []; |
+ var raw = new CompilerOptions() |
+ ..sdkRoot = sdkRoot |
+ ..fileSystem = fileSystem |
+ ..onError = (e) => errors.add(e); |
+ var options = new ProcessedOptions(raw); |
+ var result = await options.validateOptions(); |
+ // Note: we check this first so test failures show the cause directly. |
+ expect(errors, isEmpty); |
+ expect(result, isTrue); |
+ } |
+ |
+ test_validateOptions_root_doesnt_exists() async { |
+ var sdkRoot = Uri.parse('file:///sdk/root'); |
+ var errors = []; |
+ var raw = new CompilerOptions() |
+ ..sdkRoot = sdkRoot |
+ ..fileSystem = fileSystem |
+ ..onError = (e) => errors.add(e); |
+ var options = new ProcessedOptions(raw); |
+ expect(await options.validateOptions(), isFalse); |
+ expect('${errors.first}', contains("SDK root directory not found")); |
+ } |
+ |
+ test_validateOptions_summary_exists() async { |
+ var sdkSummary = Uri.parse('file:///sdk/root/outline.dill'); |
+ fileSystem.entityForUri(sdkSummary).writeAsStringSync('\n'); |
+ |
+ var errors = []; |
+ var raw = new CompilerOptions() |
+ ..sdkSummary = sdkSummary |
+ ..fileSystem = fileSystem |
+ ..onError = (e) => errors.add(e); |
+ var options = new ProcessedOptions(raw); |
+ var result = await options.validateOptions(); |
+ expect(errors, isEmpty); |
+ expect(result, isTrue); |
+ } |
+ |
+ test_validateOptions_summary_doesnt_exists() async { |
+ var sdkSummary = Uri.parse('file:///sdk/root/outline.dill'); |
+ var errors = []; |
+ var raw = new CompilerOptions() |
+ ..sdkSummary = sdkSummary |
+ ..fileSystem = fileSystem |
+ ..onError = (e) => errors.add(e); |
+ var options = new ProcessedOptions(raw); |
+ expect(await options.validateOptions(), isFalse); |
+ expect('${errors.first}', contains("SDK summary not found")); |
+ } |
+ |
+ test_validateOptions_inferred_summary_exists() async { |
+ var sdkRoot = Uri.parse('file:///sdk/root/'); |
+ var sdkSummary = Uri.parse('file:///sdk/root/outline.dill'); |
+ fileSystem.entityForUri(sdkRoot).writeAsStringSync('\n'); |
+ fileSystem.entityForUri(sdkSummary).writeAsStringSync('\n'); |
+ |
+ var errors = []; |
+ var raw = new CompilerOptions() |
+ ..sdkRoot = sdkRoot |
+ ..fileSystem = fileSystem |
+ ..onError = (e) => errors.add(e); |
+ var options = new ProcessedOptions(raw); |
+ var result = await options.validateOptions(); |
+ expect(errors, isEmpty); |
+ expect(result, isTrue); |
+ } |
+ |
+ test_validateOptions_inferred_summary_doesnt_exists() async { |
+ var sdkRoot = Uri.parse('file:///sdk/root/'); |
+ var sdkSummary = Uri.parse('file:///sdk/root/outline.dill'); |
+ fileSystem.entityForUri(sdkRoot).writeAsStringSync('\n'); |
+ var errors = []; |
+ var raw = new CompilerOptions() |
+ ..sdkSummary = sdkSummary |
+ ..fileSystem = fileSystem |
+ ..onError = (e) => errors.add(e); |
+ var options = new ProcessedOptions(raw); |
+ expect(await options.validateOptions(), isFalse); |
+ expect('${errors.first}', contains("SDK summary not found")); |
+ } |
} |