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

Side by Side Diff: sdk/lib/_internal/pub/test/dependency_computer/cycle_test.dart

Issue 1165473002: Start pulling pub from its own repo. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Code review changes Created 5 years, 6 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 library pub_tests;
6
7 import '../descriptor.dart' as d;
8 import '../test_pub.dart';
9 import 'utils.dart';
10
11 void main() {
12 initConfig();
13
14 integration("allows a package dependency cycle that's unrelated to "
15 "transformers", () {
16 d.dir(appPath, [
17 d.pubspec({
18 "name": "myapp",
19 "dependencies": {"foo": {"path": "../foo"}},
20 "transformers": ["myapp/first", "myapp/second"]
21 }),
22 d.dir('lib', [
23 d.file("first.dart", transformer()),
24 d.file("second.dart", transformer())
25 ])
26 ]).create();
27
28 d.dir("foo", [
29 d.libPubspec("foo", "1.0.0", deps: {"bar": {"path": "../bar"}})
30 ]).create();
31
32 d.dir("bar", [
33 d.libPubspec("bar", "1.0.0", deps: {"baz": {"path": "../baz"}})
34 ]).create();
35
36 d.dir("baz", [
37 d.libPubspec("baz", "1.0.0", deps: {"foo": {"path": "../foo"}})
38 ]).create();
39
40 expectDependencies({'myapp/first': [], 'myapp/second': ['myapp/first']});
41 });
42
43 integration("disallows a package dependency cycle that may be related to "
44 "transformers", () {
45 // Two layers of myapp transformers are necessary here because otherwise pub
46 // will figure out that the transformer doesn't import "foo" and thus
47 // doesn't transitively import itself. Import loops are tested below.
48 d.dir(appPath, [
49 d.pubspec({
50 "name": "myapp",
51 "dependencies": {"foo": {"path": "../foo"}},
52 "transformers": ["myapp/first", "myapp/second"]
53 }),
54 d.dir('lib', [
55 d.file("first.dart", transformer()),
56 d.file("second.dart", transformer())
57 ])
58 ]).create();
59
60 d.dir("foo", [
61 d.libPubspec("foo", "1.0.0", deps: {"bar": {"path": "../bar"}})
62 ]).create();
63
64 d.dir("bar", [
65 d.libPubspec("bar", "1.0.0", deps: {"myapp": {"path": "../myapp"}})
66 ]).create();
67
68 expectCycleException([
69 "myapp is transformed by myapp/second",
70 "myapp depends on foo",
71 "foo depends on bar",
72 "bar depends on myapp",
73 "myapp is transformed by myapp/first"
74 ]);
75 });
76
77 integration("disallows a transformation dependency cycle", () {
78 d.dir(appPath, [
79 d.pubspec({
80 "name": "myapp",
81 "dependencies": {"foo": {"path": "../foo"}},
82 "transformers": ["foo"]
83 }),
84 d.dir('lib', [d.file("myapp.dart", transformer())])
85 ]).create();
86
87 d.dir("foo", [
88 d.pubspec({
89 "name": "foo",
90 "dependencies": {"bar": {"path": "../bar"}},
91 "transformers": ["bar"]
92 }),
93 d.dir('lib', [d.file("foo.dart", transformer())])
94 ]).create();
95
96 d.dir("bar", [
97 d.pubspec({
98 "name": "bar",
99 "dependencies": {"myapp": {"path": "../myapp"}},
100 "transformers": ["myapp"]
101 }),
102 d.dir('lib', [d.file("bar.dart", transformer())])
103 ]).create();
104
105 expectCycleException([
106 "bar is transformed by myapp",
107 "myapp is transformed by foo",
108 "foo is transformed by bar"
109 ]);
110 });
111
112 integration("allows a cross-package import cycle that's unrelated to "
113 "transformers", () {
114 d.dir(appPath, [
115 d.pubspec({
116 "name": "myapp",
117 "dependencies": {"foo": {"path": "../foo"}},
118 "transformers": ["myapp"]
119 }),
120 d.dir('lib', [
121 d.file("myapp.dart", transformer(['package:foo/foo.dart']))
122 ])
123 ]).create();
124
125 d.dir("foo", [
126 d.libPubspec("foo", "1.0.0", deps: {"bar": {"path": "../bar"}}),
127 d.dir('lib', [d.file("foo.dart", "import 'package:bar/bar.dart';")])
128 ]).create();
129
130 d.dir("bar", [
131 d.libPubspec("bar", "1.0.0", deps: {"baz": {"path": "../baz"}}),
132 d.dir('lib', [d.file("bar.dart", "import 'package:baz/baz.dart';")])
133 ]).create();
134
135 d.dir("baz", [
136 d.libPubspec("baz", "1.0.0", deps: {"foo": {"path": "../foo"}}),
137 d.dir('lib', [d.file("baz.dart", "import 'package:foo/foo.dart';")])
138 ]).create();
139
140 expectDependencies({'myapp': []});
141 });
142
143 integration("disallows a cross-package import cycle that's related to "
144 "transformers", () {
145 d.dir(appPath, [
146 d.pubspec({
147 "name": "myapp",
148 "dependencies": {"foo": {"path": "../foo"}},
149 "transformers": ["myapp"]
150 }),
151 d.dir('lib', [
152 d.file("myapp.dart", transformer(['package:foo/foo.dart']))
153 ])
154 ]).create();
155
156 d.dir("foo", [
157 d.libPubspec("foo", "1.0.0", deps: {"bar": {"path": "../bar"}}),
158 d.dir('lib', [d.file("foo.dart", "import 'package:bar/bar.dart';")])
159 ]).create();
160
161 d.dir("bar", [
162 d.libPubspec("bar", "1.0.0", deps: {"myapp": {"path": "../myapp"}}),
163 d.dir('lib', [d.file("bar.dart", "import 'package:myapp/myapp.dart';")])
164 ]).create();
165
166 expectCycleException([
167 "myapp is transformed by myapp",
168 "myapp depends on foo",
169 "foo depends on bar",
170 "bar depends on myapp"
171 ]);
172 });
173
174 integration("allows a single-package import cycle that's unrelated to "
175 "transformers", () {
176 d.dir(appPath, [
177 d.pubspec({
178 "name": "myapp",
179 "dependencies": {"foo": {"path": "../foo"}},
180 "transformers": ["myapp"]
181 }),
182 d.dir('lib', [
183 d.file("myapp.dart", transformer(['foo.dart'])),
184 d.file("foo.dart", "import 'bar.dart';"),
185 d.file("bar.dart", "import 'baz.dart';"),
186 d.file("baz.dart", "import 'foo.dart';")
187 ])
188 ]).create();
189
190 expectDependencies({'myapp': []});
191 });
192
193 integration("allows a single-package import cycle that's related to "
194 "transformers", () {
195 d.dir(appPath, [
196 d.pubspec({
197 "name": "myapp",
198 "dependencies": {"foo": {"path": "../foo"}},
199 "transformers": ["myapp"]
200 }),
201 d.dir('lib', [
202 d.file("myapp.dart", transformer(['foo.dart'])),
203 d.file("foo.dart", "import 'bar.dart';"),
204 d.file("bar.dart", "import 'myapp.dart';"),
205 ])
206 ]).create();
207
208 expectDependencies({'myapp': []});
209 });
210 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698