Skip to content

Commit 43e3963

Browse files
committed
Fix bug with the dt update-version tool
1 parent afcbeed commit 43e3963

3 files changed

Lines changed: 62 additions & 16 deletions

File tree

pubspec.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -975,10 +975,10 @@ packages:
975975
dependency: transitive
976976
description:
977977
name: vm_service
978-
sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60"
978+
sha256: "046d3928e16fa4dc46e8350415661755ab759d9fc97fc21b5ab295f71e4f0499"
979979
url: "https://pub.dev"
980980
source: hosted
981-
version: "15.0.2"
981+
version: "15.1.0"
982982
vm_service_protos:
983983
dependency: transitive
984984
description:

tool/lib/commands/update_version.dart

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,25 @@ bool isDevVersion(String version) {
208208
return RegExp(r'-dev\.\d+').hasMatch(version);
209209
}
210210

211+
String calculateNewVersion(String currentVersion, String type) {
212+
switch (type) {
213+
case 'release':
214+
if (isDevVersion(currentVersion)) {
215+
return stripPreReleases(currentVersion);
216+
} else {
217+
return incrementVersionByType(currentVersion, 'minor')!;
218+
}
219+
case 'dev':
220+
return incrementDevVersion(currentVersion);
221+
default:
222+
final version = incrementVersionByType(currentVersion, type);
223+
if (version == null) {
224+
throw 'Failed to determine the newVersion.';
225+
}
226+
return version;
227+
}
228+
}
229+
211230
const pubspecVersionPrefix = 'version:';
212231

213232
class ManualUpdateCommand extends Command {
@@ -326,23 +345,10 @@ class AutoUpdateCommand extends Command {
326345
final type = argResults!['type'] as String;
327346
final isDryRun = argResults!['dry-run'] as bool;
328347
final currentVersion = versionFromPubspecFile();
329-
String? newVersion;
330348
if (currentVersion == null) {
331349
throw 'Could not automatically determine current version.';
332350
}
333-
switch (type) {
334-
case 'release':
335-
newVersion = stripPreReleases(currentVersion);
336-
break;
337-
case 'dev':
338-
newVersion = incrementDevVersion(currentVersion);
339-
break;
340-
default:
341-
newVersion = incrementVersionByType(currentVersion, type);
342-
if (newVersion == null) {
343-
throw 'Failed to determine the newVersion.';
344-
}
345-
}
351+
final newVersion = calculateNewVersion(currentVersion, type);
346352
print('Bump version from $currentVersion to $newVersion');
347353

348354
if (isDryRun) {

tool/test/update_version_test.dart

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// Copyright 2026 The Flutter Authors
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd.
4+
5+
import 'package:test/test.dart';
6+
import '../lib/commands/update_version.dart';
7+
8+
void main() {
9+
group('calculateNewVersion', () {
10+
test('release type strips pre-release when on dev version', () {
11+
expect(calculateNewVersion('2.28.0-dev.0', 'release'), '2.28.0');
12+
expect(calculateNewVersion('2.28.0-dev.5', 'release'), '2.28.0');
13+
});
14+
15+
test('release type increments minor version when not on dev version', () {
16+
expect(calculateNewVersion('2.28.0', 'release'), '2.29.0');
17+
expect(calculateNewVersion('2.28.1', 'release'), '2.29.0');
18+
});
19+
20+
test('dev type increments dev version', () {
21+
expect(calculateNewVersion('1.2.3', 'dev'), '1.2.3-dev.0');
22+
expect(calculateNewVersion('1.2.3-dev.4', 'dev'), '1.2.3-dev.5');
23+
});
24+
25+
test('patch type increments patch version', () {
26+
expect(calculateNewVersion('1.2.3', 'patch'), '1.2.4');
27+
expect(calculateNewVersion('1.2.3-dev.4', 'patch'), '1.2.4');
28+
});
29+
30+
test('minor type increments minor version', () {
31+
expect(calculateNewVersion('1.2.3', 'minor'), '1.3.0');
32+
expect(calculateNewVersion('1.2.3-dev.4', 'minor'), '1.3.0');
33+
});
34+
35+
test('major type increments major version', () {
36+
expect(calculateNewVersion('1.2.3', 'major'), '2.0.0');
37+
expect(calculateNewVersion('1.2.3-dev.4', 'major'), '2.0.0');
38+
});
39+
});
40+
}

0 commit comments

Comments
 (0)