blob: 67b8bf0a5b90fdafc88824111fe307107005ce54 [file] [log] [blame]
// Copyright (c) 2024, 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:test/test.dart';
import 'descriptor.dart';
import 'test_pub.dart';
void main() {
void testBump(String part, String from, String to) {
test('Bumps the $part version from $from to $to', () async {
await dir(appPath, [
file('pubspec.yaml', '''
name: myapp
version: $from # comment
environment:
sdk: $defaultSdkConstraint
'''),
]).create();
await runPub(
args: ['bump', part, '--dry-run'],
output: '''
Would update version from $from to $to.
Diff:
- version: $from # comment
+ version: $to # comment
''',
);
await runPub(
args: ['bump', part],
output: '''
Updating version from $from to $to.
Diff:
- version: $from # comment
+ version: $to # comment
Remember to update `CHANGELOG.md` before publishing.
''',
);
await appDir(pubspec: {'version': to}).validate();
});
}
testBump('major', '0.0.0', '1.0.0');
testBump('major', '1.2.3', '2.0.0');
testBump('minor', '0.1.1-dev+2', '0.2.0');
testBump('minor', '1.2.3', '1.3.0');
testBump('patch', '0.1.1-dev+2', '0.1.1');
testBump('patch', '0.1.1+2', '0.1.2');
testBump('patch', '1.2.3', '1.2.4');
testBump('breaking', '0.2.0', '0.3.0');
testBump('breaking', '1.2.3', '2.0.0');
test('Creates top-level version field if missing', () async {
await dir(appPath, [
file('pubspec.yaml', '''
name: my_app
'''),
]).create();
await runPub(
args: ['bump', 'breaking'],
output: contains('Updating version from 0.0.0 to 0.1.0'),
);
await dir(appPath, [
file('pubspec.yaml', '''
name: my_app
version: 0.1.0
'''),
]).validate();
});
test('Writes all lines of diff', () async {
await dir(appPath, [
file('pubspec.yaml', '''
name: my_app
version: >-
1.0.0
'''),
]).create();
await runPub(
args: ['bump', 'minor'],
output: allOf(
contains('Updating version from 1.0.0 to 1.1.0'),
contains('''
Diff:
- version: >-
- 1.0.0
+ version: 1.1.0
'''),
),
);
await dir(appPath, [
file('pubspec.yaml', '''
name: my_app
version: 1.1.0
'''),
]).validate();
});
}