blob: c89703302e61582065b3f99fafb9541b471b6b7d [file] [log] [blame]
// Copyright (c) 2020, 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 'package:pub/src/exit_codes.dart' as exit_codes;
import 'package:test/test.dart';
import '../descriptor.dart' as d;
import '../test_pub.dart';
void main() {
test('pub get fails without an SDK constraint', () async {
await d.dir(appPath, [
d.rawPubspec({
'name': 'myapp',
}),
]).create();
await pubGet(
error: allOf(
contains('pubspec.yaml has no lower-bound SDK constraint.'),
contains("sdk: '^2.19.0'"),
),
exitCode: exit_codes.DATA,
environment: {'_PUB_TEST_SDK_VERSION': '2.19.1'},
);
await d.dir(appPath, [
// The lockfile should not be created.
d.nothing('pubspec.lock'),
// The "packages" directory should not have been generated.
d.nothing('packages'),
// The package config file should not have been created.
d.nothing('.dart_tool/package_config.json'),
]).validate();
});
test('pub get fails with an non-null-safety SDK constraint', () async {
await d.dir(appPath, [
d.rawPubspec(
{
'name': 'myapp',
'environment': {'sdk': '>=2.9.0 <4.0.0'}
},
),
]).create();
await pubGet(
error: '''
The lower bound of "sdk: '>=2.9.0 <4.0.0'" must be 2.12.0'
or higher to enable null safety.
The current Dart SDK (3.1.2+3) only supports null safety.
For details, see https://dart.dev/null-safety
''',
exitCode: exit_codes.DATA,
);
await d.dir(appPath, [
// The lockfile should not be created.
d.nothing('pubspec.lock'),
// The "packages" directory should not have been generated.
d.nothing('packages'),
// The package config file should not have been created.
d.nothing('.dart_tool/package_config.json'),
]).validate();
});
}