| 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);
|
| +}
|
|
|