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

Unified Diff: pkg/analyzer/test/generated/gn_test.dart

Issue 2651613003: Added support for GN workspaces. (Closed)
Patch Set: Tests 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
« no previous file with comments | « pkg/analyzer/lib/src/generated/gn.dart ('k') | pkg/analyzer/test/generated/test_all.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/generated/gn_test.dart
diff --git a/pkg/analyzer/test/generated/gn_test.dart b/pkg/analyzer/test/generated/gn_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..7ceba285ba9e2af7c23d692604ef1d1602caa223
--- /dev/null
+++ b/pkg/analyzer/test/generated/gn_test.dart
@@ -0,0 +1,132 @@
+// 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.
+
+library analyzer.test.generated.gn_test;
+
+import 'package:analyzer/file_system/memory_file_system.dart';
+import 'package:analyzer/src/generated/gn.dart';
+import 'package:analyzer/src/generated/source.dart';
+import 'package:test/test.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+main() {
+ defineReflectiveSuite(() {
+ defineReflectiveTests(GnPackageUriResolverTest);
+ defineReflectiveTests(GnWorkspaceTest);
+ });
+}
+
+@reflectiveTest
+class GnPackageUriResolverTest extends _BaseTest {
+ GnWorkspace workspace;
+ GnPackageUriResolver resolver;
+
+ void test_resolve() {
+ _addResources([
+ '/workspace/.jiri_root/',
+ '/workspace/out/debug-x87_128/gen/dart.sources/',
+ '/workspace/some/code/',
+ '/workspace/a/source/code.dart',
+ ]);
+ provider.newFile(
+ _p('/workspace/out/debug-x87_128/gen/dart.sources/flutter'),
+ '/workspace/a/source');
+ _setUp();
+ _assertResolve(
+ 'package:flutter/code.dart', '/workspace/a/source/code.dart');
+ }
+
+ void test_resolveDoesNotExist() {
+ _addResources([
+ '/workspace/.jiri_root/',
+ '/workspace/out/debug-x87_128/gen/dart.sources/',
+ '/workspace/some/code/',
+ '/workspace/a/source/code.dart',
+ ]);
+ provider.newFile(
+ _p('/workspace/out/debug-x87_128/gen/dart.sources/flutter'),
+ '/workspace/a/source');
+ _setUp();
+ expect(
+ resolver.resolveAbsolute(Uri.parse('package:bogus/code.dart')), null);
+ }
+
+ void _addResources(List<String> paths) {
+ for (String path in paths) {
+ if (path.endsWith('/')) {
+ provider.newFolder(_p(path.substring(0, path.length - 1)));
+ } else {
+ provider.newFile(_p(path), '');
+ }
+ }
+ }
+
+ void _setUp() {
+ workspace = GnWorkspace.find(provider, _p('/workspace'));
+ resolver = new GnPackageUriResolver(workspace);
+ }
+
+ void _assertResolve(String uriStr, String posixPath,
+ {bool exists: true, bool restore: true}) {
+ Uri uri = Uri.parse(uriStr);
+ Source source = resolver.resolveAbsolute(uri);
+ expect(source, isNotNull);
+ expect(source.fullName, _p(posixPath));
+ expect(source.uri, uri);
+ expect(source.exists(), exists);
+ // If enabled, test also "restoreAbsolute".
+ if (restore) {
+ Uri uri = resolver.restoreAbsolute(source);
+ expect(uri.toString(), uriStr);
+ }
+ }
+}
+
+@reflectiveTest
+class GnWorkspaceTest extends _BaseTest {
+ void test_find_notAbsolute() {
+ expect(() => GnWorkspace.find(provider, _p('not_absolute')),
+ throwsArgumentError);
+ }
+
+ void test_find_noJiriRoot() {
+ provider.newFolder(_p('/workspace'));
+ GnWorkspace workspace = GnWorkspace.find(provider, _p('/workspace'));
+ expect(workspace, isNull);
+ }
+
+ void test_find_withRoot() {
+ provider.newFolder(_p('/workspace/.jiri_root'));
+ provider.newFolder(_p('/workspace/out/debug-x87_128/gen/dart.sources'));
+ provider.newFolder(_p('/workspace/some/code'));
+ GnWorkspace workspace =
+ GnWorkspace.find(provider, _p('/workspace/some/code'));
+ expect(workspace, isNotNull);
+ expect(workspace.root, _p('/workspace'));
+ }
+
+ void test_packages() {
+ provider.newFolder(_p('/workspace/.jiri_root'));
+ provider.newFolder(_p('/workspace/out/debug-x87_128/gen/dart.sources'));
+ provider.newFile(
+ _p('/workspace/out/debug-x87_128/gen/dart.sources/flutter'),
+ '/path/to/source');
+ provider.newFolder(_p('/workspace/some/code'));
+ GnWorkspace workspace =
+ GnWorkspace.find(provider, _p('/workspace/some/code'));
+ expect(workspace, isNotNull);
+ expect(workspace.root, _p('/workspace'));
+ expect(workspace.packages.length, 1);
+ expect(workspace.packages['flutter'], '/path/to/source');
+ }
+}
+
+class _BaseTest {
+ final MemoryResourceProvider provider = new MemoryResourceProvider();
+
+ /**
+ * Return the [provider] specific path for the given Posix [path].
+ */
+ String _p(String path) => provider.convertPath(path);
+}
« no previous file with comments | « pkg/analyzer/lib/src/generated/gn.dart ('k') | pkg/analyzer/test/generated/test_all.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698