OLD | NEW |
(Empty) | |
| 1 library pub_tests; |
| 2 import 'package:scheduled_test/scheduled_test.dart'; |
| 3 import '../descriptor.dart' as d; |
| 4 import '../test_pub.dart'; |
| 5 import 'utils.dart'; |
| 6 void main() { |
| 7 initConfig(); |
| 8 integration( |
| 9 "reports previous transformers as dependencies if the " |
| 10 "transformer is transformed", |
| 11 () { |
| 12 d.dir(appPath, [d.pubspec({ |
| 13 "name": "myapp", |
| 14 "version": "1.0.0", |
| 15 "dependencies": { |
| 16 "pkg": { |
| 17 "path": "../pkg" |
| 18 }, |
| 19 "qux": { |
| 20 "path": "../qux" |
| 21 } |
| 22 }, |
| 23 "transformers": ["pkg", "qux"] |
| 24 })]).create(); |
| 25 d.dir("pkg", [d.pubspec({ |
| 26 "name": "pkg", |
| 27 "version": "1.0.0", |
| 28 "dependencies": { |
| 29 "foo": { |
| 30 "path": "../foo" |
| 31 }, |
| 32 "bar": { |
| 33 "path": "../bar" |
| 34 }, |
| 35 "baz": { |
| 36 "path": "../baz" |
| 37 } |
| 38 }, |
| 39 "transformers": [{ |
| 40 "foo": { |
| 41 "\$include": "lib/pkg.dart" |
| 42 } |
| 43 }, { |
| 44 "bar": { |
| 45 "\$exclude": "lib/transformer.dart" |
| 46 } |
| 47 }, "baz"] |
| 48 }), |
| 49 d.dir( |
| 50 "lib", |
| 51 [d.file("pkg.dart", ""), d.file("transformer.dart", transformer())
])]).create(); |
| 52 d.dir( |
| 53 "foo", |
| 54 [ |
| 55 d.libPubspec("foo", "1.0.0"), |
| 56 d.dir("lib", [d.file("foo.dart", transformer())])]).create(); |
| 57 d.dir( |
| 58 "bar", |
| 59 [ |
| 60 d.libPubspec("bar", "1.0.0"), |
| 61 d.dir("lib", [d.file("bar.dart", transformer())])]).create(); |
| 62 d.dir( |
| 63 "baz", |
| 64 [ |
| 65 d.libPubspec("baz", "1.0.0"), |
| 66 d.dir("lib", [d.file("baz.dart", transformer())])]).create(); |
| 67 d.dir( |
| 68 "qux", |
| 69 [ |
| 70 d.libPubspec("qux", "1.0.0"), |
| 71 d.dir("lib", [d.file("qux.dart", transformer())])]).create(); |
| 72 expectDependencies({ |
| 73 'pkg': ['foo', 'bar', 'baz'], |
| 74 'foo': [], |
| 75 'bar': [], |
| 76 'baz': [], |
| 77 'qux': [] |
| 78 }); |
| 79 }); |
| 80 integration( |
| 81 "reports all transitive package dependencies' transformers as " |
| 82 "dependencies if the transformer is transformed", |
| 83 () { |
| 84 d.dir(appPath, [d.pubspec({ |
| 85 "name": "myapp", |
| 86 "dependencies": { |
| 87 "pkg": { |
| 88 "path": "../pkg" |
| 89 }, |
| 90 "qux": { |
| 91 "path": "../qux" |
| 92 } |
| 93 }, |
| 94 "transformers": ["pkg"] |
| 95 })]).create(); |
| 96 d.dir("pkg", [d.pubspec({ |
| 97 "name": "pkg", |
| 98 "version": "1.0.0", |
| 99 "dependencies": { |
| 100 "foo": { |
| 101 "path": "../foo" |
| 102 }, |
| 103 "baz": { |
| 104 "path": "../baz" |
| 105 } |
| 106 }, |
| 107 "transformers": ["baz"] |
| 108 }), d.dir("lib", [d.file("pkg.dart", transformer())])]).create(); |
| 109 d.dir("foo", [d.pubspec({ |
| 110 "name": "foo", |
| 111 "version": "1.0.0", |
| 112 "dependencies": { |
| 113 "bar": { |
| 114 "path": "../bar" |
| 115 } |
| 116 }, |
| 117 "transformers": ["foo"] |
| 118 }), d.dir("lib", [d.file("foo.dart", transformer())])]).create(); |
| 119 d.dir("bar", [d.pubspec({ |
| 120 "name": "bar", |
| 121 "version": "1.0.0", |
| 122 "transformers": ["bar"] |
| 123 }), d.dir("lib", [d.file("bar.dart", transformer())])]).create(); |
| 124 d.dir( |
| 125 "baz", |
| 126 [ |
| 127 d.libPubspec("baz", "1.0.0"), |
| 128 d.dir("lib", [d.file("baz.dart", transformer())])]).create(); |
| 129 d.dir("qux", [d.pubspec({ |
| 130 "name": "qux", |
| 131 "version": "1.0.0", |
| 132 "transformers": ["qux"] |
| 133 }), d.dir("lib", [d.file("qux.dart", transformer())])]).create(); |
| 134 expectDependencies({ |
| 135 'pkg': ['foo', 'bar', 'baz'], |
| 136 'foo': [], |
| 137 'bar': [], |
| 138 'baz': [], |
| 139 'qux': [] |
| 140 }); |
| 141 }); |
| 142 integration( |
| 143 "reports previous transformers as dependencies if a " |
| 144 "nonexistent local file is imported", |
| 145 () { |
| 146 d.dir(appPath, [d.pubspec({ |
| 147 "name": "myapp", |
| 148 "dependencies": { |
| 149 "pkg": { |
| 150 "path": "../pkg" |
| 151 }, |
| 152 "bar": { |
| 153 "path": "../bar" |
| 154 } |
| 155 }, |
| 156 "transformers": ["pkg", "bar"] |
| 157 })]).create(); |
| 158 d.dir("pkg", [d.pubspec({ |
| 159 "name": "pkg", |
| 160 "version": "1.0.0", |
| 161 "dependencies": { |
| 162 "foo": { |
| 163 "path": "../foo" |
| 164 }, |
| 165 "bar": { |
| 166 "path": "../bar" |
| 167 } |
| 168 }, |
| 169 "transformers": [{ |
| 170 "foo": { |
| 171 "\$include": "lib/pkg.dart" |
| 172 } |
| 173 }] |
| 174 }), |
| 175 d.dir( |
| 176 "lib", |
| 177 [ |
| 178 d.file("pkg.dart", ""), |
| 179 d.file("transformer.dart", transformer(["nonexistent.dart"]))]
)]).create(); |
| 180 d.dir( |
| 181 "foo", |
| 182 [ |
| 183 d.libPubspec("foo", "1.0.0"), |
| 184 d.dir("lib", [d.file("foo.dart", transformer())])]).create(); |
| 185 d.dir( |
| 186 "bar", |
| 187 [ |
| 188 d.libPubspec("bar", "1.0.0"), |
| 189 d.dir("lib", [d.file("bar.dart", transformer())])]).create(); |
| 190 expectDependencies({ |
| 191 'pkg': ['foo'], |
| 192 'foo': [], |
| 193 'bar': [] |
| 194 }); |
| 195 }); |
| 196 integration( |
| 197 "reports all that package's dependencies' transformers as " |
| 198 "dependencies if a non-existent file is imported from another package"
, |
| 199 () { |
| 200 d.dir(appPath, [d.pubspec({ |
| 201 "name": "myapp", |
| 202 "dependencies": { |
| 203 "foo": { |
| 204 "path": "../foo" |
| 205 }, |
| 206 "qux": { |
| 207 "path": "../qux" |
| 208 } |
| 209 }, |
| 210 "transformers": ["myapp"] |
| 211 }), |
| 212 d.dir( |
| 213 "lib", |
| 214 [ |
| 215 d.file( |
| 216 "myapp.dart", |
| 217 transformer(["package:foo/nonexistent.dart"]))])]).create(
); |
| 218 d.dir("foo", [d.pubspec({ |
| 219 "name": "foo", |
| 220 "version": "1.0.0", |
| 221 "dependencies": { |
| 222 "bar": { |
| 223 "path": "../bar" |
| 224 }, |
| 225 "baz": { |
| 226 "path": "../baz" |
| 227 } |
| 228 }, |
| 229 "transformers": ["foo"] |
| 230 }), d.dir("lib", [d.file("foo.dart", transformer())])]).create(); |
| 231 d.dir("bar", [d.pubspec({ |
| 232 "name": "bar", |
| 233 "version": "1.0.0", |
| 234 "transformers": ["bar"] |
| 235 }), d.dir("lib", [d.file("bar.dart", transformer())])]).create(); |
| 236 d.dir("baz", [d.pubspec({ |
| 237 "name": "baz", |
| 238 "version": "1.0.0", |
| 239 "transformers": ["baz"] |
| 240 }), d.dir("lib", [d.file("baz.dart", transformer())])]).create(); |
| 241 d.dir("qux", [d.pubspec({ |
| 242 "name": "qux", |
| 243 "version": "1.0.0", |
| 244 "transformers": ["qux"] |
| 245 }), d.dir("lib", [d.file("qux.dart", transformer())])]).create(); |
| 246 expectDependencies({ |
| 247 'myapp': ['foo', 'bar', 'baz'], |
| 248 'foo': [], |
| 249 'bar': [], |
| 250 'baz': [], |
| 251 'qux': [] |
| 252 }); |
| 253 }); |
| 254 integration( |
| 255 "reports all that package's dependencies' transformers as " |
| 256 "dependencies if a non-existent transformer is used from another packa
ge", |
| 257 () { |
| 258 d.dir(appPath, [d.pubspec({ |
| 259 "name": "myapp", |
| 260 "dependencies": { |
| 261 "foo": { |
| 262 "path": "../foo" |
| 263 }, |
| 264 "qux": { |
| 265 "path": "../qux" |
| 266 } |
| 267 }, |
| 268 "transformers": ["myapp"] |
| 269 }), |
| 270 d.dir( |
| 271 "lib", |
| 272 [ |
| 273 d.file( |
| 274 "myapp.dart", |
| 275 transformer(["package:foo/nonexistent.dart"]))])]).create(
); |
| 276 d.dir("foo", [d.pubspec({ |
| 277 "name": "foo", |
| 278 "version": "1.0.0", |
| 279 "dependencies": { |
| 280 "bar": { |
| 281 "path": "../bar" |
| 282 }, |
| 283 "baz": { |
| 284 "path": "../baz" |
| 285 } |
| 286 }, |
| 287 "transformers": ["bar"] |
| 288 })]).create(); |
| 289 d.dir( |
| 290 "bar", |
| 291 [ |
| 292 d.libPubspec("bar", "1.0.0"), |
| 293 d.dir("lib", [d.file("bar.dart", transformer())])]).create(); |
| 294 d.dir("baz", [d.pubspec({ |
| 295 "name": "baz", |
| 296 "version": "1.0.0", |
| 297 "transformers": ["baz"] |
| 298 }), d.dir("lib", [d.file("baz.dart", transformer())])]).create(); |
| 299 d.dir("qux", [d.pubspec({ |
| 300 "name": "qux", |
| 301 "version": "1.0.0", |
| 302 "transformers": ["qux"] |
| 303 }), d.dir("lib", [d.file("qux.dart", transformer())])]).create(); |
| 304 expectDependencies({ |
| 305 'myapp': ['bar', 'baz'], |
| 306 'bar': [], |
| 307 'baz': [], |
| 308 'qux': [] |
| 309 }); |
| 310 }); |
| 311 test("reports dependencies on transformers in past phases", () { |
| 312 d.dir(appPath, [d.pubspec({ |
| 313 "name": "myapp", |
| 314 "transformers": ["myapp/first", "myapp/second", "myapp/third"] |
| 315 }), |
| 316 d.dir( |
| 317 "lib", |
| 318 [ |
| 319 d.file("first.dart", transformer()), |
| 320 d.file("second.dart", transformer()), |
| 321 d.file("third.dart", transformer())])]).create(); |
| 322 expectDependencies({ |
| 323 'myapp/first': [], |
| 324 'myapp/second': ['myapp/first'], |
| 325 'myapp/third': ['myapp/second', 'myapp/first'] |
| 326 }); |
| 327 }); |
| 328 integration( |
| 329 "considers the entrypoint package's dev and override " "dependencies", |
| 330 () { |
| 331 d.dir(appPath, [d.pubspec({ |
| 332 "name": "myapp", |
| 333 "dependencies": { |
| 334 "foo": { |
| 335 "path": "../foo" |
| 336 } |
| 337 }, |
| 338 "dev_dependencies": { |
| 339 "bar": { |
| 340 "path": "../bar" |
| 341 } |
| 342 }, |
| 343 "dependency_overrides": { |
| 344 "baz": { |
| 345 "path": "../baz" |
| 346 } |
| 347 }, |
| 348 "transformers": ["foo", "myapp"] |
| 349 }), d.dir("lib", [d.file("myapp.dart", transformer())])]).create(); |
| 350 d.dir("foo", [d.pubspec({ |
| 351 "name": "foo", |
| 352 "version": "1.0.0", |
| 353 "transformers": ["foo"] |
| 354 }), d.dir("lib", [d.file("foo.dart", transformer())])]).create(); |
| 355 d.dir("bar", [d.pubspec({ |
| 356 "name": "bar", |
| 357 "version": "1.0.0", |
| 358 "transformers": ["bar"] |
| 359 }), d.dir("lib", [d.file("bar.dart", transformer())])]).create(); |
| 360 d.dir("baz", [d.pubspec({ |
| 361 "name": "baz", |
| 362 "version": "1.0.0", |
| 363 "transformers": ["baz"] |
| 364 }), d.dir("lib", [d.file("baz.dart", transformer())])]).create(); |
| 365 expectDependencies({ |
| 366 'myapp': ['foo', 'bar', 'baz'], |
| 367 'foo': [], |
| 368 'bar': [], |
| 369 'baz': [] |
| 370 }); |
| 371 }); |
| 372 integration( |
| 373 "doesn't consider a non-entrypoint package's dev and override " "dependenc
ies", |
| 374 () { |
| 375 d.dir(appPath, [d.pubspec({ |
| 376 "name": "myapp", |
| 377 "dependencies": { |
| 378 "pkg": { |
| 379 "path": "../pkg" |
| 380 } |
| 381 } |
| 382 })]).create(); |
| 383 d.dir("pkg", [d.pubspec({ |
| 384 "name": "pkg", |
| 385 "dependencies": { |
| 386 "foo": { |
| 387 "path": "../foo" |
| 388 } |
| 389 }, |
| 390 "dev_dependencies": { |
| 391 "bar": { |
| 392 "path": "../bar" |
| 393 } |
| 394 }, |
| 395 "dependency_overrides": { |
| 396 "baz": { |
| 397 "path": "../baz" |
| 398 } |
| 399 }, |
| 400 "transformers": ["foo", "pkg"] |
| 401 }), d.dir("lib", [d.file("pkg.dart", transformer())])]).create(); |
| 402 d.dir("foo", [d.pubspec({ |
| 403 "name": "foo", |
| 404 "version": "1.0.0", |
| 405 "transformers": ["foo"] |
| 406 }), d.dir("lib", [d.file("foo.dart", transformer())])]).create(); |
| 407 d.dir("bar", [d.pubspec({ |
| 408 "name": "bar", |
| 409 "version": "1.0.0", |
| 410 "transformers": ["bar"] |
| 411 }), d.dir("lib", [d.file("bar.dart", transformer())])]).create(); |
| 412 d.dir("baz", [d.pubspec({ |
| 413 "name": "baz", |
| 414 "version": "1.0.0", |
| 415 "transformers": ["baz"] |
| 416 }), d.dir("lib", [d.file("baz.dart", transformer())])]).create(); |
| 417 expectDependencies({ |
| 418 'pkg': ['foo'], |
| 419 'foo': [], |
| 420 'bar': [], |
| 421 'baz': [] |
| 422 }); |
| 423 }); |
| 424 } |
OLD | NEW |