Refactor the test package-server (#3230)
diff --git a/test/add/common/add_test.dart b/test/add/common/add_test.dart
index e124be8..69f33fe 100644
--- a/test/add/common/add_test.dart
+++ b/test/add/common/add_test.dart
@@ -13,7 +13,7 @@
void main() {
test('URL encodes the package name', () async {
- await serveNoPackages();
+ await servePackages();
await d.appDir({}).create();
@@ -38,9 +38,8 @@
group('normally', () {
test('fails if extra arguments are passed', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.2');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.2');
await d.dir(appPath, [
d.pubspec({'name': 'myapp'})
@@ -62,7 +61,8 @@
});
test('adds a package from a pub server', () async {
- await servePackages((builder) => builder.serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.appDir({}).create();
@@ -76,10 +76,9 @@
test(
'does not remove empty dev_dependencies while adding to normal dependencies',
() async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.2');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.2');
await d.dir(appPath, [
d.file('pubspec.yaml', '''
@@ -109,7 +108,8 @@
test('dry run does not actually add the package or modify the pubspec',
() async {
- await servePackages((builder) => builder.serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.appDir({}).create();
@@ -131,7 +131,8 @@
test(
'adds a package from a pub server even when dependencies key does not exist',
() async {
- await servePackages((builder) => builder.serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.dir(appPath, [
d.pubspec({'name': 'myapp'})
@@ -146,10 +147,9 @@
group('warns user to use pub upgrade if package exists', () {
test('if package is added without a version constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.2');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.2');
await d.appDir({'foo': '1.2.2'}).create();
@@ -164,10 +164,9 @@
});
test('if package is added with a specific version constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.2');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.2');
await d.appDir({'foo': '1.2.2'}).create();
@@ -182,10 +181,9 @@
});
test('if package is added with a version constraint range', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.2');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.2');
await d.appDir({'foo': '1.2.2'}).create();
@@ -201,10 +199,9 @@
});
test('removes dev_dependency and add to normal dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.2');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.2');
await d.dir(appPath, [
d.file('pubspec.yaml', '''
@@ -237,10 +234,9 @@
group('dependency override', () {
test('passes if package does not specify a range', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.2');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.2');
await d.dir(appPath, [
d.pubspec({
@@ -264,9 +260,8 @@
});
test('passes if constraint matches git dependency override', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.git('foo.git',
[d.libDir('foo'), d.libPubspec('foo', '1.2.3')]).create();
@@ -295,9 +290,8 @@
});
test('passes if constraint matches path dependency override', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.2');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.2');
await d.dir(
'foo', [d.libDir('foo'), d.libPubspec('foo', '1.2.2')]).create();
@@ -325,9 +319,8 @@
});
test('fails with bad version constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.dir(appPath, [
d.pubspec({'name': 'myapp', 'dependencies': {}})
@@ -348,10 +341,9 @@
});
test('fails if constraint does not match override', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.2');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.2');
await d.dir(appPath, [
d.pubspec({
@@ -381,9 +373,8 @@
});
test('fails if constraint matches git dependency override', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.git('foo.git',
[d.libDir('foo'), d.libPubspec('foo', '1.0.0')]).create();
@@ -421,9 +412,8 @@
test('fails if constraint does not match path dependency override',
() async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.2');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.2');
await d.dir(
'foo', [d.libDir('foo'), d.libPubspec('foo', '1.0.0')]).create();
@@ -462,7 +452,8 @@
group('--dev', () {
test('--dev adds packages to dev_dependencies instead', () async {
- await servePackages((builder) => builder.serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.dir(appPath, [
d.pubspec({'name': 'myapp', 'dev_dependencies': {}})
@@ -482,10 +473,9 @@
group('warns user to use pub upgrade if package exists', () {
test('if package is added without a version constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.2');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.2');
await d.dir(appPath, [
d.pubspec({
@@ -510,10 +500,9 @@
});
test('if package is added with a specific version constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.2');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.2');
await d.dir(appPath, [
d.pubspec({
@@ -538,10 +527,9 @@
});
test('if package is added with a version constraint range', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.2');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.2');
await d.dir(appPath, [
d.pubspec({
@@ -568,10 +556,9 @@
group('dependency override', () {
test('passes if package does not specify a range', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.2');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.2');
await d.dir(appPath, [
d.pubspec({
@@ -595,10 +582,8 @@
});
test('passes if constraint is git dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- });
-
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.git('foo.git',
[d.libDir('foo'), d.libPubspec('foo', '1.2.3')]).create();
@@ -626,9 +611,8 @@
});
test('passes if constraint matches path dependency override', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.2');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.2');
await d.dir(
'foo', [d.libDir('foo'), d.libPubspec('foo', '1.2.2')]).create();
@@ -656,10 +640,9 @@
});
test('fails if constraint does not match override', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.2');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.2');
await d.dir(appPath, [
d.pubspec({
@@ -689,9 +672,8 @@
});
test('fails if constraint matches git dependency override', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.git('foo.git',
[d.libDir('foo'), d.libPubspec('foo', '1.0.0')]).create();
@@ -729,9 +711,9 @@
test('fails if constraint does not match path dependency override',
() async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.2');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.2');
+
await d.dir(
'foo', [d.libDir('foo'), d.libPubspec('foo', '1.0.0')]).create();
@@ -770,10 +752,9 @@
test(
'prints information saying that package is already a dependency if it '
'already exists and exits with a usage exception', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.2');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.2');
await d.dir(appPath, [
d.pubspec({
@@ -805,9 +786,8 @@
/// Differs from the previous test because this tests YAML in flow format.
test('adds to empty ', () async {
- await servePackages((builder) {
- builder.serve('bar', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('bar', '1.0.0');
await d.dir(appPath, [
d.file('pubspec.yaml', '''
@@ -825,10 +805,9 @@
});
test('preserves comments', () async {
- await servePackages((builder) {
- builder.serve('bar', '1.0.0');
- builder.serve('foo', '1.0.0');
- });
+ await servePackages()
+ ..serve('bar', '1.0.0')
+ ..serve('foo', '1.0.0');
await d.dir(appPath, [
d.file('pubspec.yaml', '''
diff --git a/test/add/common/invalid_options.dart b/test/add/common/invalid_options.dart
index 4689db3..f5bf23d 100644
--- a/test/add/common/invalid_options.dart
+++ b/test/add/common/invalid_options.dart
@@ -39,12 +39,10 @@
test('cannot use both --path and --host-<option> flags', () async {
// Make the default server serve errors. Only the custom server should
// be accessed.
- await serveNoPackages();
- globalPackageServer.serveErrors();
+ (await servePackages()).serveErrors();
- final server = await PackageServer.start((builder) {
- builder.serve('foo', '1.2.3');
- });
+ final server = await startPackageServer();
+ server.serve('foo', '1.2.3');
await d
.dir('bar', [d.libDir('bar'), d.libPubspec('foo', '0.0.1')]).create();
@@ -76,12 +74,10 @@
test('cannot use both --hosted-url and --git-<option> flags', () async {
// Make the default server serve errors. Only the custom server should
// be accessed.
- await serveNoPackages();
- globalPackageServer.serveErrors();
+ (await servePackages()).serveErrors();
- final server = await PackageServer.start((builder) {
- builder.serve('foo', '1.2.3');
- });
+ final server = await startPackageServer();
+ server.serve('foo', '1.2.3');
ensureGit();
diff --git a/test/add/common/version_constraint_test.dart b/test/add/common/version_constraint_test.dart
index d865727..546642f 100644
--- a/test/add/common/version_constraint_test.dart
+++ b/test/add/common/version_constraint_test.dart
@@ -10,13 +10,12 @@
void main() {
test('allows empty version constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '0.2.3');
- builder.serve('foo', '1.0.1');
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '2.0.0-dev');
- builder.serve('foo', '1.3.4-dev');
- });
+ await servePackages()
+ ..serve('foo', '0.2.3')
+ ..serve('foo', '1.0.1')
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '2.0.0-dev')
+ ..serve('foo', '1.3.4-dev');
await d.appDir({}).create();
@@ -28,7 +27,8 @@
});
test('allows specific version constraint', () async {
- await servePackages((builder) => builder.serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.appDir({}).create();
@@ -40,7 +40,8 @@
});
test('allows specific pre-release version constraint', () async {
- await servePackages((builder) => builder.serve('foo', '1.2.3-dev'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3-dev');
await d.appDir({}).create();
@@ -52,13 +53,12 @@
});
test('allows the "any" version constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '0.2.3');
- builder.serve('foo', '1.0.1');
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '2.0.0-dev');
- builder.serve('foo', '1.3.4-dev');
- });
+ await servePackages()
+ ..serve('foo', '0.2.3')
+ ..serve('foo', '1.0.1')
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '2.0.0-dev')
+ ..serve('foo', '1.3.4-dev');
await d.appDir({}).create();
@@ -70,7 +70,8 @@
});
test('allows version constraint range', () async {
- await servePackages((builder) => builder.serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.appDir({}).create();
@@ -84,12 +85,11 @@
test(
'empty constraint allows it to choose the latest version not in conflict',
() async {
- await servePackages((builder) {
- builder.serve('foo', '0.1.0');
- builder.serve('foo', '1.2.3', deps: {'bar': '2.0.4'});
- builder.serve('bar', '2.0.3');
- builder.serve('bar', '2.0.4');
- });
+ await servePackages()
+ ..serve('foo', '0.1.0')
+ ..serve('foo', '1.2.3', deps: {'bar': '2.0.4'})
+ ..serve('bar', '2.0.3')
+ ..serve('bar', '2.0.4');
await d.appDir({'bar': '2.0.3'}).create();
@@ -103,7 +103,8 @@
group('does not update pubspec if no available version found', () {
test('simple', () async {
- await servePackages((builder) => builder.serve('foo', '1.0.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.0.3');
await d.appDir({}).create();
@@ -124,11 +125,10 @@
});
test('transitive', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3', deps: {'bar': '2.0.4'});
- builder.serve('bar', '2.0.3');
- builder.serve('bar', '2.0.4');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3', deps: {'bar': '2.0.4'})
+ ..serve('bar', '2.0.3')
+ ..serve('bar', '2.0.4');
await d.appDir({'bar': '2.0.3'}).create();
diff --git a/test/add/common/version_resolution_test.dart b/test/add/common/version_resolution_test.dart
index 9d7d2a6..64b393a 100644
--- a/test/add/common/version_resolution_test.dart
+++ b/test/add/common/version_resolution_test.dart
@@ -13,10 +13,10 @@
test('unlocks transitive dependencies', () async {
/// The server used to only have the foo v3.2.1 as the latest,
/// so pub get will create a pubspec.lock to foo 3.2.1
- await servePackages((builder) {
- builder.serve('foo', '3.2.1');
- builder.serve('bar', '1.0.0', deps: {'foo': '^3.2.1'});
- });
+ final server = await servePackages();
+
+ server.serve('foo', '3.2.1');
+ server.serve('bar', '1.0.0', deps: {'foo': '^3.2.1'});
await d.appDir({'bar': '1.0.0'}).create();
await pubGet();
@@ -24,11 +24,9 @@
/// foo's package creator releases a newer version of foo, and we
/// want to test that this is what the user gets when they run
/// pub add foo.
- globalPackageServer.add((builder) {
- builder.serve('foo', '3.5.0');
- builder.serve('foo', '3.1.0');
- builder.serve('foo', '2.5.0');
- });
+ server.serve('foo', '3.5.0');
+ server.serve('foo', '3.1.0');
+ server.serve('foo', '2.5.0');
await pubAdd(args: ['foo']);
@@ -41,18 +39,16 @@
() async {
/// The server used to only have the foo v3.2.1 as the latest,
/// so pub get will create a pubspec.lock to foo 3.2.1
- await servePackages((builder) {
- builder.serve('foo', '3.2.1');
- builder.serve('bar', '1.0.0', deps: {'foo': '^3.2.1'});
- });
+ final server = await servePackages();
+
+ server.serve('foo', '3.2.1');
+ server.serve('bar', '1.0.0', deps: {'foo': '^3.2.1'});
await d.appDir({'bar': '1.0.0'}).create();
await pubGet();
- globalPackageServer.add((builder) {
- builder.serve('foo', '4.0.0');
- builder.serve('foo', '2.0.0');
- });
+ server.serve('foo', '4.0.0');
+ server.serve('foo', '2.0.0');
await pubAdd(args: ['foo']);
@@ -65,20 +61,18 @@
() async {
/// The server used to only have the foo v3.2.1 as the latest,
/// so pub get will create a pubspec.lock to foo 3.2.1
- await servePackages((builder) {
- builder.serve('foo', '3.2.1');
- builder.serve('bar', '1.0.0', deps: {'foo': '^3.2.1'});
- });
+ final server = await servePackages();
+
+ server.serve('foo', '3.2.1');
+ server.serve('bar', '1.0.0', deps: {'foo': '^3.2.1'});
await d.appDir({'bar': '^1.0.0'}).create();
await pubGet();
- globalPackageServer.add((builder) {
- builder.serve('foo', '5.0.0');
- builder.serve('foo', '4.0.0');
- builder.serve('foo', '2.0.0');
- builder.serve('bar', '1.5.0', deps: {'foo': '^4.0.0'});
- });
+ server.serve('foo', '5.0.0');
+ server.serve('foo', '4.0.0');
+ server.serve('foo', '2.0.0');
+ server.serve('bar', '1.5.0', deps: {'foo': '^4.0.0'});
await pubAdd(args: ['foo']);
diff --git a/test/add/git/git_test.dart b/test/add/git/git_test.dart
index 2577af8..7bc51f0 100644
--- a/test/add/git/git_test.dart
+++ b/test/add/git/git_test.dart
@@ -156,9 +156,8 @@
});
test('can be overriden by dependency override', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.2');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.2');
await d.git(
'foo.git', [d.libDir('foo'), d.libPubspec('foo', '1.0.0')]).create();
diff --git a/test/add/hosted/non_default_pub_server_test.dart b/test/add/hosted/non_default_pub_server_test.dart
index fbe966e..eea6c09 100644
--- a/test/add/hosted/non_default_pub_server_test.dart
+++ b/test/add/hosted/non_default_pub_server_test.dart
@@ -12,13 +12,12 @@
test('adds a package from a non-default pub server', () async {
// Make the default server serve errors. Only the custom server should
// be accessed.
- await serveErrors();
+ (await servePackages()).serveErrors();
- var server = await PackageServer.start((builder) {
- builder.serve('foo', '0.2.5');
- builder.serve('foo', '1.1.0');
- builder.serve('foo', '1.2.3');
- });
+ final server = await servePackages();
+ server.serve('foo', '0.2.5');
+ server.serve('foo', '1.1.0');
+ server.serve('foo', '1.2.3');
await d.appDir({}).create();
@@ -64,13 +63,12 @@
() async {
// Make the default server serve errors. Only the custom server should
// be accessed.
- await serveErrors();
+ (await servePackages()).serveErrors();
- var server = await PackageServer.start((builder) {
- builder.serve('foo', '0.2.5');
- builder.serve('foo', '1.1.0');
- builder.serve('foo', '1.2.3');
- });
+ final server = await servePackages();
+ server.serve('foo', '0.2.5');
+ server.serve('foo', '1.1.0');
+ server.serve('foo', '1.2.3');
await d.appDir({}).create();
@@ -92,13 +90,12 @@
() async {
// Make the default server serve errors. Only the custom server should
// be accessed.
- await serveErrors();
+ (await servePackages()).serveErrors();
- var server = await PackageServer.start((builder) {
- builder.serve('foo', '0.2.5');
- builder.serve('foo', '1.1.0');
- builder.serve('foo', '1.2.3');
- });
+ final server = await servePackages();
+ server.serve('foo', '0.2.5');
+ server.serve('foo', '1.1.0');
+ server.serve('foo', '1.2.3');
await d.appDir({}).create();
@@ -121,13 +118,11 @@
'constraint', () async {
// Make the default server serve errors. Only the custom server should
// be accessed.
- await serveErrors();
-
- var server = await PackageServer.start((builder) {
- builder.serve('foo', '0.2.5');
- builder.serve('foo', '1.1.0');
- builder.serve('foo', '1.2.3');
- });
+ (await servePackages()).serveErrors();
+ final server = await servePackages();
+ server.serve('foo', '0.2.5');
+ server.serve('foo', '1.1.0');
+ server.serve('foo', '1.2.3');
await d.appDir({}).create();
diff --git a/test/add/path/absolute_path_test.dart b/test/add/path/absolute_path_test.dart
index 0811bea..5b7e726 100644
--- a/test/add/path/absolute_path_test.dart
+++ b/test/add/path/absolute_path_test.dart
@@ -88,9 +88,8 @@
});
test('can be overriden by dependency override', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.2');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.2');
await d
.dir('foo', [d.libDir('foo'), d.libPubspec('foo', '0.0.1')]).create();
diff --git a/test/add/path/relative_path_test.dart b/test/add/path/relative_path_test.dart
index 8fa1932..c02b644 100644
--- a/test/add/path/relative_path_test.dart
+++ b/test/add/path/relative_path_test.dart
@@ -102,9 +102,8 @@
});
test('can be overriden by dependency override', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.2');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.2');
await d
.dir('foo', [d.libDir('foo'), d.libPubspec('foo', '0.0.1')]).create();
diff --git a/test/add/sdk/sdk_test.dart b/test/add/sdk/sdk_test.dart
index 25995e3..632725e 100644
--- a/test/add/sdk/sdk_test.dart
+++ b/test/add/sdk/sdk_test.dart
@@ -11,9 +11,8 @@
void main() {
setUp(() async {
- await servePackages((builder) {
- builder.serve('bar', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('bar', '1.0.0');
await d.dir('flutter', [
d.dir('packages', [
diff --git a/test/cache/add/adds_latest_matching_version_test.dart b/test/cache/add/adds_latest_matching_version_test.dart
index 0e78b12..7bf9625 100644
--- a/test/cache/add/adds_latest_matching_version_test.dart
+++ b/test/cache/add/adds_latest_matching_version_test.dart
@@ -13,12 +13,11 @@
test(
'adds the latest version of the package matching the '
'version constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.2');
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '2.0.0-dev');
- builder.serve('foo', '2.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.2.2')
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '2.0.0-dev')
+ ..serve('foo', '2.0.0');
await runPub(
args: ['cache', 'add', 'foo', '-v', '>=1.0.0 <2.0.0'],
diff --git a/test/cache/add/adds_latest_version_test.dart b/test/cache/add/adds_latest_version_test.dart
index 6e196f6..cf34857 100644
--- a/test/cache/add/adds_latest_version_test.dart
+++ b/test/cache/add/adds_latest_version_test.dart
@@ -9,11 +9,10 @@
void main() {
test('adds the latest stable version of the package', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.2');
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.4-dev');
- });
+ await servePackages()
+ ..serve('foo', '1.2.2')
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.4-dev');
await runPub(
args: ['cache', 'add', 'foo'], output: 'Downloading foo 1.2.3...');
diff --git a/test/cache/add/all_adds_all_matching_versions_test.dart b/test/cache/add/all_adds_all_matching_versions_test.dart
index 9dfb3c7..a05e8dc 100644
--- a/test/cache/add/all_adds_all_matching_versions_test.dart
+++ b/test/cache/add/all_adds_all_matching_versions_test.dart
@@ -9,12 +9,11 @@
void main() {
test('"--all" adds all matching versions of the package', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.2');
- builder.serve('foo', '1.2.3-dev');
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '2.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.2.2')
+ ..serve('foo', '1.2.3-dev')
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '2.0.0');
await runPub(
args: ['cache', 'add', 'foo', '-v', '>=1.0.0 <2.0.0', '--all'],
diff --git a/test/cache/add/all_with_some_versions_present_test.dart b/test/cache/add/all_with_some_versions_present_test.dart
index 861ac4c..7b5b36d 100644
--- a/test/cache/add/all_with_some_versions_present_test.dart
+++ b/test/cache/add/all_with_some_versions_present_test.dart
@@ -9,12 +9,11 @@
void main() {
test('"--all" adds all non-installed versions of the package', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.1');
- builder.serve('foo', '1.2.2');
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '2.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.2.1')
+ ..serve('foo', '1.2.2')
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '2.0.0');
// Install a couple of versions first.
await runPub(
diff --git a/test/cache/add/already_cached_test.dart b/test/cache/add/already_cached_test.dart
index ac244dc..8c74da9 100644
--- a/test/cache/add/already_cached_test.dart
+++ b/test/cache/add/already_cached_test.dart
@@ -9,9 +9,8 @@
void main() {
test('does nothing if the package is already cached', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
// Run once to put it in the cache.
await runPub(
diff --git a/test/cache/add/no_matching_version_test.dart b/test/cache/add/no_matching_version_test.dart
index 4b4455c..a860294 100644
--- a/test/cache/add/no_matching_version_test.dart
+++ b/test/cache/add/no_matching_version_test.dart
@@ -8,10 +8,9 @@
void main() {
test('fails if no version matches the version constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.2');
- builder.serve('foo', '1.2.3');
- });
+ await servePackages()
+ ..serve('foo', '1.2.2')
+ ..serve('foo', '1.2.3');
await runPub(
args: ['cache', 'add', 'foo', '-v', '>2.0.0'],
diff --git a/test/cache/add/package_not_found_test.dart b/test/cache/add/package_not_found_test.dart
index 6b3f2bc..caf45f4 100644
--- a/test/cache/add/package_not_found_test.dart
+++ b/test/cache/add/package_not_found_test.dart
@@ -9,7 +9,7 @@
void main() {
test('fails if the package cound not be found on the source', () async {
- await serveNoPackages();
+ await servePackages();
await runPub(
args: ['cache', 'add', 'foo'],
diff --git a/test/cache/clean_test.dart b/test/cache/clean_test.dart
index b03c0c8..7a79bc8 100644
--- a/test/cache/clean_test.dart
+++ b/test/cache/clean_test.dart
@@ -17,9 +17,9 @@
});
test('running pub cache clean --force deletes cache', () async {
- await servePackages((b) => b
+ await servePackages()
..serve('foo', '1.1.2')
- ..serve('bar', '1.2.3'));
+ ..serve('bar', '1.2.3');
await d.appDir({'foo': 'any', 'bar': 'any'}).create();
await pubGet();
final cache = path.join(d.sandbox, cachePath);
@@ -32,9 +32,9 @@
test('running pub cache clean deletes cache only with confirmation',
() async {
- await servePackages((b) => b
+ await servePackages()
..serve('foo', '1.1.2')
- ..serve('bar', '1.2.3'));
+ ..serve('bar', '1.2.3');
await d.appDir({'foo': 'any', 'bar': 'any'}).create();
await pubGet();
final cache = path.join(d.sandbox, cachePath);
diff --git a/test/cache/repair/handles_corrupted_binstub_test.dart b/test/cache/repair/handles_corrupted_binstub_test.dart
index 9991ec1..0ca169f 100644
--- a/test/cache/repair/handles_corrupted_binstub_test.dart
+++ b/test/cache/repair/handles_corrupted_binstub_test.dart
@@ -9,11 +9,10 @@
void main() {
test('handles a corrupted binstub script', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [d.file('script.dart', "main(args) => print('ok');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('script.dart', "main(args) => print('ok');")])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/cache/repair/handles_failure_test.dart b/test/cache/repair/handles_failure_test.dart
index 4a6bd64..d5637ca 100644
--- a/test/cache/repair/handles_failure_test.dart
+++ b/test/cache/repair/handles_failure_test.dart
@@ -11,15 +11,14 @@
void main() {
test('handles failure to reinstall some packages', () async {
// Only serve two packages so repairing will have a failure.
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.5');
- });
+ final server = await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.5');
// Set up a cache with some packages.
await d.dir(cachePath, [
d.dir('hosted', [
- d.dir('localhost%58${globalServer!.port}', [
+ d.dir('localhost%58${server.port}', [
d.dir('foo-1.2.3',
[d.libPubspec('foo', '1.2.3'), d.file('broken.txt')]),
d.dir('foo-1.2.4',
diff --git a/test/cache/repair/hosted.dart b/test/cache/repair/hosted.dart
index 97c8167..ec3786b 100644
--- a/test/cache/repair/hosted.dart
+++ b/test/cache/repair/hosted.dart
@@ -11,21 +11,20 @@
import '../../test_pub.dart';
void main() {
- setUp(() {
- return servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.4');
- builder.serve('foo', '1.2.5');
- builder.serve('bar', '1.2.3');
- builder.serve('bar', '1.2.4');
- });
+ setUp(() async {
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.4')
+ ..serve('foo', '1.2.5')
+ ..serve('bar', '1.2.3')
+ ..serve('bar', '1.2.4');
});
test('reinstalls previously cached hosted packages', () async {
// Set up a cache with some broken packages.
await d.dir(cachePath, [
d.dir('hosted', [
- d.dir('localhost%58${globalServer!.port}', [
+ d.dir('localhost%58${globalServer.port}', [
d.dir('foo-1.2.3',
[d.libPubspec('foo', '1.2.3'), d.file('broken.txt')]),
d.dir('foo-1.2.5',
@@ -64,7 +63,7 @@
// Set up a cache with some broken packages.
await d.dir(cachePath, [
d.dir('hosted', [
- d.dir('localhost%58${globalServer!.port}', [
+ d.dir('localhost%58${globalServer.port}', [
d.dir('bar-1.2.4', [d.file('broken.txt')]),
d.dir('foo-1.2.3', [d.file('broken.txt')]),
d.dir('foo-1.2.5', [d.file('broken.txt')]),
@@ -100,7 +99,7 @@
// Set up a cache with some broken packages.
await d.dir(cachePath, [
d.dir('hosted', [
- d.dir('localhost%58${globalServer!.port}', [
+ d.dir('localhost%58${globalServer.port}', [
d.dir('bar-1.2.4', [d.file('pubspec.yaml', '{')]),
d.dir('foo-1.2.3', [d.file('pubspec.yaml', '{')]),
d.dir('foo-1.2.5', [d.file('pubspec.yaml', '{')]),
diff --git a/test/cache/repair/recompiles_snapshots_test.dart b/test/cache/repair/recompiles_snapshots_test.dart
index 89b3575..f3c3d6c 100644
--- a/test/cache/repair/recompiles_snapshots_test.dart
+++ b/test/cache/repair/recompiles_snapshots_test.dart
@@ -9,11 +9,10 @@
void main() {
test('recompiles activated executable snapshots', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [d.file('script.dart', "main(args) => print('ok');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('script.dart', "main(args) => print('ok');")])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/cache/repair/updates_binstubs_test.dart b/test/cache/repair/updates_binstubs_test.dart
index c311697..e8cbfb4 100644
--- a/test/cache/repair/updates_binstubs_test.dart
+++ b/test/cache/repair/updates_binstubs_test.dart
@@ -19,14 +19,12 @@
void main() {
test('updates an outdated binstub script', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'executables': {'foo-script': 'script'}
- }, contents: [
- d.dir(
- 'bin', [d.file('script.dart', "main(args) => print('ok \$args');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'executables': {'foo-script': 'script'}
+ }, contents: [
+ d.dir('bin', [d.file('script.dart', "main(args) => print('ok \$args');")])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/dependency_override_test.dart b/test/dependency_override_test.dart
index 2ea5abc..dd8dc0d 100644
--- a/test/dependency_override_test.dart
+++ b/test/dependency_override_test.dart
@@ -12,11 +12,10 @@
void main() {
forBothPubGetAndUpgrade((command) {
test('chooses best version matching override constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- builder.serve('foo', '3.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0')
+ ..serve('foo', '3.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -32,9 +31,8 @@
});
test('treats override as implicit dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -49,14 +47,13 @@
});
test('ignores other constraints on overridden package', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- builder.serve('foo', '3.0.0');
- builder.serve('bar', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0')
+ ..serve('foo', '3.0.0')
+ ..serve('bar', '1.0.0', pubspec: {
'dependencies': {'foo': '5.0.0-nonexistent'}
});
- });
await d.dir(appPath, [
d.pubspec({
@@ -72,10 +69,9 @@
});
test('ignores SDK constraints', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'environment': {'sdk': '5.6.7-fblthp'}
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'environment': {'sdk': '5.6.7-fblthp'}
});
await d.dir(appPath, [
@@ -91,10 +87,9 @@
});
test('warns about overridden dependencies', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('bar', '1.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('bar', '1.0.0');
await d
.dir('baz', [d.libDir('baz'), d.libPubspec('baz', '0.0.1')]).create();
diff --git a/test/deps_test.dart b/test/deps_test.dart
index 207e8e7..7336f13 100644
--- a/test/deps_test.dart
+++ b/test/deps_test.dart
@@ -10,21 +10,19 @@
void main() {
setUp(() async {
- await servePackages((builder) {
- builder.serve('normal', '1.2.3',
- deps: {'transitive': 'any', 'circular_a': 'any'});
- builder.serve('transitive', '1.2.3', deps: {'shared': 'any'});
- builder.serve('shared', '1.2.3', deps: {'other': 'any'});
- builder.serve('dev_only', '1.2.3');
- builder.serve('unittest', '1.2.3',
- deps: {'shared': 'any', 'dev_only': 'any'});
- builder.serve('other', '1.0.0', deps: {'myapp': 'any'});
- builder.serve('overridden', '1.0.0');
- builder.serve('overridden', '2.0.0');
- builder.serve('override_only', '1.2.3');
- builder.serve('circular_a', '1.2.3', deps: {'circular_b': 'any'});
- builder.serve('circular_b', '1.2.3', deps: {'circular_a': 'any'});
- });
+ await servePackages()
+ ..serve('normal', '1.2.3',
+ deps: {'transitive': 'any', 'circular_a': 'any'})
+ ..serve('transitive', '1.2.3', deps: {'shared': 'any'})
+ ..serve('shared', '1.2.3', deps: {'other': 'any'})
+ ..serve('dev_only', '1.2.3')
+ ..serve('unittest', '1.2.3', deps: {'shared': 'any', 'dev_only': 'any'})
+ ..serve('other', '1.0.0', deps: {'myapp': 'any'})
+ ..serve('overridden', '1.0.0')
+ ..serve('overridden', '2.0.0')
+ ..serve('override_only', '1.2.3')
+ ..serve('circular_a', '1.2.3', deps: {'circular_b': 'any'})
+ ..serve('circular_b', '1.2.3', deps: {'circular_a': 'any'});
await d.dir('from_path',
[d.libDir('from_path'), d.libPubspec('from_path', '1.2.3')]).create();
diff --git a/test/descriptor.dart b/test/descriptor.dart
index ee50a45..7b140e2 100644
--- a/test/descriptor.dart
+++ b/test/descriptor.dart
@@ -179,7 +179,7 @@
/// that this cache represents. It defaults to [globalServer.port].
Descriptor hostedCache(Iterable<Descriptor> contents, {int? port}) {
return dir(cachePath, [
- dir('hosted', [dir('localhost%58${port ?? globalServer?.port}', contents)])
+ dir('hosted', [dir('localhost%58${port ?? globalServer.port}', contents)])
]);
}
@@ -295,7 +295,7 @@
}
Uri rootUri;
if (version != null) {
- rootUri = p.toUri(globalPackageServer.pathInCache(name, version));
+ rootUri = p.toUri(globalServer.pathInCache(name, version));
} else {
rootUri = p.toUri(p.join('..', path));
}
diff --git a/test/descriptor_server.dart b/test/descriptor_server.dart
deleted file mode 100644
index 973a49c..0000000
--- a/test/descriptor_server.dart
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright (c) 2016, 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.
-
-import 'dart:async';
-
-import 'package:collection/collection.dart' show IterableExtension;
-import 'package:path/path.dart' as p;
-import 'package:shelf/shelf.dart' as shelf;
-import 'package:shelf/shelf_io.dart' as shelf_io;
-import 'package:test/test.dart' hide fail;
-
-import 'descriptor.dart' as d;
-
-/// The global [DescriptorServer] that's used by default.
-///
-/// `null` if there's no global server in use. This can be set to replace the
-/// existing global server.
-DescriptorServer? get globalServer => _globalServer;
-set globalServer(DescriptorServer? value) {
- var server = _globalServer;
- if (server == null) {
- addTearDown(() {
- _globalServer = null;
- });
- } else {
- expect(server.close(), completes);
- }
-
- _globalServer = value;
-}
-
-DescriptorServer? _globalServer;
-
-/// Creates a global [DescriptorServer] to serve [contents] as static files.
-///
-/// This server will exist only for the duration of the pub run. It's accessible
-/// via [server]. Subsequent calls to [serve] replace the previous server.
-Future serve([List<d.Descriptor> contents = const []]) async {
- globalServer = (await DescriptorServer.start())..contents.addAll(contents);
-}
-
-class DescriptorServer {
- /// The underlying server.
- final shelf.Server _server;
-
- /// A future that will complete to the port used for the server.
- int get port => _server.url.port;
-
- /// The list of paths that have been requested from this server.
- final requestedPaths = <String>[];
-
- /// The base directory descriptor of the directories served by [this].
- final d.DirectoryDescriptor _baseDir;
-
- /// The descriptors served by this server.
- ///
- /// This can safely be modified between requests.
- List<d.Descriptor> get contents => _baseDir.contents;
-
- /// Handlers for requests not easily described as files.
- final Map<Pattern, shelf.Handler> extraHandlers = {};
-
- /// Creates an HTTP server to serve [contents] as static files.
- ///
- /// This server exists only for the duration of the pub run. Subsequent calls
- /// to [serve] replace the previous server.
- static Future<DescriptorServer> start() async =>
- DescriptorServer._(await shelf_io.IOServer.bind('localhost', 0));
-
- /// Creates a server that reports an error if a request is ever received.
- static Future<DescriptorServer> errors() async =>
- DescriptorServer._(await shelf_io.IOServer.bind('localhost', 0));
-
- DescriptorServer._(this._server) : _baseDir = d.dir('serve-dir', []) {
- _server.mount((request) async {
- final pathWithInitialSlash = '/${request.url.path}';
- final key = extraHandlers.keys.firstWhereOrNull((pattern) {
- final match = pattern.matchAsPrefix(pathWithInitialSlash);
- return match != null && match.end == pathWithInitialSlash.length;
- });
- if (key != null) return extraHandlers[key]!(request);
-
- var path = p.posix.fromUri(request.url.path);
- requestedPaths.add(path);
-
- try {
- var stream = await _validateStream(_baseDir.load(path));
- return shelf.Response.ok(stream);
- } catch (_) {
- return shelf.Response.notFound('File "$path" not found.');
- }
- });
- addTearDown(_server.close);
- }
-
- /// Closes this server.
- Future close() => _server.close();
-}
-
-/// Ensures that [stream] can emit at least one value successfully (or close
-/// without any values).
-///
-/// For example, reading asynchronously from a non-existent file will return a
-/// stream that fails on the first chunk. In order to handle that more
-/// gracefully, you may want to check that the stream looks like it's working
-/// before you pipe the stream to something else.
-///
-/// This lets you do that. It returns a [Future] that completes to a [Stream]
-/// emitting the same values and errors as [stream], but only if at least one
-/// value can be read successfully. If an error occurs before any values are
-/// emitted, the returned Future completes to that error.
-Future<Stream<T>> _validateStream<T>(Stream<T> stream) {
- var completer = Completer<Stream<T>>();
- var controller = StreamController<T>(sync: true);
-
- late StreamSubscription subscription;
- subscription = stream.listen((value) {
- // We got a value, so the stream is valid.
- if (!completer.isCompleted) completer.complete(controller.stream);
- controller.add(value);
- }, onError: (error, [StackTrace? stackTrace]) {
- // If the error came after values, it's OK.
- if (completer.isCompleted) {
- controller.addError(error, stackTrace);
- return;
- }
-
- // Otherwise, the error came first and the stream is invalid.
- completer.completeError(error, stackTrace);
-
- // We won't be returning the stream at all in this case, so unsubscribe
- // and swallow the error.
- subscription.cancel();
- }, onDone: () {
- // It closed with no errors, so the stream is valid.
- if (!completer.isCompleted) completer.complete(controller.stream);
- controller.close();
- });
-
- return completer.future;
-}
diff --git a/test/directory_option_test.dart b/test/directory_option_test.dart
index 4458199..65193bf 100644
--- a/test/directory_option_test.dart
+++ b/test/directory_option_test.dart
@@ -14,20 +14,21 @@
Future<void> main() async {
testWithGolden('commands taking a --directory/-C parameter work',
(ctx) async {
- await servePackages((b) => b
+ await servePackages()
..serve('foo', '1.0.0')
..serve('foo', '0.1.2')
- ..serve('bar', '1.2.3'));
- await credentialsFile(globalPackageServer, 'access token').create();
- globalPackageServer
- .extraHandlers[RegExp('/api/packages/test_pkg/uploaders')] = (request) {
- return shelf.Response.ok(
- jsonEncode({
- 'success': {'message': 'Good job!'}
- }),
- headers: {'content-type': 'application/json'},
- );
- };
+ ..serve('bar', '1.2.3');
+ await credentialsFile(globalServer, 'access token').create();
+ globalServer.handle(
+ RegExp('/api/packages/test_pkg/uploaders'),
+ (request) {
+ return shelf.Response.ok(
+ jsonEncode({
+ 'success': {'message': 'Good job!'}
+ }),
+ headers: {'content-type': 'application/json'});
+ },
+ );
await validPackage.create();
await dir(appPath, [
diff --git a/test/downgrade/does_not_show_other_versions_test.dart b/test/downgrade/does_not_show_other_versions_test.dart
index ca872c8..884bbaf 100644
--- a/test/downgrade/does_not_show_other_versions_test.dart
+++ b/test/downgrade/does_not_show_other_versions_test.dart
@@ -9,11 +9,10 @@
void main() {
test('does not show how many other versions are available', () async {
- await servePackages((builder) {
- builder.serve('downgraded', '1.0.0');
- builder.serve('downgraded', '2.0.0');
- builder.serve('downgraded', '3.0.0-dev');
- });
+ await servePackages()
+ ..serve('downgraded', '1.0.0')
+ ..serve('downgraded', '2.0.0')
+ ..serve('downgraded', '3.0.0-dev');
await d.appDir({'downgraded': '3.0.0-dev'}).create();
diff --git a/test/downgrade/dry_run_does_not_apply_changes_test.dart b/test/downgrade/dry_run_does_not_apply_changes_test.dart
index ebe2dbf..38fbebe 100644
--- a/test/downgrade/dry_run_does_not_apply_changes_test.dart
+++ b/test/downgrade/dry_run_does_not_apply_changes_test.dart
@@ -11,10 +11,9 @@
void main() {
test('--dry-run shows report but does not apply changes', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0');
// Create the first lockfile.
await d.appDir({'foo': '2.0.0'}).create();
diff --git a/test/downgrade/unlock_if_necessary_test.dart b/test/downgrade/unlock_if_necessary_test.dart
index 8024eee..0299e27 100644
--- a/test/downgrade/unlock_if_necessary_test.dart
+++ b/test/downgrade/unlock_if_necessary_test.dart
@@ -11,10 +11,9 @@
test(
"downgrades one locked hosted package's dependencies if it's "
'necessary', () async {
- await servePackages((builder) {
- builder.serve('foo', '2.0.0', deps: {'foo_dep': 'any'});
- builder.serve('foo_dep', '2.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '2.0.0', deps: {'foo_dep': 'any'});
+ server.serve('foo_dep', '2.0.0');
await d.appDir({'foo': 'any'}).create();
@@ -22,10 +21,8 @@
await d.appPackagesFile({'foo': '2.0.0', 'foo_dep': '2.0.0'}).validate();
- globalPackageServer.add((builder) {
- builder.serve('foo', '1.0.0', deps: {'foo_dep': '<2.0.0'});
- builder.serve('foo_dep', '1.0.0');
- });
+ server.serve('foo', '1.0.0', deps: {'foo_dep': '<2.0.0'});
+ server.serve('foo_dep', '1.0.0');
await pubDowngrade(args: ['foo']);
diff --git a/test/downgrade/unlock_single_package_test.dart b/test/downgrade/unlock_single_package_test.dart
index e381f37..cfd315d 100644
--- a/test/downgrade/unlock_single_package_test.dart
+++ b/test/downgrade/unlock_single_package_test.dart
@@ -9,28 +9,23 @@
void main() {
test('can unlock a single package only in downgrade', () async {
- await servePackages((builder) {
- builder.serve('foo', '2.1.0', deps: {'bar': '>1.0.0'});
- builder.serve('bar', '2.1.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '2.1.0', deps: {'bar': '>1.0.0'});
+ server.serve('bar', '2.1.0');
await d.appDir({'foo': 'any', 'bar': 'any'}).create();
await pubGet();
await d.appPackagesFile({'foo': '2.1.0', 'bar': '2.1.0'}).validate();
- globalPackageServer.add((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': 'any'});
- builder.serve('bar', '1.0.0');
- });
+ server.serve('foo', '1.0.0', deps: {'bar': 'any'});
+ server.serve('bar', '1.0.0');
await pubDowngrade(args: ['bar']);
await d.appPackagesFile({'foo': '2.1.0', 'bar': '2.1.0'}).validate();
- globalPackageServer.add((builder) {
- builder.serve('foo', '2.0.0', deps: {'bar': 'any'});
- builder.serve('bar', '2.0.0');
- });
+ server.serve('foo', '2.0.0', deps: {'bar': 'any'});
+ server.serve('bar', '2.0.0');
await pubDowngrade(args: ['bar']);
await d.appPackagesFile({'foo': '2.1.0', 'bar': '2.0.0'}).validate();
@@ -40,11 +35,10 @@
});
test('will not downgrade below constraint #2629', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- builder.serve('foo', '2.1.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0')
+ ..serve('foo', '2.1.0');
await d.appDir({'foo': '^2.0.0'}).create();
diff --git a/test/embedding/embedding_test.dart b/test/embedding/embedding_test.dart
index faef3b0..ccb16f6 100644
--- a/test/embedding/embedding_test.dart
+++ b/test/embedding/embedding_test.dart
@@ -111,9 +111,9 @@
});
test('analytics', () async {
- await servePackages((b) => b
+ await servePackages()
..serve('foo', '1.0.0', deps: {'bar': 'any'})
- ..serve('bar', '1.0.0'));
+ ..serve('bar', '1.0.0');
await d.dir('dep', [
d.pubspec({
'name': 'dep',
diff --git a/test/embedding/get_executable_for_command_test.dart b/test/embedding/get_executable_for_command_test.dart
index a74da6a..0edfa72 100644
--- a/test/embedding/get_executable_for_command_test.dart
+++ b/test/embedding/get_executable_for_command_test.dart
@@ -129,7 +129,7 @@
])
]).create();
- await serveNoPackages();
+ await servePackages();
// The solver uses word-wrapping in its error message, so we use \s to
// accomodate.
await testGetExecutable(
@@ -166,7 +166,7 @@
])
]).create();
- await serveNoPackages();
+ await servePackages();
// The solver uses word-wrapping in its error message, so we use \s to
// accomodate.
await testGetExecutable(
@@ -178,15 +178,15 @@
});
test('Finds files', () async {
- await servePackages((b) => b
- ..serve('foo', '1.0.0', pubspec: {
- 'environment': {'sdk': '>=$_currentVersion <3.0.0'}
- }, contents: [
- d.dir('bin', [
- d.file('foo.dart', 'main() {print(42);}'),
- d.file('tool.dart', 'main() {print(42);}')
- ])
- ]));
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'environment': {'sdk': '>=$_currentVersion <3.0.0'}
+ }, contents: [
+ d.dir('bin', [
+ d.file('foo.dart', 'main() {print(42);}'),
+ d.file('tool.dart', 'main() {print(42);}')
+ ])
+ ]);
await d.dir(appPath, [
d.pubspec({
diff --git a/test/get/dry_run_does_not_apply_changes_test.dart b/test/get/dry_run_does_not_apply_changes_test.dart
index 27969ae..3e44bf9 100644
--- a/test/get/dry_run_does_not_apply_changes_test.dart
+++ b/test/get/dry_run_does_not_apply_changes_test.dart
@@ -9,9 +9,8 @@
void main() {
test('--dry-run shows but does not apply changes', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.appDir({'foo': '1.0.0'}).create();
diff --git a/test/get/hosted/avoid_network_requests_test.dart b/test/get/hosted/avoid_network_requests_test.dart
index 369a187..8778ae6 100644
--- a/test/get/hosted/avoid_network_requests_test.dart
+++ b/test/get/hosted/avoid_network_requests_test.dart
@@ -9,14 +9,13 @@
void main() {
test('only requests versions that are needed during solving', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '1.1.0');
- builder.serve('foo', '1.2.0');
- builder.serve('bar', '1.0.0');
- builder.serve('bar', '1.1.0');
- builder.serve('bar', '1.2.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '1.1.0')
+ ..serve('foo', '1.2.0')
+ ..serve('bar', '1.0.0')
+ ..serve('bar', '1.1.0')
+ ..serve('bar', '1.2.0');
await d.appDir({'foo': 'any'}).create();
@@ -25,7 +24,7 @@
// Clear the cache. We don't care about anything that was served during
// the initial get.
- globalServer!.requestedPaths.clear();
+ globalServer.requestedPaths.clear();
// Add "bar" to the dependencies.
await d.appDir({'foo': 'any', 'bar': 'any'}).create();
@@ -38,7 +37,7 @@
// The get should not have done any network requests since the lock file is
// up to date.
expect(
- globalServer!.requestedPaths,
+ globalServer.requestedPaths,
unorderedEquals([
// Bar should be requested because it's new, but not foo.
'api/packages/bar',
diff --git a/test/get/hosted/cached_pubspec_test.dart b/test/get/hosted/cached_pubspec_test.dart
index 88551ac..beb4e16 100644
--- a/test/get/hosted/cached_pubspec_test.dart
+++ b/test/get/hosted/cached_pubspec_test.dart
@@ -9,7 +9,8 @@
void main() {
test('does not request a pubspec for a cached package', () async {
- await servePackages((builder) => builder.serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.appDir({'foo': '1.2.3'}).create();
@@ -18,7 +19,7 @@
// Clear the cache. We don't care about anything that was served during
// the initial get.
- globalServer!.requestedPaths.clear();
+ server.requestedPaths.clear();
await d.cacheDir({'foo': '1.2.3'}).validate();
await d.appPackagesFile({'foo': '1.2.3'}).validate();
@@ -27,7 +28,7 @@
await pubGet();
// The get should not have requested the pubspec since it's local already.
- expect(globalServer!.requestedPaths,
+ expect(server.requestedPaths,
isNot(contains('packages/foo/versions/1.2.3.yaml')));
});
}
diff --git a/test/get/hosted/do_not_upgrade_on_removed_constraints_test.dart b/test/get/hosted/do_not_upgrade_on_removed_constraints_test.dart
index 30e4a65..00b2444 100644
--- a/test/get/hosted/do_not_upgrade_on_removed_constraints_test.dart
+++ b/test/get/hosted/do_not_upgrade_on_removed_constraints_test.dart
@@ -11,12 +11,11 @@
test(
"doesn't upgrade dependencies whose constraints have been "
'removed', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'shared_dep': 'any'});
- builder.serve('bar', '1.0.0', deps: {'shared_dep': '<2.0.0'});
- builder.serve('shared_dep', '1.0.0');
- builder.serve('shared_dep', '2.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'shared_dep': 'any'})
+ ..serve('bar', '1.0.0', deps: {'shared_dep': '<2.0.0'})
+ ..serve('shared_dep', '1.0.0')
+ ..serve('shared_dep', '2.0.0');
await d.appDir({'foo': 'any', 'bar': 'any'}).create();
diff --git a/test/get/hosted/does_no_network_requests_when_possible_test.dart b/test/get/hosted/does_no_network_requests_when_possible_test.dart
index 3038624..ea1f4a7 100644
--- a/test/get/hosted/does_no_network_requests_when_possible_test.dart
+++ b/test/get/hosted/does_no_network_requests_when_possible_test.dart
@@ -9,11 +9,10 @@
void main() {
test('does not request versions if the lockfile is up to date', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '1.1.0');
- builder.serve('foo', '1.2.0');
- });
+ final server = await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '1.1.0')
+ ..serve('foo', '1.2.0');
await d.appDir({'foo': 'any'}).create();
@@ -22,7 +21,7 @@
// Clear the cache. We don't care about anything that was served during
// the initial get.
- globalServer!.requestedPaths.clear();
+ server.requestedPaths.clear();
// Run the solver again now that it's cached.
await pubGet();
@@ -32,6 +31,6 @@
// The get should not have done any network requests since the lock file is
// up to date.
- expect(globalServer!.requestedPaths, isEmpty);
+ expect(server.requestedPaths, isEmpty);
});
}
diff --git a/test/get/hosted/explain_bad_hosted_url_test.dart b/test/get/hosted/explain_bad_hosted_url_test.dart
index 5b3ff2e..feebf67 100644
--- a/test/get/hosted/explain_bad_hosted_url_test.dart
+++ b/test/get/hosted/explain_bad_hosted_url_test.dart
@@ -32,11 +32,12 @@
});
test('Allows PUB_HOSTED_URL to end with a slash', () async {
- await servePackages((b) => b.serve('foo', '1.0.0'));
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.appDir({'foo': 'any'}).create();
await pubGet(
- environment: {'PUB_HOSTED_URL': '${globalPackageServer.url}/'},
+ environment: {'PUB_HOSTED_URL': '${globalServer.url}/'},
);
});
}
diff --git a/test/get/hosted/get_stress_test.dart b/test/get/hosted/get_stress_test.dart
index da45309..86a8da9 100644
--- a/test/get/hosted/get_stress_test.dart
+++ b/test/get/hosted/get_stress_test.dart
@@ -9,12 +9,11 @@
void main() {
test('gets more than 16 packages from a pub server', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- for (var i = 0; i < 20; i++) {
- builder.serve('pkg$i', '1.$i.0');
- }
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
+ for (var i = 0; i < 20; i++) {
+ server.serve('pkg$i', '1.$i.0');
+ }
await d.appDir({
'foo': '1.2.3',
diff --git a/test/get/hosted/get_test.dart b/test/get/hosted/get_test.dart
index 31c1f2e..30dd4b8 100644
--- a/test/get/hosted/get_test.dart
+++ b/test/get/hosted/get_test.dart
@@ -13,7 +13,8 @@
void main() {
test('gets a package from a pub server', () async {
- await servePackages((builder) => builder.serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.appDir({'foo': '1.2.3'}).create();
@@ -24,7 +25,7 @@
});
test('URL encodes the package name', () async {
- await serveNoPackages();
+ await servePackages();
await d.appDir({'bad name!': '1.2.3'}).create();
@@ -41,11 +42,10 @@
test('gets a package from a non-default pub server', () async {
// Make the default server serve errors. Only the custom server should
// be accessed.
- await serveErrors();
+ (await servePackages()).serveErrors();
- var server = await PackageServer.start((builder) {
- builder.serve('foo', '1.2.3');
- });
+ var server = await startPackageServer();
+ server.serve('foo', '1.2.3');
await d.appDir({
'foo': {
@@ -61,14 +61,15 @@
});
group('categorizes dependency types in the lockfile', () {
- setUp(() => servePackages((builder) {
- builder.serve('foo', '1.2.3', deps: {'bar': 'any'});
- builder.serve('bar', '1.2.3');
- builder.serve('baz', '1.2.3', deps: {'qux': 'any'});
- builder.serve('qux', '1.2.3');
- builder.serve('zip', '1.2.3', deps: {'zap': 'any'});
- builder.serve('zap', '1.2.3');
- }));
+ setUp(() async {
+ await servePackages()
+ ..serve('foo', '1.2.3', deps: {'bar': 'any'})
+ ..serve('bar', '1.2.3')
+ ..serve('baz', '1.2.3', deps: {'qux': 'any'})
+ ..serve('qux', '1.2.3')
+ ..serve('zip', '1.2.3', deps: {'zap': 'any'})
+ ..serve('zap', '1.2.3');
+ });
test('for main, dev, and overridden dependencies', () async {
await d.dir(appPath, [
diff --git a/test/get/hosted/get_transitive_test.dart b/test/get/hosted/get_transitive_test.dart
index f68006a..74635bc 100644
--- a/test/get/hosted/get_transitive_test.dart
+++ b/test/get/hosted/get_transitive_test.dart
@@ -9,12 +9,11 @@
void main() {
test('gets packages transitively from a pub server', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3', deps: {'bar': '2.0.4'});
- builder.serve('bar', '2.0.3');
- builder.serve('bar', '2.0.4');
- builder.serve('bar', '2.0.5');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3', deps: {'bar': '2.0.4'})
+ ..serve('bar', '2.0.3')
+ ..serve('bar', '2.0.4')
+ ..serve('bar', '2.0.5');
await d.appDir({'foo': '1.2.3'}).create();
diff --git a/test/get/hosted/gets_a_package_with_busted_dev_dependencies_test.dart b/test/get/hosted/gets_a_package_with_busted_dev_dependencies_test.dart
index c53079c..0d75f95 100644
--- a/test/get/hosted/gets_a_package_with_busted_dev_dependencies_test.dart
+++ b/test/get/hosted/gets_a_package_with_busted_dev_dependencies_test.dart
@@ -12,12 +12,11 @@
test(
'gets a dependency with broken dev dependencies from a pub '
'server', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3', pubspec: {
- 'dev_dependencies': {
- 'busted': {'not a real source': null}
- }
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.3', pubspec: {
+ 'dev_dependencies': {
+ 'busted': {'not a real source': null}
+ }
});
await d.appDir({'foo': '1.2.3'}).create();
diff --git a/test/get/hosted/resolve_constraints_test.dart b/test/get/hosted/resolve_constraints_test.dart
index c515c8e..c9c73d2 100644
--- a/test/get/hosted/resolve_constraints_test.dart
+++ b/test/get/hosted/resolve_constraints_test.dart
@@ -9,13 +9,12 @@
void main() {
test('resolves version constraints from a pub server', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3', deps: {'baz': '>=2.0.0'});
- builder.serve('bar', '2.3.4', deps: {'baz': '<3.0.0'});
- builder.serve('baz', '2.0.3');
- builder.serve('baz', '2.0.4');
- builder.serve('baz', '3.0.1');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3', deps: {'baz': '>=2.0.0'})
+ ..serve('bar', '2.3.4', deps: {'baz': '<3.0.0'})
+ ..serve('baz', '2.0.3')
+ ..serve('baz', '2.0.4')
+ ..serve('baz', '3.0.1');
await d.appDir({'foo': 'any', 'bar': 'any'}).create();
diff --git a/test/get/hosted/resolve_with_retracted_package_versions_test.dart b/test/get/hosted/resolve_with_retracted_package_versions_test.dart
index 045fb15..efd3a0a 100644
--- a/test/get/hosted/resolve_with_retracted_package_versions_test.dart
+++ b/test/get/hosted/resolve_with_retracted_package_versions_test.dart
@@ -13,14 +13,13 @@
void main() {
test('Do not consider retracted packages', () async {
- await servePackages((builder) => builder
+ final server = await servePackages()
..serve('foo', '1.0.0', deps: {'bar': '^1.0.0'})
..serve('bar', '1.0.0')
- ..serve('bar', '1.1.0'));
+ ..serve('bar', '1.1.0');
await d.appDir({'foo': '1.0.0'}).create();
- globalPackageServer
- .add((builder) => builder..retractPackageVersion('bar', '1.1.0'));
+ server.retractPackageVersion('bar', '1.1.0');
await pubGet();
await d.cacheDir({'foo': '1.0.0', 'bar': '1.0.0'}).validate();
@@ -28,13 +27,12 @@
});
test('Error when the only available package version is retracted', () async {
- await servePackages((builder) => builder
+ final server = await servePackages()
..serve('foo', '1.0.0', deps: {'bar': '^1.0.0'})
- ..serve('bar', '1.0.0'));
+ ..serve('bar', '1.0.0');
await d.appDir({'foo': '1.0.0'}).create();
- globalPackageServer
- .add((builder) => builder..retractPackageVersion('bar', '1.0.0'));
+ server.retractPackageVersion('bar', '1.0.0');
await pubGet(
error:
'''Because every version of foo depends on bar ^1.0.0 which doesn't match any versions, foo is forbidden.
@@ -47,28 +45,27 @@
// In this case we expect a newer version to be published at some point which
// will then cause pub upgrade to choose that one.
test('Allow retracted version when it was already in pubspec.lock', () async {
- await servePackages((builder) => builder
+ final server = await servePackages()
..serve('foo', '1.0.0', deps: {'bar': '^1.0.0'})
..serve('bar', '1.0.0')
- ..serve('bar', '1.1.0'));
+ ..serve('bar', '1.1.0');
await d.appDir({'foo': '1.0.0'}).create();
await pubGet();
await d.cacheDir({'foo': '1.0.0', 'bar': '1.1.0'}).validate();
await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.1.0'}).validate();
- globalPackageServer
- .add((builder) => builder..retractPackageVersion('bar', '1.1.0'));
+ server.retractPackageVersion('bar', '1.1.0');
await pubUpgrade();
await d.cacheDir({'foo': '1.0.0', 'bar': '1.1.0'}).validate();
await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.1.0'}).validate();
- globalPackageServer.add((builder) => builder..serve('bar', '2.0.0'));
+ server.serve('bar', '2.0.0');
await pubUpgrade();
await d.cacheDir({'foo': '1.0.0', 'bar': '1.1.0'}).validate();
await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.1.0'}).validate();
- globalPackageServer.add((builder) => builder..serve('bar', '1.2.0'));
+ server.serve('bar', '1.2.0');
await pubUpgrade();
await d.cacheDir({'foo': '1.0.0', 'bar': '1.2.0'}).validate();
await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.2.0'}).validate();
@@ -76,10 +73,11 @@
test('Offline versions of pub commands also handle retracted packages',
() async {
+ final server = await servePackages();
await populateCache({
'foo': ['1.0.0'],
'bar': ['1.0.0', '1.1.0']
- });
+ }, server);
await d.cacheDir({
'foo': '1.0.0',
@@ -87,18 +85,17 @@
}).validate();
final barVersionsCache =
- p.join(globalPackageServer.cachingPath, '.cache', 'bar-versions.json');
+ p.join(globalServer.cachingPath, '.cache', 'bar-versions.json');
expect(fileExists(barVersionsCache), isTrue);
deleteEntry(barVersionsCache);
- globalPackageServer
- .add((builder) => builder..retractPackageVersion('bar', '1.1.0'));
+ server.retractPackageVersion('bar', '1.1.0');
await pubGet();
await d.cacheDir({'bar': '1.1.0'}).validate();
// Now serve only errors - to validate we are truly offline.
- await serveErrors();
+ server.serveErrors();
await d.appDir({'foo': '1.0.0', 'bar': '^1.0.0'}).create();
@@ -117,11 +114,10 @@
});
test('Allow retracted version when pinned in dependency_overrides', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- builder.serve('foo', '3.0.0');
- });
+ final server = await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0')
+ ..serve('foo', '3.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -131,8 +127,7 @@
})
]).create();
- globalPackageServer
- .add((builder) => builder..retractPackageVersion('foo', '2.0.0'));
+ server.retractPackageVersion('foo', '2.0.0');
await pubGet();
await d.appPackagesFile({'foo': '2.0.0'}).validate();
@@ -140,19 +135,16 @@
test('Prefer retracted version in dependency_overrides over pubspec.lock',
() async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- builder.serve('foo', '3.0.0');
- });
+ final server = await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0')
+ ..serve('foo', '3.0.0');
await d.appDir({'foo': 'any'}).create();
await pubGet();
- globalPackageServer
- .add((builder) => builder..retractPackageVersion('foo', '2.0.0'));
- globalPackageServer
- .add((builder) => builder..retractPackageVersion('foo', '3.0.0'));
+ server.retractPackageVersion('foo', '2.0.0');
+ server.retractPackageVersion('foo', '3.0.0');
await pubUpgrade();
await d.appPackagesFile({'foo': '3.0.0'}).validate();
diff --git a/test/get/hosted/stay_locked_if_compatible_test.dart b/test/get/hosted/stay_locked_if_compatible_test.dart
index 716f734..bb5e63a 100644
--- a/test/get/hosted/stay_locked_if_compatible_test.dart
+++ b/test/get/hosted/stay_locked_if_compatible_test.dart
@@ -11,7 +11,8 @@
test(
"doesn't upgrade a locked pub server package with a new "
'compatible constraint', () async {
- await servePackages((builder) => builder.serve('foo', '1.0.0'));
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.appDir({'foo': 'any'}).create();
@@ -19,7 +20,7 @@
await d.appPackagesFile({'foo': '1.0.0'}).validate();
- globalPackageServer.add((builder) => builder.serve('foo', '1.0.1'));
+ server.serve('foo', '1.0.1');
await d.appDir({'foo': '>=1.0.0'}).create();
diff --git a/test/get/hosted/stay_locked_if_new_is_satisfied_test.dart b/test/get/hosted/stay_locked_if_new_is_satisfied_test.dart
index 41fd315..dbe6039 100644
--- a/test/get/hosted/stay_locked_if_new_is_satisfied_test.dart
+++ b/test/get/hosted/stay_locked_if_new_is_satisfied_test.dart
@@ -11,11 +11,10 @@
test(
"doesn't unlock dependencies if a new dependency is already "
'satisfied', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': '<2.0.0'});
- builder.serve('bar', '1.0.0', deps: {'baz': '<2.0.0'});
- builder.serve('baz', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', deps: {'bar': '<2.0.0'});
+ server.serve('bar', '1.0.0', deps: {'baz': '<2.0.0'});
+ server.serve('baz', '1.0.0');
await d.appDir({'foo': 'any'}).create();
@@ -24,12 +23,10 @@
await d.appPackagesFile(
{'foo': '1.0.0', 'bar': '1.0.0', 'baz': '1.0.0'}).validate();
- globalPackageServer.add((builder) {
- builder.serve('foo', '2.0.0', deps: {'bar': '<3.0.0'});
- builder.serve('bar', '2.0.0', deps: {'baz': '<3.0.0'});
- builder.serve('baz', '2.0.0');
- builder.serve('newdep', '2.0.0', deps: {'baz': '>=1.0.0'});
- });
+ server.serve('foo', '2.0.0', deps: {'bar': '<3.0.0'});
+ server.serve('bar', '2.0.0', deps: {'baz': '<3.0.0'});
+ server.serve('baz', '2.0.0');
+ server.serve('newdep', '2.0.0', deps: {'baz': '>=1.0.0'});
await d.appDir({'foo': 'any', 'newdep': 'any'}).create();
diff --git a/test/get/hosted/stay_locked_test.dart b/test/get/hosted/stay_locked_test.dart
index 216b7d6..134e8b5 100644
--- a/test/get/hosted/stay_locked_test.dart
+++ b/test/get/hosted/stay_locked_test.dart
@@ -13,7 +13,8 @@
test(
'keeps a hosted package locked to the version in the '
'lockfile', () async {
- await servePackages((builder) => builder.serve('foo', '1.0.0'));
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.appDir({'foo': 'any'}).create();
@@ -26,7 +27,7 @@
deleteEntry(path.join(d.sandbox, packageConfigFilePath));
// Start serving a newer package as well.
- globalPackageServer.add((builder) => builder.serve('foo', '1.0.1'));
+ server.serve('foo', '1.0.1');
// This shouldn't upgrade the foo dependency due to the lockfile.
await pubGet();
diff --git a/test/get/hosted/unlock_if_incompatible_test.dart b/test/get/hosted/unlock_if_incompatible_test.dart
index 56ad89a..11bf909 100644
--- a/test/get/hosted/unlock_if_incompatible_test.dart
+++ b/test/get/hosted/unlock_if_incompatible_test.dart
@@ -11,14 +11,15 @@
test(
'upgrades a locked pub server package with a new incompatible '
'constraint', () async {
- await servePackages((builder) => builder.serve('foo', '1.0.0'));
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.appDir({'foo': 'any'}).create();
await pubGet();
await d.appPackagesFile({'foo': '1.0.0'}).validate();
- globalPackageServer.add((builder) => builder.serve('foo', '1.0.1'));
+ server.serve('foo', '1.0.1');
await d.appDir({'foo': '>1.0.0'}).create();
await pubGet();
diff --git a/test/get/hosted/unlock_if_new_is_unsatisfied_test.dart b/test/get/hosted/unlock_if_new_is_unsatisfied_test.dart
index 082bb1e..1cedc5a 100644
--- a/test/get/hosted/unlock_if_new_is_unsatisfied_test.dart
+++ b/test/get/hosted/unlock_if_new_is_unsatisfied_test.dart
@@ -11,12 +11,12 @@
test(
'unlocks dependencies if necessary to ensure that a new '
'dependency is satisfied', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': '<2.0.0'});
- builder.serve('bar', '1.0.0', deps: {'baz': '<2.0.0'});
- builder.serve('baz', '1.0.0', deps: {'qux': '<2.0.0'});
- builder.serve('qux', '1.0.0');
- });
+ final server = await servePackages();
+
+ server.serve('foo', '1.0.0', deps: {'bar': '<2.0.0'});
+ server.serve('bar', '1.0.0', deps: {'baz': '<2.0.0'});
+ server.serve('baz', '1.0.0', deps: {'qux': '<2.0.0'});
+ server.serve('qux', '1.0.0');
await d.appDir({'foo': 'any'}).create();
@@ -29,13 +29,11 @@
'qux': '1.0.0'
}).validate();
- globalPackageServer.add((builder) {
- builder.serve('foo', '2.0.0', deps: {'bar': '<3.0.0'});
- builder.serve('bar', '2.0.0', deps: {'baz': '<3.0.0'});
- builder.serve('baz', '2.0.0', deps: {'qux': '<3.0.0'});
- builder.serve('qux', '2.0.0');
- builder.serve('newdep', '2.0.0', deps: {'baz': '>=1.5.0'});
- });
+ server.serve('foo', '2.0.0', deps: {'bar': '<3.0.0'});
+ server.serve('bar', '2.0.0', deps: {'baz': '<3.0.0'});
+ server.serve('baz', '2.0.0', deps: {'qux': '<3.0.0'});
+ server.serve('qux', '2.0.0');
+ server.serve('newdep', '2.0.0', deps: {'baz': '>=1.5.0'});
await d.appDir({'foo': 'any', 'newdep': 'any'}).create();
diff --git a/test/get/hosted/unlock_if_version_doesnt_exist_test.dart b/test/get/hosted/unlock_if_version_doesnt_exist_test.dart
index 8e6e9dd..7eb4246 100644
--- a/test/get/hosted/unlock_if_version_doesnt_exist_test.dart
+++ b/test/get/hosted/unlock_if_version_doesnt_exist_test.dart
@@ -12,7 +12,8 @@
void main() {
test('upgrades a locked pub server package with a nonexistent version',
() async {
- await servePackages((builder) => builder.serve('foo', '1.0.0'));
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.appDir({'foo': 'any'}).create();
await pubGet();
@@ -20,7 +21,9 @@
deleteEntry(p.join(d.sandbox, cachePath));
- globalPackageServer.replace((builder) => builder.serve('foo', '1.0.1'));
+ server.clearPackages();
+ server.serve('foo', '1.0.1');
+
await pubGet();
await d.appPackagesFile({'foo': '1.0.1'}).validate();
});
diff --git a/test/get/hosted/warn_about_discontinued_test.dart b/test/get/hosted/warn_about_discontinued_test.dart
index 89a19e0..7057f9b 100644
--- a/test/get/hosted/warn_about_discontinued_test.dart
+++ b/test/get/hosted/warn_about_discontinued_test.dart
@@ -6,7 +6,7 @@
import 'package:path/path.dart' as p;
import 'package:pub/src/io.dart';
-import 'package:shelf/shelf.dart';
+import 'package:shelf/shelf.dart' as shelf;
import 'package:test/test.dart';
import '../../descriptor.dart' as d;
@@ -14,22 +14,22 @@
void main() {
test('Warns about discontinued dependencies', () async {
- await servePackages((builder) => builder
- ..serve('foo', '1.2.3', deps: {'transitive': 'any'})
- ..serve('transitive', '1.0.0'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3', deps: {'transitive': 'any'});
+ server.serve('transitive', '1.0.0');
await d.appDir({'foo': '1.2.3'}).create();
await pubGet();
- globalPackageServer.add((builder) => builder
+ server
..discontinue('foo')
- ..discontinue('transitive'));
+ ..discontinue('transitive');
// A pub get straight away will not trigger the warning, as we cache
// responses for a while.
await pubGet();
final fooVersionsCache =
- p.join(globalPackageServer.cachingPath, '.cache', 'foo-versions.json');
- final transitiveVersionsCache = p.join(
- globalPackageServer.cachingPath, '.cache', 'transitive-versions.json');
+ p.join(globalServer.cachingPath, '.cache', 'foo-versions.json');
+ final transitiveVersionsCache =
+ p.join(globalServer.cachingPath, '.cache', 'transitive-versions.json');
expect(fileExists(fooVersionsCache), isTrue);
expect(fileExists(transitiveVersionsCache), isTrue);
deleteEntry(fooVersionsCache);
@@ -46,8 +46,9 @@
c['_fetchedAt'] =
DateTime.now().subtract(Duration(days: 5)).toIso8601String();
writeTextFile(fooVersionsCache, json.encode(c));
- globalPackageServer
- .add((builder) => builder.discontinue('foo', replacementText: 'bar'));
+
+ server.discontinue('foo', replacementText: 'bar');
+
await pubGet(output: '''
Resolving dependencies...
foo 1.2.3 (discontinued replaced by bar)
@@ -67,7 +68,7 @@
Got dependencies!''');
// Test that --offline won't try to access the server for retrieving the
// status.
- await serveErrors();
+ server.serveErrors();
await pubGet(args: ['--offline'], output: '''
Resolving dependencies...
foo 1.2.3 (discontinued replaced by bar)
@@ -81,9 +82,10 @@
});
test('Warns about discontinued dev dependencies', () async {
- await servePackages((builder) => builder
+ final builder = await servePackages();
+ builder
..serve('foo', '1.2.3', deps: {'transitive': 'any'})
- ..serve('transitive', '1.0.0'));
+ ..serve('transitive', '1.0.0');
await d.dir(appPath, [
d.file('pubspec.yaml', '''
@@ -98,14 +100,14 @@
]).create();
await pubGet();
- globalPackageServer.add((builder) => builder
+ builder
..discontinue('foo')
- ..discontinue('transitive'));
+ ..discontinue('transitive');
// A pub get straight away will not trigger the warning, as we cache
// responses for a while.
await pubGet();
final fooVersionsCache =
- p.join(globalPackageServer.cachingPath, '.cache', 'foo-versions.json');
+ p.join(globalServer.cachingPath, '.cache', 'foo-versions.json');
expect(fileExists(fooVersionsCache), isTrue);
deleteEntry(fooVersionsCache);
// We warn only about the direct dependency here:
@@ -120,8 +122,7 @@
c['_fetchedAt'] =
DateTime.now().subtract(Duration(days: 5)).toIso8601String();
writeTextFile(fooVersionsCache, json.encode(c));
- globalPackageServer
- .add((builder) => builder.discontinue('foo', replacementText: 'bar'));
+ builder.discontinue('foo', replacementText: 'bar');
await pubGet(output: '''
Resolving dependencies...
foo 1.2.3 (discontinued replaced by bar)
@@ -141,7 +142,7 @@
Got dependencies!''');
// Test that --offline won't try to access the server for retrieving the
// status.
- await serveErrors();
+ builder.serveErrors();
await pubGet(args: ['--offline'], output: '''
Resolving dependencies...
foo 1.2.3 (discontinued replaced by bar)
@@ -154,17 +155,17 @@
});
test('get does not fail when status listing fails', () async {
- await servePackages((builder) => builder..serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.appDir({'foo': '1.2.3'}).create();
await pubGet();
final fooVersionsCache =
- p.join(globalPackageServer.cachingPath, '.cache', 'foo-versions.json');
+ p.join(globalServer.cachingPath, '.cache', 'foo-versions.json');
expect(fileExists(fooVersionsCache), isTrue);
deleteEntry(fooVersionsCache);
// Serve 400 on all requests.
- globalPackageServer.extraHandlers
- ..clear()
- ..[RegExp('.*')] = (request) async => Response(400);
+ globalServer.handle(RegExp('.*'),
+ (shelf.Request request) => shelf.Response.notFound('Not found'));
/// Even if we fail to get status we still report success if versions don't unlock.
await pubGet();
diff --git a/test/get/hosted/warn_about_retracted_package_test.dart b/test/get/hosted/warn_about_retracted_package_test.dart
index 750dc87..2336c7f 100644
--- a/test/get/hosted/warn_about_retracted_package_test.dart
+++ b/test/get/hosted/warn_about_retracted_package_test.dart
@@ -11,38 +11,36 @@
void main() {
test('Report retracted packages', () async {
- await servePackages((builder) => builder
+ final server = await servePackages()
..serve('foo', '1.0.0', deps: {'bar': 'any'})
- ..serve('bar', '1.0.0'));
+ ..serve('bar', '1.0.0');
await d.appDir({'foo': '1.0.0'}).create();
await pubGet();
- globalPackageServer
- .add((builder) => builder..retractPackageVersion('bar', '1.0.0'));
+ server.retractPackageVersion('bar', '1.0.0');
// Delete the cache to trigger the report.
final barVersionsCache =
- p.join(globalPackageServer.cachingPath, '.cache', 'bar-versions.json');
+ p.join(server.cachingPath, '.cache', 'bar-versions.json');
expect(fileExists(barVersionsCache), isTrue);
deleteEntry(barVersionsCache);
await pubGet(output: contains('bar 1.0.0 (retracted)'));
});
test('Report retracted packages with newer version available', () async {
- await servePackages((builder) => builder
+ final server = await servePackages()
..serve('foo', '1.0.0', deps: {'bar': '^1.0.0'})
..serve('bar', '1.0.0')
..serve('bar', '2.0.0')
- ..serve('bar', '2.0.1-pre'));
+ ..serve('bar', '2.0.1-pre');
await d.appDir({'foo': '1.0.0'}).create();
await pubGet();
- globalPackageServer
- .add((builder) => builder..retractPackageVersion('bar', '1.0.0'));
+ server.retractPackageVersion('bar', '1.0.0');
// Delete the cache to trigger the report.
final barVersionsCache =
- p.join(globalPackageServer.cachingPath, '.cache', 'bar-versions.json');
+ p.join(server.cachingPath, '.cache', 'bar-versions.json');
expect(fileExists(barVersionsCache), isTrue);
deleteEntry(barVersionsCache);
await pubGet(output: contains('bar 1.0.0 (retracted, 2.0.0 available)'));
@@ -50,19 +48,18 @@
test('Report retracted packages with newer prerelease version available',
() async {
- await servePackages((builder) => builder
+ final server = await servePackages()
..serve('foo', '1.0.0', deps: {'bar': '^1.0.0-pre'})
..serve('bar', '1.0.0-pre')
- ..serve('bar', '2.0.1-pre'));
+ ..serve('bar', '2.0.1-pre');
await d.appDir({'foo': '1.0.0'}).create();
await pubGet();
- globalPackageServer
- .add((builder) => builder..retractPackageVersion('bar', '1.0.0-pre'));
+ server.retractPackageVersion('bar', '1.0.0-pre');
// Delete the cache to trigger the report.
final barVersionsCache =
- p.join(globalPackageServer.cachingPath, '.cache', 'bar-versions.json');
+ p.join(server.cachingPath, '.cache', 'bar-versions.json');
expect(fileExists(barVersionsCache), isTrue);
deleteEntry(barVersionsCache);
await pubGet(
diff --git a/test/get/switch_source_test.dart b/test/get/switch_source_test.dart
index dd8c97d..ffbf8b4 100644
--- a/test/get/switch_source_test.dart
+++ b/test/get/switch_source_test.dart
@@ -9,7 +9,8 @@
void main() {
test('re-gets a package if its source has changed', () async {
- await servePackages((builder) => builder.serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.dir('foo',
[d.libDir('foo', 'foo 0.0.1'), d.libPubspec('foo', '0.0.1')]).create();
diff --git a/test/get/with_empty_environment_test.dart b/test/get/with_empty_environment_test.dart
index 9a9f9e2..30768c4 100644
--- a/test/get/with_empty_environment_test.dart
+++ b/test/get/with_empty_environment_test.dart
@@ -11,7 +11,8 @@
void main() {
test(r'runs even with an empty environment (eg. no $HOME)', () async {
- await servePackages((builder) => builder.serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.appDir({'foo': 'any'}).create();
diff --git a/test/global/activate/activate_git_after_hosted_test.dart b/test/global/activate/activate_git_after_hosted_test.dart
index 75925d3..c553041 100644
--- a/test/global/activate/activate_git_after_hosted_test.dart
+++ b/test/global/activate/activate_git_after_hosted_test.dart
@@ -11,11 +11,10 @@
test('activating a Git package deactivates the hosted one', () async {
ensureGit();
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [d.file('foo.dart', "main(args) => print('hosted');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('foo.dart', "main(args) => print('hosted');")])
+ ]);
await d.git('foo.git', [
d.libPubspec('foo', '1.0.0'),
diff --git a/test/global/activate/activate_hosted_after_git_test.dart b/test/global/activate/activate_hosted_after_git_test.dart
index ba267b6..58c65fb 100644
--- a/test/global/activate/activate_hosted_after_git_test.dart
+++ b/test/global/activate/activate_hosted_after_git_test.dart
@@ -9,11 +9,10 @@
void main() {
test('activating a hosted package deactivates the Git one', () async {
- await servePackages((builder) {
- builder.serve('foo', '2.0.0', contents: [
- d.dir('bin', [d.file('foo.dart', "main(args) => print('hosted');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '2.0.0', contents: [
+ d.dir('bin', [d.file('foo.dart', "main(args) => print('hosted');")])
+ ]);
await d.git('foo.git', [
d.libPubspec('foo', '1.0.0'),
diff --git a/test/global/activate/activate_hosted_after_path_test.dart b/test/global/activate/activate_hosted_after_path_test.dart
index 92985bd..4cd753f 100644
--- a/test/global/activate/activate_hosted_after_path_test.dart
+++ b/test/global/activate/activate_hosted_after_path_test.dart
@@ -11,11 +11,10 @@
void main() {
test('activating a hosted package deactivates the path one', () async {
- await servePackages((builder) {
- builder.serve('foo', '2.0.0', contents: [
- d.dir('bin', [d.file('foo.dart', "main(args) => print('hosted');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '2.0.0', contents: [
+ d.dir('bin', [d.file('foo.dart', "main(args) => print('hosted');")])
+ ]);
await d.dir('foo', [
d.libPubspec('foo', '1.0.0'),
diff --git a/test/global/activate/activate_hosted_twice_test.dart b/test/global/activate/activate_hosted_twice_test.dart
index 16f3f9a..9baed5b 100644
--- a/test/global/activate/activate_hosted_twice_test.dart
+++ b/test/global/activate/activate_hosted_twice_test.dart
@@ -9,7 +9,8 @@
void main() {
test('activating a hosted package twice will not precompile', () async {
- await servePackages((builder) => builder
+ final server = await servePackages();
+ server
..serve('foo', '1.0.0', deps: {
'bar': 'any'
}, contents: [
@@ -21,7 +22,7 @@
])
..serve('bar', '1.0.0', contents: [
d.dir('lib', [d.file('bar.dart', 'final version = "1.0.0";')])
- ]));
+ ]);
await runPub(args: ['global', 'activate', 'foo'], output: '''
Resolving dependencies...
@@ -46,10 +47,9 @@
await runPub(args: ['global', 'activate', 'foo']);
- globalPackageServer
- .add((builder) => builder.serve('bar', '2.0.0', contents: [
- d.dir('lib', [d.file('bar.dart', 'final version = "2.0.0";')])
- ]));
+ server.serve('bar', '2.0.0', contents: [
+ d.dir('lib', [d.file('bar.dart', 'final version = "2.0.0";')])
+ ]);
await runPub(args: ['global', 'activate', 'foo'], output: '''
Package foo is currently active at version 1.0.0.
diff --git a/test/global/activate/activate_path_after_hosted_test.dart b/test/global/activate/activate_path_after_hosted_test.dart
index f7cfa95..cfc28fd 100644
--- a/test/global/activate/activate_path_after_hosted_test.dart
+++ b/test/global/activate/activate_path_after_hosted_test.dart
@@ -11,11 +11,10 @@
void main() {
test('activating a hosted package deactivates the path one', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [d.file('foo.dart', "main(args) => print('hosted');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('foo.dart', "main(args) => print('hosted');")])
+ ]);
await d.dir('foo', [
d.libPubspec('foo', '2.0.0'),
diff --git a/test/global/activate/cached_package_test.dart b/test/global/activate/cached_package_test.dart
index 2daeaad..98db402 100644
--- a/test/global/activate/cached_package_test.dart
+++ b/test/global/activate/cached_package_test.dart
@@ -9,11 +9,10 @@
void main() {
test('can activate an already cached package', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [d.file('foo.dart', 'main() => print("hi"); ')])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('foo.dart', 'main() => print("hi"); ')])
+ ]);
await runPub(args: ['cache', 'add', 'foo']);
diff --git a/test/global/activate/constraint_test.dart b/test/global/activate/constraint_test.dart
index 0a18257..23386c0 100644
--- a/test/global/activate/constraint_test.dart
+++ b/test/global/activate/constraint_test.dart
@@ -9,12 +9,11 @@
void main() {
test('chooses the highest version that matches the constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '1.0.1');
- builder.serve('foo', '1.1.0');
- builder.serve('foo', '1.2.3');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '1.0.1')
+ ..serve('foo', '1.1.0')
+ ..serve('foo', '1.2.3');
await runPub(args: ['global', 'activate', 'foo', '<1.1.0']);
diff --git a/test/global/activate/custom_hosted_url_test.dart b/test/global/activate/custom_hosted_url_test.dart
index 54ee463..8b2f0fc 100644
--- a/test/global/activate/custom_hosted_url_test.dart
+++ b/test/global/activate/custom_hosted_url_test.dart
@@ -9,22 +9,21 @@
void main() {
test('activating a package from a custom pub server', () async {
// The default pub server (i.e. pub.dartlang.org).
- await servePackages((builder) {
- builder.serve('baz', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('baz', '1.0.0');
// The custom pub server.
- final customServer = await PackageServer.start((builder) {
- Map<String, dynamic> hostedDep(String name, String constraint) => {
- 'hosted': {
- 'url': builder.serverUrl,
- 'name': name,
- },
- 'version': constraint,
- };
- builder.serve('foo', '1.0.0', deps: {'bar': hostedDep('bar', 'any')});
- builder.serve('bar', '1.0.0', deps: {'baz': 'any'});
- });
+ final customServer = await startPackageServer();
+ Map<String, dynamic> hostedDep(String name, String constraint) => {
+ 'hosted': {
+ 'url': customServer.url,
+ 'name': name,
+ },
+ 'version': constraint,
+ };
+
+ customServer.serve('foo', '1.0.0', deps: {'bar': hostedDep('bar', 'any')});
+ customServer.serve('bar', '1.0.0', deps: {'baz': 'any'});
await runPub(
args: ['global', 'activate', 'foo', '-u', customServer.url],
diff --git a/test/global/activate/different_version_test.dart b/test/global/activate/different_version_test.dart
index dd6cca2..8406b92 100644
--- a/test/global/activate/different_version_test.dart
+++ b/test/global/activate/different_version_test.dart
@@ -11,14 +11,13 @@
test(
"discards the previous active version if it doesn't match the "
'constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [d.file('foo.dart', 'main() => print("hi"); ')])
+ await servePackages()
+ ..serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('foo.dart', 'main() => print("hi");')])
+ ])
+ ..serve('foo', '2.0.0', contents: [
+ d.dir('bin', [d.file('foo.dart', 'main() => print("hi2");')])
]);
- builder.serve('foo', '2.0.0', contents: [
- d.dir('bin', [d.file('foo.dart', 'main() => print("hi2"); ')])
- ]);
- });
// Activate 1.0.0.
await runPub(args: ['global', 'activate', 'foo', '1.0.0']);
diff --git a/test/global/activate/empty_constraint_test.dart b/test/global/activate/empty_constraint_test.dart
index fe0bd27..d893bcd 100644
--- a/test/global/activate/empty_constraint_test.dart
+++ b/test/global/activate/empty_constraint_test.dart
@@ -9,10 +9,9 @@
void main() {
test('errors if the constraint matches no versions', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '1.0.1');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '1.0.1');
await runPub(
args: ['global', 'activate', 'foo', '>1.1.0'],
diff --git a/test/global/activate/feature_test.dart b/test/global/activate/feature_test.dart
index 6095aa1..58119d1 100644
--- a/test/global/activate/feature_test.dart
+++ b/test/global/activate/feature_test.dart
@@ -10,8 +10,8 @@
void main() {
test('enables default-on features by default', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'dependencies': {'bar': '1.0.0'}
@@ -21,11 +21,9 @@
'dependencies': {'baz': '1.0.0'}
}
}
- });
-
- builder.serve('bar', '1.0.0');
- builder.serve('baz', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0')
+ ..serve('baz', '1.0.0');
await runPub(args: ['global', 'activate', 'foo'], output: contains('''
Resolving dependencies...
@@ -35,8 +33,8 @@
});
test('can enable default-off features', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'dependencies': {'bar': '1.0.0'}
@@ -46,11 +44,9 @@
'dependencies': {'baz': '1.0.0'}
}
}
- });
-
- builder.serve('bar', '1.0.0');
- builder.serve('baz', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0')
+ ..serve('baz', '1.0.0');
await runPub(
args: ['global', 'activate', 'foo', '--features', 'things'],
@@ -63,8 +59,8 @@
});
test('can disable default-on features', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'dependencies': {'bar': '1.0.0'}
@@ -74,11 +70,9 @@
'dependencies': {'baz': '1.0.0'}
}
}
- });
-
- builder.serve('bar', '1.0.0');
- builder.serve('baz', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0')
+ ..serve('baz', '1.0.0');
await runPub(
args: ['global', 'activate', 'foo', '--omit-features', 'stuff'],
@@ -89,8 +83,8 @@
});
test('supports multiple arguments', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'default': false,
@@ -101,11 +95,9 @@
'dependencies': {'baz': '1.0.0'}
}
}
- });
-
- builder.serve('bar', '1.0.0');
- builder.serve('baz', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0')
+ ..serve('baz', '1.0.0');
await runPub(
args: ['global', 'activate', 'foo', '--features', 'things,stuff'],
@@ -118,8 +110,8 @@
});
test('can both enable and disable', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'dependencies': {'bar': '1.0.0'}
@@ -129,11 +121,9 @@
'dependencies': {'baz': '1.0.0'}
}
}
- });
-
- builder.serve('bar', '1.0.0');
- builder.serve('baz', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0')
+ ..serve('baz', '1.0.0');
await runPub(args: [
'global',
diff --git a/test/global/activate/ignores_active_version_test.dart b/test/global/activate/ignores_active_version_test.dart
index 949456f..777a631 100644
--- a/test/global/activate/ignores_active_version_test.dart
+++ b/test/global/activate/ignores_active_version_test.dart
@@ -9,15 +9,14 @@
void main() {
test('ignores previously activated version', () async {
- await servePackages((builder) {
- builder.serve(
+ await servePackages()
+ ..serve(
'foo',
'1.2.3',
- );
- builder.serve('foo', '1.3.0', contents: [
+ )
+ ..serve('foo', '1.3.0', contents: [
d.dir('bin', [d.file('foo.dart', 'main() => print("hi"); ')])
]);
- });
// Activate 1.2.3.
await runPub(args: ['global', 'activate', 'foo', '1.2.3']);
diff --git a/test/global/activate/installs_dependencies_for_git_test.dart b/test/global/activate/installs_dependencies_for_git_test.dart
index e67fad4..6018f50 100644
--- a/test/global/activate/installs_dependencies_for_git_test.dart
+++ b/test/global/activate/installs_dependencies_for_git_test.dart
@@ -9,10 +9,9 @@
void main() {
test('activating a Git package installs its dependencies', () async {
- await servePackages((builder) {
- builder.serve('bar', '1.0.0', deps: {'baz': 'any'});
- builder.serve('baz', '1.0.0');
- });
+ await servePackages()
+ ..serve('bar', '1.0.0', deps: {'baz': 'any'})
+ ..serve('baz', '1.0.0');
await d.git('foo.git', [
d.libPubspec('foo', '1.0.0', deps: {'bar': 'any'}),
diff --git a/test/global/activate/installs_dependencies_for_path_test.dart b/test/global/activate/installs_dependencies_for_path_test.dart
index 52f3e65..4688f07 100644
--- a/test/global/activate/installs_dependencies_for_path_test.dart
+++ b/test/global/activate/installs_dependencies_for_path_test.dart
@@ -9,10 +9,9 @@
void main() {
test('activating a path package installs dependencies', () async {
- await servePackages((builder) {
- builder.serve('bar', '1.0.0', deps: {'baz': 'any'});
- builder.serve('baz', '2.0.0');
- });
+ await servePackages()
+ ..serve('bar', '1.0.0', deps: {'baz': 'any'})
+ ..serve('baz', '2.0.0');
await d.dir('foo', [
d.libPubspec('foo', '0.0.0', deps: {'bar': 'any'}),
diff --git a/test/global/activate/installs_dependencies_test.dart b/test/global/activate/installs_dependencies_test.dart
index 7114170..770ebcf 100644
--- a/test/global/activate/installs_dependencies_test.dart
+++ b/test/global/activate/installs_dependencies_test.dart
@@ -8,11 +8,10 @@
void main() {
test('activating a package installs its dependencies', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': 'any'});
- builder.serve('bar', '1.0.0', deps: {'baz': 'any'});
- builder.serve('baz', '1.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': 'any'})
+ ..serve('bar', '1.0.0', deps: {'baz': 'any'})
+ ..serve('baz', '1.0.0');
await runPub(
args: ['global', 'activate', 'foo'],
diff --git a/test/global/activate/outdated_binstub_test.dart b/test/global/activate/outdated_binstub_test.dart
index 64a379a..6d9e298 100644
--- a/test/global/activate/outdated_binstub_test.dart
+++ b/test/global/activate/outdated_binstub_test.dart
@@ -19,14 +19,12 @@
void main() {
test('an outdated binstub is replaced', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'executables': {'foo-script': 'script'}
- }, contents: [
- d.dir(
- 'bin', [d.file('script.dart', "main(args) => print('ok \$args');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'executables': {'foo-script': 'script'}
+ }, contents: [
+ d.dir('bin', [d.file('script.dart', "main(args) => print('ok \$args');")])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/global/activate/path_package_test.dart b/test/global/activate/path_package_test.dart
index 6a08e9c..514176a 100644
--- a/test/global/activate/path_package_test.dart
+++ b/test/global/activate/path_package_test.dart
@@ -55,14 +55,13 @@
});
test("Doesn't precompile binaries when activating from path", () async {
- await servePackages(
- (builder) => builder.serve(
- 'bar',
- '1.0.0',
- contents: [
- d.dir('bin', [d.file('bar.dart', "main() => print('bar');")])
- ],
- ),
+ final server = await servePackages();
+ server.serve(
+ 'bar',
+ '1.0.0',
+ contents: [
+ d.dir('bin', [d.file('bar.dart', "main() => print('bar');")])
+ ],
);
await d.dir('foo', [
diff --git a/test/global/activate/removes_old_lockfile_test.dart b/test/global/activate/removes_old_lockfile_test.dart
index a91a153..3392aff 100644
--- a/test/global/activate/removes_old_lockfile_test.dart
+++ b/test/global/activate/removes_old_lockfile_test.dart
@@ -9,9 +9,8 @@
void main() {
test('removes the 1.6-style lockfile', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.dir(cachePath, [
d.dir('global_packages', [
diff --git a/test/global/activate/snapshots_hosted_executables_test.dart b/test/global/activate/snapshots_hosted_executables_test.dart
index c400ec7..bc2b332 100644
--- a/test/global/activate/snapshots_hosted_executables_test.dart
+++ b/test/global/activate/snapshots_hosted_executables_test.dart
@@ -9,16 +9,15 @@
void main() {
test('snapshots the executables for a hosted package', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [
- d.file('hello.dart', "void main() => print('hello!');"),
- d.file('goodbye.dart', "void main() => print('goodbye!');"),
- d.file('shell.sh', 'echo shell'),
- d.dir('subdir', [d.file('sub.dart', "void main() => print('sub!');")])
- ])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('bin', [
+ d.file('hello.dart', "void main() => print('hello!');"),
+ d.file('goodbye.dart', "void main() => print('goodbye!');"),
+ d.file('shell.sh', 'echo shell'),
+ d.dir('subdir', [d.file('sub.dart', "void main() => print('sub!');")])
+ ])
+ ]);
await runPub(
args: ['global', 'activate', 'foo'],
diff --git a/test/global/activate/supports_version_solver_backtracking_test.dart b/test/global/activate/supports_version_solver_backtracking_test.dart
index 7731bc6..c8c138d 100644
--- a/test/global/activate/supports_version_solver_backtracking_test.dart
+++ b/test/global/activate/supports_version_solver_backtracking_test.dart
@@ -9,14 +9,13 @@
void main() {
test('performs verison solver backtracking if necessary', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.1.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.1.0', pubspec: {
'environment': {'sdk': '>=0.1.2 <0.2.0'}
- });
- builder.serve('foo', '1.2.0', pubspec: {
+ })
+ ..serve('foo', '1.2.0', pubspec: {
'environment': {'sdk': '>=0.1.3 <0.2.0'}
});
- });
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/global/activate/uncached_package_test.dart b/test/global/activate/uncached_package_test.dart
index 98b12af..1a18d70 100644
--- a/test/global/activate/uncached_package_test.dart
+++ b/test/global/activate/uncached_package_test.dart
@@ -9,17 +9,16 @@
void main() {
test('installs and activates the best version of a package', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [d.file('foo.dart', 'main() => print("hi"); ')])
+ await servePackages()
+ ..serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('foo.dart', 'main() => print("hi");')])
+ ])
+ ..serve('foo', '1.2.3', contents: [
+ d.dir('bin', [d.file('foo.dart', 'main() => print("hi 1.2.3");')])
+ ])
+ ..serve('foo', '2.0.0-wildly.unstable', contents: [
+ d.dir('bin', [d.file('foo.dart', 'main() => print("hi unstable");')])
]);
- builder.serve('foo', '1.2.3', contents: [
- d.dir('bin', [d.file('foo.dart', 'main() => print("hi 1.2.3"); ')])
- ]);
- builder.serve('foo', '2.0.0-wildly.unstable', contents: [
- d.dir('bin', [d.file('foo.dart', 'main() => print("hi unstable"); ')])
- ]);
- });
await runPub(args: ['global', 'activate', 'foo'], output: '''
Resolving dependencies...
diff --git a/test/global/activate/unknown_package_test.dart b/test/global/activate/unknown_package_test.dart
index 93a5d3a..271545d 100644
--- a/test/global/activate/unknown_package_test.dart
+++ b/test/global/activate/unknown_package_test.dart
@@ -9,7 +9,7 @@
void main() {
test('errors if the package could not be found', () async {
- await serveNoPackages();
+ await servePackages();
await runPub(
args: ['global', 'activate', 'foo'],
diff --git a/test/global/binstubs/binstub_runs_executable_test.dart b/test/global/binstubs/binstub_runs_executable_test.dart
index c733f47..98ab53b 100644
--- a/test/global/binstubs/binstub_runs_executable_test.dart
+++ b/test/global/binstubs/binstub_runs_executable_test.dart
@@ -12,14 +12,12 @@
void main() {
test('the generated binstub runs a snapshotted executable', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'executables': {'foo-script': 'script'}
- }, contents: [
- d.dir(
- 'bin', [d.file('script.dart', "main(args) => print('ok \$args');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'executables': {'foo-script': 'script'}
+ }, contents: [
+ d.dir('bin', [d.file('script.dart', "main(args) => print('ok \$args');")])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/global/binstubs/binstub_runs_precompiled_snapshot_test.dart b/test/global/binstubs/binstub_runs_precompiled_snapshot_test.dart
index f66a251..cd477db 100644
--- a/test/global/binstubs/binstub_runs_precompiled_snapshot_test.dart
+++ b/test/global/binstubs/binstub_runs_precompiled_snapshot_test.dart
@@ -9,13 +9,12 @@
void main() {
test('the binstubs runs a built snapshot if present', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'executables': {'foo-script': 'script'}
- }, contents: [
- d.dir('bin', [d.file('script.dart', "main(args) => print('ok');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'executables': {'foo-script': 'script'}
+ }, contents: [
+ d.dir('bin', [d.file('script.dart', "main(args) => print('ok');")])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/global/binstubs/creates_executables_in_pubspec_test.dart b/test/global/binstubs/creates_executables_in_pubspec_test.dart
index 8fe53dc..a6604ab 100644
--- a/test/global/binstubs/creates_executables_in_pubspec_test.dart
+++ b/test/global/binstubs/creates_executables_in_pubspec_test.dart
@@ -9,17 +9,16 @@
void main() {
test('creates binstubs for each executable in the pubspec', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'executables': {'one': null, 'two-renamed': 'second'}
- }, contents: [
- d.dir('bin', [
- d.file('one.dart', "main(args) => print('one');"),
- d.file('second.dart', "main(args) => print('two');"),
- d.file('nope.dart', "main(args) => print('nope');")
- ])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'executables': {'one': null, 'two-renamed': 'second'}
+ }, contents: [
+ d.dir('bin', [
+ d.file('one.dart', "main(args) => print('one');"),
+ d.file('second.dart', "main(args) => print('two');"),
+ d.file('nope.dart', "main(args) => print('nope');")
+ ])
+ ]);
await runPub(
args: ['global', 'activate', 'foo'],
diff --git a/test/global/binstubs/does_not_warn_if_no_executables_test.dart b/test/global/binstubs/does_not_warn_if_no_executables_test.dart
index b7ca722..9814f15 100644
--- a/test/global/binstubs/does_not_warn_if_no_executables_test.dart
+++ b/test/global/binstubs/does_not_warn_if_no_executables_test.dart
@@ -9,12 +9,10 @@
void main() {
test('does not warn if the package has no executables', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir(
- 'bin', [d.file('script.dart', "main(args) => print('ok \$args');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('script.dart', "main(args) => print('ok \$args');")])
+ ]);
await runPub(
args: ['global', 'activate', 'foo'],
diff --git a/test/global/binstubs/does_not_warn_if_on_path_test.dart b/test/global/binstubs/does_not_warn_if_on_path_test.dart
index fd0dfa7..9b11386 100644
--- a/test/global/binstubs/does_not_warn_if_on_path_test.dart
+++ b/test/global/binstubs/does_not_warn_if_on_path_test.dart
@@ -12,14 +12,12 @@
void main() {
test('does not warn if the binstub directory is on the path', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'executables': {'script': null}
- }, contents: [
- d.dir(
- 'bin', [d.file('script.dart', "main(args) => print('ok \$args');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'executables': {'script': null}
+ }, contents: [
+ d.dir('bin', [d.file('script.dart', "main(args) => print('ok \$args');")])
+ ]);
// Add the test's cache bin directory to the path.
var binDir = p.dirname(Platform.executable);
diff --git a/test/global/binstubs/outdated_binstub_runs_pub_global_test.dart b/test/global/binstubs/outdated_binstub_runs_pub_global_test.dart
index e86757c..442dfbc 100644
--- a/test/global/binstubs/outdated_binstub_runs_pub_global_test.dart
+++ b/test/global/binstubs/outdated_binstub_runs_pub_global_test.dart
@@ -24,23 +24,22 @@
void main() {
test("an outdated binstub runs 'pub global run', which replaces old binstub",
() async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'executables': {
- 'foo-script': 'script',
- 'foo-script2': 'script',
- 'foo-script-not-installed': 'script',
- 'foo-another-script': 'another-script',
- 'foo-another-script-not-installed': 'another-script'
- }
- }, contents: [
- d.dir('bin', [
- d.file('script.dart', r"main(args) => print('ok $args');"),
- d.file('another-script.dart',
- r"main(args) => print('not so good $args');")
- ])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'executables': {
+ 'foo-script': 'script',
+ 'foo-script2': 'script',
+ 'foo-script-not-installed': 'script',
+ 'foo-another-script': 'another-script',
+ 'foo-another-script-not-installed': 'another-script'
+ }
+ }, contents: [
+ d.dir('bin', [
+ d.file('script.dart', r"main(args) => print('ok $args');"),
+ d.file(
+ 'another-script.dart', r"main(args) => print('not so good $args');")
+ ])
+ ]);
await runPub(args: [
'global',
diff --git a/test/global/binstubs/outdated_snapshot_test.dart b/test/global/binstubs/outdated_snapshot_test.dart
index e749a5c..91bfff6 100644
--- a/test/global/binstubs/outdated_snapshot_test.dart
+++ b/test/global/binstubs/outdated_snapshot_test.dart
@@ -13,14 +13,12 @@
void main() {
test("a binstub runs 'pub global run' for an outdated snapshot", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'executables': {'foo-script': 'script'}
- }, contents: [
- d.dir(
- 'bin', [d.file('script.dart', "main(args) => print('ok \$args');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'executables': {'foo-script': 'script'}
+ }, contents: [
+ d.dir('bin', [d.file('script.dart', "main(args) => print('ok \$args');")])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/global/binstubs/removes_when_deactivated_test.dart b/test/global/binstubs/removes_when_deactivated_test.dart
index 05c8413..975defe 100644
--- a/test/global/binstubs/removes_when_deactivated_test.dart
+++ b/test/global/binstubs/removes_when_deactivated_test.dart
@@ -9,16 +9,15 @@
void main() {
test('removes binstubs when the package is deactivated', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'executables': {'one': null, 'two': null}
- }, contents: [
- d.dir('bin', [
- d.file('one.dart', "main(args) => print('one');"),
- d.file('two.dart', "main(args) => print('two');")
- ])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'executables': {'one': null, 'two': null}
+ }, contents: [
+ d.dir('bin', [
+ d.file('one.dart', "main(args) => print('one');"),
+ d.file('two.dart', "main(args) => print('two');")
+ ])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
await runPub(args: ['global', 'deactivate', 'foo']);
diff --git a/test/global/binstubs/runs_once_even_when_dart_is_batch_test.dart b/test/global/binstubs/runs_once_even_when_dart_is_batch_test.dart
index 54f3932..99eeaaf 100644
--- a/test/global/binstubs/runs_once_even_when_dart_is_batch_test.dart
+++ b/test/global/binstubs/runs_once_even_when_dart_is_batch_test.dart
@@ -14,18 +14,17 @@
test(
'runs only once even when dart on path is a batch file (as in flutter/bin)',
() async {
- await servePackages((builder) {
- builder.serve(
- 'foo',
- '1.0.0',
- contents: [
- d.dir('bin', [d.file('script.dart', 'main(args) => print(args);')]),
- ],
- pubspec: {
- 'executables': {'script': 'script'},
- },
- );
- });
+ final server = await servePackages();
+ server.serve(
+ 'foo',
+ '1.0.0',
+ contents: [
+ d.dir('bin', [d.file('script.dart', 'main(args) => print(args);')]),
+ ],
+ pubspec: {
+ 'executables': {'script': 'script'},
+ },
+ );
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/global/binstubs/warns_if_not_on_path_test.dart b/test/global/binstubs/warns_if_not_on_path_test.dart
index d09e698..d98bf76 100644
--- a/test/global/binstubs/warns_if_not_on_path_test.dart
+++ b/test/global/binstubs/warns_if_not_on_path_test.dart
@@ -9,14 +9,12 @@
void main() {
test('warns if the binstub directory is not on the path', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'executables': {'some-dart-script': 'script'}
- }, contents: [
- d.dir(
- 'bin', [d.file('script.dart', "main(args) => print('ok \$args');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'executables': {'some-dart-script': 'script'}
+ }, contents: [
+ d.dir('bin', [d.file('script.dart', "main(args) => print('ok \$args');")])
+ ]);
await runPub(
args: ['global', 'activate', 'foo'],
diff --git a/test/global/deactivate/deactivate_and_reactivate_package_test.dart b/test/global/deactivate/deactivate_and_reactivate_package_test.dart
index cc7f597..da33486 100644
--- a/test/global/deactivate/deactivate_and_reactivate_package_test.dart
+++ b/test/global/deactivate/deactivate_and_reactivate_package_test.dart
@@ -8,10 +8,9 @@
void main() {
test('activates a different version after deactivating', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0');
// Activate an old version.
await runPub(args: ['global', 'activate', 'foo', '1.0.0']);
diff --git a/test/global/deactivate/hosted_package_test.dart b/test/global/deactivate/hosted_package_test.dart
index 854d6a9..fa91829 100644
--- a/test/global/deactivate/hosted_package_test.dart
+++ b/test/global/deactivate/hosted_package_test.dart
@@ -8,7 +8,8 @@
void main() {
test('deactivates an active hosted package', () async {
- await servePackages((builder) => builder.serve('foo', '1.0.0'));
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/global/deactivate/removes_precompiled_snapshots_test.dart b/test/global/deactivate/removes_precompiled_snapshots_test.dart
index 7ea6d58..a7670e2 100644
--- a/test/global/deactivate/removes_precompiled_snapshots_test.dart
+++ b/test/global/deactivate/removes_precompiled_snapshots_test.dart
@@ -9,7 +9,8 @@
void main() {
test('removes built snapshots', () async {
- await servePackages((builder) => builder.serve('foo', '1.0.0'));
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/global/deactivate/unknown_package_test.dart b/test/global/deactivate/unknown_package_test.dart
index d67460d..35023ad 100644
--- a/test/global/deactivate/unknown_package_test.dart
+++ b/test/global/deactivate/unknown_package_test.dart
@@ -9,7 +9,7 @@
void main() {
test('errors if the package is not activated', () async {
- await serveNoPackages();
+ await servePackages();
await runPub(
args: ['global', 'deactivate', 'foo'],
diff --git a/test/global/list_test.dart b/test/global/list_test.dart
index 4b50184..8d4d02e 100644
--- a/test/global/list_test.dart
+++ b/test/global/list_test.dart
@@ -12,9 +12,8 @@
void main() {
test('lists an activated hosted package', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await runPub(args: ['global', 'activate', 'foo']);
@@ -49,11 +48,10 @@
});
test('lists activated packages in alphabetical order', () async {
- await servePackages((builder) {
- builder.serve('aaa', '1.0.0');
- builder.serve('bbb', '1.0.0');
- builder.serve('ccc', '1.0.0');
- });
+ await servePackages()
+ ..serve('aaa', '1.0.0')
+ ..serve('bbb', '1.0.0')
+ ..serve('ccc', '1.0.0');
await runPub(args: ['global', 'activate', 'ccc']);
await runPub(args: ['global', 'activate', 'aaa']);
diff --git a/test/global/run/errors_if_outside_bin_test.dart b/test/global/run/errors_if_outside_bin_test.dart
index 098f0bb..72bcd4f 100644
--- a/test/global/run/errors_if_outside_bin_test.dart
+++ b/test/global/run/errors_if_outside_bin_test.dart
@@ -10,11 +10,10 @@
void main() {
test('errors if the script is in a subdirectory.', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('example', [d.file('script.dart', "main(args) => print('ok');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('example', [d.file('script.dart', "main(args) => print('ok');")])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
await runPub(
diff --git a/test/global/run/fails_if_sdk_constraint_is_unmet_test.dart b/test/global/run/fails_if_sdk_constraint_is_unmet_test.dart
index 08adbcc..3bef340 100644
--- a/test/global/run/fails_if_sdk_constraint_is_unmet_test.dart
+++ b/test/global/run/fails_if_sdk_constraint_is_unmet_test.dart
@@ -10,11 +10,10 @@
void main() {
test("fails if the current SDK doesn't match the constraint", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [d.file('script.dart', "main(args) => print('ok');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('script.dart', "main(args) => print('ok');")])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
@@ -41,15 +40,14 @@
});
test('fails if SDK is downgraded below the constraints', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'environment': {
- 'sdk': '>=2.0.0 <3.0.0',
- },
- }, contents: [
- d.dir('bin', [d.file('script.dart', "main(args) => print('123-OK');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'environment': {
+ 'sdk': '>=2.0.0 <3.0.0',
+ },
+ }, contents: [
+ d.dir('bin', [d.file('script.dart', "main(args) => print('123-OK');")])
+ ]);
await runPub(
environment: {'_PUB_TEST_SDK_VERSION': '2.0.0'},
@@ -69,8 +67,8 @@
});
test('fails if SDK is downgraded below dependency SDK constraints', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {
'bar': '^1.0.0',
}, pubspec: {
'environment': {
@@ -78,13 +76,12 @@
},
}, contents: [
d.dir('bin', [d.file('script.dart', "main(args) => print('123-OK');")])
- ]);
- builder.serve('bar', '1.0.0', pubspec: {
+ ])
+ ..serve('bar', '1.0.0', pubspec: {
'environment': {
'sdk': '>=2.2.0 <3.0.0',
},
});
- });
await runPub(
environment: {'_PUB_TEST_SDK_VERSION': '2.2.0'},
diff --git a/test/global/run/implicit_executable_name_test.dart b/test/global/run/implicit_executable_name_test.dart
index fa7bf51..9757772 100644
--- a/test/global/run/implicit_executable_name_test.dart
+++ b/test/global/run/implicit_executable_name_test.dart
@@ -9,11 +9,10 @@
void main() {
test('defaults to the package name if the script is omitted', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [d.file('foo.dart', "main(args) => print('foo');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('foo.dart', "main(args) => print('foo');")])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/global/run/nonexistent_script_test.dart b/test/global/run/nonexistent_script_test.dart
index d4f9577..8ff0a42 100644
--- a/test/global/run/nonexistent_script_test.dart
+++ b/test/global/run/nonexistent_script_test.dart
@@ -10,9 +10,10 @@
void main() {
test('errors if the script does not exist.', () async {
- await servePackages((builder) => builder.serve('foo', '1.0.0', pubspec: {
- 'dev_dependencies': {'bar': '1.0.0'}
- }));
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'dev_dependencies': {'bar': '1.0.0'}
+ });
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/global/run/package_api_test.dart b/test/global/run/package_api_test.dart
index 26ebc2a..5db401b 100644
--- a/test/global/run/package_api_test.dart
+++ b/test/global/run/package_api_test.dart
@@ -10,10 +10,9 @@
void main() {
test('an immutable application sees a file: package config', () async {
- await servePackages((builder) {
- builder.serve('bar', '1.0.0');
-
- builder.serve('foo', '1.0.0', deps: {
+ await servePackages()
+ ..serve('bar', '1.0.0')
+ ..serve('foo', '1.0.0', deps: {
'bar': '1.0.0'
}, contents: [
d.dir('bin', [
@@ -31,7 +30,6 @@
""")
])
]);
- });
await runPub(args: ['global', 'activate', 'foo']);
@@ -43,12 +41,12 @@
'global_packages/foo/.dart_tool/package_config.json');
expect(pub.stdout, emits(p.toUri(packageConfigPath).toString()));
- var fooResourcePath = p.join(
- globalPackageServer.pathInCache('foo', '1.0.0'), 'lib/resource.txt');
+ var fooResourcePath =
+ p.join(globalServer.pathInCache('foo', '1.0.0'), 'lib/resource.txt');
expect(pub.stdout, emits(p.toUri(fooResourcePath).toString()));
- var barResourcePath = p.join(
- globalPackageServer.pathInCache('bar', '1.0.0'), 'lib/resource.txt');
+ var barResourcePath =
+ p.join(globalServer.pathInCache('bar', '1.0.0'), 'lib/resource.txt');
expect(pub.stdout, emits(p.toUri(barResourcePath).toString()));
await pub.shouldExit(0);
});
diff --git a/test/global/run/recompiles_if_snapshot_is_out_of_date_test.dart b/test/global/run/recompiles_if_snapshot_is_out_of_date_test.dart
index 97c69f2..24e65bf 100644
--- a/test/global/run/recompiles_if_snapshot_is_out_of_date_test.dart
+++ b/test/global/run/recompiles_if_snapshot_is_out_of_date_test.dart
@@ -11,11 +11,10 @@
void main() {
test('recompiles a script if the snapshot is out-of-date', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [d.file('script.dart', "main(args) => print('ok');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('script.dart', "main(args) => print('ok');")])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/global/run/runs_script_in_checked_mode_test.dart b/test/global/run/runs_script_in_checked_mode_test.dart
index 69cd393..d0511cf 100644
--- a/test/global/run/runs_script_in_checked_mode_test.dart
+++ b/test/global/run/runs_script_in_checked_mode_test.dart
@@ -9,11 +9,10 @@
void main() {
test('runs a script with assertions enabled', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [d.file('script.dart', 'main() { assert(false); }')])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('script.dart', 'main() { assert(false); }')])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/global/run/runs_script_in_unchecked_mode_test.dart b/test/global/run/runs_script_in_unchecked_mode_test.dart
index 866847b..ca752b2 100644
--- a/test/global/run/runs_script_in_unchecked_mode_test.dart
+++ b/test/global/run/runs_script_in_unchecked_mode_test.dart
@@ -16,11 +16,10 @@
void main() {
test('runs a script in unchecked mode by default', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [d.file('script.dart', _script)])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('script.dart', _script)])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/global/run/runs_script_test.dart b/test/global/run/runs_script_test.dart
index fe767ef..f3f0e99 100644
--- a/test/global/run/runs_script_test.dart
+++ b/test/global/run/runs_script_test.dart
@@ -9,11 +9,10 @@
void main() {
test('runs a script in an activated package', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [d.file('script.dart', "main(args) => print('ok');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('script.dart', "main(args) => print('ok');")])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/global/run/runs_script_without_packages_file_test.dart b/test/global/run/runs_script_without_packages_file_test.dart
index cb63be2..dc225ba 100644
--- a/test/global/run/runs_script_without_packages_file_test.dart
+++ b/test/global/run/runs_script_without_packages_file_test.dart
@@ -12,11 +12,10 @@
void main() {
test('runs a snapshotted script without a .dart_tool/package_config file',
() async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [d.file('script.dart', "main(args) => print('ok');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('script.dart', "main(args) => print('ok');")])
+ ]);
await runPub(args: ['global', 'activate', 'foo']);
diff --git a/test/global/run/unknown_package_test.dart b/test/global/run/unknown_package_test.dart
index a5fba21..adcb666 100644
--- a/test/global/run/unknown_package_test.dart
+++ b/test/global/run/unknown_package_test.dart
@@ -9,7 +9,7 @@
void main() {
test('errors if the package is not activated', () async {
- await serveNoPackages();
+ await servePackages();
await runPub(
args: ['global', 'run', 'foo:bar'],
diff --git a/test/global/run/uses_old_lockfile_test.dart b/test/global/run/uses_old_lockfile_test.dart
index 5eb8406..1afab81 100644
--- a/test/global/run/uses_old_lockfile_test.dart
+++ b/test/global/run/uses_old_lockfile_test.dart
@@ -9,9 +9,9 @@
void main() {
test('uses the 1.6-style lockfile if necessary', () async {
- await servePackages((builder) {
- builder.serve('bar', '1.0.0');
- builder.serve('foo', '1.0.0', deps: {
+ await servePackages()
+ ..serve('bar', '1.0.0')
+ ..serve('foo', '1.0.0', deps: {
'bar': 'any'
}, contents: [
d.dir('bin', [
@@ -21,7 +21,6 @@
main(args) => print(bar.main());""")
])
]);
- });
await runPub(args: ['cache', 'add', 'foo']);
await runPub(args: ['cache', 'add', 'bar']);
diff --git a/test/hosted/fail_gracefully_on_bad_version_listing_response_test.dart b/test/hosted/fail_gracefully_on_bad_version_listing_response_test.dart
index 25f3c50..7fb22a3 100644
--- a/test/hosted/fail_gracefully_on_bad_version_listing_response_test.dart
+++ b/test/hosted/fail_gracefully_on_bad_version_listing_response_test.dart
@@ -17,15 +17,18 @@
test(
'fails gracefully if the package server responds with broken package listings',
() async {
- await servePackages((b) => b..serve('foo', '1.2.3'));
- globalPackageServer.extraHandlers[RegExp('/api/packages/.*')] =
- expectAsync1((request) {
- expect(request.method, 'GET');
- return Response(200,
- body: jsonEncode({
- 'notTheRight': {'response': 'type'}
- }));
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
+ server.expect(
+ 'GET',
+ RegExp('/api/packages/.*'),
+ expectAsync1((request) {
+ return Response(200,
+ body: jsonEncode({
+ 'notTheRight': {'response': 'type'}
+ }));
+ }),
+ );
await d.appDir({'foo': '1.2.3'}).create();
await pubCommand(command,
@@ -39,10 +42,9 @@
});
testWithGolden('bad_json', (ctx) async {
- await servePackages((b) => b..serve('foo', '1.2.3'));
- globalPackageServer.extraHandlers[RegExp('/api/packages/.*')] =
- expectAsync1((request) {
- expect(request.method, 'GET');
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
+ server.expect('GET', RegExp('/api/packages/.*'), (request) {
return Response(200,
body: jsonEncode({
'notTheRight': {'response': 'type'}
@@ -54,10 +56,9 @@
});
testWithGolden('403', (ctx) async {
- await servePackages((b) => b..serve('foo', '1.2.3'));
- globalPackageServer.extraHandlers[RegExp('/api/packages/.*')] =
- expectAsync1((request) {
- expect(request.method, 'GET');
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
+ server.expect('GET', RegExp('/api/packages/.*'), (request) {
return Response(403,
body: jsonEncode({
'notTheRight': {'response': 'type'}
@@ -69,10 +70,9 @@
});
testWithGolden('401', (ctx) async {
- await servePackages((b) => b..serve('foo', '1.2.3'));
- globalPackageServer.extraHandlers[RegExp('/api/packages/.*')] =
- expectAsync1((request) {
- expect(request.method, 'GET');
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
+ server.expect('GET', RegExp('/api/packages/.*'), (request) {
return Response(401,
body: jsonEncode({
'notTheRight': {'response': 'type'}
@@ -84,10 +84,9 @@
});
testWithGolden('403-with-message', (ctx) async {
- await servePackages((b) => b..serve('foo', '1.2.3'));
- globalPackageServer.extraHandlers[RegExp('/api/packages/.*')] =
- expectAsync1((request) {
- expect(request.method, 'GET');
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
+ server.expect('GET', RegExp('/api/packages/.*'), (request) {
return Response(403,
headers: {
'www-authenticate': 'Bearer realm="pub", message="<message>"',
@@ -102,10 +101,9 @@
});
testWithGolden('401-with-message', (ctx) async {
- await servePackages((b) => b..serve('foo', '1.2.3'));
- globalPackageServer.extraHandlers[RegExp('/api/packages/.*')] =
- expectAsync1((request) {
- expect(request.method, 'GET');
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
+ server.expect('GET', RegExp('/api/packages/.*'), (request) {
return Response(401,
headers: {
'www-authenticate': 'Bearer realm="pub", message="<message>"',
diff --git a/test/hosted/fail_gracefully_on_missing_package_test.dart b/test/hosted/fail_gracefully_on_missing_package_test.dart
index 1840f18..7c6290d 100644
--- a/test/hosted/fail_gracefully_on_missing_package_test.dart
+++ b/test/hosted/fail_gracefully_on_missing_package_test.dart
@@ -11,7 +11,7 @@
void main() {
forBothPubGetAndUpgrade((command) {
test('fails gracefully if the package does not exist', () async {
- await serveNoPackages();
+ await servePackages();
await d.appDir({'foo': '1.2.3'}).create();
diff --git a/test/hosted/fail_gracefully_with_hint_test.dart b/test/hosted/fail_gracefully_with_hint_test.dart
index bbb510b..4f1a326 100644
--- a/test/hosted/fail_gracefully_with_hint_test.dart
+++ b/test/hosted/fail_gracefully_with_hint_test.dart
@@ -12,7 +12,7 @@
void main() {
testWithGolden('hint: try without --offline', (ctx) async {
// Run the server so that we know what URL to use in the system cache.
- await serveErrors();
+ (await servePackages()).serveErrors();
await d.appDir({'foo': 'any'}).create();
@@ -25,7 +25,7 @@
testWithGolden('supports two hints', (ctx) async {
// Run the server so that we know what URL to use in the system cache.
- await serveErrors();
+ (await servePackages()).serveErrors();
await d.hostedCache([
d.dir('foo-1.2.3', [
diff --git a/test/hosted/metadata_test.dart b/test/hosted/metadata_test.dart
index 7554a0f..c705ac7 100644
--- a/test/hosted/metadata_test.dart
+++ b/test/hosted/metadata_test.dart
@@ -12,9 +12,8 @@
void main() {
forBothPubGetAndUpgrade((command) {
test('sends metadata headers for a direct dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.appDir({'foo': '1.0.0'}).create();
@@ -33,9 +32,8 @@
});
test('sends metadata headers for a dev dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -59,9 +57,8 @@
});
test('sends metadata headers for a transitive dependency', () async {
- await servePackages((builder) {
- builder.serve('bar', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('bar', '1.0.0');
await d.appDir({
'foo': {'path': '../foo'}
@@ -82,9 +79,8 @@
});
test("doesn't send metadata headers to a foreign server", () async {
- var server = await PackageServer.start((builder) {
- builder.serve('foo', '1.0.0');
- });
+ var server = await startPackageServer()
+ ..serve('foo', '1.0.0');
await d.appDir({
'foo': {
@@ -97,9 +93,7 @@
});
test("doesn't send metadata headers when CI=true", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- });
+ (await servePackages()).serve('foo', '1.0.0');
await d.appDir({'foo': '1.0.0'}).create();
diff --git a/test/hosted/offline_test.dart b/test/hosted/offline_test.dart
index 911f405..6482656 100644
--- a/test/hosted/offline_test.dart
+++ b/test/hosted/offline_test.dart
@@ -8,14 +8,13 @@
import '../descriptor.dart' as d;
import '../test_pub.dart';
-Future<void> populateCache(Map<String, List<String>> versions) async {
- await servePackages((b) {
- for (final entry in versions.entries) {
- for (final version in entry.value) {
- b.serve(entry.key, version);
- }
+Future<void> populateCache(
+ Map<String, List<String>> versions, PackageServer server) async {
+ for (final entry in versions.entries) {
+ for (final version in entry.value) {
+ server.serve(entry.key, version);
}
- });
+ }
for (final entry in versions.entries) {
for (final version in entry.value) {
await d.appDir({entry.key: version}).create();
@@ -27,13 +26,14 @@
void main() {
forBothPubGetAndUpgrade((command) {
test('upgrades a package using the cache', () async {
+ final server = await servePackages();
await populateCache({
'foo': ['1.2.2', '1.2.3'],
'bar': ['1.2.3']
- });
+ }, server);
// Now serve only errors - to validate we are truly offline.
- await serveErrors();
+ server.serveErrors();
await d.appDir({'foo': 'any', 'bar': 'any'}).create();
@@ -49,11 +49,12 @@
});
test('supports prerelease versions', () async {
+ final server = await servePackages();
await populateCache({
'foo': ['1.2.3-alpha.1']
- });
+ }, server);
// Now serve only errors - to validate we are truly offline.
- await serveErrors();
+ server.serveErrors();
await d.appDir({'foo': 'any'}).create();
@@ -70,7 +71,8 @@
test('fails gracefully if a dependency is not cached', () async {
// Run the server so that we know what URL to use in the system cache.
- await serveErrors();
+ final server = await servePackages();
+ server.serveErrors();
await d.appDir({'foo': 'any'}).create();
@@ -86,12 +88,13 @@
});
test('fails gracefully if no cached versions match', () async {
+ final server = await servePackages();
await populateCache({
'foo': ['1.2.2', '1.2.3']
- });
+ }, server);
// Run the server so that we know what URL to use in the system cache.
- await serveErrors();
+ server.serveErrors();
await d.appDir({'foo': '>2.0.0'}).create();
@@ -105,8 +108,10 @@
test(
'fails gracefully if a dependency is not cached and a lockfile '
'exists', () async {
+ final server = await servePackages();
+
// Run the server so that we know what URL to use in the system cache.
- await serveErrors();
+ server.serveErrors();
await d.appDir({'foo': 'any'}).create();
@@ -124,11 +129,13 @@
});
test('downgrades to the version in the cache if necessary', () async {
+ final server = await servePackages();
+
await populateCache({
'foo': ['1.2.2', '1.2.3']
- });
+ }, server);
// Run the server so that we know what URL to use in the system cache.
- await serveErrors();
+ server.serveErrors();
await d.appDir({'foo': 'any'}).create();
@@ -140,11 +147,13 @@
});
test('skips invalid cached versions', () async {
+ final server = await servePackages();
+
await populateCache({
'foo': ['1.2.2', '1.2.3']
- });
+ }, server);
// Run the server so that we know what URL to use in the system cache.
- await serveErrors();
+ server.serveErrors();
await d.hostedCache([
d.dir('foo-1.2.3', [d.file('pubspec.yaml', '{')]),
@@ -159,11 +168,13 @@
});
test('skips invalid locked versions', () async {
+ final server = await servePackages();
+
await populateCache({
'foo': ['1.2.2', '1.2.3']
- });
+ }, server);
// Run the server so that we know what URL to use in the system cache.
- await serveErrors();
+ server.serveErrors();
await d.hostedCache([
d.dir('foo-1.2.3', [d.file('pubspec.yaml', '{')])
diff --git a/test/hosted/remove_removed_dependency_test.dart b/test/hosted/remove_removed_dependency_test.dart
index d326384..bb2e091 100644
--- a/test/hosted/remove_removed_dependency_test.dart
+++ b/test/hosted/remove_removed_dependency_test.dart
@@ -10,10 +10,9 @@
void main() {
forBothPubGetAndUpgrade((command) {
test("removes a dependency that's removed from the pubspec", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('bar', '1.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('bar', '1.0.0');
await d.appDir({'foo': 'any', 'bar': 'any'}).create();
diff --git a/test/hosted/remove_removed_transitive_dependency_test.dart b/test/hosted/remove_removed_transitive_dependency_test.dart
index 50702d7..ac3a452 100644
--- a/test/hosted/remove_removed_transitive_dependency_test.dart
+++ b/test/hosted/remove_removed_transitive_dependency_test.dart
@@ -12,13 +12,11 @@
test(
"removes a transitive dependency that's no longer depended "
'on', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'shared_dep': 'any'});
- builder.serve('bar', '1.0.0',
- deps: {'shared_dep': 'any', 'bar_dep': 'any'});
- builder.serve('shared_dep', '1.0.0');
- builder.serve('bar_dep', '1.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'shared_dep': 'any'})
+ ..serve('bar', '1.0.0', deps: {'shared_dep': 'any', 'bar_dep': 'any'})
+ ..serve('shared_dep', '1.0.0')
+ ..serve('bar_dep', '1.0.0');
await d.appDir({'foo': 'any', 'bar': 'any'}).create();
diff --git a/test/hosted/short_syntax_test.dart b/test/hosted/short_syntax_test.dart
index 7581e34..5d4cf28 100644
--- a/test/hosted/short_syntax_test.dart
+++ b/test/hosted/short_syntax_test.dart
@@ -12,10 +12,12 @@
import '../test_pub.dart';
void main() {
- setUp(() => servePackages((b) => b.serve('foo', '1.2.3', pubspec: {
- 'environment': {'sdk': '^2.0.0'}
- })));
-
+ setUp(() async {
+ final server = await servePackages();
+ server.serve('foo', '1.2.3', pubspec: {
+ 'environment': {'sdk': '^2.0.0'}
+ });
+ });
forBothPubGetAndUpgrade((command) {
Future<void> testWith(dynamic dependency) async {
await d.dir(appPath, [
@@ -42,19 +44,19 @@
'source': 'hosted',
'description': {
'name': 'foo',
- 'url': globalPackageServer.url,
+ 'url': globalServer.url,
},
'version': '1.2.3',
});
}
test('supports hosted: <url> syntax', () async {
- return testWith({'hosted': globalPackageServer.url});
+ return testWith({'hosted': globalServer.url});
});
test('supports hosted map without name', () {
return testWith({
- 'hosted': {'url': globalPackageServer.url},
+ 'hosted': {'url': globalServer.url},
});
});
@@ -80,8 +82,8 @@
await File(p.join(d.sandbox, appPath, 'pubspec.lock')).readAsString(),
);
- expect(lockFile['packages']['foo']['description']['url'],
- globalPackageServer.url);
+ expect(
+ lockFile['packages']['foo']['description']['url'], globalServer.url);
});
});
}
diff --git a/test/hosted/version_negotiation_test.dart b/test/hosted/version_negotiation_test.dart
index bed8e2d..44dbe7a 100644
--- a/test/hosted/version_negotiation_test.dart
+++ b/test/hosted/version_negotiation_test.dart
@@ -16,11 +16,11 @@
await d.appDir({
'foo': {
- 'hosted': {'name': 'foo', 'url': globalPackageServer.url}
+ 'hosted': {'name': 'foo', 'url': globalServer.url}
}
}).create();
- globalPackageServer.expect('GET', '/api/packages/foo', (request) {
+ globalServer.expect('GET', '/api/packages/foo', (request) {
expect(
request.headers['accept'], equals('application/vnd.pub.v2+json'));
return shelf.Response(404);
@@ -35,13 +35,13 @@
await d.appDir({
'foo': {
- 'hosted': {'name': 'foo', 'url': globalPackageServer.url}
+ 'hosted': {'name': 'foo', 'url': globalServer.url}
}
}).create();
var pub = await startPub(args: [command.name]);
- globalPackageServer.expect(
+ globalServer.expect(
'GET', '/api/packages/foo', (request) => shelf.Response(406));
await pub.shouldExit(1);
diff --git a/test/hosted/will_normalize_hosted_url_test.dart b/test/hosted/will_normalize_hosted_url_test.dart
index 08cf2b3..6cc3888 100644
--- a/test/hosted/will_normalize_hosted_url_test.dart
+++ b/test/hosted/will_normalize_hosted_url_test.dart
@@ -13,47 +13,50 @@
void main() {
forBothPubGetAndUpgrade((command) {
test('does not require slash on bare domain', () async {
- await servePackages((b) => b..serve('foo', '1.2.3'));
- // All the tests in this file assumes that [globalPackageServer.url]
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
+ // All the tests in this file assumes that [globalServer.url]
// will be on the form:
// http://localhost:<port>
// In particular, that it doesn't contain anything path segment.
- expect(Uri.parse(globalPackageServer.url).path, isEmpty);
+ expect(Uri.parse(globalServer.url).path, isEmpty);
await d.dir(appPath, [
d.appPubspec({
'foo': {
- 'hosted': {'name': 'foo', 'url': globalPackageServer.url},
+ 'hosted': {'name': 'foo', 'url': globalServer.url},
},
}),
]).create();
await pubCommand(
command,
- silent: contains('${globalPackageServer.url}/api/packages/foo'),
+ silent: contains('${globalServer.url}/api/packages/foo'),
);
});
test('normalizes extra slash', () async {
- await servePackages((b) => b..serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.dir(appPath, [
d.appPubspec({
'foo': {
- 'hosted': {'name': 'foo', 'url': globalPackageServer.url + '/'},
+ 'hosted': {'name': 'foo', 'url': globalServer.url + '/'},
},
}),
]).create();
await pubCommand(
command,
- silent: contains('${globalPackageServer.url}/api/packages/foo'),
+ silent: contains('${globalServer.url}/api/packages/foo'),
);
});
test('cannot normalize double slash', () async {
- await servePackages((b) => b..serve('foo', '1.2.3'));
- globalPackageServer.expect(
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
+ globalServer.expect(
'GET',
'//api/packages/foo',
(request) => Response.notFound(''),
@@ -62,15 +65,14 @@
await d.dir(appPath, [
d.appPubspec({
'foo': {
- 'hosted': {'name': 'foo', 'url': globalPackageServer.url + '//'},
+ 'hosted': {'name': 'foo', 'url': globalServer.url + '//'},
},
}),
]).create();
await pubCommand(
command,
- error: contains(
- 'could not find package foo at ${globalPackageServer.url}//'),
+ error: contains('could not find package foo at ${globalServer.url}//'),
exitCode: exit_codes.UNAVAILABLE,
);
});
@@ -80,27 +82,31 @@
/// This is a bit of a hack, to easily test if hosted pub URLs with a path
/// segment works and if the slashes are normalized.
void _proxyMyFolderToRoot() {
- globalPackageServer.extraHandlers[RegExp('/my-folder/.*')] = (r) async {
- if (r.method != 'GET' && r.method != 'HEAD') {
- return Response.forbidden(null);
- }
- final path = r.requestedUri.path.substring('/my-folder/'.length);
- final res = await http.get(
- Uri.parse(globalPackageServer.url + '/$path'),
- );
- return Response(res.statusCode, body: res.bodyBytes, headers: {
- 'content-type': res.headers['content-type']!,
- });
- };
+ globalServer.handle(
+ RegExp('/my-folder/.*'),
+ (r) async {
+ if (r.method != 'GET' && r.method != 'HEAD') {
+ return Response.forbidden(null);
+ }
+ final path = r.requestedUri.path.substring('/my-folder/'.length);
+ final res = await http.get(
+ Uri.parse(globalServer.url + '/$path'),
+ );
+ return Response(res.statusCode, body: res.bodyBytes, headers: {
+ 'Content-Type': res.headers['content-type']!,
+ });
+ },
+ );
}
test('will use normalized url with path', () async {
- await servePackages((b) => b..serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
_proxyMyFolderToRoot();
// testing with a normalized URL
- final testUrl = globalPackageServer.url + '/my-folder/';
- final normalizedUrl = globalPackageServer.url + '/my-folder/';
+ final testUrl = globalServer.url + '/my-folder/';
+ final normalizedUrl = globalServer.url + '/my-folder/';
await d.dir(appPath, [
d.appPubspec({
@@ -118,12 +124,13 @@
});
test('will normalize url with path by adding slash', () async {
- await servePackages((b) => b..serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
_proxyMyFolderToRoot();
// Testing with a URL that is missing the slash.
- final testUrl = globalPackageServer.url + '/my-folder';
- final normalizedUrl = globalPackageServer.url + '/my-folder/';
+ final testUrl = globalServer.url + '/my-folder';
+ final normalizedUrl = globalServer.url + '/my-folder/';
await d.dir(appPath, [
d.appPubspec({
diff --git a/test/lish/archives_and_uploads_a_package_test.dart b/test/lish/archives_and_uploads_a_package_test.dart
index 8ce491f..5bbac54 100644
--- a/test/lish/archives_and_uploads_a_package_test.dart
+++ b/test/lish/archives_and_uploads_a_package_test.dart
@@ -19,14 +19,14 @@
test('archives and uploads a package', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- handleUploadForm(globalPackageServer);
- handleUpload(globalPackageServer);
+ handleUploadForm(globalServer);
+ handleUpload(globalServer);
- globalPackageServer.expect('GET', '/create', (request) {
+ globalServer.expect('GET', '/create', (request) {
return shelf.Response.ok(jsonEncode({
'success': {'message': 'Package test_pkg 1.0.0 uploaded!'}
}));
@@ -53,14 +53,14 @@
await d.dir(p.join(appPath, 'empty')).create();
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- handleUploadForm(globalPackageServer);
- handleUpload(globalPackageServer);
+ handleUploadForm(globalServer);
+ handleUpload(globalServer);
- globalPackageServer.expect('GET', '/create', (request) {
+ globalServer.expect('GET', '/create', (request) {
return shelf.Response.ok(jsonEncode({
'success': {'message': 'Package test_pkg 1.0.0 uploaded!'}
}));
diff --git a/test/lish/cloud_storage_upload_doesnt_redirect_test.dart b/test/lish/cloud_storage_upload_doesnt_redirect_test.dart
index 242b2a9..0f792d5 100644
--- a/test/lish/cloud_storage_upload_doesnt_redirect_test.dart
+++ b/test/lish/cloud_storage_upload_doesnt_redirect_test.dart
@@ -14,13 +14,13 @@
test("cloud storage upload doesn't redirect", () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- handleUploadForm(globalPackageServer);
+ handleUploadForm(globalServer);
- globalPackageServer.expect('POST', '/upload', (request) async {
+ globalServer.expect('POST', '/upload', (request) async {
await request.read().drain();
return shelf.Response(200);
});
diff --git a/test/lish/cloud_storage_upload_provides_an_error_test.dart b/test/lish/cloud_storage_upload_provides_an_error_test.dart
index 048f10a..5dec03d 100644
--- a/test/lish/cloud_storage_upload_provides_an_error_test.dart
+++ b/test/lish/cloud_storage_upload_provides_an_error_test.dart
@@ -14,13 +14,13 @@
test('cloud storage upload provides an error', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- handleUploadForm(globalPackageServer);
+ handleUploadForm(globalServer);
- globalPackageServer.expect('POST', '/upload', (request) {
+ globalServer.expect('POST', '/upload', (request) {
return request.read().drain().then((_) {
return shelf.Response.notFound(
'<Error><Message>Your request sucked.</Message></Error>',
diff --git a/test/lish/does_not_include_dot_file.dart b/test/lish/does_not_include_dot_file.dart
index ecc07b8..cec8ab0 100644
--- a/test/lish/does_not_include_dot_file.dart
+++ b/test/lish/does_not_include_dot_file.dart
@@ -30,14 +30,14 @@
test('Check if package doesn\'t include dot-files', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- handleUploadForm(globalPackageServer);
- handleUpload(globalPackageServer);
+ handleUploadForm(globalServer);
+ handleUpload(globalServer);
- globalPackageServer.expect('GET', '/create', (request) {
+ globalServer.expect('GET', '/create', (request) {
return shelf.Response.ok(jsonEncode({
'success': {'message': 'Package test_pkg 1.0.0 uploaded!'}
}));
diff --git a/test/lish/force_does_not_publish_if_there_are_errors_test.dart b/test/lish/force_does_not_publish_if_there_are_errors_test.dart
index d9ddb39..481f627 100644
--- a/test/lish/force_does_not_publish_if_there_are_errors_test.dart
+++ b/test/lish/force_does_not_publish_if_there_are_errors_test.dart
@@ -21,7 +21,7 @@
]).create();
await servePackages();
- var pub = await startPublish(globalPackageServer, args: ['--force']);
+ var pub = await startPublish(globalServer, args: ['--force']);
await pub.shouldExit(exit_codes.DATA);
expect(
diff --git a/test/lish/force_publishes_if_tests_are_no_warnings_or_errors_test.dart b/test/lish/force_publishes_if_tests_are_no_warnings_or_errors_test.dart
index 8deb351..c5d8957 100644
--- a/test/lish/force_publishes_if_tests_are_no_warnings_or_errors_test.dart
+++ b/test/lish/force_publishes_if_tests_are_no_warnings_or_errors_test.dart
@@ -17,13 +17,13 @@
test('--force publishes if there are no warnings or errors', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer, args: ['--force']);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer, args: ['--force']);
- handleUploadForm(globalPackageServer);
- handleUpload(globalPackageServer);
+ handleUploadForm(globalServer);
+ handleUpload(globalServer);
- globalPackageServer.expect('GET', '/create', (request) {
+ globalServer.expect('GET', '/create', (request) {
return shelf.Response.ok(jsonEncode({
'success': {'message': 'Package test_pkg 1.0.0 uploaded!'}
}));
diff --git a/test/lish/force_publishes_if_there_are_warnings_test.dart b/test/lish/force_publishes_if_there_are_warnings_test.dart
index eb60965..9fb3d53 100644
--- a/test/lish/force_publishes_if_there_are_warnings_test.dart
+++ b/test/lish/force_publishes_if_there_are_warnings_test.dart
@@ -22,13 +22,13 @@
await d.dir(appPath, [d.pubspec(pkg)]).create();
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer, args: ['--force']);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer, args: ['--force']);
- handleUploadForm(globalPackageServer);
- handleUpload(globalPackageServer);
+ handleUploadForm(globalServer);
+ handleUpload(globalServer);
- globalPackageServer.expect('GET', '/create', (request) {
+ globalServer.expect('GET', '/create', (request) {
return shelf.Response.ok(jsonEncode({
'success': {'message': 'Package test_pkg 1.0.0 uploaded!'}
}));
diff --git a/test/lish/many_files_test.dart b/test/lish/many_files_test.dart
index 713d12d..36f4ed7 100644
--- a/test/lish/many_files_test.dart
+++ b/test/lish/many_files_test.dart
@@ -73,14 +73,14 @@
}
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- handleUploadForm(globalPackageServer);
- handleUpload(globalPackageServer);
+ handleUploadForm(globalServer);
+ handleUpload(globalServer);
- globalPackageServer.expect('GET', '/create', (request) {
+ globalServer.expect('GET', '/create', (request) {
return shelf.Response.ok(jsonEncode({
'success': {'message': 'Package test_pkg 1.0.0 uploaded!'}
}));
diff --git a/test/lish/package_creation_provides_a_malformed_error_test.dart b/test/lish/package_creation_provides_a_malformed_error_test.dart
index c1fc105..7ab0bcd 100644
--- a/test/lish/package_creation_provides_a_malformed_error_test.dart
+++ b/test/lish/package_creation_provides_a_malformed_error_test.dart
@@ -16,15 +16,15 @@
test('package creation provides a malformed error', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- handleUploadForm(globalPackageServer);
- handleUpload(globalPackageServer);
+ handleUploadForm(globalServer);
+ handleUpload(globalServer);
var body = {'error': 'Your package was too boring.'};
- globalPackageServer.expect('GET', '/create', (request) {
+ globalServer.expect('GET', '/create', (request) {
return shelf.Response.notFound(jsonEncode(body));
});
diff --git a/test/lish/package_creation_provides_a_malformed_success_test.dart b/test/lish/package_creation_provides_a_malformed_success_test.dart
index 997a61f..089d09e 100644
--- a/test/lish/package_creation_provides_a_malformed_success_test.dart
+++ b/test/lish/package_creation_provides_a_malformed_success_test.dart
@@ -16,15 +16,15 @@
test('package creation provides a malformed success', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- handleUploadForm(globalPackageServer);
- handleUpload(globalPackageServer);
+ handleUploadForm(globalServer);
+ handleUpload(globalServer);
var body = {'success': 'Your package was awesome.'};
- globalPackageServer.expect('GET', '/create', (request) {
+ globalServer.expect('GET', '/create', (request) {
return shelf.Response.ok(jsonEncode(body));
});
diff --git a/test/lish/package_creation_provides_an_error_test.dart b/test/lish/package_creation_provides_an_error_test.dart
index a4c5fd4..f5ff128 100644
--- a/test/lish/package_creation_provides_an_error_test.dart
+++ b/test/lish/package_creation_provides_an_error_test.dart
@@ -16,14 +16,14 @@
test('package creation provides an error', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- handleUploadForm(globalPackageServer);
- handleUpload(globalPackageServer);
+ handleUploadForm(globalServer);
+ handleUpload(globalServer);
- globalPackageServer.expect('GET', '/create', (request) {
+ globalServer.expect('GET', '/create', (request) {
return shelf.Response.notFound(jsonEncode({
'error': {'message': 'Your package was too boring.'}
}));
diff --git a/test/lish/package_creation_provides_invalid_json_test.dart b/test/lish/package_creation_provides_invalid_json_test.dart
index 9d845c4..2cd6212 100644
--- a/test/lish/package_creation_provides_invalid_json_test.dart
+++ b/test/lish/package_creation_provides_invalid_json_test.dart
@@ -14,14 +14,14 @@
test('package creation provides invalid JSON', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- handleUploadForm(globalPackageServer);
- handleUpload(globalPackageServer);
+ handleUploadForm(globalServer);
+ handleUpload(globalServer);
- globalPackageServer.expect('GET', '/create', (request) {
+ globalServer.expect('GET', '/create', (request) {
return shelf.Response.ok('{not json');
});
diff --git a/test/lish/package_validation_has_a_warning_and_continues_test.dart b/test/lish/package_validation_has_a_warning_and_continues_test.dart
index 7bfcb26..c39dbc4 100644
--- a/test/lish/package_validation_has_a_warning_and_continues_test.dart
+++ b/test/lish/package_validation_has_a_warning_and_continues_test.dart
@@ -22,13 +22,13 @@
await d.dir(appPath, [d.pubspec(pkg)]).create();
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
pub.stdin.writeln('y');
- handleUploadForm(globalPackageServer);
- handleUpload(globalPackageServer);
+ handleUploadForm(globalServer);
+ handleUpload(globalServer);
- globalPackageServer.expect('GET', '/create', (request) {
+ globalServer.expect('GET', '/create', (request) {
return shelf.Response.ok(jsonEncode({
'success': {'message': 'Package test_pkg 1.0.0 uploaded!'}
}));
diff --git a/test/lish/package_validation_has_a_warning_and_is_canceled_test.dart b/test/lish/package_validation_has_a_warning_and_is_canceled_test.dart
index ce82509..0d5a563 100644
--- a/test/lish/package_validation_has_a_warning_and_is_canceled_test.dart
+++ b/test/lish/package_validation_has_a_warning_and_is_canceled_test.dart
@@ -18,7 +18,7 @@
await d.dir(appPath, [d.pubspec(pkg)]).create();
await servePackages();
- var pub = await startPublish(globalPackageServer);
+ var pub = await startPublish(globalServer);
pub.stdin.writeln('n');
await pub.shouldExit(exit_codes.DATA);
diff --git a/test/lish/package_validation_has_an_error_test.dart b/test/lish/package_validation_has_an_error_test.dart
index 5cfb41a..14c83c0 100644
--- a/test/lish/package_validation_has_an_error_test.dart
+++ b/test/lish/package_validation_has_an_error_test.dart
@@ -21,7 +21,7 @@
]).create();
await servePackages();
- var pub = await startPublish(globalPackageServer);
+ var pub = await startPublish(globalServer);
await pub.shouldExit(exit_codes.DATA);
expect(
diff --git a/test/lish/preview_package_validation_has_a_warning_test.dart b/test/lish/preview_package_validation_has_a_warning_test.dart
index 86472db..69f59af 100644
--- a/test/lish/preview_package_validation_has_a_warning_test.dart
+++ b/test/lish/preview_package_validation_has_a_warning_test.dart
@@ -19,7 +19,7 @@
await d.dir(appPath, [d.pubspec(pkg)]).create();
await servePackages();
- var pub = await startPublish(globalPackageServer, args: ['--dry-run']);
+ var pub = await startPublish(globalServer, args: ['--dry-run']);
await pub.shouldExit(exit_codes.DATA);
expect(
diff --git a/test/lish/preview_package_validation_has_no_warnings_test.dart b/test/lish/preview_package_validation_has_no_warnings_test.dart
index c5b04e9..179c648 100644
--- a/test/lish/preview_package_validation_has_no_warnings_test.dart
+++ b/test/lish/preview_package_validation_has_no_warnings_test.dart
@@ -17,8 +17,8 @@
packageMap('test_pkg', '1.0.0', null, null, {'sdk': '>=1.8.0 <2.0.0'});
await d.dir(appPath, [d.pubspec(pkg)]).create();
- await servePackages((_) {});
- var pub = await startPublish(globalPackageServer, args: ['--dry-run']);
+ await servePackages();
+ var pub = await startPublish(globalServer, args: ['--dry-run']);
await pub.shouldExit(exit_codes.SUCCESS);
expect(pub.stderr, emitsThrough('Package has 0 warnings.'));
diff --git a/test/lish/server_arg_overrides_publish_to_url_test.dart b/test/lish/server_arg_overrides_publish_to_url_test.dart
index b2d4c14..1597146 100644
--- a/test/lish/server_arg_overrides_publish_to_url_test.dart
+++ b/test/lish/server_arg_overrides_publish_to_url_test.dart
@@ -13,16 +13,15 @@
test('an explicit --server argument overrides a "publish_to" url', () async {
// Create a real server that can reject requests because validators will
// try to ping it, and will use multiple retries when doing so.
- final packageServer = await DescriptorServer.start();
- final fakePackageServer = 'http://localhost:${packageServer.port}';
+ final packageServer = await startPackageServer();
var pkg = packageMap('test_pkg', '1.0.0');
pkg['publish_to'] = 'http://pubspec.com';
await d.dir(appPath, [d.pubspec(pkg)]).create();
await runPub(
- args: ['lish', '--dry-run', '--server', fakePackageServer],
- output: contains(fakePackageServer),
+ args: ['lish', '--dry-run', '--server', packageServer.url],
+ output: contains(packageServer.url),
exitCode: exit_codes.DATA);
await packageServer.close();
diff --git a/test/lish/upload_form_fields_has_a_non_string_value_test.dart b/test/lish/upload_form_fields_has_a_non_string_value_test.dart
index d26ac3e..290e807 100644
--- a/test/lish/upload_form_fields_has_a_non_string_value_test.dart
+++ b/test/lish/upload_form_fields_has_a_non_string_value_test.dart
@@ -14,9 +14,9 @@
setUp(d.validPackage.create);
test('upload form fields has a non-string value', () async {
- await servePackages((_) {});
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await servePackages();
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
@@ -24,7 +24,7 @@
'url': 'http://example.com/upload',
'fields': {'field': 12}
};
- handleUploadForm(globalPackageServer, body);
+ handleUploadForm(globalServer, body);
expect(pub.stderr, emits('Invalid server response:'));
expect(pub.stderr, emits(jsonEncode(body)));
await pub.shouldExit(1);
diff --git a/test/lish/upload_form_fields_is_not_a_map_test.dart b/test/lish/upload_form_fields_is_not_a_map_test.dart
index c21183a..ed87da6 100644
--- a/test/lish/upload_form_fields_is_not_a_map_test.dart
+++ b/test/lish/upload_form_fields_is_not_a_map_test.dart
@@ -15,13 +15,13 @@
test('upload form fields is not a map', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
var body = {'url': 'http://example.com/upload', 'fields': 12};
- handleUploadForm(globalPackageServer, body);
+ handleUploadForm(globalServer, body);
expect(pub.stderr, emits('Invalid server response:'));
expect(pub.stderr, emits(jsonEncode(body)));
await pub.shouldExit(1);
diff --git a/test/lish/upload_form_is_missing_fields_test.dart b/test/lish/upload_form_is_missing_fields_test.dart
index 24453fb..79b6e0b 100644
--- a/test/lish/upload_form_is_missing_fields_test.dart
+++ b/test/lish/upload_form_is_missing_fields_test.dart
@@ -15,13 +15,13 @@
test('upload form is missing fields', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
var body = {'url': 'http://example.com/upload'};
- handleUploadForm(globalPackageServer, body);
+ handleUploadForm(globalServer, body);
expect(pub.stderr, emits('Invalid server response:'));
expect(pub.stderr, emits(jsonEncode(body)));
await pub.shouldExit(1);
diff --git a/test/lish/upload_form_is_missing_url_test.dart b/test/lish/upload_form_is_missing_url_test.dart
index 7861cf1..e3986cb 100644
--- a/test/lish/upload_form_is_missing_url_test.dart
+++ b/test/lish/upload_form_is_missing_url_test.dart
@@ -15,8 +15,8 @@
test('upload form is missing url', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
@@ -24,7 +24,7 @@
'fields': {'field1': 'value1', 'field2': 'value2'}
};
- handleUploadForm(globalPackageServer, body);
+ handleUploadForm(globalServer, body);
expect(pub.stderr, emits('Invalid server response:'));
expect(pub.stderr, emits(jsonEncode(body)));
await pub.shouldExit(1);
diff --git a/test/lish/upload_form_provides_an_error_test.dart b/test/lish/upload_form_provides_an_error_test.dart
index 767ba10..35932b8 100644
--- a/test/lish/upload_form_provides_an_error_test.dart
+++ b/test/lish/upload_form_provides_an_error_test.dart
@@ -14,15 +14,13 @@
setUp(d.validPackage.create);
test('upload form provides an error', () async {
- await servePackages((_) {});
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await servePackages();
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- globalPackageServer.extraHandlers['/api/packages/versions/new'] =
- expectAsync1((request) {
- expect(request.method, 'GET');
+ globalServer.expect('GET', '/api/packages/versions/new', (request) async {
return shelf.Response.notFound(jsonEncode({
'error': {'message': 'your request sucked'}
}));
diff --git a/test/lish/upload_form_provides_invalid_json_test.dart b/test/lish/upload_form_provides_invalid_json_test.dart
index 6e02185..a046755 100644
--- a/test/lish/upload_form_provides_invalid_json_test.dart
+++ b/test/lish/upload_form_provides_invalid_json_test.dart
@@ -13,12 +13,12 @@
test('upload form provides invalid JSON', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- globalPackageServer.expect('GET', '/api/packages/versions/new',
+ globalServer.expect('GET', '/api/packages/versions/new',
(request) => shelf.Response.ok('{not json'));
expect(
diff --git a/test/lish/upload_form_url_is_not_a_string_test.dart b/test/lish/upload_form_url_is_not_a_string_test.dart
index cc9b14f..784289f 100644
--- a/test/lish/upload_form_url_is_not_a_string_test.dart
+++ b/test/lish/upload_form_url_is_not_a_string_test.dart
@@ -15,8 +15,8 @@
test('upload form url is not a string', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
@@ -25,7 +25,7 @@
'fields': {'field1': 'value1', 'field2': 'value2'}
};
- handleUploadForm(globalPackageServer, body);
+ handleUploadForm(globalServer, body);
expect(pub.stderr, emits('Invalid server response:'));
expect(pub.stderr, emits(jsonEncode(body)));
await pub.shouldExit(1);
diff --git a/test/list_package_dirs/lists_dependency_directories_test.dart b/test/list_package_dirs/lists_dependency_directories_test.dart
index af019a6..2cd9664 100644
--- a/test/list_package_dirs/lists_dependency_directories_test.dart
+++ b/test/list_package_dirs/lists_dependency_directories_test.dart
@@ -12,7 +12,8 @@
void main() {
test('prints the local paths to all packages in the lockfile', () async {
- await servePackages((builder) => builder.serve('bar', '1.0.0'));
+ final server = await servePackages()
+ ..serve('bar', '1.0.0');
await d
.dir('foo', [d.libDir('foo'), d.libPubspec('foo', '1.0.0')]).create();
@@ -37,7 +38,7 @@
'packages': {
'foo': path.join(d.sandbox, 'foo', 'lib'),
'bar': path.join(d.sandbox, cachePath, 'hosted',
- 'localhost%58${globalServer!.port}', 'bar-1.0.0', 'lib'),
+ 'localhost%58${server.port}', 'bar-1.0.0', 'lib'),
'myapp': canonicalize(path.join(d.sandbox, appPath, 'lib'))
},
'input_files': [
diff --git a/test/must_pub_get_test.dart b/test/must_pub_get_test.dart
index 6ead4da..dfc09d7 100644
--- a/test/must_pub_get_test.dart
+++ b/test/must_pub_get_test.dart
@@ -14,12 +14,14 @@
import 'descriptor.dart' as d;
import 'test_pub.dart';
+late PackageServer server;
+
void main() {
setUp(() async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- });
+ server = await servePackages();
+
+ server.serve('foo', '1.0.0');
+ server.serve('foo', '2.0.0');
await d.dir(appPath, [
d.appPubspec(),
@@ -332,10 +334,8 @@
setUp(() async {
// Avoid using a path dependency because it triggers the full validation
// logic. We want to be sure SDK-validation works without that logic.
- globalPackageServer.add((builder) {
- builder.serve('foo', '3.0.0', pubspec: {
- 'environment': {'sdk': '>=1.0.0 <2.0.0'}
- });
+ server.serve('foo', '3.0.0', pubspec: {
+ 'environment': {'sdk': '>=1.0.0 <2.0.0'}
});
await d.dir(appPath, [
@@ -360,10 +360,8 @@
'current Flutter SDK', () async {
// Avoid using a path dependency because it triggers the full validation
// logic. We want to be sure SDK-validation works without that logic.
- globalPackageServer.add((builder) {
- builder.serve('foo', '3.0.0', pubspec: {
- 'environment': {'flutter': '>=1.0.0 <2.0.0'}
- });
+ server.serve('foo', '3.0.0', pubspec: {
+ 'environment': {'flutter': '>=1.0.0 <2.0.0'}
});
await d.dir('flutter', [d.file('version', '1.2.3')]).create();
@@ -522,10 +520,8 @@
group("an overridden dependency's SDK constraint is unmatched", () {
setUp(() async {
- globalPackageServer.add((builder) {
- builder.serve('bar', '1.0.0', pubspec: {
- 'environment': {'sdk': '0.0.0-fake'}
- });
+ server.serve('bar', '1.0.0', pubspec: {
+ 'environment': {'sdk': '0.0.0-fake'}
});
await d.dir(appPath, [
@@ -547,10 +543,8 @@
() async {
// Avoid using a path dependency because it triggers the full validation
// logic. We want to be sure SDK-validation works without that logic.
- globalPackageServer.add((builder) {
- builder.serve('foo', '3.0.0', pubspec: {
- 'environment': {'flutter': '>=1.0.0 <2.0.0'}
- });
+ server.serve('foo', '3.0.0', pubspec: {
+ 'environment': {'flutter': '>=1.0.0 <2.0.0'}
});
await d.dir('flutter', [d.file('version', '1.2.3')]).create();
diff --git a/test/oauth2/logout_test.dart b/test/oauth2/logout_test.dart
index 9f01187..a12a652 100644
--- a/test/oauth2/logout_test.dart
+++ b/test/oauth2/logout_test.dart
@@ -11,7 +11,7 @@
test('with an existing credentials file, deletes it.', () async {
await servePackages();
await d
- .credentialsFile(globalPackageServer, 'access token',
+ .credentialsFile(globalServer, 'access token',
refreshToken: 'refresh token',
expiration: DateTime.now().add(Duration(hours: 1)))
.create();
@@ -28,7 +28,7 @@
await servePackages();
await d
.credentialsFile(
- globalPackageServer,
+ globalServer,
'access token',
refreshToken: 'refresh token',
expiration: DateTime.now().add(Duration(hours: 1)),
@@ -37,7 +37,7 @@
await d
.legacyCredentialsFile(
- globalPackageServer,
+ globalServer,
'access token',
refreshToken: 'refresh token',
expiration: DateTime.now().add(Duration(hours: 1)),
diff --git a/test/oauth2/with_a_malformed_credentials_authenticates_again_test.dart b/test/oauth2/with_a_malformed_credentials_authenticates_again_test.dart
index 5d462b1..75b47ab 100644
--- a/test/oauth2/with_a_malformed_credentials_authenticates_again_test.dart
+++ b/test/oauth2/with_a_malformed_credentials_authenticates_again_test.dart
@@ -19,11 +19,11 @@
await d.dir(
configPath, [d.file('pub-credentials.json', '{bad json')]).create();
- var pub = await startPublish(globalPackageServer);
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- await authorizePub(pub, globalPackageServer, 'new access token');
+ await authorizePub(pub, globalServer, 'new access token');
- globalPackageServer.expect('GET', '/api/packages/versions/new', (request) {
+ globalServer.expect('GET', '/api/packages/versions/new', (request) {
expect(request.headers,
containsPair('authorization', 'Bearer new access token'));
@@ -34,6 +34,6 @@
// do so rather than killing it so it'll write out the credentials file.
await pub.shouldExit(1);
- await d.credentialsFile(globalPackageServer, 'new access token').validate();
+ await d.credentialsFile(globalServer, 'new access token').validate();
});
}
diff --git a/test/oauth2/with_a_pre_existing_credentials_does_not_authenticate_test.dart b/test/oauth2/with_a_pre_existing_credentials_does_not_authenticate_test.dart
index 4994503..3c22994 100644
--- a/test/oauth2/with_a_pre_existing_credentials_does_not_authenticate_test.dart
+++ b/test/oauth2/with_a_pre_existing_credentials_does_not_authenticate_test.dart
@@ -12,8 +12,8 @@
await d.validPackage.create();
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
diff --git a/test/oauth2/with_a_server_rejected_refresh_token_authenticates_again_test.dart b/test/oauth2/with_a_server_rejected_refresh_token_authenticates_again_test.dart
index c8b56c3..624f427 100644
--- a/test/oauth2/with_a_server_rejected_refresh_token_authenticates_again_test.dart
+++ b/test/oauth2/with_a_server_rejected_refresh_token_authenticates_again_test.dart
@@ -21,14 +21,14 @@
await servePackages();
await d
- .credentialsFile(globalPackageServer, 'access token',
+ .credentialsFile(globalServer, 'access token',
refreshToken: 'bad refresh token',
expiration: DateTime.now().subtract(Duration(hours: 1)))
.create();
- var pub = await startPublish(globalPackageServer);
+ var pub = await startPublish(globalServer);
- globalPackageServer.expect('POST', '/token', (request) {
+ globalServer.expect('POST', '/token', (request) {
return request.read().drain().then((_) {
return shelf.Response(400,
body: jsonEncode({'error': 'invalid_request'}),
@@ -39,11 +39,10 @@
await confirmPublish(pub);
await expectLater(pub.stdout, emits(startsWith('Uploading...')));
- await authorizePub(pub, globalPackageServer, 'new access token');
+ await authorizePub(pub, globalServer, 'new access token');
var done = Completer();
- globalPackageServer.expect('GET', '/api/packages/versions/new',
- (request) async {
+ globalServer.expect('GET', '/api/packages/versions/new', (request) async {
expect(request.headers,
containsPair('authorization', 'Bearer new access token'));
diff --git a/test/oauth2/with_an_expired_credentials_refreshes_and_saves_test.dart b/test/oauth2/with_an_expired_credentials_refreshes_and_saves_test.dart
index de2e53c..7fbbb9f 100644
--- a/test/oauth2/with_an_expired_credentials_refreshes_and_saves_test.dart
+++ b/test/oauth2/with_an_expired_credentials_refreshes_and_saves_test.dart
@@ -18,15 +18,15 @@
await servePackages();
await d
- .credentialsFile(globalPackageServer, 'access token',
+ .credentialsFile(globalServer, 'access token',
refreshToken: 'refresh token',
expiration: DateTime.now().subtract(Duration(hours: 1)))
.create();
- var pub = await startPublish(globalPackageServer);
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- globalPackageServer.expect('POST', '/token', (request) {
+ globalServer.expect('POST', '/token', (request) {
return request.readAsString().then((body) {
expect(
body, matches(RegExp(r'(^|&)refresh_token=refresh\+token(&|$)')));
@@ -38,7 +38,7 @@
});
});
- globalPackageServer.expect('GET', '/api/packages/versions/new', (request) {
+ globalServer.expect('GET', '/api/packages/versions/new', (request) {
expect(request.headers,
containsPair('authorization', 'Bearer new access token'));
@@ -48,7 +48,7 @@
await pub.shouldExit();
await d
- .credentialsFile(globalPackageServer, 'new access token',
+ .credentialsFile(globalServer, 'new access token',
refreshToken: 'refresh token')
.validate();
});
diff --git a/test/oauth2/with_an_expired_credentials_without_a_refresh_token_authenticates_again_test.dart b/test/oauth2/with_an_expired_credentials_without_a_refresh_token_authenticates_again_test.dart
index 14009a7..803c529 100644
--- a/test/oauth2/with_an_expired_credentials_without_a_refresh_token_authenticates_again_test.dart
+++ b/test/oauth2/with_an_expired_credentials_without_a_refresh_token_authenticates_again_test.dart
@@ -17,20 +17,20 @@
await servePackages();
await d
- .credentialsFile(globalPackageServer, 'access token',
+ .credentialsFile(globalServer, 'access token',
expiration: DateTime.now().subtract(Duration(hours: 1)))
.create();
- var pub = await startPublish(globalPackageServer);
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
await expectLater(
pub.stderr,
emits("Pub's authorization to upload packages has expired and "
"can't be automatically refreshed."));
- await authorizePub(pub, globalPackageServer, 'new access token');
+ await authorizePub(pub, globalServer, 'new access token');
- globalPackageServer.expect('GET', '/api/packages/versions/new', (request) {
+ globalServer.expect('GET', '/api/packages/versions/new', (request) {
expect(request.headers,
containsPair('authorization', 'Bearer new access token'));
@@ -41,6 +41,6 @@
// do so rather than killing it so it'll write out the credentials file.
await pub.shouldExit(1);
- await d.credentialsFile(globalPackageServer, 'new access token').validate();
+ await d.credentialsFile(globalServer, 'new access token').validate();
});
}
diff --git a/test/oauth2/with_no_credentials_authenticates_and_saves_credentials_test.dart b/test/oauth2/with_no_credentials_authenticates_and_saves_credentials_test.dart
index e1dae14..961a465 100644
--- a/test/oauth2/with_no_credentials_authenticates_and_saves_credentials_test.dart
+++ b/test/oauth2/with_no_credentials_authenticates_and_saves_credentials_test.dart
@@ -16,11 +16,11 @@
await d.validPackage.create();
await servePackages();
- var pub = await startPublish(globalPackageServer);
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- await authorizePub(pub, globalPackageServer);
+ await authorizePub(pub, globalServer);
- globalPackageServer.expect('GET', '/api/packages/versions/new', (request) {
+ globalServer.expect('GET', '/api/packages/versions/new', (request) {
expect(request.headers,
containsPair('authorization', 'Bearer access token'));
@@ -31,6 +31,6 @@
// do so rather than killing it so it'll write out the credentials file.
await pub.shouldExit(1);
- await d.credentialsFile(globalPackageServer, 'access token').validate();
+ await d.credentialsFile(globalServer, 'access token').validate();
});
}
diff --git a/test/oauth2/with_server_rejected_credentials_authenticates_again_test.dart b/test/oauth2/with_server_rejected_credentials_authenticates_again_test.dart
index 136342f..2e3b62f 100644
--- a/test/oauth2/with_server_rejected_credentials_authenticates_again_test.dart
+++ b/test/oauth2/with_server_rejected_credentials_authenticates_again_test.dart
@@ -16,12 +16,12 @@
'credentials.json', () async {
await d.validPackage.create();
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPublish(globalPackageServer);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPublish(globalServer);
await confirmPublish(pub);
- globalPackageServer.expect('GET', '/api/packages/versions/new', (request) {
+ globalServer.expect('GET', '/api/packages/versions/new', (request) {
return shelf.Response(401,
body: jsonEncode({
'error': {'message': 'your token sucks'}
diff --git a/test/outdated/outdated_test.dart b/test/outdated/outdated_test.dart
index 763f304..31113c7 100644
--- a/test/outdated/outdated_test.dart
+++ b/test/outdated/outdated_test.dart
@@ -45,10 +45,10 @@
testWithGolden('no lockfile', (ctx) async {
await d.appDir({'foo': '^1.0.0', 'bar': '^1.0.0'}).create();
- await servePackages((builder) => builder
+ await servePackages()
..serve('foo', '1.2.3')
..serve('bar', '1.2.3')
- ..serve('bar', '2.0.0'));
+ ..serve('bar', '2.0.0');
await ctx.runOutdatedTests();
});
@@ -61,7 +61,8 @@
});
testWithGolden('newer versions available', (ctx) async {
- await servePackages((builder) => builder
+ final builder = await servePackages();
+ builder
..serve('foo', '1.2.3', deps: {'transitive': '^1.0.0'})
..serve('bar', '1.0.0')
..serve('builder', '1.2.3', deps: {
@@ -69,7 +70,7 @@
'dev_trans': '^1.0.0',
})
..serve('transitive', '1.2.3')
- ..serve('dev_trans', '1.0.0'));
+ ..serve('dev_trans', '1.0.0');
await d.dir('local_package', [
d.libDir('local_package'),
@@ -88,7 +89,7 @@
})
]).create();
await pubGet();
- globalPackageServer.add((builder) => builder
+ builder
..serve('foo', '1.3.0', deps: {'transitive': '>=1.0.0<3.0.0'})
..serve('foo', '2.0.0',
deps: {'transitive': '>=1.0.0<3.0.0', 'transitive2': '^1.0.0'})
@@ -104,15 +105,13 @@
..serve('transitive', '2.0.0')
..serve('transitive2', '1.0.0')
..serve('transitive3', '1.0.0')
- ..serve('dev_trans', '2.0.0'));
-
+ ..serve('dev_trans', '2.0.0');
await ctx.runOutdatedTests();
});
testWithGolden('circular dependency on root', (ctx) async {
- await servePackages(
- (builder) => builder..serve('foo', '1.2.3', deps: {'app': '^1.0.0'}),
- );
+ final server = await servePackages();
+ server.serve('foo', '1.2.3', deps: {'app': '^1.0.0'});
await d.dir(appPath, [
d.pubspec({
@@ -126,10 +125,7 @@
await pubGet();
- globalPackageServer.add(
- (builder) => builder..serve('foo', '1.3.0', deps: {'app': '^1.0.1'}),
- );
-
+ server.serve('foo', '1.3.0', deps: {'app': '^1.0.1'});
await ctx.runOutdatedTests();
});
@@ -145,11 +141,11 @@
})
]).create();
- await servePackages((builder) => builder
+ await servePackages()
..serve('foo', '1.0.0', deps: {'bar': '^1.0.0'})
..serve('bar', '1.0.0', deps: {'foo': '^1.0.0'})
..serve('foo', '2.0.0', deps: {'bar': '^1.0.0'})
- ..serve('bar', '2.0.0', deps: {'foo': '^1.0.0'}));
+ ..serve('bar', '2.0.0', deps: {'foo': '^1.0.0'});
await pubGet();
await ctx.runOutdatedTests();
@@ -172,62 +168,60 @@
}),
]).create();
- await servePackages(
- (builder) => builder
- ..serve('foo', '1.0.0', deps: {
- 'bar': '^1.0.0'
- }, pubspec: {
- 'environment': {'sdk': '>=2.9.0 < 3.0.0'}
- })
- ..serve('bar', '1.0.0', pubspec: {
- 'environment': {'sdk': '>=2.9.0 < 3.0.0'}
- })
- ..serve('foo', '2.0.0-nullsafety.0', deps: {
- 'bar': '^2.0.0'
- }, pubspec: {
- 'environment': {'sdk': '>=2.12.0 < 3.0.0'}
- })
- ..serve('foo', '2.0.0', deps: {
- 'bar': '^1.0.0'
- }, pubspec: {
- 'environment': {'sdk': '>=2.12.0 < 3.0.0'}
- })
- ..serve('bar', '2.0.0', pubspec: {
- 'environment': {'sdk': '>=2.13.0 < 3.0.0'}
- })
- ..serve('file_opts_out', '1.0.0', pubspec: {
- 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
- }, contents: [
- d.dir('lib', [d.file('main.dart', '// @dart = 2.9\n')])
- ])
- ..serve('file_opts_out', '2.0.0', pubspec: {
- 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
- })
- ..serve('fails_analysis', '1.0.0', pubspec: {
- 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
- }, contents: [
- d.dir('lib', [d.file('main.dart', 'syntax error\n')])
- ])
- ..serve('fails_analysis', '2.0.0', pubspec: {
- 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
- })
- ..serve('file_in_dependency_opts_out', '1.0.0', deps: {
- 'file_opts_out': '^1.0.0'
- }, pubspec: {
- 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
- })
- ..serve('file_in_dependency_opts_out', '2.0.0', pubspec: {
- 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
- })
- ..serve('fails_analysis_in_dependency', '1.0.0', deps: {
- 'fails_analysis': '^1.0.0'
- }, pubspec: {
- 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
- })
- ..serve('fails_analysis_in_dependency', '2.0.0', pubspec: {
- 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
- }),
- );
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {
+ 'bar': '^1.0.0'
+ }, pubspec: {
+ 'environment': {'sdk': '>=2.9.0 < 3.0.0'}
+ })
+ ..serve('bar', '1.0.0', pubspec: {
+ 'environment': {'sdk': '>=2.9.0 < 3.0.0'}
+ })
+ ..serve('foo', '2.0.0-nullsafety.0', deps: {
+ 'bar': '^2.0.0'
+ }, pubspec: {
+ 'environment': {'sdk': '>=2.12.0 < 3.0.0'}
+ })
+ ..serve('foo', '2.0.0', deps: {
+ 'bar': '^1.0.0'
+ }, pubspec: {
+ 'environment': {'sdk': '>=2.12.0 < 3.0.0'}
+ })
+ ..serve('bar', '2.0.0', pubspec: {
+ 'environment': {'sdk': '>=2.13.0 < 3.0.0'}
+ })
+ ..serve('file_opts_out', '1.0.0', pubspec: {
+ 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
+ }, contents: [
+ d.dir('lib', [d.file('main.dart', '// @dart = 2.9\n')])
+ ])
+ ..serve('file_opts_out', '2.0.0', pubspec: {
+ 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
+ })
+ ..serve('fails_analysis', '1.0.0', pubspec: {
+ 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
+ }, contents: [
+ d.dir('lib', [d.file('main.dart', 'syntax error\n')])
+ ])
+ ..serve('fails_analysis', '2.0.0', pubspec: {
+ 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
+ })
+ ..serve('file_in_dependency_opts_out', '1.0.0', deps: {
+ 'file_opts_out': '^1.0.0'
+ }, pubspec: {
+ 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
+ })
+ ..serve('file_in_dependency_opts_out', '2.0.0', pubspec: {
+ 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
+ })
+ ..serve('fails_analysis_in_dependency', '1.0.0', deps: {
+ 'fails_analysis': '^1.0.0'
+ }, pubspec: {
+ 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
+ })
+ ..serve('fails_analysis_in_dependency', '2.0.0', pubspec: {
+ 'environment': {'sdk': '>=2.12.0 < 3.0.0'},
+ });
await pubGet(environment: {'_PUB_TEST_SDK_VERSION': '2.13.0'});
await ctx.runOutdatedTests(environment: {
@@ -236,7 +230,7 @@
});
testWithGolden('null-safety no resolution', (ctx) async {
- await servePackages((builder) => builder
+ await servePackages()
..serve('foo', '1.0.0', pubspec: {
'environment': {'sdk': '>=2.9.0 < 3.0.0'}
})
@@ -252,7 +246,7 @@
'foo': '^1.0.0'
}, pubspec: {
'environment': {'sdk': '>=2.12.0 < 3.0.0'}
- }));
+ });
await d.dir(appPath, [
d.pubspec({
@@ -274,7 +268,7 @@
});
testWithGolden('null-safety already migrated', (ctx) async {
- await servePackages((builder) => builder
+ await servePackages()
..serve('foo', '1.0.0', pubspec: {
'environment': {'sdk': '>=2.9.0 < 3.0.0'}
})
@@ -291,7 +285,7 @@
})
..serve('devTransitive', '1.0.0', pubspec: {
'environment': {'sdk': '>=2.9.0 < 3.0.0'}
- }));
+ });
await d.dir(appPath, [
d.pubspec({
@@ -316,15 +310,13 @@
testWithGolden('overridden dependencies', (ctx) async {
ensureGit();
- await servePackages(
- (builder) => builder
- ..serve('foo', '1.0.0')
- ..serve('foo', '2.0.0', deps: {'bar': '^1.0.0'})
- ..serve('bar', '1.0.0')
- ..serve('bar', '2.0.0')
- ..serve('baz', '1.0.0')
- ..serve('baz', '2.0.0'),
- );
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0', deps: {'bar': '^1.0.0'})
+ ..serve('bar', '1.0.0')
+ ..serve('bar', '2.0.0')
+ ..serve('baz', '1.0.0')
+ ..serve('baz', '2.0.0');
await d.git('foo.git', [
d.libPubspec('foo', '1.0.1'),
@@ -360,13 +352,11 @@
testWithGolden('overridden dependencies - no resolution', (ctx) async {
ensureGit();
- await servePackages(
- (builder) => builder
- ..serve('foo', '1.0.0', deps: {'bar': '^2.0.0'})
- ..serve('foo', '2.0.0', deps: {'bar': '^1.0.0'})
- ..serve('bar', '1.0.0', deps: {'foo': '^1.0.0'})
- ..serve('bar', '2.0.0', deps: {'foo': '^2.0.0'}),
- );
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': '^2.0.0'})
+ ..serve('foo', '2.0.0', deps: {'bar': '^1.0.0'})
+ ..serve('bar', '1.0.0', deps: {'foo': '^1.0.0'})
+ ..serve('bar', '2.0.0', deps: {'foo': '^2.0.0'});
await d.dir(appPath, [
d.pubspec({
@@ -391,7 +381,7 @@
testWithGolden(
'latest version reported while locked on a prerelease can be a prerelease',
(ctx) async {
- await servePackages((builder) => builder
+ await servePackages()
..serve('foo', '0.9.0')
..serve('foo', '1.0.0-dev.1')
..serve('foo', '1.0.0-dev.2')
@@ -400,7 +390,7 @@
..serve('bar', '1.0.0-dev.2')
..serve('mop', '0.10.0-dev')
..serve('mop', '0.10.0')
- ..serve('mop', '1.0.0-dev'));
+ ..serve('mop', '1.0.0-dev');
await d.dir(appPath, [
d.pubspec({
'name': 'app',
@@ -419,7 +409,7 @@
});
testWithGolden('Handles SDK dependencies', (ctx) async {
- await servePackages((builder) => builder
+ await servePackages()
..serve('foo', '1.0.0', pubspec: {
'environment': {'sdk': '>=2.10.0 <3.0.0'}
})
@@ -428,7 +418,7 @@
})
..serve('foo', '2.0.0', pubspec: {
'environment': {'sdk': '>=2.12.0 <3.0.0'}
- }));
+ });
await d.dir('flutter-root', [
d.file('version', '1.2.3'),
diff --git a/test/package_config_file_test.dart b/test/package_config_file_test.dart
index e609d28..763ce42 100644
--- a/test/package_config_file_test.dart
+++ b/test/package_config_file_test.dart
@@ -12,13 +12,12 @@
void main() {
forBothPubGetAndUpgrade((command) {
test('package_config.json file is created', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3',
- deps: {'baz': '2.2.2'}, contents: [d.dir('lib', [])]);
- builder.serve('bar', '3.2.1', contents: [d.dir('lib', [])]);
- builder.serve('baz', '2.2.2',
+ await servePackages()
+ ..serve('foo', '1.2.3',
+ deps: {'baz': '2.2.2'}, contents: [d.dir('lib', [])])
+ ..serve('bar', '3.2.1', contents: [d.dir('lib', [])])
+ ..serve('baz', '2.2.2',
deps: {'bar': '3.2.1'}, contents: [d.dir('lib', [])]);
- });
await d.dir(appPath, [
d.appPubspec({'foo': '1.2.3'}),
@@ -54,13 +53,12 @@
});
test('package_config.json file is overwritten', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3',
- deps: {'baz': '2.2.2'}, contents: [d.dir('lib', [])]);
- builder.serve('bar', '3.2.1', contents: [d.dir('lib', [])]);
- builder.serve('baz', '2.2.2',
+ await servePackages()
+ ..serve('foo', '1.2.3',
+ deps: {'baz': '2.2.2'}, contents: [d.dir('lib', [])])
+ ..serve('bar', '3.2.1', contents: [d.dir('lib', [])])
+ ..serve('baz', '2.2.2',
deps: {'bar': '3.2.1'}, contents: [d.dir('lib', [])]);
- });
await d.dir(appPath, [
d.appPubspec({'foo': '1.2.3'}),
@@ -129,11 +127,10 @@
test(
'.dart_tool/package_config.json file has relative path to path dependency',
() async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3',
- deps: {'baz': 'any'}, contents: [d.dir('lib', [])]);
- builder.serve('baz', '9.9.9', deps: {}, contents: [d.dir('lib', [])]);
- });
+ await servePackages()
+ ..serve('foo', '1.2.3',
+ deps: {'baz': 'any'}, contents: [d.dir('lib', [])])
+ ..serve('baz', '9.9.9', deps: {}, contents: [d.dir('lib', [])]);
await d.dir('local_baz', [
d.libDir('baz', 'baz 3.2.1'),
@@ -180,18 +177,17 @@
});
test('package_config.json has language version', () async {
- await servePackages((builder) {
- builder.serve(
- 'foo',
- '1.2.3',
- pubspec: {
- 'environment': {
- 'sdk': '>=0.0.1 <=0.2.2+2', // tests runs with '0.1.2+3'
- },
+ final server = await servePackages();
+ server.serve(
+ 'foo',
+ '1.2.3',
+ pubspec: {
+ 'environment': {
+ 'sdk': '>=0.0.1 <=0.2.2+2', // tests runs with '0.1.2+3'
},
- contents: [d.dir('lib', [])],
- );
- });
+ },
+ contents: [d.dir('lib', [])],
+ );
await d.dir(appPath, [
d.pubspec({
@@ -225,18 +221,17 @@
});
test('package_config.json has 2.7 default language version', () async {
- await servePackages((builder) {
- builder.serve(
- 'foo',
- '1.2.3',
- pubspec: {
- 'environment': {
- 'sdk': 'any',
- },
+ final server = await servePackages();
+ server.serve(
+ 'foo',
+ '1.2.3',
+ pubspec: {
+ 'environment': {
+ 'sdk': 'any',
},
- contents: [d.dir('lib', [])],
- );
- });
+ },
+ contents: [d.dir('lib', [])],
+ );
await d.dir(appPath, [
d.pubspec({
diff --git a/test/package_server.dart b/test/package_server.dart
index b9c9d3c..952c189 100644
--- a/test/package_server.dart
+++ b/test/package_server.dart
@@ -4,179 +4,156 @@
import 'dart:async';
import 'dart:convert';
+import 'dart:io';
import 'package:path/path.dart' as p;
+import 'package:pub/src/third_party/tar/tar.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:shelf/shelf.dart' as shelf;
+import 'package:shelf/shelf_io.dart' as shelf_io;
import 'package:test/test.dart';
import 'package:test/test.dart' as test show expect;
import 'descriptor.dart' as d;
import 'test_pub.dart';
-/// The current global [PackageServer].
-PackageServer get globalPackageServer {
- final packageServer = _globalPackageServer;
- if (packageServer != null) {
- return packageServer;
- }
- throw StateError(
- 'globalPackageServer is not running yet, '
- 'try calling servicePackages() or serveNoPackages() first!',
- );
-}
-
-PackageServer? _globalPackageServer;
-
-/// Get port of the global [PackageServer].
-int? get globalPackageServerPort {
- final packageServer = _globalPackageServer;
- if (packageServer != null) {
- return packageServer.port;
- }
- return null;
-}
-
-/// Creates an HTTP server that replicates the structure of pub.dartlang.org and
-/// makes it the current [globalServer].
-///
-/// Calls [callback] with a [PackageServerBuilder] that's used to specify
-/// which packages to serve.
-Future<void> servePackages(
- [void Function(PackageServerBuilder)? callback]) async {
- _globalPackageServer = await PackageServer.start(callback ?? (_) {});
- globalServer = _globalPackageServer!._inner;
-
- addTearDown(() {
- _globalPackageServer = null;
- });
-}
-
-/// Like [servePackages], but instead creates an empty server with no packages
-/// registered.
-///
-/// This will always replace a previous server.
-Future<void> serveNoPackages() => servePackages((_) {});
-
-/// Sets up the global package server to report an error on any request.
-///
-/// If no server has been set up, an empty server will be started.
-Future<void> serveErrors() async {
- if (_globalPackageServer == null) {
- await serveNoPackages();
- } else {
- globalPackageServer.serveErrors();
- }
-}
-
class PackageServer {
/// The inner [DescriptorServer] that this uses to serve its descriptors.
- final DescriptorServer _inner;
+ final shelf.Server _inner;
- /// The [d.DirectoryDescriptor] describing the server layout of
- /// `/api/packages` on the test server.
- ///
- /// This contains metadata for packages that are being served via
- /// [servePackages].
- final _servedApiPackageDir = d.dir('packages', []);
+ /// Handlers of requests. Last matching handler will be used.
+ final List<_PatternAndHandler> _handlers = [];
- /// The [d.DirectoryDescriptor] describing the server layout of `/packages` on
- /// the test server.
- ///
- /// This contains the tarballs for packages that are being served via
- /// [servePackages].
- final _servedPackageDir = d.dir('packages', []);
+ // A list of all the requests recieved up till now.
+ final List<String> requestedPaths = <String>[];
- /// The current [PackageServerBuilder] that a user uses to specify which
- /// package to serve.
- ///
- /// This is preserved so that additional packages can be added.
- late final PackageServerBuilder _builder;
+ PackageServer._(this._inner) {
+ _inner.mount((request) {
+ final path = request.url.path;
+ requestedPaths.add(path);
- /// The port used for the server.
- int get port => _inner.port;
+ final pathWithInitialSlash = '/$path';
+ for (final entry in _handlers.reversed) {
+ final match = entry.pattern.matchAsPrefix(pathWithInitialSlash);
+ if (match != null && match.end == pathWithInitialSlash.length) {
+ final a = entry.handler(request);
+ return a;
+ }
+ }
+ return shelf.Response.notFound('Could not find ${request.url}');
+ });
+ }
- /// The URL for the server.
- String get url => 'http://localhost:$port';
+ static final _versionInfoPattern = RegExp(r'/api/packages/([a-zA-Z_0-9]*)');
+ static final _downloadPattern =
+ RegExp(r'/packages/([^/]*)/versions/([^/]*).tar.gz');
- /// Handlers for requests not easily described as packages.
- Map<Pattern, shelf.Handler> get extraHandlers => _inner.extraHandlers;
+ static Future<PackageServer> start() async {
+ final server =
+ PackageServer._(await shelf_io.IOServer.bind('localhost', 0));
+ server.handle(
+ _versionInfoPattern,
+ (shelf.Request request) {
+ final parts = request.url.pathSegments;
+ assert(parts[0] == 'api');
+ assert(parts[1] == 'packages');
+ final name = parts[2];
- /// From now on report errors on any request.
- void serveErrors() => extraHandlers
- ..clear()
- ..[RegExp('.*')] = (request) {
- fail('The HTTP server received an unexpected request:\n'
- '${request.method} ${request.requestedUri}');
- };
+ final package = server._packages[name];
+ if (package == null) {
+ return shelf.Response.notFound('No package named $name');
+ }
+ return shelf.Response.ok(jsonEncode({
+ 'name': name,
+ 'uploaders': ['nweiz@google.com'],
+ 'versions': package.versions.values
+ .map((version) => packageVersionApiMap(
+ server._inner.url.toString(),
+ version.pubspec,
+ retracted: version.isRetracted,
+ ))
+ .toList(),
+ if (package.isDiscontinued) 'isDiscontinued': true,
+ if (package.discontinuedReplacementText != null)
+ 'replacedBy': package.discontinuedReplacementText,
+ }));
+ },
+ );
- /// Creates an HTTP server that replicates the structure of pub.dartlang.org.
- ///
- /// Calls [callback] with a [PackageServerBuilder] that's used to specify
- /// which packages to serve.
- static Future<PackageServer> start(
- void Function(PackageServerBuilder) callback) async {
- var descriptorServer = await DescriptorServer.start();
- var server = PackageServer._(descriptorServer);
- descriptorServer.contents
- ..add(d.dir('api', [server._servedApiPackageDir]))
- ..add(server._servedPackageDir);
- server.add(callback);
+ server.handle(
+ _downloadPattern,
+ (shelf.Request request) {
+ final parts = request.url.pathSegments;
+ assert(parts[0] == 'packages');
+ final name = parts[1];
+ assert(parts[2] == 'versions');
+ final package = server._packages[name];
+ if (package == null) {
+ return shelf.Response.notFound('No package $name');
+ }
+
+ final version = Version.parse(
+ parts[3].substring(0, parts[3].length - '.tar.gz'.length));
+ assert(parts[3].endsWith('.tar.gz'));
+
+ for (final packageVersion in package.versions.values) {
+ if (packageVersion.version == version) {
+ return shelf.Response.ok(packageVersion.contents());
+ }
+ }
+ return shelf.Response.notFound('No version $version of $name');
+ },
+ );
return server;
}
- PackageServer._(this._inner) {
- _builder = PackageServerBuilder._(this);
+ Future<void> close() async {
+ await _inner.close();
}
- /// Add to the current set of packages that are being served.
- void add(void Function(PackageServerBuilder) callback) {
- callback(_builder);
+ /// The port used for the server.
+ int get port => _inner.url.port;
- _servedApiPackageDir.contents.clear();
- _servedPackageDir.contents.clear();
+ /// The URL for the server.
+ String get url => _inner.url.toString();
- _builder._packages.forEach((name, package) {
- _servedApiPackageDir.contents.addAll([
- d.file(
- name,
- jsonEncode({
- 'name': name,
- 'uploaders': ['nweiz@google.com'],
- 'versions': package.versions.values
- .map((version) => packageVersionApiMap(url, version.pubspec,
- retracted: version.isRetracted))
- .toList(),
- if (package.isDiscontinued) 'isDiscontinued': true,
- if (package.discontinuedReplacementText != null)
- 'replacedBy': package.discontinuedReplacementText,
- })),
- d.dir(name, [
- d.dir('versions', package.versions.values.map((version) {
- return d.file(
- version.version.toString(),
- jsonEncode(packageVersionApiMap(url, version.pubspec,
- retracted: version.isRetracted, full: true)));
- }))
- ])
- ]);
+ /// From now on report errors on any request.
+ void serveErrors() => _handlers
+ ..clear()
+ ..add(
+ _PatternAndHandler(
+ RegExp('.*'),
+ (request) {
+ fail('The HTTP server received an unexpected request:\n'
+ '${request.method} ${request.requestedUri}');
+ },
+ ),
+ );
- _servedPackageDir.contents.add(d.dir(name, [
- d.dir(
- 'versions',
- package.versions.values.map((version) =>
- d.tar('${version.version}.tar.gz', version.contents)))
- ]));
- });
+ void handle(Pattern pattern, shelf.Handler handler) {
+ _handlers.add(
+ _PatternAndHandler(
+ pattern,
+ handler,
+ ),
+ );
}
// Installs a handler at [pattern] that expects to be called exactly once with
// the given [method].
+ //
+ // The handler is installed as the start to give it priority over more general
+ // handlers.
void expect(String method, Pattern pattern, shelf.Handler handler) {
- extraHandlers[pattern] = expectAsync1((request) {
- test.expect(request.method, method);
- return handler(request);
- });
+ handle(
+ pattern,
+ expectAsync1(
+ (request) {
+ test.expect(request.method, method);
+ return handler(request);
+ },
+ ),
+ );
}
/// Returns the path of [package] at [version], installed from this server, in
@@ -188,26 +165,9 @@
String get cachingPath =>
p.join(d.sandbox, cachePath, 'hosted', 'localhost%58$port');
- /// Replace the current set of packages that are being served.
- void replace(void Function(PackageServerBuilder) callback) {
- _builder._clear();
- add(callback);
- }
-}
-
-/// A builder for specifying which packages should be served by [servePackages].
-class PackageServerBuilder {
/// A map from package names to the concrete packages to serve.
final _packages = <String, _ServedPackage>{};
- /// The package server that this builder is associated with.
- final PackageServer _server;
-
- /// The URL for the server that this builder is associated with.
- String get serverUrl => _server.url;
-
- PackageServerBuilder._(this._server);
-
/// Specifies that a package named [name] with [version] should be served.
///
/// If [deps] is passed, it's used as the "dependencies" field of the pubspec.
@@ -227,7 +187,44 @@
contents = [d.file('pubspec.yaml', yaml(pubspecFields)), ...contents];
var package = _packages.putIfAbsent(name, () => _ServedPackage());
- package.versions[version] = _ServedPackageVersion(pubspecFields, contents);
+ package.versions[version] = _ServedPackageVersion(
+ pubspecFields,
+ contents: () {
+ final entries = <TarEntry>[];
+
+ void addDescriptor(d.Descriptor descriptor, String path) {
+ if (descriptor is d.DirectoryDescriptor) {
+ for (final e in descriptor.contents) {
+ addDescriptor(e, p.posix.join(path, descriptor.name));
+ }
+ } else {
+ entries.add(
+ TarEntry(
+ TarHeader(
+ // Ensure paths in tar files use forward slashes
+ name: p.posix.join(path, descriptor.name),
+ // We want to keep executable bits, but otherwise use the default
+ // file mode
+ mode: 420,
+ // size: 100,
+ modified: DateTime.now(),
+ userName: 'pub',
+ groupName: 'pub',
+ ),
+ (descriptor as d.FileDescriptor).readAsBytes(),
+ ),
+ );
+ }
+ }
+
+ for (final e in contents ?? <d.Descriptor>[]) {
+ addDescriptor(e, '');
+ }
+ return Stream.fromIterable(entries)
+ .transform(tarWriterWith(format: OutputFormat.gnuLongName))
+ .transform(gzip.encoder);
+ },
+ );
}
// Mark a package discontinued.
@@ -239,7 +236,7 @@
}
/// Clears all existing packages from this builder.
- void _clear() {
+ void clearPackages() {
_packages.clear();
}
@@ -257,10 +254,17 @@
/// A package that's intended to be served.
class _ServedPackageVersion {
final Map pubspec;
- final List<d.Descriptor> contents;
+ final Stream<List<int>> Function() contents;
bool isRetracted = false;
Version get version => Version.parse(pubspec['version']);
- _ServedPackageVersion(this.pubspec, this.contents);
+ _ServedPackageVersion(this.pubspec, {required this.contents});
+}
+
+class _PatternAndHandler {
+ Pattern pattern;
+ shelf.Handler handler;
+
+ _PatternAndHandler(this.pattern, this.handler);
}
diff --git a/test/packages_file_test.dart b/test/packages_file_test.dart
index e7a8a88..e7736be 100644
--- a/test/packages_file_test.dart
+++ b/test/packages_file_test.dart
@@ -12,13 +12,12 @@
void main() {
forBothPubGetAndUpgrade((command) {
test('.packages file is created', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3',
- deps: {'baz': '2.2.2'}, contents: [d.dir('lib', [])]);
- builder.serve('bar', '3.2.1', contents: [d.dir('lib', [])]);
- builder.serve('baz', '2.2.2',
+ await servePackages()
+ ..serve('foo', '1.2.3',
+ deps: {'baz': '2.2.2'}, contents: [d.dir('lib', [])])
+ ..serve('bar', '3.2.1', contents: [d.dir('lib', [])])
+ ..serve('baz', '2.2.2',
deps: {'bar': '3.2.1'}, contents: [d.dir('lib', [])]);
- });
await d.dir(appPath, [
d.appPubspec({'foo': '1.2.3'}),
@@ -34,13 +33,12 @@
});
test('.packages file is overwritten', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3',
- deps: {'baz': '2.2.2'}, contents: [d.dir('lib', [])]);
- builder.serve('bar', '3.2.1', contents: [d.dir('lib', [])]);
- builder.serve('baz', '2.2.2',
+ await servePackages()
+ ..serve('foo', '1.2.3',
+ deps: {'baz': '2.2.2'}, contents: [d.dir('lib', [])])
+ ..serve('bar', '3.2.1', contents: [d.dir('lib', [])])
+ ..serve('baz', '2.2.2',
deps: {'bar': '3.2.1'}, contents: [d.dir('lib', [])]);
- });
await d.dir(appPath, [
d.appPubspec({'foo': '1.2.3'}),
@@ -79,11 +77,10 @@
});
test('.packages file has relative path to path dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3',
- deps: {'baz': 'any'}, contents: [d.dir('lib', [])]);
- builder.serve('baz', '9.9.9', deps: {}, contents: [d.dir('lib', [])]);
- });
+ await servePackages()
+ ..serve('foo', '1.2.3',
+ deps: {'baz': 'any'}, contents: [d.dir('lib', [])])
+ ..serve('baz', '9.9.9', deps: {}, contents: [d.dir('lib', [])]);
await d.dir('local_baz', [
d.libDir('baz', 'baz 3.2.1'),
diff --git a/test/pub_uploader_test.dart b/test/pub_uploader_test.dart
index a216b35..47d50d3 100644
--- a/test/pub_uploader_test.dart
+++ b/test/pub_uploader_test.dart
@@ -40,12 +40,11 @@
test('adds an uploader', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
+ await d.credentialsFile(globalServer, 'access token').create();
var pub = await startPubUploader(
- globalPackageServer, ['--package', 'pkg', 'add', 'email']);
+ globalServer, ['--package', 'pkg', 'add', 'email']);
- globalPackageServer.expect('POST', '/api/packages/pkg/uploaders',
- (request) {
+ globalServer.expect('POST', '/api/packages/pkg/uploaders', (request) {
return request.readAsString().then((body) {
expect(body, equals('email=email'));
@@ -63,11 +62,11 @@
test('removes an uploader', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
+ await d.credentialsFile(globalServer, 'access token').create();
var pub = await startPubUploader(
- globalPackageServer, ['--package', 'pkg', 'remove', 'email']);
+ globalServer, ['--package', 'pkg', 'remove', 'email']);
- globalPackageServer.expect('DELETE', '/api/packages/pkg/uploaders/email',
+ globalServer.expect('DELETE', '/api/packages/pkg/uploaders/email',
(request) {
return shelf.Response.ok(
jsonEncode({
@@ -84,11 +83,10 @@
await d.validPackage.create();
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
- var pub = await startPubUploader(globalPackageServer, ['add', 'email']);
+ await d.credentialsFile(globalServer, 'access token').create();
+ var pub = await startPubUploader(globalServer, ['add', 'email']);
- globalPackageServer.expect('POST', '/api/packages/test_pkg/uploaders',
- (request) {
+ globalServer.expect('POST', '/api/packages/test_pkg/uploaders', (request) {
return shelf.Response.ok(
jsonEncode({
'success': {'message': 'Good job!'}
@@ -102,12 +100,11 @@
test('add provides an error', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
+ await d.credentialsFile(globalServer, 'access token').create();
var pub = await startPubUploader(
- globalPackageServer, ['--package', 'pkg', 'add', 'email']);
+ globalServer, ['--package', 'pkg', 'add', 'email']);
- globalPackageServer.expect('POST', '/api/packages/pkg/uploaders',
- (request) {
+ globalServer.expect('POST', '/api/packages/pkg/uploaders', (request) {
return shelf.Response(400,
body: jsonEncode({
'error': {'message': 'Bad job!'}
@@ -121,11 +118,11 @@
test('remove provides an error', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
+ await d.credentialsFile(globalServer, 'access token').create();
var pub = await startPubUploader(
- globalPackageServer, ['--package', 'pkg', 'remove', 'e/mail']);
+ globalServer, ['--package', 'pkg', 'remove', 'e/mail']);
- globalPackageServer.expect('DELETE', '/api/packages/pkg/uploaders/e%2Fmail',
+ globalServer.expect('DELETE', '/api/packages/pkg/uploaders/e%2Fmail',
(request) {
return shelf.Response(400,
body: jsonEncode({
@@ -140,11 +137,11 @@
test('add provides invalid JSON', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
+ await d.credentialsFile(globalServer, 'access token').create();
var pub = await startPubUploader(
- globalPackageServer, ['--package', 'pkg', 'add', 'email']);
+ globalServer, ['--package', 'pkg', 'add', 'email']);
- globalPackageServer.expect('POST', '/api/packages/pkg/uploaders',
+ globalServer.expect('POST', '/api/packages/pkg/uploaders',
(request) => shelf.Response.ok('{not json'));
expect(
@@ -156,11 +153,11 @@
test('remove provides invalid JSON', () async {
await servePackages();
- await d.credentialsFile(globalPackageServer, 'access token').create();
+ await d.credentialsFile(globalServer, 'access token').create();
var pub = await startPubUploader(
- globalPackageServer, ['--package', 'pkg', 'remove', 'email']);
+ globalServer, ['--package', 'pkg', 'remove', 'email']);
- globalPackageServer.expect('DELETE', '/api/packages/pkg/uploaders/email',
+ globalServer.expect('DELETE', '/api/packages/pkg/uploaders/email',
(request) => shelf.Response.ok('{not json'));
expect(
diff --git a/test/remove/remove_test.dart b/test/remove/remove_test.dart
index 52194c9..e369c85 100644
--- a/test/remove/remove_test.dart
+++ b/test/remove/remove_test.dart
@@ -12,7 +12,8 @@
void main() {
test('removes a package from dependencies', () async {
- await servePackages((builder) => builder.serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.appDir({'foo': '1.2.3'}).create();
await pubGet();
@@ -26,11 +27,10 @@
test('removing a package from dependencies does not affect dev_dependencies',
() async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('foo', '1.2.2');
- builder.serve('bar', '2.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('foo', '1.2.2')
+ ..serve('bar', '2.0.0');
await d.dir(appPath, [
d.file('pubspec.yaml', '''
@@ -60,7 +60,8 @@
});
test('dry-run does not actually remove dependency', () async {
- await servePackages((builder) => builder.serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.appDir({'foo': '1.2.3'}).create();
await pubGet();
@@ -98,7 +99,8 @@
});
test('removes a package from dev_dependencies', () async {
- await servePackages((builder) => builder.serve('foo', '1.2.3'));
+ final server = await servePackages();
+ server.serve('foo', '1.2.3');
await d.dir(appPath, [
d.pubspec({
@@ -120,12 +122,11 @@
test('removes multiple packages from dependencies and dev_dependencies',
() async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3');
- builder.serve('bar', '2.3.4');
- builder.serve('baz', '3.2.1');
- builder.serve('jfj', '0.2.1');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3')
+ ..serve('bar', '2.3.4')
+ ..serve('baz', '3.2.1')
+ ..serve('jfj', '0.2.1');
await d.dir(appPath, [
d.pubspec({
@@ -150,7 +151,8 @@
});
test('removes git dependencies', () async {
- await servePackages((builder) => builder.serve('bar', '1.2.3'));
+ final server = await servePackages();
+ server.serve('bar', '1.2.3');
ensureGit();
final repo = d.git('foo.git', [
@@ -173,7 +175,8 @@
});
test('removes path dependencies', () async {
- await servePackages((builder) => builder.serve('bar', '1.2.3'));
+ final server = await servePackages();
+ server.serve('bar', '1.2.3');
await d
.dir('foo', [d.libDir('foo'), d.libPubspec('foo', '0.0.1')]).create();
@@ -190,16 +193,16 @@
});
test('removes hosted dependencies', () async {
- await servePackages((builder) => builder.serve('bar', '2.0.1'));
+ final server = await servePackages();
+ server.serve('bar', '2.0.1');
- var server = await PackageServer.start((builder) {
- builder.serve('foo', '1.2.3');
- });
+ var custom = await startPackageServer();
+ custom.serve('foo', '1.2.3');
await d.appDir({
'foo': {
'version': '1.2.3',
- 'hosted': {'name': 'foo', 'url': 'http://localhost:${server.port}'}
+ 'hosted': {'name': 'foo', 'url': 'http://localhost:${custom.port}'}
},
'bar': '2.0.1'
}).create();
@@ -212,10 +215,9 @@
});
test('preserves comments', () async {
- await servePackages((builder) {
- builder.serve('bar', '1.0.0');
- builder.serve('foo', '1.0.0');
- });
+ await servePackages()
+ ..serve('bar', '1.0.0')
+ ..serve('foo', '1.0.0');
await d.dir(appPath, [
d.file('pubspec.yaml', '''
diff --git a/test/run/package_api_test.dart b/test/run/package_api_test.dart
index f5660b6..4d05408 100644
--- a/test/run/package_api_test.dart
+++ b/test/run/package_api_test.dart
@@ -49,11 +49,10 @@
});
test('a snapshotted application sees a file: package root', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', contents: [
- d.dir('bin', [d.file('script.dart', _script)])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', contents: [
+ d.dir('bin', [d.file('script.dart', _script)])
+ ]);
await d.dir(appPath, [
d.appPubspec({'foo': 'any'})
@@ -73,8 +72,8 @@
.toString()));
expect(pub.stdout,
emits(p.toUri(p.join(d.sandbox, 'myapp/lib/resource.txt')).toString()));
- var fooResourcePath = p.join(
- globalPackageServer.pathInCache('foo', '1.0.0'), 'lib/resource.txt');
+ var fooResourcePath =
+ p.join(globalServer.pathInCache('foo', '1.0.0'), 'lib/resource.txt');
expect(pub.stdout, emits(p.toUri(fooResourcePath).toString()));
await pub.shouldExit(0);
});
diff --git a/test/run/precompile_test.dart b/test/run/precompile_test.dart
index 5506a0b..2d70b4c 100644
--- a/test/run/precompile_test.dart
+++ b/test/run/precompile_test.dart
@@ -21,11 +21,11 @@
d.appPubspec({'test': '1.0.0'}),
]).create();
- await servePackages((server) => server
- ..serve('test', '1.0.0', contents: [
- d.dir('bin',
- [d.file('test.dart', 'main(List<String> args) => print("hello");')])
- ]));
+ final server = await servePackages();
+ server.serve('test', '1.0.0', contents: [
+ d.dir('bin',
+ [d.file('test.dart', 'main(List<String> args) => print("hello");')])
+ ]);
await pubGet(args: ['--no-precompile']);
}
@@ -57,10 +57,10 @@
d.appPubspec({'test': '1.0.0'}),
]).create();
- await servePackages((server) => server
- ..serve('test', '1.0.0', contents: [
- d.dir('bin', [d.file('test.dart', _script)])
- ]));
+ final server = await servePackages();
+ server.serve('test', '1.0.0', contents: [
+ d.dir('bin', [d.file('test.dart', _script)])
+ ]);
await pubGet(
args: ['--no-precompile'], environment: {'PUB_CACHE': '.pub_cache'});
@@ -80,10 +80,10 @@
d.appPubspec({'test': '1.0.0'}),
]).create();
- await servePackages((server) => server
- ..serve('test', '1.0.0', contents: [
- d.dir('bin', [d.file('test.dart', _script)])
- ]));
+ final server = await servePackages();
+ server.serve('test', '1.0.0', contents: [
+ d.dir('bin', [d.file('test.dart', _script)])
+ ]);
await pubGet(
args: ['--precompile'],
@@ -104,10 +104,10 @@
d.appPubspec({'test': '1.0.0'}),
]).create();
- await servePackages((server) => server
- ..serve('test', '1.0.0', contents: [
- d.dir('bin', [d.file('test.dart', _script)])
- ]));
+ final server = await servePackages();
+ server.serve('test', '1.0.0', contents: [
+ d.dir('bin', [d.file('test.dart', _script)])
+ ]);
await pubGet(
args: ['--precompile'],
diff --git a/test/run/runs_from_a_dependency_override_after_dependency_test.dart b/test/run/runs_from_a_dependency_override_after_dependency_test.dart
index f7e7c7a..c11bacb 100644
--- a/test/run/runs_from_a_dependency_override_after_dependency_test.dart
+++ b/test/run/runs_from_a_dependency_override_after_dependency_test.dart
@@ -10,14 +10,13 @@
void main() {
// Regression test for issue 23113
test('runs a named Dart application in a dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'name': 'foo',
- 'version': '1.0.0'
- }, contents: [
- d.dir('bin', [d.file('bar.dart', "main() => print('foobar');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'name': 'foo',
+ 'version': '1.0.0'
+ }, contents: [
+ d.dir('bin', [d.file('bar.dart', "main() => print('foobar');")])
+ ]);
await d.dir(appPath, [
d.appPubspec({'foo': null})
diff --git a/test/sdk_test.dart b/test/sdk_test.dart
index 3f3b00b..6e50ff0 100644
--- a/test/sdk_test.dart
+++ b/test/sdk_test.dart
@@ -13,9 +13,8 @@
void main() {
forBothPubGetAndUpgrade((command) {
setUp(() async {
- await servePackages((builder) {
- builder.serve('bar', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('bar', '1.0.0');
await d.dir('flutter', [
d.dir('packages', [
diff --git a/test/snapshot_test.dart b/test/snapshot_test.dart
index 4641ca9..8143f7e 100644
--- a/test/snapshot_test.dart
+++ b/test/snapshot_test.dart
@@ -11,17 +11,15 @@
void main() {
group('creates a snapshot', () {
test('for an immediate dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3', contents: [
- d.dir('bin', [
- d.file('hello.dart', "void main() => print('hello!');"),
- d.file('goodbye.dart', "void main() => print('goodbye!');"),
- d.file('shell.sh', 'echo shell'),
- d.dir(
- 'subdir', [d.file('sub.dart', "void main() => print('sub!');")])
- ])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.3', contents: [
+ d.dir('bin', [
+ d.file('hello.dart', "void main() => print('hello!');"),
+ d.file('goodbye.dart', "void main() => print('goodbye!');"),
+ d.file('shell.sh', 'echo shell'),
+ d.dir('subdir', [d.file('sub.dart', "void main() => print('sub!');")])
+ ])
+ ]);
await d.appDir({'foo': '1.2.3'}).create();
@@ -49,8 +47,8 @@
});
test("for an immediate dependency that's also transitive", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3', contents: [
+ await servePackages()
+ ..serve('foo', '1.2.3', contents: [
d.dir('bin', [
d.file('hello.dart', "void main() => print('hello!');"),
d.file('goodbye.dart', "void main() => print('goodbye!');"),
@@ -58,9 +56,8 @@
d.dir(
'subdir', [d.file('sub.dart', "void main() => print('sub!');")])
])
- ]);
- builder.serve('bar', '1.2.3', deps: {'foo': '1.2.3'});
- });
+ ])
+ ..serve('bar', '1.2.3', deps: {'foo': '1.2.3'});
await d.appDir({'foo': '1.2.3'}).create();
@@ -89,12 +86,11 @@
group('again if', () {
test('its package is updated', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3', contents: [
- d.dir('bin',
- [d.file('hello.dart', "void main() => print('hello!');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '1.2.3', contents: [
+ d.dir(
+ 'bin', [d.file('hello.dart', "void main() => print('hello!');")])
+ ]);
await d.appDir({'foo': 'any'}).create();
@@ -105,12 +101,10 @@
d.file('hello.dart-$versionSuffix.snapshot', contains('hello!'))
]).validate();
- globalPackageServer.add((builder) {
- builder.serve('foo', '1.2.4', contents: [
- d.dir('bin',
- [d.file('hello.dart', "void main() => print('hello 2!');")])
- ]);
- });
+ server.serve('foo', '1.2.4', contents: [
+ d.dir('bin',
+ [d.file('hello.dart', "void main() => print('hello 2!');")])
+ ]);
await pubUpgrade(
args: ['--precompile'], output: contains('Built foo:hello.'));
@@ -125,22 +119,22 @@
});
test('a dependency of its package is updated', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3', pubspec: {
- 'dependencies': {'bar': 'any'}
- }, contents: [
- d.dir('bin', [
- d.file('hello.dart', """
+ final server = await servePackages();
+
+ server.serve('foo', '1.2.3', pubspec: {
+ 'dependencies': {'bar': 'any'}
+ }, contents: [
+ d.dir('bin', [
+ d.file('hello.dart', """
import 'package:bar/bar.dart';
void main() => print(message);
""")
- ])
- ]);
- builder.serve('bar', '1.2.3', contents: [
- d.dir('lib', [d.file('bar.dart', "final message = 'hello!';")])
- ]);
- });
+ ])
+ ]);
+ server.serve('bar', '1.2.3', contents: [
+ d.dir('lib', [d.file('bar.dart', "final message = 'hello!';")])
+ ]);
await d.appDir({'foo': 'any'}).create();
@@ -151,11 +145,9 @@
d.file('hello.dart-$versionSuffix.snapshot', contains('hello!'))
]).validate();
- globalPackageServer.add((builder) {
- builder.serve('bar', '1.2.4', contents: [
- d.dir('lib', [d.file('bar.dart', "final message = 'hello 2!';")]),
- ]);
- });
+ server.serve('bar', '1.2.4', contents: [
+ d.dir('lib', [d.file('bar.dart', "final message = 'hello 2!';")]),
+ ]);
await pubUpgrade(
args: ['--precompile'], output: contains('Built foo:hello.'));
@@ -207,12 +199,11 @@
});
test('the SDK is out of date', () async {
- await servePackages((builder) {
- builder.serve('foo', '5.6.7', contents: [
- d.dir('bin',
- [d.file('hello.dart', "void main() => print('hello!');")])
- ]);
- });
+ final server = await servePackages();
+ server.serve('foo', '5.6.7', contents: [
+ d.dir(
+ 'bin', [d.file('hello.dart', "void main() => print('hello!');")])
+ ]);
await d.appDir({'foo': '5.6.7'}).create();
diff --git a/test/test_pub.dart b/test/test_pub.dart
index 5897d69..e180f3d 100644
--- a/test/test_pub.dart
+++ b/test/test_pub.dart
@@ -36,11 +36,9 @@
import 'package:test_process/test_process.dart';
import 'descriptor.dart' as d;
-import 'descriptor_server.dart';
import 'package_server.dart';
-export 'descriptor_server.dart';
-export 'package_server.dart';
+export 'package_server.dart' show PackageServer;
/// A [Matcher] that matches JavaScript generated by dart2js with minification
/// enabled.
@@ -412,29 +410,19 @@
String testVersion = '0.1.2+3';
/// Gets the environment variables used to run pub in a test context.
-Map<String, String> getPubTestEnvironment([String? tokenEndpoint]) {
- var environment = {
- 'CI': 'false', // unless explicitly given tests don't run pub in CI mode
- '_PUB_TESTING': 'true',
- '_PUB_TEST_CONFIG_DIR': _pathInSandbox(configPath),
- 'PUB_CACHE': _pathInSandbox(cachePath),
- 'PUB_ENVIRONMENT': 'test-environment',
+Map<String, String> getPubTestEnvironment([String? tokenEndpoint]) => {
+ 'CI': 'false', // unless explicitly given tests don't run pub in CI mode
+ '_PUB_TESTING': 'true',
+ '_PUB_TEST_CONFIG_DIR': _pathInSandbox(configPath),
+ 'PUB_CACHE': _pathInSandbox(cachePath),
+ 'PUB_ENVIRONMENT': 'test-environment',
- // Ensure a known SDK version is set for the tests that rely on that.
- '_PUB_TEST_SDK_VERSION': testVersion
- };
-
- if (tokenEndpoint != null) {
- environment['_PUB_TEST_TOKEN_ENDPOINT'] = tokenEndpoint;
- }
-
- var server = globalServer;
- if (server != null) {
- environment['PUB_HOSTED_URL'] = 'http://localhost:${server.port}';
- }
-
- return environment;
-}
+ // Ensure a known SDK version is set for the tests that rely on that.
+ '_PUB_TEST_SDK_VERSION': testVersion,
+ if (tokenEndpoint != null) '_PUB_TEST_TOKEN_ENDPOINT': tokenEndpoint,
+ if (_globalServer?.port != null)
+ 'PUB_HOSTED_URL': 'http://localhost:${_globalServer?.port}'
+ };
/// The path to the root of pub's sources in the pub repo.
final String _pubRoot = (() {
@@ -913,7 +901,7 @@
line = line
.replaceAll(d.sandbox, r'$SANDBOX')
.replaceAll(Platform.pathSeparator, '/');
- var port = globalPackageServerPort;
+ var port = _globalServer?.port;
if (port != null) {
line = line.replaceAll(port.toString(), '\$PORT');
}
@@ -956,3 +944,28 @@
}
buffer.write('\n');
}
+
+/// The current global [PackageServer].
+PackageServer get globalServer => _globalServer!;
+PackageServer? _globalServer;
+
+/// Creates an HTTP server that replicates the structure of pub.dartlang.org and
+/// makes it the current [globalServer].
+Future<PackageServer> servePackages() async {
+ final server = await startPackageServer();
+ _globalServer = server;
+
+ addTearDown(() {
+ _globalServer = null;
+ });
+ return server;
+}
+
+Future<PackageServer> startPackageServer() async {
+ final server = await PackageServer.start();
+
+ addTearDown(() async {
+ await server.close();
+ });
+ return server;
+}
diff --git a/test/token/error_message_test.dart b/test/token/error_message_test.dart
index 18061fa..53431a5 100644
--- a/test/token/error_message_test.dart
+++ b/test/token/error_message_test.dart
@@ -9,7 +9,7 @@
import '../test_pub.dart';
void respondWithWwwAuthenticate(String headerValue) {
- globalPackageServer.expect('GET', '/api/packages/versions/new', (request) {
+ globalServer.expect('GET', '/api/packages/versions/new', (request) {
return shelf.Response(403, headers: {'www-authenticate': headerValue});
});
}
@@ -18,7 +18,7 @@
return runPub(
args: ['lish'],
environment: {
- 'PUB_HOSTED_URL': globalPackageServer.url,
+ 'PUB_HOSTED_URL': globalServer.url,
'_PUB_TEST_AUTH_METHOD': 'token',
},
exitCode: 65,
@@ -34,7 +34,7 @@
await d.tokensFile({
'version': 1,
'hosted': [
- {'url': globalPackageServer.url, 'token': 'access token'},
+ {'url': globalServer.url, 'token': 'access token'},
]
}).create();
});
diff --git a/test/token/token_authentication_test.dart b/test/token/token_authentication_test.dart
index 7bf554e..c020ac0 100644
--- a/test/token/token_authentication_test.dart
+++ b/test/token/token_authentication_test.dart
@@ -16,14 +16,14 @@
await d.tokensFile({
'version': 1,
'hosted': [
- {'url': globalPackageServer.url, 'env': 'TOKEN'},
+ {'url': globalServer.url, 'env': 'TOKEN'},
]
}).create();
- var pub = await startPublish(globalPackageServer,
+ var pub = await startPublish(globalServer,
authMethod: 'token', environment: {'TOKEN': 'access token'});
await confirmPublish(pub);
- handleUploadForm(globalPackageServer);
+ handleUploadForm(globalServer);
await pub.shouldExit(1);
});
@@ -33,13 +33,13 @@
await d.tokensFile({
'version': 1,
'hosted': [
- {'url': globalPackageServer.url, 'token': 'access token'},
+ {'url': globalServer.url, 'token': 'access token'},
]
}).create();
- var pub = await startPublish(globalPackageServer, authMethod: 'token');
+ var pub = await startPublish(globalServer, authMethod: 'token');
await confirmPublish(pub);
- handleUploadForm(globalPackageServer);
+ handleUploadForm(globalServer);
await pub.shouldExit(1);
});
diff --git a/test/token/when_receives_401_removes_token_test.dart b/test/token/when_receives_401_removes_token_test.dart
index 2074288..86c0559 100644
--- a/test/token/when_receives_401_removes_token_test.dart
+++ b/test/token/when_receives_401_removes_token_test.dart
@@ -12,17 +12,17 @@
setUp(d.validPackage.create);
test('when receives 401 response removes saved token', () async {
- await servePackages();
+ final server = await servePackages();
await d.tokensFile({
'version': 1,
'hosted': [
- {'url': globalPackageServer.url, 'token': 'access token'},
+ {'url': server.url, 'token': 'access token'},
]
}).create();
- var pub = await startPublish(globalPackageServer, authMethod: 'token');
+ var pub = await startPublish(server, authMethod: 'token');
await confirmPublish(pub);
- globalPackageServer.expect('GET', '/api/packages/versions/new', (request) {
+ server.expect('GET', '/api/packages/versions/new', (request) {
return shelf.Response(401);
});
diff --git a/test/token/when_receives_403_persists_saved_token_test.dart b/test/token/when_receives_403_persists_saved_token_test.dart
index ee4f02e..45fc7a4 100644
--- a/test/token/when_receives_403_persists_saved_token_test.dart
+++ b/test/token/when_receives_403_persists_saved_token_test.dart
@@ -12,17 +12,17 @@
setUp(d.validPackage.create);
test('when receives 403 response persists saved token', () async {
- await servePackages();
+ final server = await servePackages();
await d.tokensFile({
'version': 1,
'hosted': [
- {'url': globalPackageServer.url, 'token': 'access token'},
+ {'url': server.url, 'token': 'access token'},
]
}).create();
- var pub = await startPublish(globalPackageServer, authMethod: 'token');
+ var pub = await startPublish(server, authMethod: 'token');
await confirmPublish(pub);
- globalPackageServer.expect('GET', '/api/packages/versions/new', (request) {
+ server.expect('GET', '/api/packages/versions/new', (request) {
return shelf.Response(403);
});
@@ -31,7 +31,7 @@
await d.tokensFile({
'version': 1,
'hosted': [
- {'url': globalPackageServer.url, 'token': 'access token'},
+ {'url': server.url, 'token': 'access token'},
]
}).validate();
});
diff --git a/test/upgrade/dry_run_does_not_apply_changes_test.dart b/test/upgrade/dry_run_does_not_apply_changes_test.dart
index de1e6b5..8c942ca 100644
--- a/test/upgrade/dry_run_does_not_apply_changes_test.dart
+++ b/test/upgrade/dry_run_does_not_apply_changes_test.dart
@@ -11,10 +11,9 @@
void main() {
test('--dry-run: shows report, changes nothing', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0');
// Create the first lockfile.
await d.appDir({'foo': '1.0.0'}).create();
@@ -50,10 +49,9 @@
});
test('--dry-run --major-versions: shows report, changes nothing', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0');
await d.appDir({'foo': '^1.0.0'}).create();
diff --git a/test/upgrade/example_warns_about_major_versions_test.dart b/test/upgrade/example_warns_about_major_versions_test.dart
index a9b2965..b5c9a67 100644
--- a/test/upgrade/example_warns_about_major_versions_test.dart
+++ b/test/upgrade/example_warns_about_major_versions_test.dart
@@ -10,11 +10,11 @@
testWithGolden(
'pub upgrade --major-versions does not update major versions in example/',
(ctx) async {
- await servePackages((b) => b
+ await servePackages()
..serve('foo', '1.0.0')
..serve('foo', '2.0.0')
..serve('bar', '1.0.0')
- ..serve('bar', '2.0.0'));
+ ..serve('bar', '2.0.0');
await d.dir(appPath, [
d.pubspec({
'name': 'myapp',
@@ -39,7 +39,7 @@
testWithGolden(
'pub upgrade --null-safety does not update null-safety of dependencies in example/',
(ctx) async {
- await servePackages((b) => b
+ await servePackages()
..serve('foo', '1.0.0', pubspec: {
'environment': {'sdk': '>=2.7.0 <3.0.0'},
})
@@ -51,7 +51,7 @@
})
..serve('bar', '2.0.0', pubspec: {
'environment': {'sdk': '>=2.12.0 <3.0.0'},
- }));
+ });
await d.dir(appPath, [
d.pubspec({
'name': 'myapp',
diff --git a/test/upgrade/hosted/unlock_if_necessary_test.dart b/test/upgrade/hosted/unlock_if_necessary_test.dart
index 54ff94f..c285e66 100644
--- a/test/upgrade/hosted/unlock_if_necessary_test.dart
+++ b/test/upgrade/hosted/unlock_if_necessary_test.dart
@@ -11,10 +11,10 @@
test(
"upgrades one locked pub server package's dependencies if it's "
'necessary', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'foo_dep': 'any'});
- builder.serve('foo_dep', '1.0.0');
- });
+ final server = await servePackages();
+
+ server.serve('foo', '1.0.0', deps: {'foo_dep': 'any'});
+ server.serve('foo_dep', '1.0.0');
await d.appDir({'foo': 'any'}).create();
@@ -22,10 +22,8 @@
await d.appPackagesFile({'foo': '1.0.0', 'foo_dep': '1.0.0'}).validate();
- globalPackageServer.add((builder) {
- builder.serve('foo', '2.0.0', deps: {'foo_dep': '>1.0.0'});
- builder.serve('foo_dep', '2.0.0');
- });
+ server.serve('foo', '2.0.0', deps: {'foo_dep': '>1.0.0'});
+ server.serve('foo_dep', '2.0.0');
await pubUpgrade(args: ['foo']);
diff --git a/test/upgrade/hosted/unlock_single_package_test.dart b/test/upgrade/hosted/unlock_single_package_test.dart
index ed2b678..bc78a3d 100644
--- a/test/upgrade/hosted/unlock_single_package_test.dart
+++ b/test/upgrade/hosted/unlock_single_package_test.dart
@@ -9,10 +9,10 @@
void main() {
test('can unlock a single package only in upgrade', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': '<2.0.0'});
- builder.serve('bar', '1.0.0');
- });
+ final server = await servePackages();
+
+ server.serve('foo', '1.0.0', deps: {'bar': '<2.0.0'});
+ server.serve('bar', '1.0.0');
await d.appDir({'foo': 'any', 'bar': 'any'}).create();
@@ -20,10 +20,8 @@
await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.0.0'}).validate();
- globalPackageServer.add((builder) {
- builder.serve('foo', '2.0.0', deps: {'bar': '<3.0.0'});
- builder.serve('bar', '2.0.0');
- });
+ server.serve('foo', '2.0.0', deps: {'bar': '<3.0.0'});
+ server.serve('bar', '2.0.0');
// This can't upgrade 'bar'
await pubUpgrade(args: ['bar']);
@@ -31,10 +29,8 @@
await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.0.0'}).validate();
// Introducing foo and bar 1.1.0, to show that only 'bar' will be upgraded
- globalPackageServer.add((builder) {
- builder.serve('foo', '1.1.0', deps: {'bar': '<2.0.0'});
- builder.serve('bar', '1.1.0');
- });
+ server.serve('foo', '1.1.0', deps: {'bar': '<2.0.0'});
+ server.serve('bar', '1.1.0');
await pubUpgrade(args: ['bar']);
await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.1.0'}).validate();
diff --git a/test/upgrade/hosted/upgrade_removed_constraints_test.dart b/test/upgrade/hosted/upgrade_removed_constraints_test.dart
index 7c20816..248ac90 100644
--- a/test/upgrade/hosted/upgrade_removed_constraints_test.dart
+++ b/test/upgrade/hosted/upgrade_removed_constraints_test.dart
@@ -9,12 +9,11 @@
void main() {
test('upgrades dependencies whose constraints have been removed', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'shared_dep': 'any'});
- builder.serve('bar', '1.0.0', deps: {'shared_dep': '<2.0.0'});
- builder.serve('shared_dep', '1.0.0');
- builder.serve('shared_dep', '2.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'shared_dep': 'any'})
+ ..serve('bar', '1.0.0', deps: {'shared_dep': '<2.0.0'})
+ ..serve('shared_dep', '1.0.0')
+ ..serve('shared_dep', '2.0.0');
await d.appDir({'foo': 'any', 'bar': 'any'}).create();
diff --git a/test/upgrade/hosted/warn_about_discontinued_test.dart b/test/upgrade/hosted/warn_about_discontinued_test.dart
index 48adf85..ba7fc57 100644
--- a/test/upgrade/hosted/warn_about_discontinued_test.dart
+++ b/test/upgrade/hosted/warn_about_discontinued_test.dart
@@ -9,15 +9,15 @@
void main() {
test('Warns about discontinued dependencies', () async {
- await servePackages((builder) => builder
+ final server = await servePackages()
..serve('foo', '1.2.3', deps: {'transitive': 'any'})
- ..serve('transitive', '1.0.0'));
+ ..serve('transitive', '1.0.0');
await d.appDir({'foo': '1.2.3'}).create();
await pubGet();
- globalPackageServer.add((builder) => builder
+ server
..discontinue('foo')
- ..discontinue('transitive'));
+ ..discontinue('transitive');
// We warn only about the direct dependency here:
await pubUpgrade(output: '''
Resolving dependencies...
@@ -26,8 +26,7 @@
No dependencies changed.
1 package is discontinued.
''');
- globalPackageServer
- .add((builder) => builder.discontinue('foo', replacementText: 'bar'));
+ server.discontinue('foo', replacementText: 'bar');
// We warn only about the direct dependency here:
await pubUpgrade(output: '''
Resolving dependencies...
@@ -39,9 +38,9 @@
});
test('Warns about discontinued dev_dependencies', () async {
- await servePackages((builder) => builder
+ final server = await servePackages()
..serve('foo', '1.2.3', deps: {'transitive': 'any'})
- ..serve('transitive', '1.0.0'));
+ ..serve('transitive', '1.0.0');
await d.dir(appPath, [
d.file('pubspec.yaml', '''
@@ -56,9 +55,9 @@
]).create();
await pubGet();
- globalPackageServer.add((builder) => builder
+ server
..discontinue('foo')
- ..discontinue('transitive'));
+ ..discontinue('transitive');
// We warn only about the direct dependency here:
await pubUpgrade(output: '''
@@ -68,8 +67,7 @@
No dependencies changed.
1 package is discontinued.
''');
- globalPackageServer
- .add((builder) => builder.discontinue('foo', replacementText: 'bar'));
+ server.discontinue('foo', replacementText: 'bar');
// We warn only about the direct dependency here:
await pubUpgrade(output: '''
Resolving dependencies...
diff --git a/test/upgrade/renamed_package_circular_dependency.dart b/test/upgrade/renamed_package_circular_dependency.dart
index ca033bb..ec10b82 100644
--- a/test/upgrade/renamed_package_circular_dependency.dart
+++ b/test/upgrade/renamed_package_circular_dependency.dart
@@ -8,10 +8,9 @@
void main() {
test('The upgrade report handles a package becoming root', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'myapp': 'any'});
- builder.serve('myapp', '1.0.0', deps: {'foo': 'any'});
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'myapp': 'any'})
+ ..serve('myapp', '1.0.0', deps: {'foo': 'any'});
await d.dir(appPath, [
d.pubspec({
diff --git a/test/upgrade/report/describes_change_test.dart b/test/upgrade/report/describes_change_test.dart
index dc6f3cf..96410cb 100644
--- a/test/upgrade/report/describes_change_test.dart
+++ b/test/upgrade/report/describes_change_test.dart
@@ -9,11 +9,11 @@
void main() {
test('Shows count of discontinued packages', () async {
- await servePackages((builder) {
- builder.serve('foo', '2.0.0');
- });
+ final server = await servePackages();
- globalPackageServer.add((builder) => builder..discontinue('foo'));
+ server.serve('foo', '2.0.0');
+
+ server.discontinue('foo');
// Create the first lockfile.
await d.appDir({'foo': '2.0.0'}).create();
@@ -33,12 +33,11 @@
});
test('shows how package changed from previous lockfile', () async {
- await servePackages((builder) {
- builder.serve('unchanged', '1.0.0');
- builder.serve('version_changed', '1.0.0');
- builder.serve('version_changed', '2.0.0');
- builder.serve('source_changed', '1.0.0');
- });
+ await servePackages()
+ ..serve('unchanged', '1.0.0')
+ ..serve('version_changed', '1.0.0')
+ ..serve('version_changed', '2.0.0')
+ ..serve('source_changed', '1.0.0');
await d.dir('source_changed', [
d.libDir('source_changed'),
diff --git a/test/upgrade/report/does_not_show_newer_versions_for_locked_packages_test.dart b/test/upgrade/report/does_not_show_newer_versions_for_locked_packages_test.dart
index 7a232d0..bcde5cb 100644
--- a/test/upgrade/report/does_not_show_newer_versions_for_locked_packages_test.dart
+++ b/test/upgrade/report/does_not_show_newer_versions_for_locked_packages_test.dart
@@ -11,14 +11,14 @@
test(
'Shows newer versions available for packages that are locked and not being upgraded',
() async {
- await servePackages((builder) {
- builder.serve('not_upgraded', '1.0.0');
- builder.serve('not_upgraded', '2.0.0');
- builder.serve('not_upgraded', '3.0.0-dev');
- builder.serve('upgraded', '1.0.0');
- builder.serve('upgraded', '2.0.0');
- builder.serve('upgraded', '3.0.0-dev');
- });
+ await servePackages()
+ ..serve('not_upgraded', '1.0.0')
+ ..serve('not_upgraded', '1.0.0')
+ ..serve('not_upgraded', '2.0.0')
+ ..serve('not_upgraded', '3.0.0-dev')
+ ..serve('upgraded', '1.0.0')
+ ..serve('upgraded', '2.0.0')
+ ..serve('upgraded', '3.0.0-dev');
// Constraint everything to the first version.
await d.appDir({'not_upgraded': '1.0.0', 'upgraded': '1.0.0'}).create();
diff --git a/test/upgrade/report/highlights_overrides_test.dart b/test/upgrade/report/highlights_overrides_test.dart
index 94608d9..93f9f3b 100644
--- a/test/upgrade/report/highlights_overrides_test.dart
+++ b/test/upgrade/report/highlights_overrides_test.dart
@@ -9,7 +9,8 @@
void main() {
test('highlights overridden packages', () async {
- await servePackages((builder) => builder.serve('overridden', '1.0.0'));
+ final server = await servePackages();
+ server.serve('overridden', '1.0.0');
await d.dir(appPath, [
d.pubspec({
diff --git a/test/upgrade/report/leading_character_shows_change_test.dart b/test/upgrade/report/leading_character_shows_change_test.dart
index d7f870c..ea4668b 100644
--- a/test/upgrade/report/leading_character_shows_change_test.dart
+++ b/test/upgrade/report/leading_character_shows_change_test.dart
@@ -9,17 +9,17 @@
void main() {
test('the character before each package describes the change', () async {
- await servePackages((builder) {
- builder.serve('added', '1.0.0');
- builder.serve('downgraded', '1.0.0');
- builder.serve('downgraded', '2.0.0');
- builder.serve('overridden', '1.0.0');
- builder.serve('removed', '1.0.0');
- builder.serve('source_changed', '1.0.0');
- builder.serve('upgraded', '1.0.0');
- builder.serve('upgraded', '2.0.0');
- builder.serve('unchanged', '1.0.0');
- });
+ await servePackages()
+ ..serve('added', '1.0.0')
+ ..serve('added', '1.0.0')
+ ..serve('downgraded', '1.0.0')
+ ..serve('downgraded', '2.0.0')
+ ..serve('overridden', '1.0.0')
+ ..serve('removed', '1.0.0')
+ ..serve('source_changed', '1.0.0')
+ ..serve('upgraded', '1.0.0')
+ ..serve('upgraded', '2.0.0')
+ ..serve('unchanged', '1.0.0');
await d.dir('description_changed_1', [
d.libDir('description_changed'),
diff --git a/test/upgrade/report/shows_newer_available_versions_test.dart b/test/upgrade/report/shows_newer_available_versions_test.dart
index 4c1ca56..bf13aec 100644
--- a/test/upgrade/report/shows_newer_available_versions_test.dart
+++ b/test/upgrade/report/shows_newer_available_versions_test.dart
@@ -9,28 +9,28 @@
void main() {
test('shows how many newer versions are available', () async {
- await servePackages((builder) {
- builder.serve('multiple_newer', '1.0.0');
- builder.serve('multiple_newer', '1.0.1-unstable.1');
- builder.serve('multiple_newer', '1.0.1');
- builder.serve('multiple_newer', '1.0.2-unstable.1');
- builder.serve('multiple_newer_stable', '1.0.0');
- builder.serve('multiple_newer_stable', '1.0.1');
- builder.serve('multiple_newer_stable', '1.0.2');
- builder.serve('multiple_newer_unstable', '1.0.0');
- builder.serve('multiple_newer_unstable', '1.0.1-unstable.1');
- builder.serve('multiple_newer_unstable', '1.0.1-unstable.2');
- builder.serve('multiple_newer_unstable2', '1.0.1-unstable.1');
- builder.serve('multiple_newer_unstable2', '1.0.1-unstable.2');
- builder.serve('multiple_newer_unstable2', '1.0.1-unstable.2');
- builder.serve('no_newer', '1.0.0');
- builder.serve('one_newer_unstable', '1.0.0');
- builder.serve('one_newer_unstable', '1.0.1-unstable.1');
- builder.serve('one_newer_unstable2', '1.0.1-unstable.1');
- builder.serve('one_newer_unstable2', '1.0.1-unstable.2');
- builder.serve('one_newer_stable', '1.0.0');
- builder.serve('one_newer_stable', '1.0.1');
- });
+ await servePackages()
+ ..serve('multiple_newer', '1.0.0')
+ ..serve('multiple_newer', '1.0.0')
+ ..serve('multiple_newer', '1.0.1-unstable.1')
+ ..serve('multiple_newer', '1.0.1')
+ ..serve('multiple_newer', '1.0.2-unstable.1')
+ ..serve('multiple_newer_stable', '1.0.0')
+ ..serve('multiple_newer_stable', '1.0.1')
+ ..serve('multiple_newer_stable', '1.0.2')
+ ..serve('multiple_newer_unstable', '1.0.0')
+ ..serve('multiple_newer_unstable', '1.0.1-unstable.1')
+ ..serve('multiple_newer_unstable', '1.0.1-unstable.2')
+ ..serve('multiple_newer_unstable2', '1.0.1-unstable.1')
+ ..serve('multiple_newer_unstable2', '1.0.1-unstable.2')
+ ..serve('multiple_newer_unstable2', '1.0.1-unstable.2')
+ ..serve('no_newer', '1.0.0')
+ ..serve('one_newer_unstable', '1.0.0')
+ ..serve('one_newer_unstable', '1.0.1-unstable.1')
+ ..serve('one_newer_unstable2', '1.0.1-unstable.1')
+ ..serve('one_newer_unstable2', '1.0.1-unstable.2')
+ ..serve('one_newer_stable', '1.0.0')
+ ..serve('one_newer_stable', '1.0.1');
// Constraint everything to the first version.
await d.appDir({
diff --git a/test/upgrade/report/shows_number_of_changed_dependencies_test.dart b/test/upgrade/report/shows_number_of_changed_dependencies_test.dart
index 5ba3af6..91ba5aa 100644
--- a/test/upgrade/report/shows_number_of_changed_dependencies_test.dart
+++ b/test/upgrade/report/shows_number_of_changed_dependencies_test.dart
@@ -11,11 +11,10 @@
test(
'does not show how many newer versions are available for '
'packages that are locked and not being upgraded', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('b', '1.0.0');
- builder.serve('c', '2.0.0');
- });
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('b', '1.0.0')
+ ..serve('c', '2.0.0');
await d.appDir({'a': 'any'}).create();
diff --git a/test/upgrade/report/shows_pub_outdated_test.dart b/test/upgrade/report/shows_pub_outdated_test.dart
index 9c0fa3d..0fdb322 100644
--- a/test/upgrade/report/shows_pub_outdated_test.dart
+++ b/test/upgrade/report/shows_pub_outdated_test.dart
@@ -9,24 +9,23 @@
void main() {
test('shows pub outdated', () async {
- await servePackages((builder) {
- builder.serve('multiple_newer', '1.0.0');
- builder.serve('multiple_newer', '1.0.1-unstable.1');
- builder.serve('multiple_newer', '1.0.1');
- builder.serve('multiple_newer', '1.0.2-unstable.1');
- builder.serve('multiple_newer', '1.0.2-unstable.2');
- builder.serve('multiple_newer_stable', '1.0.0');
- builder.serve('multiple_newer_stable', '1.0.1');
- builder.serve('multiple_newer_stable', '1.0.2');
- builder.serve('multiple_newer_unstable', '1.0.0');
- builder.serve('multiple_newer_unstable', '1.0.1-unstable.1');
- builder.serve('multiple_newer_unstable', '1.0.1-unstable.2');
- builder.serve('no_newer', '1.0.0');
- builder.serve('one_newer_unstable', '1.0.0');
- builder.serve('one_newer_unstable', '1.0.1-unstable.1');
- builder.serve('one_newer_stable', '1.0.0');
- builder.serve('one_newer_stable', '1.0.1');
- });
+ await servePackages()
+ ..serve('multiple_newer', '1.0.0')
+ ..serve('multiple_newer', '1.0.1-unstable.1')
+ ..serve('multiple_newer', '1.0.1')
+ ..serve('multiple_newer', '1.0.2-unstable.1')
+ ..serve('multiple_newer', '1.0.2-unstable.2')
+ ..serve('multiple_newer_stable', '1.0.0')
+ ..serve('multiple_newer_stable', '1.0.1')
+ ..serve('multiple_newer_stable', '1.0.2')
+ ..serve('multiple_newer_unstable', '1.0.0')
+ ..serve('multiple_newer_unstable', '1.0.1-unstable.1')
+ ..serve('multiple_newer_unstable', '1.0.1-unstable.2')
+ ..serve('no_newer', '1.0.0')
+ ..serve('one_newer_unstable', '1.0.0')
+ ..serve('one_newer_unstable', '1.0.1-unstable.1')
+ ..serve('one_newer_stable', '1.0.0')
+ ..serve('one_newer_stable', '1.0.1');
// Constraint everything to the first version.
await d.appDir({
diff --git a/test/upgrade/upgrade_major_versions_test.dart b/test/upgrade/upgrade_major_versions_test.dart
index c312717..8c3f40a 100644
--- a/test/upgrade/upgrade_major_versions_test.dart
+++ b/test/upgrade/upgrade_major_versions_test.dart
@@ -10,14 +10,13 @@
void main() {
group('pub upgrade --major-versions', () {
test('bumps dependency constraints and shows summary report', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- builder.serve('bar', '0.1.0');
- builder.serve('bar', '0.2.0');
- builder.serve('baz', '1.0.0');
- builder.serve('baz', '1.0.1');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0')
+ ..serve('bar', '0.1.0')
+ ..serve('bar', '0.2.0')
+ ..serve('baz', '1.0.0')
+ ..serve('baz', '1.0.1');
await d.appDir({
'foo': '^1.0.0',
@@ -51,14 +50,13 @@
});
test('bumps dev_dependency constraints and shows summary report', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- builder.serve('bar', '0.1.0');
- builder.serve('bar', '0.2.0');
- builder.serve('baz', '1.0.0');
- builder.serve('baz', '1.0.1');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0')
+ ..serve('bar', '0.1.0')
+ ..serve('bar', '0.2.0')
+ ..serve('baz', '1.0.0')
+ ..serve('baz', '1.0.1');
await d.dir(appPath, [
d.pubspec({
@@ -102,12 +100,11 @@
});
test('upgrades only the selected package', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- builder.serve('bar', '0.1.0');
- builder.serve('bar', '0.2.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0')
+ ..serve('bar', '0.1.0')
+ ..serve('bar', '0.2.0');
await d.appDir({
'foo': '^1.0.0',
@@ -134,11 +131,10 @@
});
test('chooses the latest version where possible', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- builder.serve('foo', '3.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0')
+ ..serve('foo', '3.0.0');
await d.appDir({'foo': '^1.0.0'}).create();
@@ -166,13 +162,11 @@
});
test('overridden dependencies - no resolution', () async {
- await servePackages(
- (builder) => builder
- ..serve('foo', '1.0.0', deps: {'bar': '^2.0.0'})
- ..serve('foo', '2.0.0', deps: {'bar': '^1.0.0'})
- ..serve('bar', '1.0.0', deps: {'foo': '^1.0.0'})
- ..serve('bar', '2.0.0', deps: {'foo': '^2.0.0'}),
- );
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': '^2.0.0'})
+ ..serve('foo', '2.0.0', deps: {'bar': '^1.0.0'})
+ ..serve('bar', '1.0.0', deps: {'foo': '^1.0.0'})
+ ..serve('bar', '2.0.0', deps: {'foo': '^2.0.0'});
await d.dir(appPath, [
d.pubspec({
@@ -223,16 +217,15 @@
/// The version solver solves the packages with the least number of
/// versions remaining, so we add more 'bar' packages to force 'foo' to be
/// resolved first
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0', pubspec: {
'dependencies': {'bar': '1.0.0'}
- });
- builder.serve('bar', '1.0.0');
- builder.serve('bar', '2.0.0');
- builder.serve('bar', '3.0.0');
- builder.serve('bar', '4.0.0');
- });
+ })
+ ..serve('bar', '1.0.0')
+ ..serve('bar', '2.0.0')
+ ..serve('bar', '3.0.0')
+ ..serve('bar', '4.0.0');
await d.appDir({
'foo': '^1.0.0',
diff --git a/test/upgrade/upgrade_null_safety_test.dart b/test/upgrade/upgrade_null_safety_test.dart
index 921c737..557c589 100644
--- a/test/upgrade/upgrade_null_safety_test.dart
+++ b/test/upgrade/upgrade_null_safety_test.dart
@@ -9,29 +9,28 @@
void main() {
group('pub upgrade --null-safety', () {
setUp(() async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'environment': {'sdk': '>=2.10.0<3.0.0'},
- });
- builder.serve('foo', '2.0.0', pubspec: {
+ })
+ ..serve('foo', '2.0.0', pubspec: {
'environment': {'sdk': '>=2.12.0<3.0.0'},
- });
- builder.serve('bar', '1.0.0', pubspec: {
+ })
+ ..serve('bar', '1.0.0', pubspec: {
'environment': {'sdk': '>=2.9.0<3.0.0'},
- });
- builder.serve('bar', '2.0.0-nullsafety.0', pubspec: {
+ })
+ ..serve('bar', '2.0.0-nullsafety.0', pubspec: {
'environment': {'sdk': '>=2.12.0<3.0.0'},
- });
- builder.serve('baz', '1.0.0', pubspec: {
+ })
+ ..serve('baz', '1.0.0', pubspec: {
'environment': {'sdk': '>=2.9.0<3.0.0'},
- });
- builder.serve('has_conflict', '1.0.0', pubspec: {
+ })
+ ..serve('has_conflict', '1.0.0', pubspec: {
'environment': {'sdk': '>=2.9.0<3.0.0'},
- });
- builder.serve('has_conflict', '2.0.0', pubspec: {
+ })
+ ..serve('has_conflict', '2.0.0', pubspec: {
'environment': {'sdk': '>=2.13.0<3.0.0'},
});
- });
});
test('upgrades to null-safety versions', () async {
diff --git a/test/validator/null_safety_mixed_mode_test.dart b/test/validator/null_safety_mixed_mode_test.dart
index e2a8dfb..d62d051 100644
--- a/test/validator/null_safety_mixed_mode_test.dart
+++ b/test/validator/null_safety_mixed_mode_test.dart
@@ -45,14 +45,13 @@
group('should consider a package valid if it', () {
test('is not opting in to null-safety, but depends on package that is',
() async {
- await servePackages(
- (server) => server.serve(
- 'foo',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- ),
+ final server = await servePackages();
+ server.serve(
+ 'foo',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
);
await setup(
@@ -61,14 +60,13 @@
});
test('is opting in to null-safety and depends on package that is',
() async {
- await servePackages(
- (server) => server.serve(
- 'foo',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- ),
+ final server = await servePackages();
+ server.serve(
+ 'foo',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
);
await setup(
@@ -78,14 +76,13 @@
test('is opting in to null-safety has dev_dependency that is not',
() async {
- await servePackages(
- (server) => server.serve(
- 'foo',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- ),
+ final server = await servePackages();
+ server.serve(
+ 'foo',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
);
await setup(sdkConstraint: '>=2.12.0 <3.0.0', devDependencies: {
@@ -98,14 +95,13 @@
group('should consider a package invalid if it', () {
test('is opting in to null-safety, but depends on package that is not',
() async {
- await servePackages(
- (server) => server.serve(
- 'foo',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- ),
+ final server = await servePackages();
+ server.serve(
+ 'foo',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
);
await setup(
@@ -134,17 +130,16 @@
test(
'is opting in to null-safety, but depends on package has file opting out',
() async {
- await servePackages(
- (server) => server.serve('foo', '0.0.1', pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- }, contents: [
- d.dir('lib', [
- d.file('foo.dart', '''
+ final server = await servePackages();
+ server.serve('foo', '0.0.1', pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ }, contents: [
+ d.dir('lib', [
+ d.file('foo.dart', '''
// @dart = 2.9
''')
- ])
- ]),
- );
+ ])
+ ]);
await setup(
sdkConstraint: '>=2.12.0 <3.0.0', dependencies: {'foo': '^0.0.1'});
diff --git a/test/validator/relative_version_numbering_test.dart b/test/validator/relative_version_numbering_test.dart
index 73e810a..2f3da5c 100644
--- a/test/validator/relative_version_numbering_test.dart
+++ b/test/validator/relative_version_numbering_test.dart
@@ -13,7 +13,7 @@
Validator validator(Entrypoint entrypoint) => RelativeVersionNumberingValidator(
entrypoint,
- Uri.parse(globalPackageServer.url),
+ Uri.parse(globalServer.url),
);
Future<void> setup({required String sdkConstraint}) async {
@@ -33,14 +33,13 @@
group('should consider a package valid if it', () {
test('is not opting in to null-safety with previous non-null-safe version',
() async {
- await servePackages(
- (server) => server.serve(
- 'test_pkg',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- ),
+ final server = await servePackages();
+ server.serve(
+ 'test_pkg',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
);
await setup(sdkConstraint: '>=2.9.0 <3.0.0');
@@ -50,23 +49,21 @@
test(
'is not opting in to null-safety with previous non-null-safe version. '
'Even with a later null-safe version', () async {
- await servePackages(
- (server) => server
- ..serve(
- 'test_pkg',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- )
- ..serve(
- 'test_pkg',
- '2.0.0',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- ),
- );
+ await servePackages()
+ ..serve(
+ 'test_pkg',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
+ )
+ ..serve(
+ 'test_pkg',
+ '2.0.0',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
+ );
await setup(sdkConstraint: '>=2.9.0 <3.0.0');
await expectValidation(validator);
@@ -74,14 +71,13 @@
test('is opting in to null-safety with previous null-safe version',
() async {
- await servePackages(
- (server) => server.serve(
- 'test_pkg',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- ),
+ final server = await servePackages();
+ server.serve(
+ 'test_pkg',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
);
await setup(sdkConstraint: '>=2.12.0 <3.0.0');
@@ -91,14 +87,13 @@
test(
'is opting in to null-safety using a pre-release of 2.12.0 '
'with previous null-safe version', () async {
- await servePackages(
- (server) => server.serve(
- 'test_pkg',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- ),
+ final server = await servePackages();
+ server.serve(
+ 'test_pkg',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
);
await setup(sdkConstraint: '>=2.12.0-dev <3.0.0');
@@ -108,23 +103,21 @@
test(
'is opting in to null-safety with previous null-safe version. '
'Even with a later non-null-safe version', () async {
- await servePackages(
- (server) => server
- ..serve(
- 'test_pkg',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- )
- ..serve(
- 'test_pkg',
- '2.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- ),
- );
+ await servePackages()
+ ..serve(
+ 'test_pkg',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
+ )
+ ..serve(
+ 'test_pkg',
+ '2.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
+ );
await setup(sdkConstraint: '>=2.12.0 <3.0.0');
await expectValidation(validator);
@@ -132,13 +125,13 @@
test('is opting in to null-safety with no existing versions', () async {
await setup(sdkConstraint: '>=2.12.0 <3.0.0');
- await servePackages((x) => x);
+ await servePackages();
await expectValidation(validator);
});
test('is not opting in to null-safety with no existing versions', () async {
await setup(sdkConstraint: '>=2.9.0 <3.0.0');
- await servePackages((x) => x);
+ await servePackages();
await expectValidation(validator);
});
@@ -146,23 +139,21 @@
test(
'is not opting in to null-safety with previous null-safe stable version. '
'With an in-between not null-safe prerelease', () async {
- await servePackages(
- (server) => server
- ..serve(
- 'test_pkg',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- )
- ..serve(
- 'test_pkg',
- '0.0.2-dev',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- ),
- );
+ await servePackages()
+ ..serve(
+ 'test_pkg',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
+ )
+ ..serve(
+ 'test_pkg',
+ '0.0.2-dev',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
+ );
await setup(sdkConstraint: '>=2.9.0 <3.0.0');
await expectValidation(validator);
@@ -171,23 +162,21 @@
test(
'opts in to null-safety, with previous stable version not-null-safe. '
'With an in-between non-null-safe prerelease', () async {
- await servePackages(
- (server) => server
- ..serve(
- 'test_pkg',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- )
- ..serve(
- 'test_pkg',
- '0.0.2-dev',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- ),
- );
+ await servePackages()
+ ..serve(
+ 'test_pkg',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
+ )
+ ..serve(
+ 'test_pkg',
+ '0.0.2-dev',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
+ );
await setup(sdkConstraint: '>=2.12.0 <3.0.0');
await expectValidation(validator);
@@ -197,14 +186,13 @@
group('should warn if ', () {
test('opts in to null-safety, with previous version not-null-safe',
() async {
- await servePackages(
- (server) => server.serve(
- 'test_pkg',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- ),
+ final server = await servePackages();
+ server.serve(
+ 'test_pkg',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
);
await setup(sdkConstraint: '>=2.12.0 <3.0.0');
@@ -215,14 +203,13 @@
'is not opting in to null-safety with no existing stable versions. '
'With a previous in-between null-safe prerelease', () async {
await setup(sdkConstraint: '>=2.9.0 <3.0.0');
- await servePackages(
- (server) => server.serve(
- 'test_pkg',
- '0.0.2-dev',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- ),
+ final server = await servePackages();
+ server.serve(
+ 'test_pkg',
+ '0.0.2-dev',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
);
await expectValidation(validator, hints: isNotEmpty);
@@ -230,23 +217,21 @@
test(
'is not opting in to null-safety with previous non-null-safe stable version. '
'With an in-between null-safe prerelease', () async {
- await servePackages(
- (server) => server
- ..serve(
- 'test_pkg',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- )
- ..serve(
- 'test_pkg',
- '0.0.2-dev',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- ),
- );
+ await servePackages()
+ ..serve(
+ 'test_pkg',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
+ )
+ ..serve(
+ 'test_pkg',
+ '0.0.2-dev',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
+ );
await setup(sdkConstraint: '>=2.9.0 <3.0.0');
await expectValidation(validator, hints: isNotEmpty);
@@ -255,23 +240,21 @@
test(
'opts in to null-safety, with previous version not-null-safe. '
'Even with a later null-safe version', () async {
- await servePackages(
- (server) => server
- ..serve(
- 'test_pkg',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- )
- ..serve(
- 'test_pkg',
- '2.0.0',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- ),
- );
+ await servePackages()
+ ..serve(
+ 'test_pkg',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
+ )
+ ..serve(
+ 'test_pkg',
+ '2.0.0',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
+ );
await setup(sdkConstraint: '>=2.12.0 <3.0.0');
await expectValidation(validator, hints: isNotEmpty);
@@ -279,14 +262,13 @@
test('is not opting in to null-safety with previous null-safe version',
() async {
- await servePackages(
- (server) => server.serve(
- 'test_pkg',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- ),
+ final server = await servePackages();
+ server.serve(
+ 'test_pkg',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
);
await setup(sdkConstraint: '>=2.9.0 <3.0.0');
@@ -296,23 +278,21 @@
test(
'is not opting in to null-safety with previous null-safe version. '
'Even with a later non-null-safe version', () async {
- await servePackages(
- (server) => server
- ..serve(
- 'test_pkg',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- )
- ..serve(
- 'test_pkg',
- '2.0.0',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- ),
- );
+ await servePackages()
+ ..serve(
+ 'test_pkg',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
+ )
+ ..serve(
+ 'test_pkg',
+ '2.0.0',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
+ );
await setup(sdkConstraint: '>=2.9.0 <3.0.0');
await expectValidation(validator, hints: isNotEmpty);
@@ -321,23 +301,21 @@
test(
'is opting in to null-safety with previous null-safe stable version. '
'with an in-between non-null-safe prerelease', () async {
- await servePackages(
- (server) => server
- ..serve(
- 'test_pkg',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- )
- ..serve(
- 'test_pkg',
- '0.0.2-dev',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- ),
- );
+ await servePackages()
+ ..serve(
+ 'test_pkg',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
+ )
+ ..serve(
+ 'test_pkg',
+ '0.0.2-dev',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
+ );
await setup(sdkConstraint: '>=2.12.0 <3.0.0');
await expectValidation(validator, hints: isNotEmpty);
@@ -347,14 +325,13 @@
'is opting in to null-safety with no existing stable versions. '
'With a previous non-null-safe prerelease', () async {
await setup(sdkConstraint: '>=2.12.0 <3.0.0');
- await servePackages(
- (server) => server.serve(
- 'test_pkg',
- '0.0.2-dev',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- ),
+ final server = await servePackages();
+ server.serve(
+ 'test_pkg',
+ '0.0.2-dev',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
);
await expectValidation(validator, hints: isNotEmpty);
});
diff --git a/test/version_solver_test.dart b/test/version_solver_test.dart
index 40ebaaf..d36a16f 100644
--- a/test/version_solver_test.dart
+++ b/test/version_solver_test.dart
@@ -40,14 +40,13 @@
});
test('simple dependency tree', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0', deps: {'aa': '1.0.0', 'ab': '1.0.0'});
- builder.serve('aa', '1.0.0');
- builder.serve('ab', '1.0.0');
- builder.serve('b', '1.0.0', deps: {'ba': '1.0.0', 'bb': '1.0.0'});
- builder.serve('ba', '1.0.0');
- builder.serve('bb', '1.0.0');
- });
+ await servePackages()
+ ..serve('a', '1.0.0', deps: {'aa': '1.0.0', 'ab': '1.0.0'})
+ ..serve('aa', '1.0.0')
+ ..serve('ab', '1.0.0')
+ ..serve('b', '1.0.0', deps: {'ba': '1.0.0', 'bb': '1.0.0'})
+ ..serve('ba', '1.0.0')
+ ..serve('bb', '1.0.0');
await d.appDir({'a': '1.0.0', 'b': '1.0.0'}).create();
await expectResolves(result: {
@@ -61,15 +60,14 @@
});
test('shared dependency with overlapping constraints', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0', deps: {'shared': '>=2.0.0 <4.0.0'});
- builder.serve('b', '1.0.0', deps: {'shared': '>=3.0.0 <5.0.0'});
- builder.serve('shared', '2.0.0');
- builder.serve('shared', '3.0.0');
- builder.serve('shared', '3.6.9');
- builder.serve('shared', '4.0.0');
- builder.serve('shared', '5.0.0');
- });
+ await servePackages()
+ ..serve('a', '1.0.0', deps: {'shared': '>=2.0.0 <4.0.0'})
+ ..serve('b', '1.0.0', deps: {'shared': '>=3.0.0 <5.0.0'})
+ ..serve('shared', '2.0.0')
+ ..serve('shared', '3.0.0')
+ ..serve('shared', '3.6.9')
+ ..serve('shared', '4.0.0')
+ ..serve('shared', '5.0.0');
await d.appDir({'a': '1.0.0', 'b': '1.0.0'}).create();
await expectResolves(
@@ -79,16 +77,15 @@
test(
'shared dependency where dependent version in turn affects other '
'dependencies', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '1.0.1', deps: {'bang': '1.0.0'});
- builder.serve('foo', '1.0.2', deps: {'whoop': '1.0.0'});
- builder.serve('foo', '1.0.3', deps: {'zoop': '1.0.0'});
- builder.serve('bar', '1.0.0', deps: {'foo': '<=1.0.1'});
- builder.serve('bang', '1.0.0');
- builder.serve('whoop', '1.0.0');
- builder.serve('zoop', '1.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '1.0.1', deps: {'bang': '1.0.0'})
+ ..serve('foo', '1.0.2', deps: {'whoop': '1.0.0'})
+ ..serve('foo', '1.0.3', deps: {'zoop': '1.0.0'})
+ ..serve('bar', '1.0.0', deps: {'foo': '<=1.0.1'})
+ ..serve('bang', '1.0.0')
+ ..serve('whoop', '1.0.0')
+ ..serve('zoop', '1.0.0');
await d.appDir({'foo': '<=1.0.2', 'bar': '1.0.0'}).create();
await expectResolves(
@@ -96,23 +93,21 @@
});
test('circular dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': '1.0.0'});
- builder.serve('bar', '1.0.0', deps: {'foo': '1.0.0'});
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': '1.0.0'})
+ ..serve('bar', '1.0.0', deps: {'foo': '1.0.0'});
await d.appDir({'foo': '1.0.0'}).create();
await expectResolves(result: {'foo': '1.0.0', 'bar': '1.0.0'});
});
test('removed dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- builder.serve('bar', '1.0.0');
- builder.serve('bar', '2.0.0', deps: {'baz': '1.0.0'});
- builder.serve('baz', '1.0.0', deps: {'foo': '2.0.0'});
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0')
+ ..serve('bar', '1.0.0')
+ ..serve('bar', '2.0.0', deps: {'baz': '1.0.0'})
+ ..serve('baz', '1.0.0', deps: {'foo': '2.0.0'});
await d.appDir({'foo': '1.0.0', 'bar': 'any'}).create();
await expectResolves(result: {'foo': '1.0.0', 'bar': '1.0.0'}, tries: 2);
@@ -121,14 +116,13 @@
void withLockFile() {
test('with compatible locked dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': '1.0.0'});
- builder.serve('foo', '1.0.1', deps: {'bar': '1.0.1'});
- builder.serve('foo', '1.0.2', deps: {'bar': '1.0.2'});
- builder.serve('bar', '1.0.0');
- builder.serve('bar', '1.0.1');
- builder.serve('bar', '1.0.2');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': '1.0.0'})
+ ..serve('foo', '1.0.1', deps: {'bar': '1.0.1'})
+ ..serve('foo', '1.0.2', deps: {'bar': '1.0.2'})
+ ..serve('bar', '1.0.0')
+ ..serve('bar', '1.0.1')
+ ..serve('bar', '1.0.2');
await d.appDir({'foo': '1.0.1'}).create();
await expectResolves(result: {'foo': '1.0.1', 'bar': '1.0.1'});
@@ -138,14 +132,13 @@
});
test('with incompatible locked dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': '1.0.0'});
- builder.serve('foo', '1.0.1', deps: {'bar': '1.0.1'});
- builder.serve('foo', '1.0.2', deps: {'bar': '1.0.2'});
- builder.serve('bar', '1.0.0');
- builder.serve('bar', '1.0.1');
- builder.serve('bar', '1.0.2');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': '1.0.0'})
+ ..serve('foo', '1.0.1', deps: {'bar': '1.0.1'})
+ ..serve('foo', '1.0.2', deps: {'bar': '1.0.2'})
+ ..serve('bar', '1.0.0')
+ ..serve('bar', '1.0.1')
+ ..serve('bar', '1.0.2');
await d.appDir({'foo': '1.0.1'}).create();
await expectResolves(result: {'foo': '1.0.1', 'bar': '1.0.1'});
@@ -155,15 +148,14 @@
});
test('with unrelated locked dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': '1.0.0'});
- builder.serve('foo', '1.0.1', deps: {'bar': '1.0.1'});
- builder.serve('foo', '1.0.2', deps: {'bar': '1.0.2'});
- builder.serve('bar', '1.0.0');
- builder.serve('bar', '1.0.1');
- builder.serve('bar', '1.0.2');
- builder.serve('baz', '1.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': '1.0.0'})
+ ..serve('foo', '1.0.1', deps: {'bar': '1.0.1'})
+ ..serve('foo', '1.0.2', deps: {'bar': '1.0.2'})
+ ..serve('bar', '1.0.0')
+ ..serve('bar', '1.0.1')
+ ..serve('bar', '1.0.2')
+ ..serve('baz', '1.0.0');
await d.appDir({'baz': '1.0.0'}).create();
await expectResolves(result: {'baz': '1.0.0'});
@@ -175,17 +167,16 @@
test(
'unlocks dependencies if necessary to ensure that a new '
'dependency is satisfied', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': '<2.0.0'});
- builder.serve('bar', '1.0.0', deps: {'baz': '<2.0.0'});
- builder.serve('baz', '1.0.0', deps: {'qux': '<2.0.0'});
- builder.serve('qux', '1.0.0');
- builder.serve('foo', '2.0.0', deps: {'bar': '<3.0.0'});
- builder.serve('bar', '2.0.0', deps: {'baz': '<3.0.0'});
- builder.serve('baz', '2.0.0', deps: {'qux': '<3.0.0'});
- builder.serve('qux', '2.0.0');
- builder.serve('newdep', '2.0.0', deps: {'baz': '>=1.5.0'});
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': '<2.0.0'})
+ ..serve('bar', '1.0.0', deps: {'baz': '<2.0.0'})
+ ..serve('baz', '1.0.0', deps: {'qux': '<2.0.0'})
+ ..serve('qux', '1.0.0')
+ ..serve('foo', '2.0.0', deps: {'bar': '<3.0.0'})
+ ..serve('bar', '2.0.0', deps: {'baz': '<3.0.0'})
+ ..serve('baz', '2.0.0', deps: {'qux': '<3.0.0'})
+ ..serve('qux', '2.0.0')
+ ..serve('newdep', '2.0.0', deps: {'baz': '>=1.5.0'});
await d.appDir({'foo': '1.0.0'}).create();
await expectResolves(result: {
@@ -209,11 +200,10 @@
test(
"produces a nice message for a locked dependency that's the only "
'version of its package', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': '>=2.0.0'});
- builder.serve('bar', '1.0.0');
- builder.serve('bar', '2.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': '>=2.0.0'})
+ ..serve('bar', '1.0.0')
+ ..serve('bar', '2.0.0');
await d.appDir({'foo': 'any'}).create();
await expectResolves(result: {'foo': '1.0.0', 'bar': '2.0.0'});
@@ -229,30 +219,27 @@
void rootDependency() {
test('with root source', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'myapp': 'any'});
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', deps: {'myapp': 'any'});
await d.appDir({'foo': '1.0.0'}).create();
await expectResolves(result: {'foo': '1.0.0'});
});
test('with mismatched sources', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'myapp': 'any'});
- builder.serve('bar', '1.0.0', deps: {
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'myapp': 'any'})
+ ..serve('bar', '1.0.0', deps: {
'myapp': {'git': 'http://nowhere.com/'}
});
- });
await d.appDir({'foo': '1.0.0', 'bar': '1.0.0'}).create();
await expectResolves(result: {'foo': '1.0.0', 'bar': '1.0.0'});
});
test('with wrong version', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'myapp': '>0.0.0'});
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', deps: {'myapp': '>0.0.0'});
await d.appDir({'foo': '1.0.0'}).create();
await expectResolves(error: equalsIgnoringWhitespace('''
@@ -265,10 +252,9 @@
void devDependency() {
test("includes root package's dev dependencies", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('bar', '1.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('bar', '1.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -281,10 +267,9 @@
});
test("includes dev dependency's transitive dependencies", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': '1.0.0'});
- builder.serve('bar', '1.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': '1.0.0'})
+ ..serve('bar', '1.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -297,10 +282,9 @@
});
test("ignores transitive dependency's dev dependencies", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'dev_dependencies': {'bar': '1.0.0'}
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'dev_dependencies': {'bar': '1.0.0'}
});
await d.appDir({'foo': '1.0.0'}).create();
@@ -309,11 +293,10 @@
group('with both a dev and regular dependency', () {
test('succeeds when both are satisfied', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- builder.serve('foo', '3.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0')
+ ..serve('foo', '3.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -327,9 +310,8 @@
});
test("fails when main dependency isn't satisfied", () async {
- await servePackages((builder) {
- builder.serve('foo', '3.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '3.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -347,9 +329,8 @@
});
test("fails when dev dependency isn't satisfied", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -367,9 +348,8 @@
});
test('fails when dev and main constraints are incompatible', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -386,9 +366,8 @@
});
test('fails when dev and main sources are incompatible', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -407,9 +386,8 @@
});
test('fails when dev and main descriptions are incompatible', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -433,10 +411,9 @@
void unsolvable() {
test('no version that matches constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '2.0.0');
- builder.serve('foo', '2.1.3');
- });
+ await servePackages()
+ ..serve('foo', '2.0.0')
+ ..serve('foo', '2.1.3');
await d.appDir({'foo': '>=1.0.0 <2.0.0'}).create();
await expectResolves(error: equalsIgnoringWhitespace("""
@@ -446,12 +423,11 @@
});
test('no version that matches combined constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'shared': '>=2.0.0 <3.0.0'});
- builder.serve('bar', '1.0.0', deps: {'shared': '>=2.9.0 <4.0.0'});
- builder.serve('shared', '2.5.0');
- builder.serve('shared', '3.5.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'shared': '>=2.0.0 <3.0.0'})
+ ..serve('bar', '1.0.0', deps: {'shared': '>=2.9.0 <4.0.0'})
+ ..serve('shared', '2.5.0')
+ ..serve('shared', '3.5.0');
await d.appDir({'foo': '1.0.0', 'bar': '1.0.0'}).create();
await expectResolves(error: equalsIgnoringWhitespace('''
@@ -466,12 +442,11 @@
});
test('disjoint constraints', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'shared': '<=2.0.0'});
- builder.serve('bar', '1.0.0', deps: {'shared': '>3.0.0'});
- builder.serve('shared', '2.0.0');
- builder.serve('shared', '4.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'shared': '<=2.0.0'})
+ ..serve('bar', '1.0.0', deps: {'shared': '>3.0.0'})
+ ..serve('shared', '2.0.0')
+ ..serve('shared', '4.0.0');
await d.appDir({'foo': '1.0.0', 'bar': '1.0.0'}).create();
await expectResolves(error: equalsIgnoringWhitespace('''
@@ -483,20 +458,18 @@
});
test('mismatched descriptions', () async {
- var otherServer = await PackageServer.start((builder) {
- builder.serve('shared', '1.0.0');
- });
+ var otherServer = await startPackageServer();
+ otherServer.serve('shared', '1.0.0');
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'shared': '1.0.0'});
- builder.serve('bar', '1.0.0', deps: {
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'shared': '1.0.0'})
+ ..serve('bar', '1.0.0', deps: {
'shared': {
'hosted': {'name': 'shared', 'url': otherServer.url},
'version': '1.0.0'
}
- });
- builder.serve('shared', '1.0.0');
- });
+ })
+ ..serve('shared', '1.0.0');
await d.appDir({'foo': '1.0.0', 'bar': '1.0.0'}).create();
@@ -515,13 +488,12 @@
test('mismatched sources', () async {
await d.dir('shared', [d.libPubspec('shared', '1.0.0')]).create();
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'shared': '1.0.0'});
- builder.serve('bar', '1.0.0', deps: {
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'shared': '1.0.0'})
+ ..serve('bar', '1.0.0', deps: {
'shared': {'path': p.join(d.sandbox, 'shared')}
- });
- builder.serve('shared', '1.0.0');
- });
+ })
+ ..serve('shared', '1.0.0');
await d.appDir({'foo': '1.0.0', 'bar': '1.0.0'}).create();
await expectResolves(error: equalsIgnoringWhitespace('''
@@ -534,12 +506,11 @@
});
test('no valid solution', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0', deps: {'b': '1.0.0'});
- builder.serve('a', '2.0.0', deps: {'b': '2.0.0'});
- builder.serve('b', '1.0.0', deps: {'a': '2.0.0'});
- builder.serve('b', '2.0.0', deps: {'a': '1.0.0'});
- });
+ await servePackages()
+ ..serve('a', '1.0.0', deps: {'b': '1.0.0'})
+ ..serve('a', '2.0.0', deps: {'b': '2.0.0'})
+ ..serve('b', '1.0.0', deps: {'a': '2.0.0'})
+ ..serve('b', '2.0.0', deps: {'a': '1.0.0'});
await d.appDir({'a': 'any', 'b': 'any'}).create();
await expectResolves(error: equalsIgnoringWhitespace('''
@@ -554,10 +525,9 @@
// This is a regression test for #15550.
test('no version that matches while backtracking', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('b', '1.0.0');
- });
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('b', '1.0.0');
await d.appDir({'a': 'any', 'b': '>1.0.0'}).create();
await expectResolves(error: equalsIgnoringWhitespace("""
@@ -568,19 +538,18 @@
// This is a regression test for #18300.
test('issue 18300', () async {
- await servePackages((builder) {
- builder.serve('analyzer', '0.12.2');
- builder.serve('angular', '0.10.0',
- deps: {'di': '>=0.0.32 <0.1.0', 'collection': '>=0.9.1 <1.0.0'});
- builder.serve('angular', '0.9.11',
- deps: {'di': '>=0.0.32 <0.1.0', 'collection': '>=0.9.1 <1.0.0'});
- builder.serve('angular', '0.9.10',
- deps: {'di': '>=0.0.32 <0.1.0', 'collection': '>=0.9.1 <1.0.0'});
- builder.serve('collection', '0.9.0');
- builder.serve('collection', '0.9.1');
- builder.serve('di', '0.0.37', deps: {'analyzer': '>=0.13.0 <0.14.0'});
- builder.serve('di', '0.0.36', deps: {'analyzer': '>=0.13.0 <0.14.0'});
- });
+ await servePackages()
+ ..serve('analyzer', '0.12.2')
+ ..serve('angular', '0.10.0',
+ deps: {'di': '>=0.0.32 <0.1.0', 'collection': '>=0.9.1 <1.0.0'})
+ ..serve('angular', '0.9.11',
+ deps: {'di': '>=0.0.32 <0.1.0', 'collection': '>=0.9.1 <1.0.0'})
+ ..serve('angular', '0.9.10',
+ deps: {'di': '>=0.0.32 <0.1.0', 'collection': '>=0.9.1 <1.0.0'})
+ ..serve('collection', '0.9.0')
+ ..serve('collection', '0.9.1')
+ ..serve('di', '0.0.37', deps: {'analyzer': '>=0.13.0 <0.14.0'})
+ ..serve('di', '0.0.36', deps: {'analyzer': '>=0.13.0 <0.14.0'});
await d.appDir({'angular': 'any', 'collection': 'any'}).create();
await expectResolves(error: equalsIgnoringWhitespace('''
@@ -620,17 +589,16 @@
});
test('fail if all versions have bad source in dep', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {
'bar': {'bad': 'any'}
- });
- builder.serve('foo', '1.0.1', deps: {
+ })
+ ..serve('foo', '1.0.1', deps: {
'baz': {'bad': 'any'}
- });
- builder.serve('foo', '1.0.2', deps: {
+ })
+ ..serve('foo', '1.0.2', deps: {
'bang': {'bad': 'any'}
});
- });
await d.appDir({'foo': 'any'}).create();
await expectResolves(error: equalsIgnoringWhitespace('''
@@ -646,16 +614,15 @@
});
test('ignore versions with bad source in dep', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': 'any'});
- builder.serve('foo', '1.0.1', deps: {
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': 'any'})
+ ..serve('foo', '1.0.1', deps: {
'bar': {'bad': 'any'}
- });
- builder.serve('foo', '1.0.2', deps: {
+ })
+ ..serve('foo', '1.0.2', deps: {
'bar': {'bad': 'any'}
- });
- builder.serve('bar', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0');
await d.appDir({'foo': 'any'}).create();
await expectResolves(result: {'foo': '1.0.0', 'bar': '1.0.0'}, tries: 2);
@@ -663,11 +630,10 @@
// Issue 1853
test('reports a nice error across a collapsed cause', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': 'any'});
- builder.serve('bar', '1.0.0', deps: {'baz': 'any'});
- builder.serve('baz', '1.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': 'any'})
+ ..serve('bar', '1.0.0', deps: {'baz': 'any'})
+ ..serve('baz', '1.0.0');
await d.dir('baz', [d.libPubspec('baz', '1.0.0')]).create();
await d.appDir({
@@ -685,28 +651,24 @@
void backtracking() {
test('circular dependency on older version', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('a', '2.0.0', deps: {'b': '1.0.0'});
- builder.serve('b', '1.0.0', deps: {'a': '1.0.0'});
- });
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('a', '2.0.0', deps: {'b': '1.0.0'})
+ ..serve('b', '1.0.0', deps: {'a': '1.0.0'});
await d.appDir({'a': '>=1.0.0'}).create();
await expectResolves(result: {'a': '1.0.0'}, tries: 2);
});
test('diamond dependency graph', () async {
- await servePackages((builder) {
- builder.serve('a', '2.0.0', deps: {'c': '^1.0.0'});
- builder.serve('a', '1.0.0');
-
- builder.serve('b', '2.0.0', deps: {'c': '^3.0.0'});
- builder.serve('b', '1.0.0', deps: {'c': '^2.0.0'});
-
- builder.serve('c', '3.0.0');
- builder.serve('c', '2.0.0');
- builder.serve('c', '1.0.0');
- });
+ await servePackages()
+ ..serve('a', '2.0.0', deps: {'c': '^1.0.0'})
+ ..serve('a', '1.0.0')
+ ..serve('b', '2.0.0', deps: {'c': '^3.0.0'})
+ ..serve('b', '1.0.0', deps: {'c': '^2.0.0'})
+ ..serve('c', '3.0.0')
+ ..serve('c', '2.0.0')
+ ..serve('c', '1.0.0');
await d.appDir({'a': 'any', 'b': 'any'}).create();
await expectResolves(result: {'a': '1.0.0', 'b': '2.0.0', 'c': '3.0.0'});
@@ -716,20 +678,16 @@
// requirement only exists because of both a and b. The solver should be able
// to deduce c 2.0.0's incompatibility and select c 1.0.0 instead.
test('backjumps after a partial satisfier', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0', deps: {'x': '>=1.0.0'});
- builder.serve('b', '1.0.0', deps: {'x': '<2.0.0'});
-
- builder.serve('c', '1.0.0');
- builder.serve('c', '2.0.0', deps: {'a': 'any', 'b': 'any'});
-
- builder.serve('x', '0.0.0');
- builder.serve('x', '1.0.0', deps: {'y': '1.0.0'});
- builder.serve('x', '2.0.0');
-
- builder.serve('y', '1.0.0');
- builder.serve('y', '2.0.0');
- });
+ await servePackages()
+ ..serve('a', '1.0.0', deps: {'x': '>=1.0.0'})
+ ..serve('b', '1.0.0', deps: {'x': '<2.0.0'})
+ ..serve('c', '1.0.0')
+ ..serve('c', '2.0.0', deps: {'a': 'any', 'b': 'any'})
+ ..serve('x', '0.0.0')
+ ..serve('x', '1.0.0', deps: {'y': '1.0.0'})
+ ..serve('x', '2.0.0')
+ ..serve('y', '1.0.0')
+ ..serve('y', '2.0.0');
await d.appDir({'c': 'any', 'y': '^2.0.0'}).create();
await expectResolves(result: {'c': '1.0.0', 'y': '2.0.0'}, tries: 2);
@@ -738,16 +696,15 @@
// This matches the Branching Error Reporting example in the version solver
// documentation, and tests that we display line numbers correctly.
test('branching error reporting', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'a': '^1.0.0', 'b': '^1.0.0'});
- builder.serve('foo', '1.1.0', deps: {'x': '^1.0.0', 'y': '^1.0.0'});
- builder.serve('a', '1.0.0', deps: {'b': '^2.0.0'});
- builder.serve('b', '1.0.0');
- builder.serve('b', '2.0.0');
- builder.serve('x', '1.0.0', deps: {'y': '^2.0.0'});
- builder.serve('y', '1.0.0');
- builder.serve('y', '2.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'a': '^1.0.0', 'b': '^1.0.0'})
+ ..serve('foo', '1.1.0', deps: {'x': '^1.0.0', 'y': '^1.0.0'})
+ ..serve('a', '1.0.0', deps: {'b': '^2.0.0'})
+ ..serve('b', '1.0.0')
+ ..serve('b', '2.0.0')
+ ..serve('x', '1.0.0', deps: {'y': '^2.0.0'})
+ ..serve('y', '1.0.0')
+ ..serve('y', '2.0.0');
await d.appDir({'foo': '^1.0.0'}).create();
await expectResolves(
@@ -772,14 +729,13 @@
// will resolve the problem. This test validates that b, which is farther
// in the dependency graph from myapp is downgraded first.
test('rolls back leaf versions first', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0', deps: {'b': 'any'});
- builder.serve('a', '2.0.0', deps: {'b': 'any', 'c': '2.0.0'});
- builder.serve('b', '1.0.0');
- builder.serve('b', '2.0.0', deps: {'c': '1.0.0'});
- builder.serve('c', '1.0.0');
- builder.serve('c', '2.0.0');
- });
+ await servePackages()
+ ..serve('a', '1.0.0', deps: {'b': 'any'})
+ ..serve('a', '2.0.0', deps: {'b': 'any', 'c': '2.0.0'})
+ ..serve('b', '1.0.0')
+ ..serve('b', '2.0.0', deps: {'c': '1.0.0'})
+ ..serve('c', '1.0.0')
+ ..serve('c', '2.0.0');
await d.appDir({'a': 'any'}).create();
await expectResolves(result: {'a': '2.0.0', 'b': '1.0.0', 'c': '2.0.0'});
@@ -788,15 +744,14 @@
// Only one version of baz, so foo and bar will have to downgrade until they
// reach it.
test('simple transitive', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': '1.0.0'});
- builder.serve('foo', '2.0.0', deps: {'bar': '2.0.0'});
- builder.serve('foo', '3.0.0', deps: {'bar': '3.0.0'});
- builder.serve('bar', '1.0.0', deps: {'baz': 'any'});
- builder.serve('bar', '2.0.0', deps: {'baz': '2.0.0'});
- builder.serve('bar', '3.0.0', deps: {'baz': '3.0.0'});
- builder.serve('baz', '1.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': '1.0.0'})
+ ..serve('foo', '2.0.0', deps: {'bar': '2.0.0'})
+ ..serve('foo', '3.0.0', deps: {'bar': '3.0.0'})
+ ..serve('bar', '1.0.0', deps: {'baz': 'any'})
+ ..serve('bar', '2.0.0', deps: {'baz': '2.0.0'})
+ ..serve('bar', '3.0.0', deps: {'baz': '3.0.0'})
+ ..serve('baz', '1.0.0');
await d.appDir({'foo': 'any'}).create();
await expectResolves(
@@ -808,14 +763,13 @@
// make sure b has more versions than a so that the solver tries a first
// since it sorts sibling dependencies by number of versions.
test('backjump to nearer unsatisfied package', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0', deps: {'c': '1.0.0'});
- builder.serve('a', '2.0.0', deps: {'c': '2.0.0-nonexistent'});
- builder.serve('b', '1.0.0');
- builder.serve('b', '2.0.0');
- builder.serve('b', '3.0.0');
- builder.serve('c', '1.0.0');
- });
+ await servePackages()
+ ..serve('a', '1.0.0', deps: {'c': '1.0.0'})
+ ..serve('a', '2.0.0', deps: {'c': '2.0.0-nonexistent'})
+ ..serve('b', '1.0.0')
+ ..serve('b', '2.0.0')
+ ..serve('b', '3.0.0')
+ ..serve('c', '1.0.0');
await d.appDir({'a': 'any', 'b': 'any'}).create();
await expectResolves(
@@ -839,18 +793,17 @@
test('successful backjump to conflicting source', () async {
await d.dir('a', [d.libPubspec('a', '1.0.0')]).create();
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('b', '1.0.0', deps: {'a': 'any'});
- builder.serve('b', '2.0.0', deps: {
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('b', '1.0.0', deps: {'a': 'any'})
+ ..serve('b', '2.0.0', deps: {
'a': {'path': p.join(d.sandbox, 'a')}
- });
- builder.serve('c', '1.0.0');
- builder.serve('c', '2.0.0');
- builder.serve('c', '3.0.0');
- builder.serve('c', '4.0.0');
- builder.serve('c', '5.0.0');
- });
+ })
+ ..serve('c', '1.0.0')
+ ..serve('c', '2.0.0')
+ ..serve('c', '3.0.0')
+ ..serve('c', '4.0.0')
+ ..serve('c', '5.0.0');
await d.appDir({'a': 'any', 'b': 'any', 'c': 'any'}).create();
await expectResolves(result: {'a': '1.0.0', 'b': '1.0.0', 'c': '5.0.0'});
@@ -858,24 +811,22 @@
// Like the above test, but for a conflicting description.
test('successful backjump to conflicting description', () async {
- var otherServer = await PackageServer.start((builder) {
- builder.serve('a', '1.0.0');
- });
+ var otherServer = await startPackageServer();
+ otherServer.serve('a', '1.0.0');
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('b', '1.0.0', deps: {'a': 'any'});
- builder.serve('b', '2.0.0', deps: {
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('b', '1.0.0', deps: {'a': 'any'})
+ ..serve('b', '2.0.0', deps: {
'a': {
'hosted': {'name': 'a', 'url': otherServer.url}
}
- });
- builder.serve('c', '1.0.0');
- builder.serve('c', '2.0.0');
- builder.serve('c', '3.0.0');
- builder.serve('c', '4.0.0');
- builder.serve('c', '5.0.0');
- });
+ })
+ ..serve('c', '1.0.0')
+ ..serve('c', '2.0.0')
+ ..serve('c', '3.0.0')
+ ..serve('c', '4.0.0')
+ ..serve('c', '5.0.0');
await d.appDir({'a': 'any', 'b': 'any', 'c': 'any'}).create();
await expectResolves(result: {'a': '1.0.0', 'b': '1.0.0', 'c': '5.0.0'});
@@ -886,17 +837,16 @@
test('failing backjump to conflicting source', () async {
await d.dir('a', [d.libPubspec('a', '1.0.0')]).create();
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('b', '1.0.0', deps: {
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('b', '1.0.0', deps: {
'a': {'path': p.join(d.sandbox, 'shared')}
- });
- builder.serve('c', '1.0.0');
- builder.serve('c', '2.0.0');
- builder.serve('c', '3.0.0');
- builder.serve('c', '4.0.0');
- builder.serve('c', '5.0.0');
- });
+ })
+ ..serve('c', '1.0.0')
+ ..serve('c', '2.0.0')
+ ..serve('c', '3.0.0')
+ ..serve('c', '4.0.0')
+ ..serve('c', '5.0.0');
await d.appDir({'a': 'any', 'b': 'any', 'c': 'any'}).create();
await expectResolves(error: equalsIgnoringWhitespace('''
@@ -907,23 +857,21 @@
});
test('failing backjump to conflicting description', () async {
- var otherServer = await PackageServer.start((builder) {
- builder.serve('a', '1.0.0');
- });
+ var otherServer = await startPackageServer();
+ otherServer.serve('a', '1.0.0');
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('b', '1.0.0', deps: {
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('b', '1.0.0', deps: {
'a': {
'hosted': {'name': 'a', 'url': otherServer.url}
}
- });
- builder.serve('c', '1.0.0');
- builder.serve('c', '2.0.0');
- builder.serve('c', '3.0.0');
- builder.serve('c', '4.0.0');
- builder.serve('c', '5.0.0');
- });
+ })
+ ..serve('c', '1.0.0')
+ ..serve('c', '2.0.0')
+ ..serve('c', '3.0.0')
+ ..serve('c', '4.0.0')
+ ..serve('c', '5.0.0');
await d.appDir({'a': 'any', 'b': 'any', 'c': 'any'}).create();
await expectResolves(
@@ -942,39 +890,37 @@
// Since b has fewer versions, it will be traversed first, which means a will
// come later. Since later selections are revised first, a gets downgraded.
test('traverse into package with fewer versions first', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0', deps: {'c': 'any'});
- builder.serve('a', '2.0.0', deps: {'c': 'any'});
- builder.serve('a', '3.0.0', deps: {'c': 'any'});
- builder.serve('a', '4.0.0', deps: {'c': 'any'});
- builder.serve('a', '5.0.0', deps: {'c': '1.0.0'});
- builder.serve('b', '1.0.0', deps: {'c': 'any'});
- builder.serve('b', '2.0.0', deps: {'c': 'any'});
- builder.serve('b', '3.0.0', deps: {'c': 'any'});
- builder.serve('b', '4.0.0', deps: {'c': '2.0.0'});
- builder.serve('c', '1.0.0');
- builder.serve('c', '2.0.0');
- });
+ await servePackages()
+ ..serve('a', '1.0.0', deps: {'c': 'any'})
+ ..serve('a', '2.0.0', deps: {'c': 'any'})
+ ..serve('a', '3.0.0', deps: {'c': 'any'})
+ ..serve('a', '4.0.0', deps: {'c': 'any'})
+ ..serve('a', '5.0.0', deps: {'c': '1.0.0'})
+ ..serve('b', '1.0.0', deps: {'c': 'any'})
+ ..serve('b', '2.0.0', deps: {'c': 'any'})
+ ..serve('b', '3.0.0', deps: {'c': 'any'})
+ ..serve('b', '4.0.0', deps: {'c': '2.0.0'})
+ ..serve('c', '1.0.0')
+ ..serve('c', '2.0.0');
await d.appDir({'a': 'any', 'b': 'any'}).create();
await expectResolves(result: {'a': '4.0.0', 'b': '4.0.0', 'c': '2.0.0'});
});
test('complex backtrack', () async {
- await servePackages((builder) {
- // This sets up a hundred versions of foo and bar, 0.0.0 through 9.9.0. Each
- // version of foo depends on a baz with the same major version. Each version
- // of bar depends on a baz with the same minor version. There is only one
- // version of baz, 0.0.0, so only older versions of foo and bar will
- // satisfy it.
- builder.serve('baz', '0.0.0');
- for (var i = 0; i < 10; i++) {
- for (var j = 0; j < 10; j++) {
- builder.serve('foo', '$i.$j.0', deps: {'baz': '$i.0.0'});
- builder.serve('bar', '$i.$j.0', deps: {'baz': '0.$j.0'});
- }
+ final server = await servePackages();
+ // This sets up a hundred versions of foo and bar, 0.0.0 through 9.9.0. Each
+ // version of foo depends on a baz with the same major version. Each version
+ // of bar depends on a baz with the same minor version. There is only one
+ // version of baz, 0.0.0, so only older versions of foo and bar will
+ // satisfy it.
+ server.serve('baz', '0.0.0');
+ for (var i = 0; i < 10; i++) {
+ for (var j = 0; j < 10; j++) {
+ server.serve('foo', '$i.$j.0', deps: {'baz': '$i.0.0'});
+ server.serve('bar', '$i.$j.0', deps: {'baz': '0.$j.0'});
}
- });
+ }
await d.appDir({'foo': 'any', 'bar': 'any'}).create();
await expectResolves(
@@ -985,19 +931,18 @@
// versions of it is a waste of time: no possible versions can match. We need
// to jump past it to the most recent package that affected the constraint.
test('backjump past failed package on disjoint constraint', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0', deps: {
+ await servePackages()
+ ..serve('a', '1.0.0', deps: {
'foo': 'any' // ok
- });
- builder.serve('a', '2.0.0', deps: {
+ })
+ ..serve('a', '2.0.0', deps: {
'foo': '<1.0.0' // disjoint with myapp's constraint on foo
- });
- builder.serve('foo', '2.0.0');
- builder.serve('foo', '2.0.1');
- builder.serve('foo', '2.0.2');
- builder.serve('foo', '2.0.3');
- builder.serve('foo', '2.0.4');
- });
+ })
+ ..serve('foo', '2.0.0')
+ ..serve('foo', '2.0.1')
+ ..serve('foo', '2.0.2')
+ ..serve('foo', '2.0.3')
+ ..serve('foo', '2.0.4');
await d.appDir({'a': 'any', 'foo': '>2.0.0'}).create();
await expectResolves(result: {'a': '1.0.0', 'foo': '2.0.4'});
@@ -1008,14 +953,13 @@
// would backtrack over the failed package instead of trying different
// versions of it.
test('finds solution with less strict constraint', () async {
- await servePackages((builder) {
- builder.serve('a', '2.0.0');
- builder.serve('a', '1.0.0');
- builder.serve('b', '1.0.0', deps: {'a': '1.0.0'});
- builder.serve('c', '1.0.0', deps: {'b': 'any'});
- builder.serve('d', '2.0.0', deps: {'myapp': 'any'});
- builder.serve('d', '1.0.0', deps: {'myapp': '<1.0.0'});
- });
+ await servePackages()
+ ..serve('a', '2.0.0')
+ ..serve('a', '1.0.0')
+ ..serve('b', '1.0.0', deps: {'a': '1.0.0'})
+ ..serve('c', '1.0.0', deps: {'b': 'any'})
+ ..serve('d', '2.0.0', deps: {'myapp': 'any'})
+ ..serve('d', '1.0.0', deps: {'myapp': '<1.0.0'});
await d.appDir({'a': 'any', 'c': 'any', 'd': 'any'}).create();
await expectResolves(
@@ -1051,10 +995,9 @@
});
test('dependency does not match SDK', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'environment': {'sdk': '0.0.0'}
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'environment': {'sdk': '0.0.0'}
});
await d.appDir({'foo': 'any'}).create();
@@ -1067,12 +1010,11 @@
});
test('transitive dependency does not match SDK', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': 'any'});
- builder.serve('bar', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': 'any'})
+ ..serve('bar', '1.0.0', pubspec: {
'environment': {'sdk': '0.0.0'}
});
- });
await d.appDir({'foo': 'any'}).create();
await expectResolves(error: equalsIgnoringWhitespace('''
@@ -1085,41 +1027,39 @@
});
test('selects a dependency version that allows the SDK', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'environment': {'sdk': '0.1.2+3'}
- });
- builder.serve('foo', '2.0.0', pubspec: {
+ })
+ ..serve('foo', '2.0.0', pubspec: {
'environment': {'sdk': '0.1.2+3'}
- });
- builder.serve('foo', '3.0.0', pubspec: {
+ })
+ ..serve('foo', '3.0.0', pubspec: {
+ 'environment': {'sdk': '0.0.0'}
+ })
+ ..serve('foo', '4.0.0', pubspec: {
'environment': {'sdk': '0.0.0'}
});
- builder.serve('foo', '4.0.0', pubspec: {
- 'environment': {'sdk': '0.0.0'}
- });
- });
await d.appDir({'foo': 'any'}).create();
await expectResolves(result: {'foo': '2.0.0'});
});
test('selects a transitive dependency version that allows the SDK', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': 'any'});
- builder.serve('bar', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': 'any'})
+ ..serve('bar', '1.0.0', pubspec: {
'environment': {'sdk': '0.1.2+3'}
- });
- builder.serve('bar', '2.0.0', pubspec: {
+ })
+ ..serve('bar', '2.0.0', pubspec: {
'environment': {'sdk': '0.1.2+3'}
- });
- builder.serve('bar', '3.0.0', pubspec: {
+ })
+ ..serve('bar', '3.0.0', pubspec: {
+ 'environment': {'sdk': '0.0.0'}
+ })
+ ..serve('bar', '4.0.0', pubspec: {
'environment': {'sdk': '0.0.0'}
});
- builder.serve('bar', '4.0.0', pubspec: {
- 'environment': {'sdk': '0.0.0'}
- });
- });
await d.appDir({'foo': 'any'}).create();
await expectResolves(result: {'foo': '1.0.0', 'bar': '2.0.0'});
@@ -1128,24 +1068,23 @@
test(
'selects a dependency version that allows a transitive '
'dependency that allows the SDK', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': '1.0.0'});
- builder.serve('foo', '2.0.0', deps: {'bar': '2.0.0'});
- builder.serve('foo', '3.0.0', deps: {'bar': '3.0.0'});
- builder.serve('foo', '4.0.0', deps: {'bar': '4.0.0'});
- builder.serve('bar', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': '1.0.0'})
+ ..serve('foo', '2.0.0', deps: {'bar': '2.0.0'})
+ ..serve('foo', '3.0.0', deps: {'bar': '3.0.0'})
+ ..serve('foo', '4.0.0', deps: {'bar': '4.0.0'})
+ ..serve('bar', '1.0.0', pubspec: {
'environment': {'sdk': '0.1.2+3'}
- });
- builder.serve('bar', '2.0.0', pubspec: {
+ })
+ ..serve('bar', '2.0.0', pubspec: {
'environment': {'sdk': '0.1.2+3'}
- });
- builder.serve('bar', '3.0.0', pubspec: {
+ })
+ ..serve('bar', '3.0.0', pubspec: {
+ 'environment': {'sdk': '0.0.0'}
+ })
+ ..serve('bar', '4.0.0', pubspec: {
'environment': {'sdk': '0.0.0'}
});
- builder.serve('bar', '4.0.0', pubspec: {
- 'environment': {'sdk': '0.0.0'}
- });
- });
await d.appDir({'foo': 'any'}).create();
await expectResolves(result: {'foo': '2.0.0', 'bar': '2.0.0'}, tries: 2);
@@ -1463,10 +1402,9 @@
});
test('fails for a dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'environment': {'flutter': '0.0.0'}
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'environment': {'flutter': '0.0.0'}
});
await d.appDir({'foo': 'any'}).create();
@@ -1479,13 +1417,12 @@
});
test("chooses a version that doesn't need Flutter", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0');
- builder.serve('foo', '3.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0')
+ ..serve('foo', '3.0.0', pubspec: {
'environment': {'flutter': '0.0.0'}
});
- });
await d.appDir({'foo': 'any'}).create();
await expectResolves(result: {'foo': '2.0.0'});
@@ -1612,17 +1549,16 @@
});
test('selects the latest dependency with a matching constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'environment': {'flutter': '^0.0.0'}
- });
- builder.serve('foo', '2.0.0', pubspec: {
+ })
+ ..serve('foo', '2.0.0', pubspec: {
'environment': {'flutter': '^1.0.0'}
- });
- builder.serve('foo', '3.0.0', pubspec: {
+ })
+ ..serve('foo', '3.0.0', pubspec: {
'environment': {'flutter': '^2.0.0'}
});
- });
await d.appDir({'foo': 'any'}).create();
await expectResolves(
@@ -1634,36 +1570,33 @@
void prerelease() {
test('prefer stable versions over unstable', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('a', '1.1.0-dev');
- builder.serve('a', '2.0.0-dev');
- builder.serve('a', '3.0.0-dev');
- });
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('a', '1.1.0-dev')
+ ..serve('a', '2.0.0-dev')
+ ..serve('a', '3.0.0-dev');
await d.appDir({'a': 'any'}).create();
await expectResolves(result: {'a': '1.0.0'});
});
test('use latest allowed prerelease if no stable versions match', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0-dev');
- builder.serve('a', '1.1.0-dev');
- builder.serve('a', '1.9.0-dev');
- builder.serve('a', '3.0.0');
- });
+ await servePackages()
+ ..serve('a', '1.0.0-dev')
+ ..serve('a', '1.1.0-dev')
+ ..serve('a', '1.9.0-dev')
+ ..serve('a', '3.0.0');
await d.appDir({'a': '<2.0.0'}).create();
await expectResolves(result: {'a': '1.9.0-dev'});
});
test('use an earlier stable version on a < constraint', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('a', '1.1.0');
- builder.serve('a', '2.0.0-dev');
- builder.serve('a', '2.0.0');
- });
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('a', '1.1.0')
+ ..serve('a', '2.0.0-dev')
+ ..serve('a', '2.0.0');
await d.appDir({'a': '<2.0.0'}).create();
await expectResolves(result: {'a': '1.1.0'});
@@ -1671,33 +1604,30 @@
test('prefer a stable version even if constraint mentions unstable',
() async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('a', '1.1.0');
- builder.serve('a', '2.0.0-dev');
- builder.serve('a', '2.0.0');
- });
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('a', '1.1.0')
+ ..serve('a', '2.0.0-dev')
+ ..serve('a', '2.0.0');
await d.appDir({'a': '<=2.0.0-dev'}).create();
await expectResolves(result: {'a': '1.1.0'});
});
test('use pre-release when desired', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('a', '1.1.0-dev');
- });
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('a', '1.1.0-dev');
await d.appDir({'a': '^1.1.0-dev'}).create();
await expectResolves(result: {'a': '1.1.0-dev'});
});
test('can upgrade from pre-release', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('a', '1.1.0-dev');
- builder.serve('a', '1.1.0');
- });
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('a', '1.1.0-dev')
+ ..serve('a', '1.1.0');
await d.appDir({'a': '^1.1.0-dev'}).create();
await expectResolves(result: {'a': '1.1.0'});
@@ -1706,12 +1636,11 @@
test('will use pre-release if depended on in stable release', () async {
// This behavior is desired because a stable package has dependency on a
// pre-release.
- await servePackages((builder) {
- builder.serve('a', '1.0.0', deps: {'b': '^1.0.0'});
- builder.serve('a', '1.1.0', deps: {'b': '^1.1.0-dev'});
- builder.serve('b', '1.0.0');
- builder.serve('b', '1.1.0-dev');
- });
+ await servePackages()
+ ..serve('a', '1.0.0', deps: {'b': '^1.0.0'})
+ ..serve('a', '1.1.0', deps: {'b': '^1.1.0-dev'})
+ ..serve('b', '1.0.0')
+ ..serve('b', '1.1.0-dev');
await d.appDir({'a': '^1.0.0'}).create();
await expectResolves(result: {
@@ -1721,12 +1650,11 @@
});
test('backtracks pre-release choice with direct dependency', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0', deps: {'b': '^1.0.0'});
- builder.serve('a', '1.1.0', deps: {'b': '^1.1.0-dev'});
- builder.serve('b', '1.0.0');
- builder.serve('b', '1.1.0-dev');
- });
+ await servePackages()
+ ..serve('a', '1.0.0', deps: {'b': '^1.0.0'})
+ ..serve('a', '1.1.0', deps: {'b': '^1.1.0-dev'})
+ ..serve('b', '1.0.0')
+ ..serve('b', '1.1.0-dev');
await d.appDir({
'a': '^1.0.0',
@@ -1741,13 +1669,12 @@
test('backtracking pre-release fails with indirect dependency', () async {
// NOTE: This behavior is not necessarily desired.
// If feasible it might worth changing this behavior in the future.
- await servePackages((builder) {
- builder.serve('a', '1.0.0', deps: {'b': '^1.0.0'});
- builder.serve('a', '1.1.0', deps: {'b': '^1.1.0-dev'});
- builder.serve('b', '1.0.0');
- builder.serve('b', '1.1.0-dev');
- builder.serve('c', '1.0.0', deps: {'b': '^1.0.0'});
- });
+ await servePackages()
+ ..serve('a', '1.0.0', deps: {'b': '^1.0.0'})
+ ..serve('a', '1.1.0', deps: {'b': '^1.1.0-dev'})
+ ..serve('b', '1.0.0')
+ ..serve('b', '1.1.0-dev')
+ ..serve('c', '1.0.0', deps: {'b': '^1.0.0'});
await d.appDir({
'a': '^1.0.0',
@@ -1762,14 +1689,13 @@
test('https://github.com/dart-lang/pub/issues/3057 regression', () async {
// This used to cause an infinite loop.
- await servePackages((builder) {
- builder.serve('a', '0.12.0', deps: {});
- builder.serve('b', '0.1.0', deps: {'c': '2.0.0'});
- builder.serve('b', '0.9.0-1', deps: {'c': '^1.6.0'});
- builder.serve('b', '0.10.0', deps: {'a': '1.0.0'});
- builder.serve('b', '0.17.0', deps: {'a': '1.0.0'});
- builder.serve('c', '2.0.1', deps: {});
- });
+ await servePackages()
+ ..serve('a', '0.12.0', deps: {})
+ ..serve('b', '0.1.0', deps: {'c': '2.0.0'})
+ ..serve('b', '0.9.0-1', deps: {'c': '^1.6.0'})
+ ..serve('b', '0.10.0', deps: {'a': '1.0.0'})
+ ..serve('b', '0.17.0', deps: {'a': '1.0.0'})
+ ..serve('c', '2.0.1', deps: {});
await d.appDir(
{
@@ -1784,13 +1710,12 @@
});
test('https://github.com/dart-lang/pub/pull/3038 regression', () async {
- await servePackages((builder) {
- builder.serve('a', '1.1.0', deps: {'b': '^1.0.0'});
- builder.serve('b', '1.0.0', deps: {'c': '^1.0.0'});
- builder.serve('c', '0.9.0');
- builder.serve('b', '1.1.0-alpha');
- builder.serve('a', '1.0.0', deps: {'b': '^1.1.0-alpha'});
- });
+ await servePackages()
+ ..serve('a', '1.1.0', deps: {'b': '^1.0.0'})
+ ..serve('b', '1.0.0', deps: {'c': '^1.0.0'})
+ ..serve('c', '0.9.0')
+ ..serve('b', '1.1.0-alpha')
+ ..serve('a', '1.0.0', deps: {'b': '^1.1.0-alpha'});
await d.appDir({
'a': '^1.0.0',
@@ -1801,11 +1726,10 @@
void override() {
test('chooses best version matching override constraint', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('a', '2.0.0');
- builder.serve('a', '3.0.0');
- });
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('a', '2.0.0')
+ ..serve('a', '3.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -1819,11 +1743,10 @@
});
test('uses override as dependency', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('a', '2.0.0');
- builder.serve('a', '3.0.0');
- });
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('a', '2.0.0')
+ ..serve('a', '3.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -1836,13 +1759,12 @@
});
test('ignores other constraints on overridden package', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('a', '2.0.0');
- builder.serve('a', '3.0.0');
- builder.serve('b', '1.0.0', deps: {'a': '1.0.0'});
- builder.serve('c', '1.0.0', deps: {'a': '3.0.0'});
- });
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('a', '2.0.0')
+ ..serve('a', '3.0.0')
+ ..serve('b', '1.0.0', deps: {'a': '1.0.0'})
+ ..serve('c', '1.0.0', deps: {'a': '3.0.0'});
await d.dir(appPath, [
d.pubspec({
@@ -1856,12 +1778,11 @@
});
test('backtracks on overidden package for its constraints', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0', deps: {'shared': 'any'});
- builder.serve('a', '2.0.0', deps: {'shared': '1.0.0'});
- builder.serve('shared', '1.0.0');
- builder.serve('shared', '2.0.0');
- });
+ await servePackages()
+ ..serve('a', '1.0.0', deps: {'shared': 'any'})
+ ..serve('a', '2.0.0', deps: {'shared': '1.0.0'})
+ ..serve('shared', '1.0.0')
+ ..serve('shared', '2.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -1875,14 +1796,13 @@
});
test('override compatible with locked dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': '1.0.0'});
- builder.serve('foo', '1.0.1', deps: {'bar': '1.0.1'});
- builder.serve('foo', '1.0.2', deps: {'bar': '1.0.2'});
- builder.serve('bar', '1.0.0');
- builder.serve('bar', '1.0.1');
- builder.serve('bar', '1.0.2');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': '1.0.0'})
+ ..serve('foo', '1.0.1', deps: {'bar': '1.0.1'})
+ ..serve('foo', '1.0.2', deps: {'bar': '1.0.2'})
+ ..serve('bar', '1.0.0')
+ ..serve('bar', '1.0.1')
+ ..serve('bar', '1.0.2');
await d.appDir({'foo': '1.0.1'}).create();
await expectResolves(result: {'foo': '1.0.1', 'bar': '1.0.1'});
@@ -1898,14 +1818,13 @@
});
test('override incompatible with locked dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'bar': '1.0.0'});
- builder.serve('foo', '1.0.1', deps: {'bar': '1.0.1'});
- builder.serve('foo', '1.0.2', deps: {'bar': '1.0.2'});
- builder.serve('bar', '1.0.0');
- builder.serve('bar', '1.0.1');
- builder.serve('bar', '1.0.2');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'bar': '1.0.0'})
+ ..serve('foo', '1.0.1', deps: {'bar': '1.0.1'})
+ ..serve('foo', '1.0.2', deps: {'bar': '1.0.2'})
+ ..serve('bar', '1.0.0')
+ ..serve('bar', '1.0.1')
+ ..serve('bar', '1.0.2');
await d.appDir({'foo': '1.0.1'}).create();
await expectResolves(result: {'foo': '1.0.1', 'bar': '1.0.1'});
@@ -1921,10 +1840,9 @@
});
test('no version that matches override', () async {
- await servePackages((builder) {
- builder.serve('foo', '2.0.0');
- builder.serve('foo', '2.1.3');
- });
+ await servePackages()
+ ..serve('foo', '2.0.0')
+ ..serve('foo', '2.1.3');
await d.dir(appPath, [
d.pubspec({
@@ -1940,9 +1858,8 @@
});
test('overrides a bad source without error', () async {
- await servePackages((builder) {
- builder.serve('foo', '0.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '0.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -1958,10 +1875,9 @@
});
test('overrides an unmatched SDK constraint', () async {
- await servePackages((builder) {
- builder.serve('foo', '0.0.0', pubspec: {
- 'environment': {'sdk': '0.0.0'}
- });
+ final server = await servePackages();
+ server.serve('foo', '0.0.0', pubspec: {
+ 'environment': {'sdk': '0.0.0'}
});
await d.dir(appPath, [
@@ -1975,9 +1891,8 @@
});
test('overrides an unmatched root dependency', () async {
- await servePackages((builder) {
- builder.serve('foo', '0.0.0', deps: {'myapp': '1.0.0'});
- });
+ final server = await servePackages();
+ server.serve('foo', '0.0.0', deps: {'myapp': '1.0.0'});
await d.dir(appPath, [
d.pubspec({
@@ -1992,11 +1907,10 @@
// Regression test for #1853
test("overrides a locked package's dependency", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.2.3', deps: {'bar': '1.2.3'});
- builder.serve('bar', '1.2.3');
- builder.serve('bar', '0.0.1');
- });
+ await servePackages()
+ ..serve('foo', '1.2.3', deps: {'bar': '1.2.3'})
+ ..serve('bar', '1.2.3')
+ ..serve('bar', '0.0.1');
await d.appDir({'foo': 'any'}).create();
@@ -2016,12 +1930,11 @@
void downgrade() {
test('downgrades a dependency to the lowest matching version', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '2.0.0-dev');
- builder.serve('foo', '2.0.0');
- builder.serve('foo', '2.1.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '2.0.0-dev')
+ ..serve('foo', '2.0.0')
+ ..serve('foo', '2.1.0');
await d.appDir({'foo': '2.1.0'}).create();
await expectResolves(result: {'foo': '2.1.0'});
@@ -2033,12 +1946,11 @@
test(
'use earliest allowed prerelease if no stable versions match '
'while downgrading', () async {
- await servePackages((builder) {
- builder.serve('a', '1.0.0');
- builder.serve('a', '2.0.0-dev.1');
- builder.serve('a', '2.0.0-dev.2');
- builder.serve('a', '2.0.0-dev.3');
- });
+ await servePackages()
+ ..serve('a', '1.0.0')
+ ..serve('a', '2.0.0-dev.1')
+ ..serve('a', '2.0.0-dev.2')
+ ..serve('a', '2.0.0-dev.3');
await d.appDir({'a': '>=2.0.0-dev.1 <3.0.0'}).create();
await expectResolves(result: {'a': '2.0.0-dev.1'}, downgrade: true);
@@ -2047,67 +1959,63 @@
void features() {
test("doesn't enable an opt-in feature by default", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'default': false,
'dependencies': {'bar': '1.0.0'}
}
}
- });
- builder.serve('bar', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0');
await d.appDir({'foo': '1.0.0'}).create();
await expectResolves(result: {'foo': '1.0.0'});
});
test('enables an opt-out feature by default', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'default': true,
'dependencies': {'bar': '1.0.0'}
}
}
- });
- builder.serve('bar', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0');
await d.appDir({'foo': '1.0.0'}).create();
await expectResolves(result: {'foo': '1.0.0', 'bar': '1.0.0'});
});
test('features are opt-out by default', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'dependencies': {'bar': '1.0.0'}
}
}
- });
- builder.serve('bar', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0');
await d.appDir({'foo': '1.0.0'}).create();
await expectResolves(result: {'foo': '1.0.0', 'bar': '1.0.0'});
});
test("enables an opt-in feature if it's required", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'default': false,
'dependencies': {'bar': '1.0.0'}
}
}
- });
- builder.serve('bar', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0');
await d.appDir({
'foo': {
@@ -2119,16 +2027,15 @@
});
test("doesn't enable an opt-out feature if it's disabled", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'dependencies': {'bar': '1.0.0'}
}
}
- });
- builder.serve('bar', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0');
await d.appDir({
'foo': {
@@ -2140,22 +2047,21 @@
});
test('opting in takes precedence over opting out', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'dependencies': {'bar': '1.0.0'}
}
}
- });
- builder.serve('bar', '1.0.0');
- builder.serve('baz', '1.0.0', deps: {
+ })
+ ..serve('bar', '1.0.0')
+ ..serve('baz', '1.0.0', deps: {
'foo': {
'version': '1.0.0',
'features': {'stuff': true}
}
});
- });
await d.appDir({
'foo': {
@@ -2169,21 +2075,20 @@
});
test('implicitly opting in takes precedence over opting out', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'dependencies': {'bar': '1.0.0'}
}
}
- });
- builder.serve('bar', '1.0.0');
- builder.serve('baz', '1.0.0', deps: {
+ })
+ ..serve('bar', '1.0.0')
+ ..serve('baz', '1.0.0', deps: {
'foo': {
'version': '1.0.0',
}
});
- });
await d.appDir({
'foo': {
@@ -2197,18 +2102,17 @@
});
test("doesn't select a version with an unavailable feature", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'default': false,
'dependencies': {'bar': '1.0.0'}
}
}
- });
- builder.serve('foo', '1.1.0');
- builder.serve('bar', '1.0.0');
- });
+ })
+ ..serve('foo', '1.1.0')
+ ..serve('bar', '1.0.0');
await d.appDir({
'foo': {
@@ -2220,26 +2124,25 @@
});
test("doesn't select a version with an incompatible feature", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'default': false,
'dependencies': {'bar': '1.0.0'}
}
}
- });
- builder.serve('foo', '1.1.0', pubspec: {
+ })
+ ..serve('foo', '1.1.0', pubspec: {
'features': {
'stuff': {
'default': false,
'dependencies': {'bar': '2.0.0'}
}
}
- });
- builder.serve('bar', '1.0.0');
- builder.serve('bar', '2.0.0');
- });
+ })
+ ..serve('bar', '1.0.0')
+ ..serve('bar', '2.0.0');
await d.appDir({
'foo': {
@@ -2254,8 +2157,8 @@
test(
'backtracks if a feature is transitively incompatible with another '
'feature', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'default': false,
@@ -2267,27 +2170,24 @@
}
}
}
- });
- builder.serve('foo', '1.1.0', pubspec: {
+ })
+ ..serve('foo', '1.1.0', pubspec: {
'features': {
'stuff': {
'default': false,
'dependencies': {'bar': '1.0.0'}
}
}
- });
-
- builder.serve('bar', '1.0.0', pubspec: {
+ })
+ ..serve('bar', '1.0.0', pubspec: {
'features': {
'stuff': {
'dependencies': {'baz': '1.0.0'}
}
}
- });
-
- builder.serve('baz', '1.0.0');
- builder.serve('baz', '2.0.0');
- });
+ })
+ ..serve('baz', '1.0.0')
+ ..serve('baz', '2.0.0');
await d.appDir({
'foo': {
@@ -2302,30 +2202,27 @@
test("backtracks if a feature's dependencies are transitively incompatible",
() async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'default': false,
'dependencies': {'bar': '1.0.0'}
}
}
- });
- builder.serve('foo', '1.1.0', pubspec: {
+ })
+ ..serve('foo', '1.1.0', pubspec: {
'features': {
'stuff': {
'default': false,
'dependencies': {'bar': '2.0.0'}
}
}
- });
-
- builder.serve('bar', '1.0.0', deps: {'baz': '1.0.0'});
- builder.serve('bar', '2.0.0', deps: {'baz': '2.0.0'});
-
- builder.serve('baz', '1.0.0');
- builder.serve('baz', '2.0.0');
- });
+ })
+ ..serve('bar', '1.0.0', deps: {'baz': '1.0.0'})
+ ..serve('bar', '2.0.0', deps: {'baz': '2.0.0'})
+ ..serve('baz', '1.0.0')
+ ..serve('baz', '2.0.0');
await d.appDir({
'foo': {
@@ -2339,9 +2236,9 @@
});
test('disables a feature when it backtracks', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {'myapp': '0.0.0'});
- builder.serve('foo', '1.1.0', deps: {
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {'myapp': '0.0.0'})
+ ..serve('foo', '1.1.0', deps: {
// This is a transitively incompatible dependency with myapp, which will
// force the solver to backtrack and unselect foo 1.1.0.
'bar': '1.0.0',
@@ -2349,15 +2246,11 @@
'version': '0.0.0',
'features': {'stuff': true}
}
- });
-
- builder.serve('bar', '1.0.0', deps: {'baz': '2.0.0'});
-
- builder.serve('baz', '1.0.0');
- builder.serve('baz', '2.0.0');
-
- builder.serve('qux', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0', deps: {'baz': '2.0.0'})
+ ..serve('baz', '1.0.0')
+ ..serve('baz', '2.0.0')
+ ..serve('qux', '1.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -2375,10 +2268,9 @@
});
test("the root package's features are opt-out by default", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('bar', '1.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('bar', '1.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -2395,10 +2287,9 @@
});
test("the root package's features can be made opt-in", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('bar', '1.0.0');
- });
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('bar', '1.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -2421,14 +2312,13 @@
// increases the total number of dependencies.
test("the root package's features can't be disabled by dependencies",
() async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {
'myapp': {
'features': {'stuff': false}
}
- });
- builder.serve('bar', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -2445,14 +2335,13 @@
});
test("the root package's features can be enabled by dependencies", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', deps: {
+ await servePackages()
+ ..serve('foo', '1.0.0', deps: {
'myapp': {
'features': {'stuff': true}
}
- });
- builder.serve('bar', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -2470,9 +2359,8 @@
});
test("resolution fails because a feature doesn't exist", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.dir(appPath, [
d.pubspec({
@@ -2492,17 +2380,16 @@
group('an "if available" dependency', () {
test('enables an opt-in feature', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'stuff': {
'default': false,
'dependencies': {'bar': '1.0.0'}
}
}
- });
- builder.serve('bar', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0');
await d.appDir({
'foo': {
@@ -2514,9 +2401,8 @@
});
test("is compatible with a feature that doesn't exist", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- });
+ final server = await servePackages();
+ server.serve('foo', '1.0.0');
await d.appDir({
'foo': {
@@ -2535,14 +2421,13 @@
group('succeeds when', () {
test('a Dart SDK constraint is matched', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'features': {
- 'stuff': {
- 'environment': {'sdk': '^0.1.0'}
- }
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'features': {
+ 'stuff': {
+ 'environment': {'sdk': '^0.1.0'}
}
- });
+ }
});
await d.dir(appPath, [
@@ -2556,14 +2441,13 @@
});
test('a Flutter SDK constraint is matched', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'features': {
- 'stuff': {
- 'environment': {'flutter': '^1.0.0'}
- }
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'features': {
+ 'stuff': {
+ 'environment': {'flutter': '^1.0.0'}
}
- });
+ }
});
await d.dir(appPath, [
@@ -2581,16 +2465,15 @@
group("doesn't choose a version because", () {
test("a Dart SDK constraint isn't matched", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '1.1.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '1.1.0', pubspec: {
'features': {
'stuff': {
'environment': {'sdk': '0.0.1'}
}
}
});
- });
await d.dir(appPath, [
d.pubspec({
@@ -2603,16 +2486,15 @@
});
test("Flutter isn't available", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '1.1.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '1.1.0', pubspec: {
'features': {
'stuff': {
'environment': {'flutter': '1.0.0'}
}
}
});
- });
await d.dir(appPath, [
d.pubspec({
@@ -2625,16 +2507,15 @@
});
test("a Flutter SDK constraint isn't matched", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0');
- builder.serve('foo', '1.1.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0')
+ ..serve('foo', '1.1.0', pubspec: {
'features': {
'stuff': {
'environment': {'flutter': '^2.0.0'}
}
}
});
- });
await d.dir(appPath, [
d.pubspec({
@@ -2651,14 +2532,13 @@
group('resolution fails because', () {
test("a Dart SDK constraint isn't matched", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'features': {
- 'stuff': {
- 'environment': {'sdk': '0.0.1'}
- }
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'features': {
+ 'stuff': {
+ 'environment': {'sdk': '0.0.1'}
}
- });
+ }
});
await d.dir(appPath, [
@@ -2675,14 +2555,13 @@
});
test("Flutter isn't available", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'features': {
- 'stuff': {
- 'environment': {'flutter': '1.0.0'}
- }
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'features': {
+ 'stuff': {
+ 'environment': {'flutter': '1.0.0'}
}
- });
+ }
});
await d.dir(appPath, [
@@ -2698,14 +2577,13 @@
});
test("a Flutter SDK constraint isn't matched", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
- 'features': {
- 'stuff': {
- 'environment': {'flutter': '^2.0.0'}
- }
+ final server = await servePackages();
+ server.serve('foo', '1.0.0', pubspec: {
+ 'features': {
+ 'stuff': {
+ 'environment': {'flutter': '^2.0.0'}
}
- });
+ }
});
await d.dir(appPath, [
@@ -2725,8 +2603,8 @@
group('with overlapping dependencies', () {
test('can enable extra features', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'dependencies': {'bar': '1.0.0'},
'features': {
'stuff': {
@@ -2738,19 +2616,16 @@
}
}
}
- });
-
- builder.serve('bar', '1.0.0', pubspec: {
+ })
+ ..serve('bar', '1.0.0', pubspec: {
'features': {
'stuff': {
'default': false,
'dependencies': {'baz': '1.0.0'}
}
}
- });
-
- builder.serve('baz', '1.0.0');
- });
+ })
+ ..serve('baz', '1.0.0');
await d.appDir({
'foo': {'version': '1.0.0'}
@@ -2768,8 +2643,8 @@
});
test("can't disable features", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'dependencies': {
'bar': {
'version': '1.0.0',
@@ -2786,19 +2661,16 @@
}
}
}
- });
-
- builder.serve('bar', '1.0.0', pubspec: {
+ })
+ ..serve('bar', '1.0.0', pubspec: {
'features': {
'stuff': {
'default': true,
'dependencies': {'baz': '1.0.0'}
}
}
- });
-
- builder.serve('baz', '1.0.0');
- });
+ })
+ ..serve('baz', '1.0.0');
await d.appDir({
'foo': {
@@ -2813,8 +2685,8 @@
group('with required features', () {
test('enables those features', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'main': {
'default': false,
@@ -2829,10 +2701,9 @@
'dependencies': {'baz': '1.0.0'}
}
}
- });
- builder.serve('bar', '1.0.0');
- builder.serve('baz', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0')
+ ..serve('baz', '1.0.0');
await d.appDir({
'foo': {
@@ -2845,8 +2716,8 @@
});
test('enables those features by default', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'main': {
'requires': ['required1', 'required2']
@@ -2860,10 +2731,9 @@
'dependencies': {'baz': '1.0.0'}
}
}
- });
- builder.serve('bar', '1.0.0');
- builder.serve('baz', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0')
+ ..serve('baz', '1.0.0');
await d.appDir({'foo': '1.0.0'}).create();
await expectResolves(
@@ -2871,8 +2741,8 @@
});
test("doesn't enable those features if it's disabled", () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'main': {
'requires': ['required']
@@ -2882,9 +2752,8 @@
'dependencies': {'bar': '1.0.0'}
}
}
- });
- builder.serve('bar', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0');
await d.appDir({
'foo': {
@@ -2897,8 +2766,8 @@
test("enables those features even if they'd otherwise be disabled",
() async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'main': {
'requires': ['required']
@@ -2908,9 +2777,8 @@
'dependencies': {'bar': '1.0.0'}
}
}
- });
- builder.serve('bar', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0');
await d.appDir({
'foo': {
@@ -2922,8 +2790,8 @@
});
test('enables features transitively', () async {
- await servePackages((builder) {
- builder.serve('foo', '1.0.0', pubspec: {
+ await servePackages()
+ ..serve('foo', '1.0.0', pubspec: {
'features': {
'main': {
'requires': ['required1']
@@ -2937,9 +2805,8 @@
'dependencies': {'bar': '1.0.0'}
}
}
- });
- builder.serve('bar', '1.0.0');
- });
+ })
+ ..serve('bar', '1.0.0');
await d.appDir({
'foo': {
@@ -3007,7 +2874,7 @@
// If the dep uses the default hosted source, grab it from the test
// package server rather than pub.dartlang.org.
dep = registry.hosted
- .refFor(dep.name, url: Uri.parse(globalPackageServer.url))
+ .refFor(dep.name, url: Uri.parse(globalServer.url))
.withConstraint(dep.constraint);
}
expect(dep.allows(id), isTrue, reason: 'Expected $id to match $dep.');
@@ -3018,14 +2885,12 @@
void regressions() {
test('reformatRanges with a build', () async {
- await servePackages((b) {
- b.serve('integration_test', '1.0.1',
- deps: {'vm_service': '>= 4.2.0 <6.0.0'});
- b.serve('integration_test', '1.0.2+2',
- deps: {'vm_service': '>= 4.2.0 <7.0.0'});
-
- b.serve('vm_service', '7.3.0');
- });
+ await servePackages()
+ ..serve('integration_test', '1.0.1',
+ deps: {'vm_service': '>= 4.2.0 <6.0.0'})
+ ..serve('integration_test', '1.0.2+2',
+ deps: {'vm_service': '>= 4.2.0 <7.0.0'})
+ ..serve('vm_service', '7.3.0');
await d.appDir({'integration_test': '^1.0.2'}).create();
await expectResolves(
error: contains(