Attempt to make flutter compatible with more git versions (#14273)

Fixes https://github.com/flutter/flutter/issues/14232

(I haven't tested this with older versions of git, I'm just going on
what @jason-simmons wrote in the bug.)
diff --git a/dev/bots/test.dart b/dev/bots/test.dart
index cb26429..813a0c0 100644
--- a/dev/bots/test.dart
+++ b/dev/bots/test.dart
@@ -164,6 +164,9 @@
     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 @@
       filename == 'GeneratedPluginRegistrant.h' ||
       filename == 'GeneratedPluginRegistrant.m';
 }
+
+Future<Null> _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