diff --git a/dev/bots/test.dart b/dev/bots/test.dart index cb26429ae3..813a0c0a24 100644 --- a/dev/bots/test.dart +++ b/dev/bots/test.dart @@ -164,6 +164,9 @@ Future _runTests() async { printOutput: false, ); + // Verify that we correctly generated the version file. + await _verifyVersion(path.join(flutterRoot, 'version')); + // Run tests. await _runFlutterTest(path.join(flutterRoot, 'packages', 'flutter')); await _runFlutterTest(path.join(flutterRoot, 'packages', 'flutter_localizations')); @@ -579,3 +582,26 @@ bool _isGeneratedPluginRegistrant(File file) { filename == 'GeneratedPluginRegistrant.h' || filename == 'GeneratedPluginRegistrant.m'; } + +Future _verifyVersion(String filename) async { + if (!new File(filename).existsSync()) { + print('$red━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━$reset'); + print('The version logic failed to create the Flutter version file.'); + print('$red━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━$reset'); + exit(1); + } + final String version = await new File(filename).readAsString(); + if (version == '0.0.0-unknown') { + print('$red━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━$reset'); + print('The version logic failed to determine the Flutter version.'); + print('$red━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━$reset'); + exit(1); + } + final RegExp pattern = new RegExp(r'^[0-9]+\.[0-9]+\.[0-9]+(-pre\.[0-9]+)?$'); + if (!version.contains(pattern)) { + print('$red━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━$reset'); + print('The version logic generated an invalid version string.'); + print('$red━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━$reset'); + exit(1); + } +} \ No newline at end of file diff --git a/dev/tools/lib/roll_dev.dart b/dev/tools/lib/roll_dev.dart index 1512363fb4..3b5c1269d4 100644 --- a/dev/tools/lib/roll_dev.dart +++ b/dev/tools/lib/roll_dev.dart @@ -116,7 +116,7 @@ void main(List args) { String getFullTag() { return getGitOutput( - 'describe --match v*.*.* --exclude *-* --first-parent --long --tags', + 'describe --match v*.*.* --first-parent --long --tags', 'obtain last released version number', ); } diff --git a/packages/flutter_tools/lib/src/version.dart b/packages/flutter_tools/lib/src/version.dart index 2051932978..8f16dce851 100644 --- a/packages/flutter_tools/lib/src/version.dart +++ b/packages/flutter_tools/lib/src/version.dart @@ -492,7 +492,7 @@ class GitTagVersion { final String hash; static GitTagVersion determine() { - final String version = _runGit('git describe --match v*.*.* --exclude *-* --first-parent --long --tags'); + final String version = _runGit('git describe --match v*.*.* --first-parent --long --tags'); final RegExp versionPattern = new RegExp('^v([0-9]+)\.([0-9]+)\.([0-9]+)-([0-9]+)-g([a-f0-9]+)\$'); final List parts = versionPattern.matchAsPrefix(version)?.groups([1, 2, 3, 4, 5]); if (parts == null) { @@ -507,7 +507,7 @@ class GitTagVersion { String frameworkVersionFor(String revision) { if (x == null || y == null || z == null || !revision.startsWith(hash)) - return 'unknown'; + return '0.0.0-unknown'; if (commits == 0) return '$x.$y.$z'; return '$x.$y.${z + 1}-pre.$commits';