Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(521)

Unified Diff: packages/barback/test/package_graph/transform/cross_package_test.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: packages/barback/test/package_graph/transform/cross_package_test.dart
diff --git a/packages/barback/test/package_graph/transform/cross_package_test.dart b/packages/barback/test/package_graph/transform/cross_package_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..b499604680d968d767eb3ad36e6d30af09b0a8c6
--- /dev/null
+++ b/packages/barback/test/package_graph/transform/cross_package_test.dart
@@ -0,0 +1,193 @@
+// Copyright (c) 2014, 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 barback.test.package_graph.transform.pass_through_test;
+
+import 'package:barback/src/utils.dart';
+import 'package:scheduled_test/scheduled_test.dart';
+
+import '../../utils.dart';
+
+main() {
+ initConfig();
+ test("can access other packages' source assets", () {
+ initGraph({
+ "pkg1|a.txt": "pkg2|a.inc",
+ "pkg2|a.inc": "a"
+ }, {"pkg1": [[new ManyToOneTransformer("txt")]]});
+
+ updateSources(["pkg1|a.txt", "pkg2|a.inc"]);
+ expectAsset("pkg1|a.out", "a");
+ buildShouldSucceed();
+ });
+
+ test("can access other packages' transformed assets", () {
+ initGraph({
+ "pkg1|a.txt": "pkg2|a.inc",
+ "pkg2|a.txt": "a"
+ }, {
+ "pkg1": [[new ManyToOneTransformer("txt")]],
+ "pkg2": [[new RewriteTransformer("txt", "inc")]]
+ });
+
+ updateSources(["pkg1|a.txt", "pkg2|a.txt"]);
+ expectAsset("pkg1|a.out", "a.inc");
+ buildShouldSucceed();
+ });
+
+ test("re-runs a transform when an input from another package changes", () {
+ initGraph({
+ "pkg1|a.txt": "pkg2|a.inc",
+ "pkg2|a.inc": "a"
+ }, {
+ "pkg1": [[new ManyToOneTransformer("txt")]]
+ });
+
+ updateSources(["pkg1|a.txt", "pkg2|a.inc"]);
+ expectAsset("pkg1|a.out", "a");
+ buildShouldSucceed();
+
+ modifyAsset("pkg2|a.inc", "new a");
+ updateSources(["pkg2|a.inc"]);
+ expectAsset("pkg1|a.out", "new a");
+ buildShouldSucceed();
+ });
+
+ test("re-runs a transform when a transformed input from another package "
+ "changes", () {
+ initGraph({
+ "pkg1|a.txt": "pkg2|a.inc",
+ "pkg2|a.txt": "a"
+ }, {
+ "pkg1": [[new ManyToOneTransformer("txt")]],
+ "pkg2": [[new RewriteTransformer("txt", "inc")]]
+ });
+
+ updateSources(["pkg1|a.txt", "pkg2|a.txt"]);
+ expectAsset("pkg1|a.out", "a.inc");
+ buildShouldSucceed();
+
+ modifyAsset("pkg2|a.txt", "new a");
+ updateSources(["pkg2|a.txt"]);
+ expectAsset("pkg1|a.out", "new a.inc");
+ buildShouldSucceed();
+ });
+
+ test("doesn't complete the build until all packages' transforms are "
+ "finished running", () {
+ var transformer = new ManyToOneTransformer("txt");
+ initGraph({
+ "pkg1|a.txt": "pkg2|a.inc",
+ "pkg2|a.inc": "a"
+ }, {
+ "pkg1": [[transformer]]
+ });
+
+ updateSources(["pkg1|a.txt", "pkg2|a.inc"]);
+ expectAsset("pkg1|a.out", "a");
+ buildShouldSucceed();
+
+ transformer.pauseApply();
+ modifyAsset("pkg2|a.inc", "new a");
+ updateSources(["pkg2|a.inc"]);
+ buildShouldNotBeDone();
+
+ transformer.resumeApply();
+ buildShouldSucceed();
+ });
+
+ test("runs a transform that's added because of a change in another package",
+ () {
+ initGraph({
+ "pkg1|a.txt": "pkg2|a.inc",
+ "pkg2|a.inc": "b"
+ }, {
+ "pkg1": [
+ [new ManyToOneTransformer("txt")],
+ [new OneToManyTransformer("out")],
+ [new RewriteTransformer("md", "done")]
+ ],
+ });
+
+ // pkg1|a.txt generates outputs based on the contents of pkg2|a.inc. At
+ // first pkg2|a.inc only includes "b", which is not transformed. Then
+ // pkg2|a.inc is updated to include "b,c.md". pkg1|c.md triggers the
+ // md->done rewrite transformer, producing pkg1|c.done.
+
+ updateSources(["pkg1|a.txt", "pkg2|a.inc"]);
+ expectAsset("pkg1|b", "spread out");
+ buildShouldSucceed();
+
+ modifyAsset("pkg2|a.inc", "b,c.md");
+ updateSources(["pkg2|a.inc"]);
+ expectAsset("pkg1|b", "spread out");
+ expectAsset("pkg1|c.done", "spread out.done");
+ buildShouldSucceed();
+ });
+
+ test("doesn't run a transform that's removed because of a change in "
+ "another package", () {
+ initGraph({
+ "pkg1|a.txt": "pkg2|a.inc",
+ "pkg2|a.inc": "b,c.md"
+ }, {
+ "pkg1": [
+ [new ManyToOneTransformer("txt")],
+ [new OneToManyTransformer("out")],
+ [new RewriteTransformer("md", "done")]
+ ],
+ });
+
+ updateSources(["pkg1|a.txt", "pkg2|a.inc"]);
+ expectAsset("pkg1|b", "spread out");
+ expectAsset("pkg1|c.done", "spread out.done");
+ buildShouldSucceed();
+
+ modifyAsset("pkg2|a.inc", "b");
+ updateSources(["pkg2|a.inc"]);
+ expectAsset("pkg1|b", "spread out");
+ expectNoAsset("pkg1|c.done");
+ buildShouldSucceed();
+ });
+
+ test("sees a transformer that's newly applied to a cross-package "
+ "dependency", () {
+ initGraph({
+ "pkg1|a.txt": "pkg2|a.inc",
+ "pkg2|a.inc": "a"
+ }, {
+ "pkg1": [[new ManyToOneTransformer("txt")]],
+ "pkg2": [[new CheckContentTransformer("b", " transformed")]]
+ });
+
+ updateSources(["pkg1|a.txt", "pkg2|a.inc"]);
+ expectAsset("pkg1|a.out", "a");
+ buildShouldSucceed();
+
+ modifyAsset("pkg2|a.inc", "b");
+ updateSources(["pkg2|a.inc"]);
+ expectAsset("pkg1|a.out", "b transformed");
+ buildShouldSucceed();
+ });
+
+ test("doesn't see a transformer that's newly not applied to a "
+ "cross-package dependency", () {
+ initGraph({
+ "pkg1|a.txt": "pkg2|a.inc",
+ "pkg2|a.inc": "a"
+ }, {
+ "pkg1": [[new ManyToOneTransformer("txt")]],
+ "pkg2": [[new CheckContentTransformer("a", " transformed")]]
+ });
+
+ updateSources(["pkg1|a.txt", "pkg2|a.inc"]);
+ expectAsset("pkg1|a.out", "a transformed");
+ buildShouldSucceed();
+
+ modifyAsset("pkg2|a.inc", "b");
+ updateSources(["pkg2|a.inc"]);
+ expectAsset("pkg1|a.out", "b");
+ buildShouldSucceed();
+ });
+}

Powered by Google App Engine
This is Rietveld 408576698