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

Unified Diff: pkg/kernel/test/reify/suite.dart

Issue 2981813002: Move `reify` to use fasta instead of dartk (Closed)
Patch Set: Created 3 years, 5 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
« no previous file with comments | « pkg/kernel/test/reify/kernel_chain.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/kernel/test/reify/suite.dart
diff --git a/pkg/kernel/test/reify/suite.dart b/pkg/kernel/test/reify/suite.dart
index 378a768ea1d895b65daec3ac249a70771945f756..cfb5104a6da6719eaa3edca6730bd71e2fad041a 100644
--- a/pkg/kernel/test/reify/suite.dart
+++ b/pkg/kernel/test/reify/suite.dart
@@ -6,14 +6,7 @@ library test.kernel.reify.suite;
import 'dart:async' show Future;
-import 'dart:io' show Directory, File, Platform;
-
-import 'package:analyzer/src/generated/sdk.dart' show DartSdk;
-
-import 'package:analyzer/src/kernel/loader.dart'
- show DartLoader, DartOptions, createDartSdk;
-
-import 'package:kernel/class_hierarchy.dart' show ClosedWorldClassHierarchy;
+import 'dart:io' show Platform, File;
import 'package:kernel/core_types.dart' show CoreTypes;
@@ -21,63 +14,57 @@ import 'package:kernel/target/targets.dart' show Target, TargetFlags, getTarget;
import 'package:kernel/target/vmcc.dart' show VmClosureConvertedTarget;
-import 'kernel_chain.dart'
- show MatchExpectation, Print, ReadDill, SanityCheck, WriteDill;
+import 'package:front_end/src/fasta/testing/patched_sdk_location.dart'
+ show computeDartVm, computePatchedSdk;
+import 'package:front_end/src/fasta/testing/kernel_chain.dart'
+ show
+ Compile,
+ CompileContext,
+ MatchExpectation,
+ Print,
+ ReadDill,
+ Verify,
+ WriteDill;
import 'package:testing/testing.dart'
- show
- Chain,
- ChainContext,
- Result,
- StdioProcess,
- Step,
- TestDescription,
- runMe;
+ show Chain, ChainContext, Result, StdioProcess, Step, runMe;
import 'package:kernel/ast.dart' show Program;
import 'package:kernel/transformations/generic_types_reification.dart'
as generic_types_reification;
-import 'package:package_config/discovery.dart' show loadPackagesFile;
-
-class TestContext extends ChainContext {
+class TestContext extends ChainContext implements CompileContext {
final Uri vm;
+ final Uri platformUri;
+ final Uri sdk;
- final Uri packages;
-
- final DartOptions options;
+ @override
+ final Target target = new NotReifiedTarget(new TargetFlags(
+ strongMode: true,
+ kernelRuntime: Platform.script.resolve("../../runtime/")));
- final DartSdk dartSdk;
+ // Strong mode is required to keep the type arguments in invocations of
+ // generic methods.
+ @override
+ bool get strongMode => true;
final List<Step> steps;
- TestContext(String sdk, this.vm, Uri packages, bool strongMode, this.dartSdk,
- bool updateExpectations)
- : packages = packages,
- options = new DartOptions(
- strongMode: strongMode,
- sdk: sdk,
- packagePath: packages.toFilePath()),
- steps = <Step>[
- const NotReifiedKernel(),
+ TestContext(this.vm, this.platformUri, this.sdk, bool updateExpectations)
+ : steps = <Step>[
+ const Compile(),
const Print(),
- const SanityCheck(),
+ const Verify(true),
const GenericTypesReification(),
const Print(),
- const SanityCheck(),
+ const Verify(true),
new MatchExpectation(".expect",
updateExpectations: updateExpectations),
const WriteDill(),
const ReadDill(),
const Run(),
];
-
- Future<DartLoader> createLoader() async {
- return new DartLoader(
- new Program(), options, await loadPackagesFile(packages),
- dartSdk: dartSdk);
- }
}
enum Environment {
@@ -85,58 +72,13 @@ enum Environment {
file,
}
-Future<String> getEnvironmentVariable(
- String name, Environment kind, String undefined, notFound(String n)) async {
- String result = Platform.environment[name];
- if (result == null) {
- throw undefined;
- }
- switch (kind) {
- case Environment.directory:
- if (!await new Directory(result).exists()) throw notFound(result);
- break;
-
- case Environment.file:
- if (!await new File(result).exists()) throw notFound(result);
- break;
- }
- return result;
-}
-
-Future<bool> fileExists(Uri base, String path) async {
- return await new File.fromUri(base.resolve(path)).exists();
-}
-
Future<TestContext> createContext(
Chain suite, Map<String, String> environment) async {
- const String suggestion = """Try building the patched SDK by running
- 'tools/build.py patched_sdk'""";
-
- // TODO(karlklose): The path is different on MacOS.
- String sdk = "out/DebugX64/patched_sdk/";
- Uri sdkUri = Uri.base.resolve(sdk);
- const String asyncDart = "lib/async/async.dart";
- if (!await fileExists(sdkUri, asyncDart)) {
- throw "Couldn't find the patched SDK. $suggestion";
- }
- const String asyncSources = "lib/async/async_sources.gypi";
- if (await fileExists(sdkUri, asyncSources)) {
- throw "Found '$asyncSources' in '$sdk', so it isn't a patched SDK. "
- "$suggestion";
- }
-
- // TODO(karlklose): select the VM based on the mode.
- Uri vm = Uri.base.resolve("out/ReleaseX64/dart");
-
- Uri packages = Uri.base.resolve(".packages");
- // Strong mode is required to keep the type arguments in invocations of
- // generic methods.
- bool strongMode = true;
- bool updateExpectations = const String.fromEnvironment("updateExpectations",
- defaultValue: "false") ==
- "true";
- return new TestContext(sdk, vm, packages, strongMode,
- createDartSdk(sdk, strongMode: strongMode), updateExpectations);
+ Uri sdk = await computePatchedSdk();
+ Uri vm = computeDartVm(sdk);
+ Uri platform = sdk.resolve('platform.dill');
+ bool updateExpectations = environment["updateExpectations"] == "true";
+ return new TestContext(vm, platform, sdk, updateExpectations);
}
// [NotReifiedTarget] is intended to work as the [Target] class that
@@ -172,41 +114,6 @@ class NotReifiedTarget extends VmClosureConvertedTarget {
}
}
-class NotReifiedKernel extends Step<TestDescription, Program, TestContext> {
- const NotReifiedKernel();
-
- String get name => "kernel";
-
- Future<Result<Program>> run(
- TestDescription description, TestContext testContext) async {
- try {
- DartLoader loader = await testContext.createLoader();
-
- // Strong mode is required to keep the type arguments in invocations of
- // generic methods.
- Target target = new NotReifiedTarget(new TargetFlags(
- strongMode: true,
- kernelRuntime: Platform.script.resolve("../../runtime/")));
-
- String path = description.file.path;
- Uri uri = Uri.base.resolve(path);
- loader.loadProgram(uri, target: target);
- var program = loader.program;
- for (var error in loader.errors) {
- return fail(program, "$error");
- }
- var coreTypes = new CoreTypes(program);
- var hierarchy = new ClosedWorldClassHierarchy(program);
- target
- ..performModularTransformationsOnProgram(coreTypes, hierarchy, program)
- ..performGlobalTransformations(coreTypes, program);
- return pass(program);
- } catch (e, s) {
- return crash(e, s);
- }
- }
-}
-
class GenericTypesReification extends Step<Program, Program, TestContext> {
const GenericTypesReification();
@@ -228,12 +135,17 @@ class Run extends Step<Uri, int, TestContext> {
String get name => "run";
+ bool get isAsync => true;
+
+ bool get isRuntime => true;
+
Future<Result<int>> run(Uri uri, TestContext context) async {
File generated = new File.fromUri(uri);
StdioProcess process;
try {
- process =
- await StdioProcess.run(context.vm.toFilePath(), [generated.path]);
+ var sdkPath = context.sdk.toFilePath();
+ var args = ['--kernel-binaries=$sdkPath', generated.path];
+ process = await StdioProcess.run(context.vm.toFilePath(), args);
print(process.output);
} finally {
generated.parent.delete(recursive: true);
« no previous file with comments | « pkg/kernel/test/reify/kernel_chain.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698