mirror of
https://github.com/dart-lang/sdk
synced 2024-09-05 00:13:50 +00:00
Support for --packages in build mode.
Bug: https://buganizer.corp.google.com/issues/159290352 Change-Id: I160938eacf996fbc708f42f161ddc36becb71c92 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/151781 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
parent
ea50b03cbe
commit
d4d1935140
|
@ -482,11 +482,18 @@ class BuildMode with HasContextMixin {
|
|||
}
|
||||
|
||||
Packages _findPackages(String path) {
|
||||
if (path != null) {
|
||||
return findPackagesFrom(resourceProvider, resourceProvider.getFile(path));
|
||||
} else {
|
||||
return Packages.empty;
|
||||
var configPath = options.packageConfigPath;
|
||||
if (configPath != null) {
|
||||
var configFile = resourceProvider.getFile(configPath);
|
||||
return parsePackagesFile(resourceProvider, configFile);
|
||||
}
|
||||
|
||||
if (path != null) {
|
||||
var file = resourceProvider.getFile(path);
|
||||
return findPackagesFrom(resourceProvider, file);
|
||||
}
|
||||
|
||||
return Packages.empty;
|
||||
}
|
||||
|
||||
/// Ensure that the parsed unit for [absoluteUri] is available.
|
||||
|
|
|
@ -622,6 +622,88 @@ var b = new B();
|
|||
});
|
||||
}
|
||||
|
||||
Future<void> test_packageConfig_packagesOptions() async {
|
||||
await withTempDirAsync((tempDir) async {
|
||||
var packagesPath = path.join(tempDir, 'aaa.packages');
|
||||
|
||||
var aaaRoot = path.join(tempDir, 'packages', 'aaa');
|
||||
var aPath = path.join(aaaRoot, 'lib', 'a.dart');
|
||||
|
||||
var aUri = 'package:aaa/a.dart';
|
||||
|
||||
File(packagesPath).createSync(recursive: true);
|
||||
File(packagesPath).writeAsStringSync('''
|
||||
{
|
||||
"configVersion": 2,
|
||||
"packages": [
|
||||
{
|
||||
"name": "aaa",
|
||||
"rootUri": "${path.toUri(aaaRoot)}",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.4"
|
||||
}
|
||||
]
|
||||
}
|
||||
''');
|
||||
|
||||
File(aPath).createSync(recursive: true);
|
||||
File(aPath).writeAsStringSync(r'''
|
||||
extension E on int {}
|
||||
''');
|
||||
|
||||
// Analyze package:aaa/a.dart and compute errors.
|
||||
await _doDrive(
|
||||
aPath,
|
||||
fileUri: aUri,
|
||||
additionalArgs: [
|
||||
'--packages=$packagesPath',
|
||||
],
|
||||
);
|
||||
expect(exitCode, ErrorSeverity.ERROR.ordinal);
|
||||
expect(errorSink.toString(), contains('extension-methods'));
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> test_packageConfig_relativeToFile() async {
|
||||
await withTempDirAsync((tempDir) async {
|
||||
var packagesPath = path.join(tempDir, '.dart_tool/package_config.json');
|
||||
|
||||
var aaaRoot = path.join(tempDir, 'packages', 'aaa');
|
||||
var aPath = path.join(aaaRoot, 'lib', 'a.dart');
|
||||
|
||||
var aUri = 'package:aaa/a.dart';
|
||||
|
||||
File(packagesPath).createSync(recursive: true);
|
||||
File(packagesPath).writeAsStringSync('''
|
||||
{
|
||||
"configVersion": 2,
|
||||
"packages": [
|
||||
{
|
||||
"name": "aaa",
|
||||
"rootUri": "${path.toUri(aaaRoot)}",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.4"
|
||||
}
|
||||
]
|
||||
}
|
||||
''');
|
||||
|
||||
File(aPath).createSync(recursive: true);
|
||||
File(aPath).writeAsStringSync(r'''
|
||||
extension E on int {}
|
||||
''');
|
||||
|
||||
// Analyze package:aaa/a.dart and compute errors.
|
||||
await _doDrive(
|
||||
aPath,
|
||||
fileUri: aUri,
|
||||
additionalArgs: [],
|
||||
);
|
||||
expect(exitCode, ErrorSeverity.ERROR.ordinal);
|
||||
expect(errorSink.toString(), contains('extension-methods'));
|
||||
});
|
||||
}
|
||||
|
||||
Iterable<String> _linkedLibraryUnitUriList(
|
||||
LinkedNodeBundle bundle2,
|
||||
String libraryUriStr,
|
||||
|
|
Loading…
Reference in a new issue