Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'dart:async'; | 5 import 'dart:async'; |
| 6 import 'dart:io'; | 6 import 'dart:io'; |
| 7 | 7 |
| 8 import 'package:path/path.dart' as p; | 8 import 'package:path/path.dart' as p; |
| 9 import 'package:pub/src/exit_codes.dart' as exit_codes; | 9 import 'package:pub/src/exit_codes.dart' as exit_codes; |
| 10 import 'package:pub/src/io.dart'; | 10 import 'package:pub/src/io.dart'; |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 279 d.appPubspec({"foo": "3.0.0"}) | 279 d.appPubspec({"foo": "3.0.0"}) |
| 280 ]).create(); | 280 ]).create(); |
| 281 | 281 |
| 282 pubGet(environment: {"_PUB_TEST_SDK_VERSION": "1.2.3+4"}); | 282 pubGet(environment: {"_PUB_TEST_SDK_VERSION": "1.2.3+4"}); |
| 283 }); | 283 }); |
| 284 | 284 |
| 285 _requiresPubGet("Dart 0.1.2+3 is incompatible with your dependencies' " | 285 _requiresPubGet("Dart 0.1.2+3 is incompatible with your dependencies' " |
| 286 "SDK constraints. Please run \"pub get\" again."); | 286 "SDK constraints. Please run \"pub get\" again."); |
| 287 }); | 287 }); |
| 288 | 288 |
| 289 integration("the lock file's Flutter SDK constraint doesn't match the curren t " | |
|
Bob Nystrom
2016/07/22 00:14:47
Long line.
nweiz
2016/07/22 00:45:01
Done.
| |
| 290 "Flutter SDK", () { | |
| 291 // Avoid using a path dependency because it triggers the full validation | |
| 292 // logic. We want to be sure SDK-validation works without that logic. | |
| 293 globalPackageServer.add((builder) { | |
| 294 builder.serve("foo", "3.0.0", pubspec: { | |
| 295 "environment": {"flutter": ">=1.0.0 <2.0.0"} | |
| 296 }); | |
| 297 }); | |
| 298 | |
| 299 d.dir('flutter', [ | |
| 300 d.file('version', '1.2.3') | |
| 301 ]).create(); | |
| 302 | |
| 303 d.dir(appPath, [ | |
| 304 d.appPubspec({"foo": "3.0.0"}) | |
| 305 ]).create(); | |
| 306 | |
| 307 pubGet(environment: {"FLUTTER_ROOT": p.join(sandboxDir, 'flutter')}); | |
| 308 | |
| 309 d.dir('flutter', [ | |
| 310 d.file('version', '2.4.6') | |
| 311 ]).create(); | |
| 312 | |
| 313 // Run pub manually here because otherwise we don't have access to | |
| 314 // sandboxDir. | |
| 315 schedulePub( | |
| 316 args: ["run", "script"], | |
| 317 environment: {"FLUTTER_ROOT": p.join(sandboxDir, 'flutter')}, | |
| 318 error: "Flutter 2.4.6 is incompatible with your dependencies' SDK " | |
| 319 "constraints. Please run \"pub get\" again.", | |
| 320 exitCode: exit_codes.DATA); | |
| 321 }); | |
| 322 | |
| 289 group("a path dependency's dependency doesn't match the lockfile", () { | 323 group("a path dependency's dependency doesn't match the lockfile", () { |
| 290 setUp(() { | 324 setUp(() { |
| 291 d.dir("bar", [ | 325 d.dir("bar", [ |
| 292 d.libPubspec("bar", "1.0.0", deps: {"foo": "1.0.0"}) | 326 d.libPubspec("bar", "1.0.0", deps: {"foo": "1.0.0"}) |
| 293 ]).create(); | 327 ]).create(); |
| 294 | 328 |
| 295 d.dir(appPath, [ | 329 d.dir(appPath, [ |
| 296 d.appPubspec({"bar": {"path": "../bar"}}) | 330 d.appPubspec({"bar": {"path": "../bar"}}) |
| 297 ]).create(); | 331 ]).create(); |
| 298 | 332 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 387 }) | 421 }) |
| 388 ]).create(); | 422 ]).create(); |
| 389 | 423 |
| 390 pubGet(); | 424 pubGet(); |
| 391 | 425 |
| 392 _touch("pubspec.lock"); | 426 _touch("pubspec.lock"); |
| 393 }); | 427 }); |
| 394 | 428 |
| 395 _runsSuccessfully(); | 429 _runsSuccessfully(); |
| 396 }); | 430 }); |
| 431 | |
| 432 integration("the lock file has a Flutter SDK but Flutter is unavailable", | |
| 433 () { | |
| 434 // Avoid using a path dependency because it triggers the full validation | |
| 435 // logic. We want to be sure SDK-validation works without that logic. | |
| 436 globalPackageServer.add((builder) { | |
| 437 builder.serve("foo", "3.0.0", pubspec: { | |
| 438 "environment": {"flutter": ">=1.0.0 <2.0.0"} | |
| 439 }); | |
| 440 }); | |
| 441 | |
| 442 d.dir('flutter', [ | |
| 443 d.file('version', '1.2.3') | |
| 444 ]).create(); | |
| 445 | |
| 446 d.dir(appPath, [ | |
| 447 d.appPubspec({"foo": "3.0.0"}) | |
| 448 ]).create(); | |
| 449 | |
| 450 pubGet(environment: {"FLUTTER_ROOT": p.join(sandboxDir, 'flutter')}); | |
| 451 | |
| 452 d.dir('flutter', [ | |
| 453 d.file('version', '2.4.6') | |
| 454 ]).create(); | |
| 455 | |
| 456 // Run pub manually here because otherwise we don't have access to | |
| 457 // sandboxDir. | |
| 458 schedulePub(args: ["run", "bin/script.dart"]); | |
|
Bob Nystrom
2016/07/22 00:14:47
This isn't using sandboxDir. Can you just run pub
nweiz
2016/07/22 00:45:01
We use it above, in the initial pub get.
| |
| 459 }); | |
| 397 }); | 460 }); |
| 398 } | 461 } |
| 399 | 462 |
| 400 /// Runs every command that care about the world being up-to-date, and asserts | 463 /// Runs every command that care about the world being up-to-date, and asserts |
| 401 /// that it prints [message] as part of its error. | 464 /// that it prints [message] as part of its error. |
| 465 /// | |
| 466 /// If [environment] is passed, it's called to produce a map that's merged into | |
| 467 /// the OS environment for the pub commands. | |
| 402 void _requiresPubGet(String message) { | 468 void _requiresPubGet(String message) { |
| 403 for (var command in ["build", "serve", "run", "deps"]) { | 469 for (var command in ["build", "serve", "run", "deps"]) { |
| 404 integration("for pub $command", () { | 470 integration("for pub $command", () { |
| 405 var args = [command]; | 471 var args = [command]; |
| 406 if (command == "run") args.add("script"); | 472 if (command == "run") args.add("script"); |
| 407 | 473 |
| 408 schedulePub( | 474 schedulePub( |
| 409 args: args, | 475 args: args, |
| 410 error: contains(message), | 476 error: contains(message), |
| 411 exitCode: exit_codes.DATA); | 477 exitCode: exit_codes.DATA); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 458 void _touch(String path) { | 524 void _touch(String path) { |
| 459 schedule(() async { | 525 schedule(() async { |
| 460 // Delay a bit to make sure the modification times are noticeably different. | 526 // Delay a bit to make sure the modification times are noticeably different. |
| 461 // 1s seems to be the finest granularity that dart:io reports. | 527 // 1s seems to be the finest granularity that dart:io reports. |
| 462 await new Future.delayed(new Duration(seconds: 1)); | 528 await new Future.delayed(new Duration(seconds: 1)); |
| 463 | 529 |
| 464 path = p.join(sandboxDir, "myapp", path); | 530 path = p.join(sandboxDir, "myapp", path); |
| 465 touch(path); | 531 touch(path); |
| 466 }, "touching $path"); | 532 }, "touching $path"); |
| 467 } | 533 } |
| OLD | NEW |