mirror of
https://github.com/dart-lang/sdk
synced 2024-09-22 01:34:52 +00:00
Always ignore non-public transformers.
This was happening for the most part, but the dependency computer could get tripped up when a package used a transformer from a dev dependency on only private files. R=rnystrom@google.com BUG= http://dartbug.com/23480 Review URL: https://codereview.chromium.org//1143453006
This commit is contained in:
parent
c23a129bb1
commit
8298073cbc
|
@ -254,6 +254,9 @@ class _PackageDependencyComputer {
|
|||
String packageName)
|
||||
: _dependencyComputer = dependencyComputer,
|
||||
_package = dependencyComputer._graph.packages[packageName] {
|
||||
var isRootPackage =
|
||||
packageName == _dependencyComputer._graph.entrypoint.root.name;
|
||||
|
||||
// If [_package] uses its own transformers, there will be fewer transformers
|
||||
// running on [_package] while its own transformers are loading than there
|
||||
// will be once all its transformers are finished loading. To handle this,
|
||||
|
@ -262,6 +265,9 @@ class _PackageDependencyComputer {
|
|||
// smaller.
|
||||
for (var phase in _package.pubspec.transformers) {
|
||||
for (var config in phase) {
|
||||
// Ignore non-root transformers on non-public files.
|
||||
if (!isRootPackage && !config.canTransformPublicFiles) continue;
|
||||
|
||||
var id = config.id;
|
||||
try {
|
||||
if (id.package != _package.name) {
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS d.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 '../descriptor.dart' as d;
|
||||
import '../test_pub.dart';
|
||||
import '../serve/utils.dart';
|
||||
|
||||
main() {
|
||||
initConfig();
|
||||
// Regression test for issue 23480
|
||||
integration("ignores a transformer on test files in a dependency", () {
|
||||
servePackages((builder) {
|
||||
builder.serveRepoPackage('barback');
|
||||
|
||||
builder.serve("bar", "1.2.3", contents: [
|
||||
d.dir("lib", [
|
||||
// Make this invalid so that if it does get loaded, pub will
|
||||
// definitely throw an error.
|
||||
d.file("bar.dart", "{invalid Dart code)")
|
||||
])
|
||||
]);
|
||||
|
||||
builder.serve("foo", "1.2.3",
|
||||
pubspec: {
|
||||
"name": "foo",
|
||||
"version": "1.0.0",
|
||||
"dev_dependencies": {
|
||||
"bar": "any"
|
||||
},
|
||||
"transformers": [{
|
||||
"bar": {"\$include": "test/**"}
|
||||
}]
|
||||
}, contents: [
|
||||
d.dir("test", [
|
||||
d.file("my_test.dart", "void main() {}")
|
||||
])
|
||||
]);
|
||||
});
|
||||
|
||||
d.dir(appPath, [
|
||||
d.pubspec({
|
||||
"name": "myapp",
|
||||
"dependencies": {"foo": "any"}
|
||||
}),
|
||||
d.dir("web", [
|
||||
d.file("foo.txt", "foo")
|
||||
])
|
||||
]).create();
|
||||
|
||||
pubGet();
|
||||
|
||||
pubServe();
|
||||
requestShouldSucceed("foo.txt", "foo");
|
||||
endPubServe();
|
||||
});
|
||||
}
|
Loading…
Reference in a new issue