| // 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:test/test.dart'; |
| import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| |
| main() { |
| defineReflectiveSuite(() { |
| defineReflectiveTests(GnWorkspaceTest); |
| }); |
| } |
| |
| @reflectiveTest |
| class GnWorkspaceTest extends _BaseTest { |
| void test_find_noJiriRoot() { |
| provider.newFolder(_p('/workspace')); |
| GnWorkspace workspace = GnWorkspace.find(provider, _p('/workspace')); |
| expect(workspace, isNull); |
| } |
| |
| void test_find_notAbsolute() { |
| expect(() => GnWorkspace.find(provider, _p('not_absolute')), |
| throwsArgumentError); |
| } |
| |
| void test_find_withRoot() { |
| provider.newFolder(_p('/workspace/.jiri_root')); |
| provider.newFolder(_p('/workspace/some/code')); |
| provider.newFile(_p('/workspace/some/code/pubspec.yaml'), ''); |
| String buildDir = _p('out/debug-x87_128'); |
| provider.newFile(_p('/workspace/.config'), |
| 'FOO=foo\n' + 'FUCHSIA_BUILD_DIR="$buildDir"\n' + 'BAR=bar\n'); |
| provider.newFile( |
| _p('/workspace/out/debug-x87_128/dartlang/gen/some/code/foo.packages'), |
| ''); |
| GnWorkspace workspace = |
| GnWorkspace.find(provider, _p('/workspace/some/code')); |
| expect(workspace, isNotNull); |
| expect(workspace.root, _p('/workspace/some/code')); |
| } |
| |
| void test_packages() { |
| provider.newFolder(_p('/workspace/.jiri_root')); |
| provider.newFolder(_p('/workspace/some/code')); |
| provider.newFile(_p('/workspace/some/code/pubspec.yaml'), ''); |
| String buildDir = _p('out/debug-x87_128'); |
| provider.newFile(_p('/workspace/.config'), |
| 'FOO=foo\n' + 'FUCHSIA_BUILD_DIR="$buildDir"\n' + 'BAR=bar\n'); |
| String packageLocation = _p('/workspace/this/is/the/package'); |
| Uri packageUri = provider.pathContext.toUri(packageLocation); |
| provider.newFile( |
| _p('/workspace/out/debug-x87_128/dartlang/gen/some/code/foo.packages'), |
| 'flutter:$packageUri'); |
| GnWorkspace workspace = |
| GnWorkspace.find(provider, _p('/workspace/some/code')); |
| expect(workspace, isNotNull); |
| expect(workspace.root, _p('/workspace/some/code')); |
| expect(workspace.packageMap.length, 1); |
| expect(workspace.packageMap['flutter'][0].path, packageLocation); |
| } |
| |
| void test_packages_absoluteBuildDir() { |
| provider.newFolder(_p('/workspace/.jiri_root')); |
| provider.newFolder(_p('/workspace/some/code')); |
| provider.newFile(_p('/workspace/some/code/pubspec.yaml'), ''); |
| String buildDir = _p('/workspace/out/debug-x87_128'); |
| provider.newFile(_p('/workspace/.config'), |
| 'FOO=foo\n' + 'FUCHSIA_BUILD_DIR="$buildDir"\n' + 'BAR=bar\n'); |
| String packageLocation = _p('/workspace/this/is/the/package'); |
| Uri packageUri = provider.pathContext.toUri(packageLocation); |
| provider.newFile( |
| _p('/workspace/out/debug-x87_128/dartlang/gen/some/code/foo.packages'), |
| 'flutter:$packageUri'); |
| GnWorkspace workspace = |
| GnWorkspace.find(provider, _p('/workspace/some/code')); |
| expect(workspace, isNotNull); |
| expect(workspace.root, _p('/workspace/some/code')); |
| expect(workspace.packageMap.length, 1); |
| expect(workspace.packageMap['flutter'][0].path, packageLocation); |
| } |
| |
| void test_packages_multipleCandidates() { |
| provider.newFolder(_p('/workspace/.jiri_root')); |
| provider.newFolder(_p('/workspace/some/code')); |
| provider.newFile(_p('/workspace/some/code/pubspec.yaml'), ''); |
| String buildDir = _p('out/release-y22_256'); |
| provider.newFile(_p('/workspace/.config'), |
| 'FOO=foo\n' + 'FUCHSIA_BUILD_DIR="$buildDir"\n' + 'BAR=bar\n'); |
| String packageLocation = _p('/workspace/this/is/the/package'); |
| Uri packageUri = provider.pathContext.toUri(packageLocation); |
| provider.newFile( |
| _p('/workspace/out/debug-x87_128/dartlang/gen/some/code/foo.packages'), |
| 'flutter:$packageUri'); |
| String otherPackageLocation = _p('/workspace/here/too'); |
| Uri otherPackageUri = provider.pathContext.toUri(otherPackageLocation); |
| provider.newFile( |
| _p('/workspace/out/release-y22_256/dartlang/gen/some/code/foo.packages'), |
| 'rettulf:$otherPackageUri'); |
| GnWorkspace workspace = |
| GnWorkspace.find(provider, _p('/workspace/some/code')); |
| expect(workspace, isNotNull); |
| expect(workspace.root, _p('/workspace/some/code')); |
| expect(workspace.packageMap.length, 1); |
| expect(workspace.packageMap['rettulf'][0].path, otherPackageLocation); |
| } |
| |
| void test_packages_fallbackBuildDir() { |
| provider.newFolder(_p('/workspace/.jiri_root')); |
| provider.newFolder(_p('/workspace/some/code')); |
| provider.newFile(_p('/workspace/some/code/pubspec.yaml'), ''); |
| String packageLocation = _p('/workspace/this/is/the/package'); |
| Uri packageUri = provider.pathContext.toUri(packageLocation); |
| provider.newFile( |
| _p('/workspace/out/debug-x87_128/dartlang/gen/some/code/foo.packages'), |
| 'flutter:$packageUri'); |
| GnWorkspace workspace = |
| GnWorkspace.find(provider, _p('/workspace/some/code')); |
| expect(workspace, isNotNull); |
| expect(workspace.root, _p('/workspace/some/code')); |
| expect(workspace.packageMap.length, 1); |
| expect(workspace.packageMap['flutter'][0].path, packageLocation); |
| } |
| |
| void test_packages_multipleFiles() { |
| provider.newFolder(_p('/workspace/.jiri_root')); |
| provider.newFolder(_p('/workspace/some/code')); |
| provider.newFile(_p('/workspace/some/code/pubspec.yaml'), ''); |
| String buildDir = _p('out/debug-x87_128'); |
| provider.newFile(_p('/workspace/.config'), |
| 'FOO=foo\n' + 'FUCHSIA_BUILD_DIR=$buildDir\n' + 'BAR=bar\n'); |
| String packageOneLocation = _p('/workspace/this/is/the/package'); |
| Uri packageOneUri = provider.pathContext.toUri(packageOneLocation); |
| provider.newFile( |
| _p('/workspace/out/debug-x87_128/dartlang/gen/some/code/foo.packages'), |
| 'flutter:$packageOneUri'); |
| String packageTwoLocation = _p('/workspace/this/is/the/other/package'); |
| Uri packageTwoUri = provider.pathContext.toUri(packageTwoLocation); |
| provider.newFile( |
| _p('/workspace/out/debug-x87_128/dartlang/gen/some/code/foo_test.packages'), |
| 'rettulf:$packageTwoUri'); |
| GnWorkspace workspace = |
| GnWorkspace.find(provider, _p('/workspace/some/code')); |
| expect(workspace, isNotNull); |
| expect(workspace.root, _p('/workspace/some/code')); |
| expect(workspace.packageMap.length, 2); |
| expect(workspace.packageMap['flutter'][0].path, packageOneLocation); |
| expect(workspace.packageMap['rettulf'][0].path, packageTwoLocation); |
| } |
| } |
| |
| class _BaseTest { |
| final MemoryResourceProvider provider = new MemoryResourceProvider(); |
| |
| /** |
| * Return the [provider] specific path for the given Posix [path]. |
| */ |
| String _p(String path) => provider.convertPath(path); |
| } |