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

Side by Side Diff: tests/compiler/dart2js/dill_loader_test.dart

Issue 2798443002: Add "load from .dill" file capability and run a white-box test. (Closed)
Patch Set: . Created 3 years, 8 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 import 'dart:async';
6 import 'dart:io';
7 import 'memory_compiler.dart';
8 import 'package:async_helper/async_helper.dart';
9 import 'package:compiler/src/diagnostics/spannable.dart' show Spannable;
10 import 'package:compiler/src/elements/entities.dart'
11 show LibraryEntity, ClassEntity;
12 import 'package:compiler/src/kernel/world_builder.dart';
13 import 'package:compiler/src/library_loader.dart'
14 show ScriptLoader, LibraryLoaderTask;
15 import 'package:compiler/src/script.dart' show Script;
16 import 'package:compiler/src/apiimpl.dart' show CompilerImpl;
17 import "package:expect/expect.dart";
18 import 'package:path/path.dart' as path;
19
20 /// Run the dartk.dart script, and return the binary encoded results.
21 List<int> runDartk(Uri filename) {
22 String basePath = path.fromUri(Platform.script);
Johnni Winther 2017/04/04 07:25:20 Use `String basePath = path.fromUri(Uri.base);` an
Emily Fortuna 2017/04/04 20:03:52 Done.
23 while (path.basename(basePath) != 'sdk') {
24 basePath = path.dirname(basePath);
25 }
26 String dartkPath =
27 path.normalize(path.join(basePath, 'tools/dartk_wrappers/dartk'));
Johnni Winther 2017/04/04 07:25:20 This won't work on Windows. I'll fix it when you l
Emily Fortuna 2017/04/04 20:03:53 I know, but I thought as per our discussion, that
Johnni Winther 2017/04/05 06:53:42 Yes. I'll fix it.
28
29 var args = [filename.path, '-fbin', '-ostdout'];
30 ProcessResult result = Process.runSync(
31 dartkPath, [filename.path, '-fbin', '-ostdout'],
32 stdoutEncoding: null);
33 Expect.equals(0, result.exitCode);
34 return result.stdout;
35 }
36
37 class TestScriptLoader implements ScriptLoader {
38 CompilerImpl compiler;
39 TestScriptLoader(this.compiler);
40
41 Future<Script> readScript(Uri uri, [Spannable spannable]) =>
42 compiler.readScript(uri, spannable);
43 }
44
45 /// Test that the compiler can successfully read in .dill kernel files rather
46 /// than just string source files.
47 main() {
48 asyncTest(() async {
49 Uri uri = Platform.script.resolve('../../corelib/list_literal_test.dart');
Johnni Winther 2017/04/04 07:25:20 Use `Uri.base.resolve('tests/corelib/list_literal_
Emily Fortuna 2017/04/04 20:03:52 Done.
50 File entity = new File.fromUri(uri);
51 DiagnosticCollector diagnostics = new DiagnosticCollector();
52 OutputCollector output = new OutputCollector();
53 Uri entryPoint = Uri.parse('memory:main.dill');
54 List<int> kernelBinary = runDartk(entity.uri);
55
56 CompilerImpl compiler = compilerFor(
57 entryPoint: entryPoint,
58 memorySourceFiles: {'main.dill': kernelBinary},
59 diagnosticHandler: diagnostics,
60 outputProvider: output,
61 options: ['--read-dill']);
62 await compiler.setupSdk();
63 LibraryLoaderTask loader = new LibraryLoaderTask(
Johnni Winther 2017/04/04 07:25:20 `LibraryLoaderTask loader` -> `dynamic loader` Th
Emily Fortuna 2017/04/04 20:03:53 Is that really an improvement, that way we would n
Johnni Winther 2017/04/05 06:53:41 We are relying on implementation details (that the
64 true,
65 compiler.resolvedUriTranslator,
66 new TestScriptLoader(compiler),
67 null,
68 null,
69 null,
70 null,
71 null,
72 compiler.reporter,
73 compiler.measurer);
74
75 await loader.loadLibrary(entryPoint);
76
77 Expect.equals(0, diagnostics.errors.length);
78 Expect.equals(0, diagnostics.warnings.length);
79
80 KernelWorldBuilder worldBuilder = loader.worldBuilder;
81 LibraryEntity library = worldBuilder.lookupLibrary(uri);
82 Expect.isNotNull(library);
83 ClassEntity clss = worldBuilder.lookupClass(library, 'ListLiteralTest');
84 Expect.isNotNull(clss);
85 var member = worldBuilder.lookupClassMember(clss, 'testMain');
86 Expect.isNotNull(member);
87 });
88 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698