| // Copyright (c) 2013, 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. | |
| @TestOn('vm') | |
| library; | |
| import 'dart:async'; | |
| import 'package:pub/src/validator/size.dart'; | |
| import 'package:test/test.dart'; | |
| import '../descriptor.dart' as d; | |
| import '../test_pub.dart'; | |
| import 'utils.dart'; | |
| Future<void> expectSizeValidationHint(Matcher matcher) async { | |
| await expectValidationDeprecated( | |
| SizeValidator.new, | |
| size: 100 * (1 << 20) + 1, | |
| hints: contains(matcher), | |
| ); | |
| } | |
| void main() { | |
| test('ho hint if package is <= 100 MB', () async { | |
| await d.validPackage().create(); | |
| await expectValidationDeprecated(SizeValidator.new, size: 100); | |
| await expectValidationDeprecated(SizeValidator.new, size: 100 * (1 << 20)); | |
| }); | |
| group('hints if package is more than 100 MB', () { | |
| test( | |
| 'package is not under source control and no .gitignore exists', | |
| () async { | |
| await d.validPackage().create(); | |
| await expectSizeValidationHint(contains('Your package is 100.0 MB.')); | |
| }, | |
| ); | |
| test('package is not under source control and .gitignore exists', () async { | |
| await d.validPackage().create(); | |
| await d.dir(appPath, [d.file('.gitignore', 'ignored')]).create(); | |
| await expectSizeValidationHint( | |
| allOf( | |
| contains('Your package is 100.0 MB.'), | |
| contains( | |
| 'Your .gitignore has no effect since your project ' | |
| 'does not appear to be in version control.', | |
| ), | |
| ), | |
| ); | |
| }); | |
| test('package is under source control and no .gitignore exists', () async { | |
| await d.validPackage().create(); | |
| await d.git(appPath).create(); | |
| await expectSizeValidationHint( | |
| allOf( | |
| contains('Your package is 100.0 MB.'), | |
| contains( | |
| 'Consider adding a .gitignore to avoid including ' | |
| 'temporary files.', | |
| ), | |
| ), | |
| ); | |
| }); | |
| test('package is under source control and .gitignore exists', () async { | |
| await d.validPackage().create(); | |
| await d.git(appPath, [d.file('.gitignore', 'ignored')]).create(); | |
| await expectSizeValidationHint(contains('Your package is 100.0 MB.')); | |
| }); | |
| }); | |
| } |