| // 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(); | 
 |   }); | 
 | } |