| Index: sdk/lib/_internal/pub_generated/test/get/cache_transformed_dependency_test.dart
|
| diff --git a/sdk/lib/_internal/pub_generated/test/get/cache_transformed_dependency_test.dart b/sdk/lib/_internal/pub_generated/test/get/cache_transformed_dependency_test.dart
|
| index 7661ff61a4392f200d55fc717513fb7a7d2af25a..dd4fda87a7f384e3df6f98e4a380af7867d088d5 100644
|
| --- a/sdk/lib/_internal/pub_generated/test/get/cache_transformed_dependency_test.dart
|
| +++ b/sdk/lib/_internal/pub_generated/test/get/cache_transformed_dependency_test.dart
|
| @@ -1,8 +1,15 @@
|
| +// Copyright (c) 2014, 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.
|
| +
|
| library pub_tests;
|
| +
|
| import 'package:scheduled_test/scheduled_test.dart';
|
| +
|
| import '../descriptor.dart' as d;
|
| import '../test_pub.dart';
|
| import '../serve/utils.dart';
|
| +
|
| const MODE_TRANSFORMER = """
|
| import 'dart:async';
|
|
|
| @@ -24,6 +31,7 @@ class ModeTransformer extends Transformer {
|
| }
|
| }
|
| """;
|
| +
|
| const HAS_INPUT_TRANSFORMER = """
|
| import 'dart:async';
|
|
|
| @@ -42,16 +50,19 @@ class HasInputTransformer extends Transformer {
|
| transform.addOutput(new Asset.fromString(
|
| transform.primaryInput.id,
|
| "lib/foo.dart: \${results.first}, "
|
| - "lib/does/not/exist.dart: \${results.last}"));
|
| + "lib/does/not/exist.dart: \${results.last}"));
|
| });
|
| }
|
| }
|
| """;
|
| +
|
| main() {
|
| initConfig();
|
| +
|
| integration("caches a transformed dependency", () {
|
| servePackages((builder) {
|
| builder.serveRepoPackage('barback');
|
| +
|
| builder.serve("foo", "1.2.3", deps: {
|
| 'barback': 'any'
|
| }, pubspec: {
|
| @@ -64,10 +75,13 @@ main() {
|
| d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")),
|
| d.file("foo.dart", "final message = 'Hello!';")])]);
|
| });
|
| +
|
| d.appDir({
|
| "foo": "1.2.3"
|
| }).create();
|
| +
|
| pubGet(output: contains("Precompiled foo."));
|
| +
|
| d.dir(
|
| appPath,
|
| [
|
| @@ -75,15 +89,18 @@ main() {
|
| ".pub/deps/debug/foo/lib",
|
| [d.file("foo.dart", "final message = 'Goodbye!';")])]).validate();
|
| });
|
| +
|
| integration("caches a dependency transformed by its dependency", () {
|
| servePackages((builder) {
|
| builder.serveRepoPackage('barback');
|
| +
|
| builder.serve("foo", "1.2.3", deps: {
|
| 'bar': '1.2.3'
|
| }, pubspec: {
|
| 'transformers': ['bar']
|
| },
|
| contents: [d.dir("lib", [d.file("foo.dart", "final message = 'Hello!';")])]);
|
| +
|
| builder.serve("bar", "1.2.3", deps: {
|
| 'barback': 'any'
|
| },
|
| @@ -92,10 +109,13 @@ main() {
|
| "lib",
|
| [d.file("transformer.dart", replaceTransformer("Hello", "Goodbye"))])]);
|
| });
|
| +
|
| d.appDir({
|
| "foo": "1.2.3"
|
| }).create();
|
| +
|
| pubGet(output: contains("Precompiled foo."));
|
| +
|
| d.dir(
|
| appPath,
|
| [
|
| @@ -103,23 +123,30 @@ main() {
|
| ".pub/deps/debug/foo/lib",
|
| [d.file("foo.dart", "final message = 'Goodbye!';")])]).validate();
|
| });
|
| +
|
| integration("doesn't cache an untransformed dependency", () {
|
| servePackages((builder) {
|
| builder.serveRepoPackage('barback');
|
| +
|
| builder.serve(
|
| "foo",
|
| "1.2.3",
|
| contents: [d.dir("lib", [d.file("foo.dart", "final message = 'Hello!';")])]);
|
| });
|
| +
|
| d.appDir({
|
| "foo": "1.2.3"
|
| }).create();
|
| +
|
| pubGet(output: isNot(contains("Precompiled foo.")));
|
| +
|
| d.dir(appPath, [d.nothing(".pub/deps")]).validate();
|
| });
|
| +
|
| integration("recaches when the dependency is updated", () {
|
| servePackages((builder) {
|
| builder.serveRepoPackage('barback');
|
| +
|
| builder.serve("foo", "1.2.3", deps: {
|
| 'barback': 'any'
|
| }, pubspec: {
|
| @@ -131,6 +158,7 @@ main() {
|
| [
|
| d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")),
|
| d.file("foo.dart", "final message = 'Hello!';")])]);
|
| +
|
| builder.serve("foo", "1.2.4", deps: {
|
| 'barback': 'any'
|
| }, pubspec: {
|
| @@ -143,20 +171,27 @@ main() {
|
| d.file("transformer.dart", replaceTransformer("Hello", "See ya")),
|
| d.file("foo.dart", "final message = 'Hello!';")])]);
|
| });
|
| +
|
| d.appDir({
|
| "foo": "1.2.3"
|
| }).create();
|
| +
|
| pubGet(output: contains("Precompiled foo."));
|
| +
|
| d.dir(
|
| appPath,
|
| [
|
| d.dir(
|
| ".pub/deps/debug/foo/lib",
|
| [d.file("foo.dart", "final message = 'Goodbye!';")])]).validate();
|
| +
|
| + // Upgrade to the new version of foo.
|
| d.appDir({
|
| "foo": "1.2.4"
|
| }).create();
|
| +
|
| pubGet(output: contains("Precompiled foo."));
|
| +
|
| d.dir(
|
| appPath,
|
| [
|
| @@ -164,9 +199,11 @@ main() {
|
| ".pub/deps/debug/foo/lib",
|
| [d.file("foo.dart", "final message = 'See ya!';")])]).validate();
|
| });
|
| +
|
| integration("recaches when a transitive dependency is updated", () {
|
| servePackages((builder) {
|
| builder.serveRepoPackage('barback');
|
| +
|
| builder.serve("foo", "1.2.3", deps: {
|
| 'barback': 'any',
|
| 'bar': 'any'
|
| @@ -179,18 +216,23 @@ main() {
|
| [
|
| d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")),
|
| d.file("foo.dart", "final message = 'Hello!';")])]);
|
| +
|
| builder.serve("bar", "5.6.7");
|
| });
|
| +
|
| d.appDir({
|
| "foo": "1.2.3"
|
| }).create();
|
| pubGet(output: contains("Precompiled foo."));
|
| +
|
| servePackages((builder) => builder.serve("bar", "6.0.0"));
|
| pubUpgrade(output: contains("Precompiled foo."));
|
| });
|
| +
|
| integration("doesn't recache when an unrelated dependency is updated", () {
|
| servePackages((builder) {
|
| builder.serveRepoPackage('barback');
|
| +
|
| builder.serve("foo", "1.2.3", deps: {
|
| 'barback': 'any'
|
| }, pubspec: {
|
| @@ -202,18 +244,23 @@ main() {
|
| [
|
| d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")),
|
| d.file("foo.dart", "final message = 'Hello!';")])]);
|
| +
|
| builder.serve("bar", "5.6.7");
|
| });
|
| +
|
| d.appDir({
|
| "foo": "1.2.3"
|
| }).create();
|
| pubGet(output: contains("Precompiled foo."));
|
| +
|
| servePackages((builder) => builder.serve("bar", "6.0.0"));
|
| pubUpgrade(output: isNot(contains("Precompiled foo.")));
|
| });
|
| +
|
| integration("caches the dependency in debug mode", () {
|
| servePackages((builder) {
|
| builder.serveRepoPackage('barback');
|
| +
|
| builder.serve("foo", "1.2.3", deps: {
|
| 'barback': 'any'
|
| }, pubspec: {
|
| @@ -226,10 +273,13 @@ main() {
|
| d.file("transformer.dart", MODE_TRANSFORMER),
|
| d.file("foo.dart", "final mode = 'MODE';")])]);
|
| });
|
| +
|
| d.appDir({
|
| "foo": "1.2.3"
|
| }).create();
|
| +
|
| pubGet(output: contains("Precompiled foo."));
|
| +
|
| d.dir(
|
| appPath,
|
| [
|
| @@ -237,9 +287,11 @@ main() {
|
| ".pub/deps/debug/foo/lib",
|
| [d.file("foo.dart", "final mode = 'debug';")])]).validate();
|
| });
|
| +
|
| integration("loads code from the cache", () {
|
| servePackages((builder) {
|
| builder.serveRepoPackage('barback');
|
| +
|
| builder.serve("foo", "1.2.3", deps: {
|
| 'barback': 'any'
|
| }, pubspec: {
|
| @@ -252,26 +304,32 @@ main() {
|
| d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")),
|
| d.file("foo.dart", "final message = 'Hello!';")])]);
|
| });
|
| +
|
| d.dir(appPath, [d.appPubspec({
|
| "foo": "1.2.3"
|
| }), d.dir('bin', [d.file('script.dart', """
|
| import 'package:foo/foo.dart';
|
|
|
| void main() => print(message);""")])]).create();
|
| +
|
| pubGet(output: contains("Precompiled foo."));
|
| +
|
| d.dir(
|
| appPath,
|
| [
|
| d.dir(
|
| ".pub/deps/debug/foo/lib",
|
| [d.file("foo.dart", "final message = 'Modified!';")])]).create();
|
| +
|
| var pub = pubRun(args: ["script"]);
|
| pub.stdout.expect("Modified!");
|
| pub.shouldExit();
|
| });
|
| +
|
| integration("doesn't re-transform code loaded from the cache", () {
|
| servePackages((builder) {
|
| builder.serveRepoPackage('barback');
|
| +
|
| builder.serve("foo", "1.2.3", deps: {
|
| 'barback': 'any'
|
| }, pubspec: {
|
| @@ -284,26 +342,35 @@ main() {
|
| d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")),
|
| d.file("foo.dart", "final message = 'Hello!';")])]);
|
| });
|
| +
|
| d.dir(appPath, [d.appPubspec({
|
| "foo": "1.2.3"
|
| }), d.dir('bin', [d.file('script.dart', """
|
| import 'package:foo/foo.dart';
|
|
|
| void main() => print(message);""")])]).create();
|
| +
|
| pubGet(output: contains("Precompiled foo."));
|
| +
|
| + // Manually reset the cache to its original state to prove that the
|
| + // transformer won't be run again on it.
|
| d.dir(
|
| appPath,
|
| [
|
| d.dir(
|
| ".pub/deps/debug/foo/lib",
|
| [d.file("foo.dart", "final message = 'Hello!';")])]).create();
|
| +
|
| var pub = pubRun(args: ["script"]);
|
| pub.stdout.expect("Hello!");
|
| pub.shouldExit();
|
| });
|
| +
|
| + // Regression test for issue 21087.
|
| integration("hasInput works for static packages", () {
|
| servePackages((builder) {
|
| builder.serveRepoPackage('barback');
|
| +
|
| builder.serve("foo", "1.2.3", deps: {
|
| 'barback': 'any'
|
| }, pubspec: {
|
| @@ -316,6 +383,7 @@ main() {
|
| d.file("transformer.dart", replaceTransformer("Hello", "Goodbye")),
|
| d.file("foo.dart", "void main() => print('Hello!');")])]);
|
| });
|
| +
|
| d.dir(appPath, [d.pubspec({
|
| "name": "myapp",
|
| "dependencies": {
|
| @@ -327,7 +395,9 @@ main() {
|
| "lib",
|
| [d.dir("src", [d.file("transformer.dart", HAS_INPUT_TRANSFORMER)])]),
|
| d.dir("web", [d.file("foo.txt", "foo")])]).create();
|
| +
|
| pubGet(output: contains("Precompiled foo."));
|
| +
|
| pubServe();
|
| requestShouldSucceed(
|
| "foo.txt",
|
| @@ -335,6 +405,7 @@ main() {
|
| endPubServe();
|
| });
|
| }
|
| +
|
| String replaceTransformer(String input, String output) {
|
| return """
|
| import 'dart:async';
|
|
|