Index: pkg/kernel/test/closures/kernel_chain.dart |
diff --git a/pkg/kernel/test/closures/kernel_chain.dart b/pkg/kernel/test/closures/kernel_chain.dart |
deleted file mode 100644 |
index edb21eafa5e7fb794924b779ae8a3c9a2109b819..0000000000000000000000000000000000000000 |
--- a/pkg/kernel/test/closures/kernel_chain.dart |
+++ /dev/null |
@@ -1,201 +0,0 @@ |
-// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE.md file. |
- |
-library test.kernel.closures.suite; |
- |
-import 'dart:async' show Future; |
- |
-import 'dart:io' show Directory, File, IOSink; |
- |
-import 'dart:typed_data' show Uint8List; |
- |
-import 'package:kernel/kernel.dart' show loadProgramFromBinary; |
- |
-import 'package:kernel/text/ast_to_text.dart' show Printer; |
- |
-import 'package:testing/testing.dart' |
- show ChainContext, Result, StdioProcess, Step; |
- |
-import 'package:kernel/ast.dart' show Library, Program; |
- |
-import 'package:kernel/verifier.dart' show verifyProgram; |
- |
-import 'package:kernel/binary/ast_to_binary.dart' show BinaryPrinter; |
- |
-import 'package:kernel/binary/ast_from_binary.dart' show BinaryBuilder; |
- |
-Future<bool> fileExists(Uri base, String path) async { |
- return await new File.fromUri(base.resolve(path)).exists(); |
-} |
- |
-class Print extends Step<Program, Program, ChainContext> { |
- const Print(); |
- |
- String get name => "print"; |
- |
- Future<Result<Program>> run(Program program, _) async { |
- StringBuffer sb = new StringBuffer(); |
- for (Library library in program.libraries) { |
- Printer printer = new Printer(sb); |
- if (library.importUri.scheme != "dart") { |
- printer.writeLibraryFile(library); |
- } |
- } |
- print("$sb"); |
- return pass(program); |
- } |
-} |
- |
-class SanityCheck extends Step<Program, Program, ChainContext> { |
- const SanityCheck(); |
- |
- String get name => "sanity check"; |
- |
- Future<Result<Program>> run(Program program, _) async { |
- try { |
- verifyProgram(program); |
- return pass(program); |
- } catch (e, s) { |
- return crash(e, s); |
- } |
- } |
-} |
- |
-class MatchExpectation extends Step<Program, Program, ChainContext> { |
- final String suffix; |
- |
- final bool updateExpectations; |
- |
- const MatchExpectation(this.suffix, {this.updateExpectations: true}); |
- |
- String get name => "match expectations"; |
- |
- Future<Result<Program>> run(Program program, _) async { |
- Library library = program.libraries |
- .firstWhere((Library library) => library.importUri.scheme != "dart"); |
- Uri uri = library.importUri; |
- StringBuffer buffer = new StringBuffer(); |
- new Printer(buffer).writeLibraryFile(library); |
- |
- File expectedFile = new File("${uri.toFilePath()}$suffix"); |
- if (await expectedFile.exists()) { |
- String expected = await expectedFile.readAsString(); |
- if (expected.trim() != "$buffer".trim()) { |
- if (!updateExpectations) { |
- String diff = await runDiff(expectedFile.uri, "$buffer"); |
- return fail(null, "$uri doesn't match ${expectedFile.uri}\n$diff"); |
- } |
- } else { |
- return pass(program); |
- } |
- } |
- if (updateExpectations) { |
- await openWrite(expectedFile.uri, (IOSink sink) { |
- sink.writeln("$buffer".trim()); |
- }); |
- return pass(program); |
- } else { |
- return fail( |
- program, |
- """ |
-Please create file ${expectedFile.path} with this content: |
-$buffer"""); |
- } |
- } |
-} |
- |
-class WriteDill extends Step<Program, Uri, ChainContext> { |
- const WriteDill(); |
- |
- String get name => "write .dill"; |
- |
- Future<Result<Uri>> run(Program program, _) async { |
- Directory tmp = await Directory.systemTemp.createTemp(); |
- Uri uri = tmp.uri.resolve("generated.dill"); |
- File generated = new File.fromUri(uri); |
- IOSink sink = generated.openWrite(); |
- try { |
- new BinaryPrinter(sink).writeProgramFile(program); |
- program.unbindCanonicalNames(); |
- } catch (e, s) { |
- return fail(uri, e, s); |
- } finally { |
- print("Wrote `${generated.path}`"); |
- await sink.close(); |
- } |
- return pass(uri); |
- } |
-} |
- |
-class ReadDill extends Step<Uri, Uri, ChainContext> { |
- const ReadDill(); |
- |
- String get name => "read .dill"; |
- |
- Future<Result<Uri>> run(Uri uri, _) async { |
- try { |
- loadProgramFromBinary(uri.toFilePath()); |
- } catch (e, s) { |
- return fail(uri, e, s); |
- } |
- return pass(uri); |
- } |
-} |
- |
-class Copy extends Step<Program, Program, ChainContext> { |
- const Copy(); |
- |
- String get name => "copy program"; |
- |
- Future<Result<Program>> run(Program program, _) async { |
- BytesCollector sink = new BytesCollector(); |
- new BinaryPrinter(sink).writeProgramFile(program); |
- program.unbindCanonicalNames(); |
- Uint8List bytes = sink.collect(); |
- var newProgram = new Program(); |
- new BinaryBuilder(bytes).readProgram(newProgram); |
- newProgram.unbindCanonicalNames(); |
- return pass(newProgram); |
- } |
-} |
- |
-class BytesCollector implements Sink<List<int>> { |
- final List<List<int>> lists = <List<int>>[]; |
- |
- int length = 0; |
- |
- void add(List<int> data) { |
- lists.add(data); |
- length += data.length; |
- } |
- |
- Uint8List collect() { |
- Uint8List result = new Uint8List(length); |
- int offset = 0; |
- for (List<int> list in lists) { |
- result.setRange(offset, offset += list.length, list); |
- } |
- lists.clear(); |
- length = 0; |
- return result; |
- } |
- |
- void close() {} |
-} |
- |
-Future<String> runDiff(Uri expected, String actual) async { |
- StdioProcess process = await StdioProcess |
- .run("diff", <String>["-u", expected.toFilePath(), "-"], input: actual); |
- return process.output; |
-} |
- |
-Future openWrite(Uri uri, f(IOSink sink)) async { |
- IOSink sink = new File.fromUri(uri).openWrite(); |
- try { |
- await f(sink); |
- } finally { |
- await sink.close(); |
- } |
- print("Wrote $uri"); |
-} |