| Index: sdk/lib/_internal/pub_generated/test/transformer/cache_test.dart
|
| diff --git a/sdk/lib/_internal/pub_generated/test/transformer/cache_test.dart b/sdk/lib/_internal/pub_generated/test/transformer/cache_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..91f28dd6b876c897c4063a5301f241ee4edc9537
|
| --- /dev/null
|
| +++ b/sdk/lib/_internal/pub_generated/test/transformer/cache_test.dart
|
| @@ -0,0 +1,172 @@
|
| +library pub_tests;
|
| +import 'package:scheduled_test/scheduled_test.dart';
|
| +import '../descriptor.dart' as d;
|
| +import '../test_pub.dart';
|
| +import '../serve/utils.dart';
|
| +void setUp() {
|
| + servePackages((builder) {
|
| + builder.serveRepoPackage('barback');
|
| + builder.serve("foo", "1.2.3", deps: {
|
| + 'barback': 'any'
|
| + },
|
| + contents: [
|
| + d.dir(
|
| + "lib",
|
| + [d.file("transformer.dart", replaceTransformer("Hello", "Goodbye"))])]);
|
| + builder.serve("bar", "1.2.3", deps: {
|
| + 'barback': 'any'
|
| + },
|
| + contents: [
|
| + d.dir(
|
| + "lib",
|
| + [d.file("transformer.dart", replaceTransformer("Goodbye", "See ya"))])]);
|
| + });
|
| + d.dir(appPath, [d.pubspec({
|
| + "name": "myapp",
|
| + "dependencies": {
|
| + "foo": "1.2.3",
|
| + "bar": "1.2.3"
|
| + },
|
| + "transformers": ["foo"]
|
| + }),
|
| + d.dir("bin", [d.file("myapp.dart", "main() => print('Hello!');")])]).create();
|
| + pubGet();
|
| +}
|
| +main() {
|
| + initConfig();
|
| + integration("caches a transformer snapshot", () {
|
| + setUp();
|
| + var process = pubRun(args: ['myapp']);
|
| + process.stdout.expect("Goodbye!");
|
| + process.shouldExit();
|
| + d.dir(
|
| + appPath,
|
| + [
|
| + d.dir(
|
| + ".pub/transformers/release",
|
| + [
|
| + d.file("manifest.txt", "0.1.2+3\nfoo"),
|
| + d.matcherFile("phase1.snapshot", isNot(isEmpty))])]).validate();
|
| + process = pubRun(args: ['myapp']);
|
| + process.stdout.expect("Goodbye!");
|
| + process.shouldExit();
|
| + });
|
| + integration("recaches if the SDK version is out-of-date", () {
|
| + setUp();
|
| + d.dir(
|
| + appPath,
|
| + [
|
| + d.dir(
|
| + ".pub/transformers/release",
|
| + [
|
| + d.file("manifest.txt", "0.0.1\nfoo"),
|
| + d.file("phase1.snapshot", "junk")])]).create();
|
| + var process = pubRun(args: ['myapp']);
|
| + process.stdout.expect("Goodbye!");
|
| + process.shouldExit();
|
| + d.dir(
|
| + appPath,
|
| + [
|
| + d.dir(
|
| + ".pub/transformers/release",
|
| + [
|
| + d.file("manifest.txt", "0.1.2+3\nfoo"),
|
| + d.matcherFile("phase1.snapshot", isNot(isEmpty))])]).validate();
|
| + process = pubRun(args: ['myapp']);
|
| + process.stdout.expect("Goodbye!");
|
| + process.shouldExit();
|
| + });
|
| + integration("recaches if the phase changes", () {
|
| + setUp();
|
| + var process = pubRun(args: ['myapp']);
|
| + process.stdout.expect("Goodbye!");
|
| + process.shouldExit();
|
| + d.dir(
|
| + appPath,
|
| + [
|
| + d.dir(
|
| + ".pub/transformers/release",
|
| + [
|
| + d.file("manifest.txt", "0.1.2+3\nfoo"),
|
| + d.matcherFile("phase1.snapshot", isNot(isEmpty))])]).validate();
|
| + d.dir(appPath, [d.pubspec({
|
| + "name": "myapp",
|
| + "dependencies": {
|
| + "foo": "1.2.3",
|
| + "bar": "1.2.3"
|
| + },
|
| + "transformers": ["foo", "bar"]
|
| + }),
|
| + d.dir("bin", [d.file("myapp.dart", "main() => print('Hello!');")])]).create();
|
| + process = pubRun(args: ['myapp']);
|
| + process.stdout.expect("See ya!");
|
| + process.shouldExit();
|
| + d.dir(
|
| + appPath,
|
| + [
|
| + d.dir(
|
| + ".pub/transformers/release",
|
| + [
|
| + d.file("manifest.txt", "0.1.2+3\nbar,foo"),
|
| + d.matcherFile("phase1.snapshot", isNot(isEmpty))])]).validate();
|
| + });
|
| + integration("URL-escapes a custom mode", () {
|
| + setUp();
|
| + pubServe(args: ["--mode", "weird/custom mode", "bin"]);
|
| + requestShouldSucceed(
|
| + "myapp.dart",
|
| + "main() => print('Goodbye!');",
|
| + root: 'bin');
|
| + endPubServe();
|
| + d.dir(
|
| + appPath,
|
| + [
|
| + d.dir(
|
| + ".pub/transformers/weird%2Fcustom%20mode",
|
| + [
|
| + d.file("manifest.txt", "0.1.2+3\nfoo"),
|
| + d.matcherFile("phase1.snapshot", isNot(isEmpty))])]).validate();
|
| + });
|
| + solo_integration("removes an unused phase snapshot", () {
|
| + setUp();
|
| + var process = pubRun(args: ['myapp']);
|
| + process.stdout.expect("Goodbye!");
|
| + process.shouldExit();
|
| + d.dir(
|
| + appPath,
|
| + [
|
| + d.dir(
|
| + ".pub/transformers/release",
|
| + [
|
| + d.file("manifest.txt", "0.1.2+3\nfoo\nbar"),
|
| + d.file("phase2.snapshot", "junk")])]).create();
|
| + process = pubRun(args: ['myapp']);
|
| + process.stdout.expect("Goodbye!");
|
| + process.shouldExit();
|
| + d.dir(
|
| + appPath,
|
| + [
|
| + d.dir(".pub/transformers/release", [d.nothing("phase2.snapshot")])]).validate();
|
| + });
|
| +}
|
| +String replaceTransformer(String input, String output) {
|
| + return """
|
| +import 'dart:async';
|
| +
|
| +import 'package:barback/barback.dart';
|
| +
|
| +class ReplaceTransformer extends Transformer {
|
| + ReplaceTransformer.asPlugin();
|
| +
|
| + String get allowedExtensions => '.dart';
|
| +
|
| + Future apply(Transform transform) {
|
| + return transform.primaryInput.readAsString().then((contents) {
|
| + transform.addOutput(new Asset.fromString(
|
| + transform.primaryInput.id,
|
| + contents.replaceAll("$input", "$output")));
|
| + });
|
| + }
|
| +}
|
| +""";
|
| +}
|
|
|