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

Unified Diff: pkg/front_end/test/incremental_kernel_generator_test.dart

Issue 2624193003: Work in progress: front end hot reload API (Closed)
Patch Set: First steel thread of functionality. Created 3 years, 11 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
Index: pkg/front_end/test/incremental_kernel_generator_test.dart
diff --git a/pkg/front_end/test/incremental_kernel_generator_test.dart b/pkg/front_end/test/incremental_kernel_generator_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..3d093fa0a44a63fcb55e2dc18e56c07892709941
--- /dev/null
+++ b/pkg/front_end/test/incremental_kernel_generator_test.dart
@@ -0,0 +1,83 @@
+// Copyright (c) 2017, 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 file.
+
+import 'dart:async';
+
+import 'package:analyzer/file_system/physical_file_system.dart';
+import 'package:analyzer/src/dart/sdk/sdk.dart';
+import 'package:front_end/compiler_options.dart';
+import 'package:front_end/incremental_kernel_generator.dart';
+import 'package:front_end/memory_file_system.dart';
+import 'package:kernel/ast.dart';
+import 'package:path/path.dart' as pathos;
+import 'package:test/test.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+main() {
+ defineReflectiveSuite(() {
+ defineReflectiveTests(IncrementalKernelGeneratorTest);
+ });
+}
+
+final _sdkSummary = _readSdkSummary();
+
+List<int> _readSdkSummary() {
+ var resourceProvider = PhysicalResourceProvider.INSTANCE;
+ var sdk = new FolderBasedDartSdk(resourceProvider,
+ FolderBasedDartSdk.defaultSdkDirectory(resourceProvider))
+ ..useSummary = true;
+ var path = resourceProvider.pathContext
+ .join(sdk.directory.path, 'lib', '_internal', 'strong.sum');
+ return resourceProvider.getFile(path).readAsBytesSync();
+}
+
+@reflectiveTest
+class IncrementalKernelGeneratorTest {
+ static final sdkSummaryUri = Uri.parse('special:sdk_summary');
+
+ /// Virtual filesystem for testing.
+ final fileSystem = new MemoryFileSystem(pathos.posix, Uri.parse('file:///'));
+
+ /// The object under test.
+ IncrementalKernelGenerator incrementalKernelGenerator;
+
+ Future<Map<Uri, Program>> getInitialState(Uri startingUri) async {
+ fileSystem.entityForUri(sdkSummaryUri).writeAsBytesSync(_sdkSummary);
+ incrementalKernelGenerator = new IncrementalKernelGenerator(
+ startingUri,
+ new CompilerOptions()
+ ..fileSystem = fileSystem
+ ..chaseDependencies = true
+ ..sdkSummary = sdkSummaryUri
+ ..packagesFileUri = new Uri());
+ return (await incrementalKernelGenerator.computeDelta()).newState;
+ }
+
+ test_emptyProgram() async {
+ writeFiles({'/foo.dart': 'main() {}'});
+ var fileUri = Uri.parse('file:///foo.dart');
+ var initialState = await getInitialState(fileUri);
+ expect(initialState.keys, unorderedEquals([fileUri]));
+ var program = initialState[fileUri];
+ expect(program.libraries, hasLength(1));
+ var library = program.libraries[0];
+ expect(library.importUri, fileUri);
+ expect(library.classes, isEmpty);
+ expect(library.procedures, hasLength(1));
+ expect(library.procedures[0].name.name, 'main');
+ var body = library.procedures[0].function.body;
+ expect(body, new isInstanceOf<Block>());
+ var block = body as Block;
+ expect(block.statements, isEmpty);
+ }
+
+ /// Write the given file contents to the virtual filesystem.
+ void writeFiles(Map<String, String> contents) {
+ contents.forEach((path, text) {
+ fileSystem
+ .entityForUri(Uri.parse('file://$path'))
+ .writeAsStringSync(text);
+ });
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698