4a9cc0f619
After running pub install or update, it will look at all of the selected packages and see if their SDK constraints match the current SDK. If not, it will show a (hopefully) helpful error message. BUG=dartbug.com/6285 Review URL: https://codereview.chromium.org//12092080 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@18014 260f80e4-7a28-3924-810f-c04153c831b5
252 lines
6.5 KiB
Dart
252 lines
6.5 KiB
Dart
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
library pub_tests;
|
|
|
|
import 'dart:io';
|
|
|
|
import '../../../../pkg/unittest/lib/unittest.dart';
|
|
import '../test_pub.dart';
|
|
|
|
main() {
|
|
group('requires', () {
|
|
integration('a pubspec', () {
|
|
dir(appPath, []).scheduleCreate();
|
|
|
|
schedulePub(args: ['install'],
|
|
error: new RegExp(r'^Could not find a file named "pubspec\.yaml"'),
|
|
exitCode: 1);
|
|
});
|
|
|
|
integration('a pubspec with a "name" key', () {
|
|
dir(appPath, [
|
|
pubspec({"dependencies": {"foo": null}})
|
|
]).scheduleCreate();
|
|
|
|
schedulePub(args: ['install'],
|
|
error: new RegExp(r'^pubspec.yaml is missing the required "name" '
|
|
r'field \(e\.g\. "name: myapp"\)\.'),
|
|
exitCode: 1);
|
|
});
|
|
});
|
|
|
|
integration('adds itself to the packages', () {
|
|
// The symlink should use the name in the pubspec, not the name of the
|
|
// directory.
|
|
dir(appPath, [
|
|
pubspec({"name": "myapp_name"}),
|
|
libDir('foo'),
|
|
]).scheduleCreate();
|
|
|
|
schedulePub(args: ['install'],
|
|
output: new RegExp(r"Dependencies installed!$"));
|
|
|
|
dir(packagesPath, [
|
|
dir("myapp_name", [
|
|
file('foo.dart', 'main() => "foo";')
|
|
])
|
|
]).scheduleValidate();
|
|
});
|
|
|
|
integration('does not adds itself to the packages if it has no "lib" directory', () {
|
|
// The symlink should use the name in the pubspec, not the name of the
|
|
// directory.
|
|
dir(appPath, [
|
|
pubspec({"name": "myapp_name"}),
|
|
]).scheduleCreate();
|
|
|
|
schedulePub(args: ['install'],
|
|
output: new RegExp(r"Dependencies installed!$"));
|
|
|
|
dir(packagesPath, [
|
|
nothing("myapp_name")
|
|
]).scheduleValidate();
|
|
});
|
|
|
|
integration('does not add a package if it does not have a "lib" directory', () {
|
|
// Using an SDK source, but this should be true of all sources.
|
|
dir(sdkPath, [
|
|
dir('pkg', [
|
|
dir('foo', [
|
|
libPubspec('foo', '0.0.0-not.used')
|
|
])
|
|
])
|
|
]).scheduleCreate();
|
|
|
|
dir(appPath, [
|
|
pubspec({"name": "myapp", "dependencies": {"foo": {"sdk": "foo"}}})
|
|
]).scheduleCreate();
|
|
|
|
schedulePub(args: ['install'],
|
|
error: new RegExp(r'Warning: Package "foo" does not have a "lib" '
|
|
'directory so you will not be able to import any libraries from '
|
|
'it.'),
|
|
output: new RegExp(r"Dependencies installed!$"));
|
|
});
|
|
|
|
integration('does not warn if the root package lacks a "lib" directory', () {
|
|
dir(appPath, [
|
|
appPubspec([])
|
|
]).scheduleCreate();
|
|
|
|
schedulePub(args: ['install'],
|
|
error: '',
|
|
output: new RegExp(r"Dependencies installed!$"));
|
|
});
|
|
|
|
integration('overwrites the existing packages directory', () {
|
|
dir(appPath, [
|
|
appPubspec([]),
|
|
dir('packages', [
|
|
dir('foo'),
|
|
dir('myapp'),
|
|
]),
|
|
libDir('myapp')
|
|
]).scheduleCreate();
|
|
|
|
schedulePub(args: ['install'],
|
|
output: new RegExp(r"Dependencies installed!$"));
|
|
|
|
dir(packagesPath, [
|
|
nothing('foo'),
|
|
dir('myapp', [file('myapp.dart', 'main() => "myapp";')])
|
|
]).scheduleValidate();
|
|
});
|
|
|
|
group('creates a packages directory in', () {
|
|
integration('"test/" and its subdirectories', () {
|
|
dir(appPath, [
|
|
appPubspec([]),
|
|
libDir('foo'),
|
|
dir("test", [dir("subtest")])
|
|
]).scheduleCreate();
|
|
|
|
schedulePub(args: ['install'],
|
|
output: new RegExp(r"Dependencies installed!$"));
|
|
|
|
dir(appPath, [
|
|
dir("test", [
|
|
dir("packages", [
|
|
dir("myapp", [
|
|
file('foo.dart', 'main() => "foo";')
|
|
])
|
|
]),
|
|
dir("subtest", [
|
|
dir("packages", [
|
|
dir("myapp", [
|
|
file('foo.dart', 'main() => "foo";')
|
|
])
|
|
])
|
|
])
|
|
])
|
|
]).scheduleValidate();
|
|
});
|
|
|
|
integration('"example/" and its subdirectories', () {
|
|
dir(appPath, [
|
|
appPubspec([]),
|
|
libDir('foo'),
|
|
dir("example", [dir("subexample")])
|
|
]).scheduleCreate();
|
|
|
|
schedulePub(args: ['install'],
|
|
output: new RegExp(r"Dependencies installed!$"));
|
|
|
|
dir(appPath, [
|
|
dir("example", [
|
|
dir("packages", [
|
|
dir("myapp", [
|
|
file('foo.dart', 'main() => "foo";')
|
|
])
|
|
]),
|
|
dir("subexample", [
|
|
dir("packages", [
|
|
dir("myapp", [
|
|
file('foo.dart', 'main() => "foo";')
|
|
])
|
|
])
|
|
])
|
|
])
|
|
]).scheduleValidate();
|
|
});
|
|
|
|
integration('"tool/" and its subdirectories', () {
|
|
dir(appPath, [
|
|
appPubspec([]),
|
|
libDir('foo'),
|
|
dir("tool", [dir("subtool")])
|
|
]).scheduleCreate();
|
|
|
|
schedulePub(args: ['install'],
|
|
output: new RegExp(r"Dependencies installed!$"));
|
|
|
|
dir(appPath, [
|
|
dir("tool", [
|
|
dir("packages", [
|
|
dir("myapp", [
|
|
file('foo.dart', 'main() => "foo";')
|
|
])
|
|
]),
|
|
dir("subtool", [
|
|
dir("packages", [
|
|
dir("myapp", [
|
|
file('foo.dart', 'main() => "foo";')
|
|
])
|
|
])
|
|
])
|
|
])
|
|
]).scheduleValidate();
|
|
});
|
|
|
|
integration('"web/" and its subdirectories', () {
|
|
dir(appPath, [
|
|
appPubspec([]),
|
|
libDir('foo'),
|
|
dir("web", [dir("subweb")])
|
|
]).scheduleCreate();
|
|
|
|
schedulePub(args: ['install'],
|
|
output: new RegExp(r"Dependencies installed!$"));
|
|
|
|
dir(appPath, [
|
|
dir("web", [
|
|
dir("packages", [
|
|
dir("myapp", [
|
|
file('foo.dart', 'main() => "foo";')
|
|
])
|
|
]),
|
|
dir("subweb", [
|
|
dir("packages", [
|
|
dir("myapp", [
|
|
file('foo.dart', 'main() => "foo";')
|
|
])
|
|
])
|
|
])
|
|
])
|
|
]).scheduleValidate();
|
|
});
|
|
|
|
integration('"bin/"', () {
|
|
dir(appPath, [
|
|
appPubspec([]),
|
|
libDir('foo'),
|
|
dir("bin")
|
|
]).scheduleCreate();
|
|
|
|
schedulePub(args: ['install'],
|
|
output: new RegExp(r"Dependencies installed!$"));
|
|
|
|
dir(appPath, [
|
|
dir("bin", [
|
|
dir("packages", [
|
|
dir("myapp", [
|
|
file('foo.dart', 'main() => "foo";')
|
|
])
|
|
])
|
|
])
|
|
]).scheduleValidate();
|
|
});
|
|
});
|
|
}
|