1560f19844
Change-Id: I8f88168a1fab61b3d0d808b5d9e09e6391325302 Reviewed-on: https://dart-review.googlesource.com/46953 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
680 lines
24 KiB
Dart
680 lines
24 KiB
Dart
// 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 file.
|
|
|
|
import 'package:analyzer/file_system/memory_file_system.dart';
|
|
import 'package:analyzer/src/generated/bazel.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(BazelFileUriResolverTest);
|
|
defineReflectiveTests(BazelPackageUriResolverTest);
|
|
defineReflectiveTests(BazelWorkspaceTest);
|
|
});
|
|
}
|
|
|
|
@reflectiveTest
|
|
class BazelFileUriResolverTest extends _BaseTest {
|
|
BazelWorkspace workspace;
|
|
BazelFileUriResolver resolver;
|
|
|
|
void setUp() {
|
|
provider.newFile(_p('/workspace/WORKSPACE'), '');
|
|
provider.newFolder(_p('/workspace/bazel-genfiles'));
|
|
workspace = BazelWorkspace.find(provider, _p('/workspace'));
|
|
resolver = new BazelFileUriResolver(workspace);
|
|
provider.newFile(_p('/workspace/test.dart'), '');
|
|
provider.newFile(_p('/workspace/bazel-bin/gen1.dart'), '');
|
|
provider.newFile(_p('/workspace/bazel-genfiles/gen2.dart'), '');
|
|
}
|
|
|
|
void test_resolveAbsolute_doesNotExist() {
|
|
Source source = _resolvePath('/workspace/foo.dart');
|
|
expect(source, isNotNull);
|
|
expect(source.exists(), isFalse);
|
|
expect(source.fullName, _p('/workspace/foo.dart'));
|
|
}
|
|
|
|
void test_resolveAbsolute_file() {
|
|
Source source = _resolvePath('/workspace/test.dart');
|
|
expect(source, isNotNull);
|
|
expect(source.exists(), isTrue);
|
|
expect(source.fullName, _p('/workspace/test.dart'));
|
|
}
|
|
|
|
void test_resolveAbsolute_folder() {
|
|
Source source = _resolvePath('/workspace');
|
|
expect(source, isNotNull);
|
|
expect(source.exists(), isFalse);
|
|
expect(source.fullName, _p('/workspace'));
|
|
}
|
|
|
|
void test_resolveAbsolute_generated_file_exists_one() {
|
|
Source source = _resolvePath('/workspace/gen1.dart');
|
|
expect(source, isNotNull);
|
|
expect(source.exists(), isTrue);
|
|
expect(source.fullName, _p('/workspace/bazel-bin/gen1.dart'));
|
|
}
|
|
|
|
void test_resolveAbsolute_generated_file_exists_two() {
|
|
Source source = _resolvePath('/workspace/gen2.dart');
|
|
expect(source, isNotNull);
|
|
expect(source.exists(), isTrue);
|
|
expect(source.fullName, _p('/workspace/bazel-genfiles/gen2.dart'));
|
|
}
|
|
|
|
void test_resolveAbsolute_notFile_dartUri() {
|
|
Uri uri = new Uri(scheme: 'dart', path: 'core');
|
|
Source source = resolver.resolveAbsolute(uri);
|
|
expect(source, isNull);
|
|
}
|
|
|
|
void test_resolveAbsolute_notFile_httpsUri() {
|
|
Uri uri = new Uri(scheme: 'https', path: '127.0.0.1/test.dart');
|
|
Source source = resolver.resolveAbsolute(uri);
|
|
expect(source, isNull);
|
|
}
|
|
|
|
void test_restoreAbsolute() {
|
|
Uri uri = provider.pathContext.toUri(_p('/workspace/test.dart'));
|
|
Source source = resolver.resolveAbsolute(uri);
|
|
expect(source, isNotNull);
|
|
expect(resolver.restoreAbsolute(source), uri);
|
|
expect(
|
|
resolver.restoreAbsolute(
|
|
new NonExistingSource(source.fullName, null, null)),
|
|
uri);
|
|
}
|
|
|
|
Source _resolvePath(String absolutePosixPath) {
|
|
String absolutePath = provider.convertPath(absolutePosixPath);
|
|
Uri uri = provider.pathContext.toUri(absolutePath);
|
|
return resolver.resolveAbsolute(uri);
|
|
}
|
|
}
|
|
|
|
@reflectiveTest
|
|
class BazelPackageUriResolverTest extends _BaseTest {
|
|
BazelWorkspace workspace;
|
|
BazelPackageUriResolver resolver;
|
|
|
|
void test_resolveAbsolute_bin() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/my/foo/lib/foo1.dart',
|
|
'/workspace/bazel-bin/my/foo/lib/foo1.dart'
|
|
]);
|
|
_assertResolve(
|
|
'package:my.foo/foo1.dart', '/workspace/bazel-bin/my/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_bin_notInWorkspace() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/bazel-bin/my/foo/lib/foo1.dart'
|
|
]);
|
|
_assertResolve(
|
|
'package:my.foo/foo1.dart', '/workspace/bazel-bin/my/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_genfiles() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/my/foo/lib/foo1.dart',
|
|
'/workspace/bazel-genfiles/my/foo/lib/foo1.dart'
|
|
]);
|
|
_assertResolve('package:my.foo/foo1.dart',
|
|
'/workspace/bazel-genfiles/my/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_genfiles_notInWorkspace() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/bazel-genfiles/my/foo/lib/foo1.dart'
|
|
]);
|
|
_assertResolve('package:my.foo/foo1.dart',
|
|
'/workspace/bazel-genfiles/my/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_null_noSlash() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
]);
|
|
Source source = resolver.resolveAbsolute(Uri.parse('package:foo'));
|
|
expect(source, isNull);
|
|
}
|
|
|
|
void test_resolveAbsolute_null_notPackage() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
]);
|
|
Source source = resolver.resolveAbsolute(Uri.parse('dart:async'));
|
|
expect(source, isNull);
|
|
}
|
|
|
|
void test_resolveAbsolute_null_startsWithSlash() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/my/foo/lib/bar.dart',
|
|
]);
|
|
Source source =
|
|
resolver.resolveAbsolute(Uri.parse('package:/foo/bar.dart'));
|
|
expect(source, isNull);
|
|
}
|
|
|
|
void test_resolveAbsolute_readonly_bin() {
|
|
_addResources([
|
|
'/Users/user/test/READONLY/prime/',
|
|
'/Users/user/test/READONLY/prime/my/foo/lib/foo1.dart',
|
|
'/Users/user/test/prime/bazel-genfiles/',
|
|
'/Users/user/test/prime/my/module/',
|
|
'/Users/user/test/prime/bazel-bin/my/foo/lib/foo1.dart',
|
|
], workspacePath: '/Users/user/test/prime/my/module');
|
|
_assertResolve('package:my.foo/foo1.dart',
|
|
'/Users/user/test/prime/bazel-bin/my/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_readonly_bin_notInWorkspace() {
|
|
_addResources([
|
|
'/Users/user/test/READONLY/prime/',
|
|
'/Users/user/test/prime/bazel-genfiles/',
|
|
'/Users/user/test/prime/my/module/',
|
|
'/Users/user/test/prime/bazel-bin/my/foo/lib/foo1.dart',
|
|
], workspacePath: '/Users/user/test/prime/my/module');
|
|
_assertResolve('package:my.foo/foo1.dart',
|
|
'/Users/user/test/prime/bazel-bin/my/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_readonly_genfiles() {
|
|
_addResources([
|
|
'/Users/user/test/READONLY/prime/',
|
|
'/Users/user/test/READONLY/prime/my/foo/lib/foo1.dart',
|
|
'/Users/user/test/prime/bazel-genfiles/',
|
|
'/Users/user/test/prime/my/module/',
|
|
'/Users/user/test/prime/bazel-genfiles/my/foo/lib/foo1.dart',
|
|
], workspacePath: '/Users/user/test/prime/my/module');
|
|
_assertResolve('package:my.foo/foo1.dart',
|
|
'/Users/user/test/prime/bazel-genfiles/my/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_readonly_genfiles_notInWorkspace() {
|
|
_addResources([
|
|
'/Users/user/test/READONLY/prime/',
|
|
'/Users/user/test/prime/bazel-genfiles/',
|
|
'/Users/user/test/prime/my/module/',
|
|
'/Users/user/test/prime/bazel-genfiles/my/foo/lib/foo1.dart',
|
|
], workspacePath: '/Users/user/test/prime/my/module');
|
|
_assertResolve('package:my.foo/foo1.dart',
|
|
'/Users/user/test/prime/bazel-genfiles/my/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_readonly_thirdParty_bin() {
|
|
_addResources([
|
|
'/Users/user/test/READONLY/prime/',
|
|
'/Users/user/test/READONLY/prime/third_party/dart/foo/lib/foo1.dart',
|
|
'/Users/user/test/prime/bazel-genfiles/',
|
|
'/Users/user/test/prime/my/module/',
|
|
'/Users/user/test/prime/bazel-bin/third_party/dart/foo/lib/foo1.dart',
|
|
], workspacePath: '/Users/user/test/prime/my/module');
|
|
_assertResolve('package:foo/foo1.dart',
|
|
'/Users/user/test/prime/bazel-bin/third_party/dart/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_readonly_thirdParty_genfiles() {
|
|
_addResources([
|
|
'/Users/user/test/READONLY/prime/',
|
|
'/Users/user/test/READONLY/prime/third_party/dart/foo/lib/foo1.dart',
|
|
'/Users/user/test/prime/bazel-genfiles/',
|
|
'/Users/user/test/prime/my/module/',
|
|
'/Users/user/test/prime/bazel-genfiles/third_party/dart/foo/lib/foo1.dart',
|
|
], workspacePath: '/Users/user/test/prime/my/module');
|
|
_assertResolve('package:foo/foo1.dart',
|
|
'/Users/user/test/prime/bazel-genfiles/third_party/dart/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_readonly_thirdParty_workspace_doesNotExist() {
|
|
_addResources([
|
|
'/Users/user/test/READONLY/prime/',
|
|
'/Users/user/test/READONLY/prime/third_party/dart/foo/lib/foo1.dart',
|
|
'/Users/user/test/prime/bazel-genfiles/',
|
|
'/Users/user/test/prime/my/module/',
|
|
], workspacePath: '/Users/user/test/prime/my/module');
|
|
_assertResolve('package:foo/foo2.dart',
|
|
'/Users/user/test/prime/third_party/dart/foo/lib/foo2.dart',
|
|
exists: false);
|
|
}
|
|
|
|
void test_resolveAbsolute_readonly_thirdParty_workspace_exists() {
|
|
_addResources([
|
|
'/Users/user/test/READONLY/prime/',
|
|
'/Users/user/test/READONLY/prime/third_party/dart/foo/lib/foo1.dart',
|
|
'/Users/user/test/prime/bazel-genfiles/',
|
|
'/Users/user/test/prime/my/module/',
|
|
], workspacePath: '/Users/user/test/prime/my/module');
|
|
_assertResolve('package:foo/foo1.dart',
|
|
'/Users/user/test/READONLY/prime/third_party/dart/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_readonly_workspace_doesNotExist() {
|
|
_addResources([
|
|
'/Users/user/test/READONLY/prime/',
|
|
'/Users/user/test/prime/bazel-genfiles/',
|
|
'/Users/user/test/prime/my/module/',
|
|
], workspacePath: '/Users/user/test/prime/my/module');
|
|
_assertResolve('package:my.foo/foo1.dart',
|
|
'/Users/user/test/prime/my/foo/lib/foo1.dart',
|
|
exists: false);
|
|
}
|
|
|
|
void test_resolveAbsolute_readonly_workspace_exists() {
|
|
_addResources([
|
|
'/Users/user/test/READONLY/prime/',
|
|
'/Users/user/test/READONLY/prime/my/foo/lib/foo1.dart',
|
|
'/Users/user/test/prime/bazel-genfiles/',
|
|
'/Users/user/test/prime/my/module/',
|
|
], workspacePath: '/Users/user/test/prime/my/module');
|
|
_assertResolve('package:my.foo/foo1.dart',
|
|
'/Users/user/test/READONLY/prime/my/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_thirdParty_bin() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/third_party/dart/foo/lib/foo1.dart',
|
|
'/workspace/bazel-bin/third_party/dart/foo/lib/foo1.dart',
|
|
]);
|
|
_assertResolve('package:foo/foo1.dart',
|
|
'/workspace/bazel-bin/third_party/dart/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_thirdParty_bin_notInWorkspace() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/bazel-bin/third_party/dart/foo/lib/foo1.dart',
|
|
]);
|
|
_assertResolve('package:foo/foo1.dart',
|
|
'/workspace/bazel-bin/third_party/dart/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_thirdParty_doesNotExist() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/third_party/dart/foo/lib/foo1.dart',
|
|
]);
|
|
_assertResolve('package:foo/foo2.dart',
|
|
'/workspace/third_party/dart/foo/lib/foo2.dart',
|
|
exists: false);
|
|
}
|
|
|
|
void test_resolveAbsolute_thirdParty_exists() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/third_party/dart/foo/lib/foo1.dart',
|
|
]);
|
|
_assertResolve('package:foo/foo1.dart',
|
|
'/workspace/third_party/dart/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_thirdParty_genfiles() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/third_party/dart/foo/lib/foo1.dart',
|
|
'/workspace/bazel-genfiles/third_party/dart/foo/lib/foo1.dart',
|
|
]);
|
|
_assertResolve('package:foo/foo1.dart',
|
|
'/workspace/bazel-genfiles/third_party/dart/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_thirdParty_genfiles_notInWorkspace() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/bazel-genfiles/third_party/dart/foo/lib/foo1.dart',
|
|
]);
|
|
_assertResolve('package:foo/foo1.dart',
|
|
'/workspace/bazel-genfiles/third_party/dart/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_resolveAbsolute_workspace_doesNotExist() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
]);
|
|
_assertResolve('package:my.foo/doesNotExist.dart',
|
|
'/workspace/my/foo/lib/doesNotExist.dart',
|
|
exists: false);
|
|
}
|
|
|
|
void test_resolveAbsolute_workspace_exists() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/my/foo/lib/foo1.dart',
|
|
]);
|
|
_assertResolve(
|
|
'package:my.foo/foo1.dart', '/workspace/my/foo/lib/foo1.dart',
|
|
exists: true);
|
|
}
|
|
|
|
void test_restoreAbsolute_noPackageName_workspace() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/lib/foo1.dart',
|
|
'/workspace/foo/lib/foo2.dart',
|
|
]);
|
|
_assertRestore('/workspace/lib/foo1.dart', null);
|
|
_assertRestore('/workspace/foo/lib/foo2.dart', null);
|
|
}
|
|
|
|
void test_restoreAbsolute_noPathInLib_bin() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/bazel-bin/my/foo/lib/foo1.dart',
|
|
]);
|
|
_assertRestore('/workspace/bazel-bin', null);
|
|
_assertRestore('/workspace/bazel-bin/my', null);
|
|
_assertRestore('/workspace/bazel-bin/my/foo', null);
|
|
_assertRestore('/workspace/bazel-bin/my/foo/lib', null);
|
|
}
|
|
|
|
void test_restoreAbsolute_noPathInLib_genfiles() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/bazel-genfiles/my/foo/lib/foo1.dart',
|
|
]);
|
|
_assertRestore('/workspace/bazel-genfiles', null);
|
|
_assertRestore('/workspace/bazel-genfiles/my', null);
|
|
_assertRestore('/workspace/bazel-genfiles/my/foo', null);
|
|
_assertRestore('/workspace/bazel-genfiles/my/foo/lib', null);
|
|
}
|
|
|
|
void test_restoreAbsolute_noPathInLib_workspace() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/my/foo/lib/foo1.dart',
|
|
]);
|
|
_assertRestore('/workspace', null);
|
|
_assertRestore('/workspace/my', null);
|
|
_assertRestore('/workspace/my/foo', null);
|
|
_assertRestore('/workspace/my/foo/lib', null);
|
|
}
|
|
|
|
void test_restoreAbsolute_thirdPartyNotDart_workspace() {
|
|
_addResources([
|
|
'/workspace/WORKSPACE',
|
|
'/workspace/bazel-genfiles/',
|
|
'/workspace/third_party/something/lib/foo.dart',
|
|
]);
|
|
_assertRestore('/workspace/third_party/something/lib/foo.dart',
|
|
'package:third_party.something/foo.dart');
|
|
}
|
|
|
|
void _addResources(List<String> paths, {String workspacePath: '/workspace'}) {
|
|
for (String path in paths) {
|
|
if (path.endsWith('/')) {
|
|
provider.newFolder(_p(path.substring(0, path.length - 1)));
|
|
} else {
|
|
provider.newFile(_p(path), '');
|
|
}
|
|
}
|
|
workspace = BazelWorkspace.find(provider, _p(workspacePath));
|
|
resolver = new BazelPackageUriResolver(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);
|
|
}
|
|
}
|
|
|
|
void _assertRestore(String posixPath, String expectedUri) {
|
|
String path = _p(posixPath);
|
|
_MockSource source = new _MockSource(path);
|
|
Uri uri = resolver.restoreAbsolute(source);
|
|
expect(uri?.toString(), expectedUri);
|
|
}
|
|
}
|
|
|
|
@reflectiveTest
|
|
class BazelWorkspaceTest extends _BaseTest {
|
|
void test_find_fail_notAbsolute() {
|
|
expect(() => BazelWorkspace.find(provider, _p('not_absolute')),
|
|
throwsArgumentError);
|
|
}
|
|
|
|
void test_find_hasReadonlyFolder() {
|
|
provider.newFolder(_p('/Users/user/test/READONLY/prime'));
|
|
provider.newFolder(_p('/Users/user/test/prime'));
|
|
provider.newFolder(_p('/Users/user/test/prime/bazel-genfiles'));
|
|
BazelWorkspace workspace =
|
|
BazelWorkspace.find(provider, _p('/Users/user/test/prime/my/module'));
|
|
expect(workspace.root, _p('/Users/user/test/prime'));
|
|
expect(workspace.readonly, _p('/Users/user/test/READONLY/prime'));
|
|
expect(workspace.bin, _p('/Users/user/test/prime/bazel-bin'));
|
|
expect(workspace.genfiles, _p('/Users/user/test/prime/bazel-genfiles'));
|
|
}
|
|
|
|
void test_find_hasReadonlyFolder_bad_actuallyHasWorkspaceFile() {
|
|
provider.newFolder(_p('/Users/user/test/READONLY'));
|
|
provider.newFile(_p('/Users/user/test/prime/WORKSPACE'), '');
|
|
provider.newFolder(_p('/Users/user/test/prime/bazel-genfiles'));
|
|
BazelWorkspace workspace =
|
|
BazelWorkspace.find(provider, _p('/Users/user/test/prime/my/module'));
|
|
expect(workspace.root, _p('/Users/user/test/prime'));
|
|
expect(workspace.readonly, isNull);
|
|
expect(workspace.bin, _p('/Users/user/test/prime/bazel-bin'));
|
|
expect(workspace.genfiles, _p('/Users/user/test/prime/bazel-genfiles'));
|
|
}
|
|
|
|
void test_find_hasReadonlyFolder_blaze() {
|
|
provider.newFolder(_p('/Users/user/test/READONLY/prime'));
|
|
provider.newFolder(_p('/Users/user/test/prime'));
|
|
provider.newFolder(_p('/Users/user/test/prime/blaze-genfiles'));
|
|
BazelWorkspace workspace =
|
|
BazelWorkspace.find(provider, _p('/Users/user/test/prime/my/module'));
|
|
expect(workspace.root, _p('/Users/user/test/prime'));
|
|
expect(workspace.readonly, _p('/Users/user/test/READONLY/prime'));
|
|
expect(workspace.bin, _p('/Users/user/test/prime/blaze-bin'));
|
|
expect(workspace.genfiles, _p('/Users/user/test/prime/blaze-genfiles'));
|
|
}
|
|
|
|
void test_find_hasWorkspaceFile() {
|
|
provider.newFile(_p('/workspace/WORKSPACE'), '');
|
|
provider.newFolder(_p('/workspace/bazel-genfiles'));
|
|
BazelWorkspace workspace =
|
|
BazelWorkspace.find(provider, _p('/workspace/my/module'));
|
|
expect(workspace.root, _p('/workspace'));
|
|
expect(workspace.readonly, isNull);
|
|
expect(workspace.bin, _p('/workspace/bazel-bin'));
|
|
expect(workspace.genfiles, _p('/workspace/bazel-genfiles'));
|
|
}
|
|
|
|
void test_find_hasWorkspaceFile_forModuleInWorkspace() {
|
|
provider.newFile(_p('/workspace/WORKSPACE'), '');
|
|
provider.newFolder(_p('/workspace/bazel-genfiles'));
|
|
BazelWorkspace workspace =
|
|
BazelWorkspace.find(provider, _p('/workspace/my/module'));
|
|
expect(workspace.root, _p('/workspace'));
|
|
expect(workspace.readonly, isNull);
|
|
expect(workspace.bin, _p('/workspace/bazel-bin'));
|
|
expect(workspace.genfiles, _p('/workspace/bazel-genfiles'));
|
|
}
|
|
|
|
void test_find_hasWorkspaceFile_forWorkspace() {
|
|
provider.newFile(_p('/workspace/WORKSPACE'), '');
|
|
provider.newFolder(_p('/workspace/bazel-genfiles'));
|
|
BazelWorkspace workspace = BazelWorkspace.find(provider, _p('/workspace'));
|
|
expect(workspace.root, _p('/workspace'));
|
|
expect(workspace.readonly, isNull);
|
|
expect(workspace.bin, _p('/workspace/bazel-bin'));
|
|
expect(workspace.genfiles, _p('/workspace/bazel-genfiles'));
|
|
}
|
|
|
|
void test_find_hasWorkspaceFile_forWorkspace_blaze() {
|
|
provider.newFile(_p('/workspace/WORKSPACE'), '');
|
|
provider.newFolder(_p('/workspace/blaze-genfiles'));
|
|
BazelWorkspace workspace = BazelWorkspace.find(provider, _p('/workspace'));
|
|
expect(workspace.root, _p('/workspace'));
|
|
expect(workspace.readonly, isNull);
|
|
expect(workspace.bin, _p('/workspace/blaze-bin'));
|
|
expect(workspace.genfiles, _p('/workspace/blaze-genfiles'));
|
|
}
|
|
|
|
void test_find_null_noWorkspaceMarkers() {
|
|
BazelWorkspace workspace =
|
|
BazelWorkspace.find(provider, _p('/workspace/my/module'));
|
|
expect(workspace, isNull);
|
|
}
|
|
|
|
void test_find_null_noWorkspaceMarkers_inRoot() {
|
|
BazelWorkspace workspace = BazelWorkspace.find(provider, _p('/'));
|
|
expect(workspace, isNull);
|
|
}
|
|
|
|
void test_find_null_symlinkPrefix() {
|
|
String prefix = BazelWorkspace.defaultSymlinkPrefix;
|
|
provider.newFile(_p('/workspace/WORKSPACE'), '');
|
|
BazelWorkspace workspace =
|
|
BazelWorkspace.find(provider, _p('/workspace/my/module'));
|
|
expect(workspace.root, _p('/workspace'));
|
|
expect(workspace.readonly, isNull);
|
|
expect(workspace.bin, _p('/workspace/$prefix-bin'));
|
|
expect(workspace.genfiles, _p('/workspace/$prefix-genfiles'));
|
|
}
|
|
|
|
void test_findFile_hasReadonlyFolder() {
|
|
provider.newFolder(_p('/Users/user/test/READONLY/prime'));
|
|
provider.newFolder(_p('/Users/user/test/prime'));
|
|
provider.newFile(_p('/Users/user/test/prime/my/module/test1.dart'), '');
|
|
provider.newFile(_p('/Users/user/test/prime/my/module/test2.dart'), '');
|
|
provider.newFile(_p('/Users/user/test/prime/my/module/test3.dart'), '');
|
|
provider.newFile(
|
|
_p('/Users/user/test/prime/bazel-bin/my/module/test2.dart'), '');
|
|
provider.newFile(
|
|
_p('/Users/user/test/prime/bazel-genfiles/my/module/test3.dart'), '');
|
|
provider.newFile(
|
|
_p('/Users/user/test/READONLY/prime/other/module/test4.dart'), '');
|
|
BazelWorkspace workspace =
|
|
BazelWorkspace.find(provider, _p('/Users/user/test/prime/my/module'));
|
|
expect(
|
|
workspace
|
|
.findFile(_p('/Users/user/test/prime/my/module/test1.dart'))
|
|
.path,
|
|
_p('/Users/user/test/prime/my/module/test1.dart'));
|
|
expect(
|
|
workspace
|
|
.findFile(_p('/Users/user/test/prime/my/module/test2.dart'))
|
|
.path,
|
|
_p('/Users/user/test/prime/bazel-bin/my/module/test2.dart'));
|
|
expect(
|
|
workspace
|
|
.findFile(_p('/Users/user/test/prime/my/module/test3.dart'))
|
|
.path,
|
|
_p('/Users/user/test/prime/bazel-genfiles/my/module/test3.dart'));
|
|
expect(
|
|
workspace
|
|
.findFile(_p('/Users/user/test/prime/other/module/test4.dart'))
|
|
.path,
|
|
_p('/Users/user/test/READONLY/prime/other/module/test4.dart'));
|
|
}
|
|
|
|
void test_findFile_main_overrides_readonly() {
|
|
provider.newFolder(_p('/Users/user/test/READONLY/prime'));
|
|
provider.newFolder(_p('/Users/user/test/prime'));
|
|
provider.newFolder(_p('/Users/user/test/prime/bazel-genfiles'));
|
|
provider.newFile(_p('/Users/user/test/prime/my/module/test.dart'), '');
|
|
provider.newFile(
|
|
_p('/Users/user/test/READONLY/prime/my/module/test.dart'), '');
|
|
BazelWorkspace workspace =
|
|
BazelWorkspace.find(provider, _p('/Users/user/test/prime/my/module'));
|
|
expect(
|
|
workspace
|
|
.findFile(_p('/Users/user/test/prime/my/module/test.dart'))
|
|
.path,
|
|
_p('/Users/user/test/prime/my/module/test.dart'));
|
|
}
|
|
|
|
void test_findFile_noReadOnly() {
|
|
provider.newFile(_p('/workspace/WORKSPACE'), '');
|
|
provider.newFile(_p('/workspace/my/module/test1.dart'), '');
|
|
provider.newFile(_p('/workspace/my/module/test2.dart'), '');
|
|
provider.newFile(_p('/workspace/my/module/test3.dart'), '');
|
|
provider.newFile(_p('/workspace/bazel-bin/my/module/test2.dart'), '');
|
|
provider.newFile(_p('/workspace/bazel-genfiles/my/module/test3.dart'), '');
|
|
BazelWorkspace workspace =
|
|
BazelWorkspace.find(provider, _p('/workspace/my/module'));
|
|
expect(workspace.findFile(_p('/workspace/my/module/test1.dart')).path,
|
|
_p('/workspace/my/module/test1.dart'));
|
|
expect(workspace.findFile(_p('/workspace/my/module/test2.dart')).path,
|
|
_p('/workspace/bazel-bin/my/module/test2.dart'));
|
|
expect(workspace.findFile(_p('/workspace/my/module/test3.dart')).path,
|
|
_p('/workspace/bazel-genfiles/my/module/test3.dart'));
|
|
}
|
|
}
|
|
|
|
class _BaseTest {
|
|
final MemoryResourceProvider provider = new MemoryResourceProvider();
|
|
|
|
/**
|
|
* Return the [provider] specific path for the given Posix [path].
|
|
*/
|
|
String _p(String path) => provider.convertPath(path);
|
|
}
|
|
|
|
class _MockSource implements Source {
|
|
@override
|
|
final String fullName;
|
|
|
|
_MockSource(this.fullName);
|
|
|
|
@override
|
|
noSuchMethod(Invocation invocation) {
|
|
throw new StateError('Unexpected invocation of ${invocation.memberName}');
|
|
}
|
|
}
|