Unverified Commit e70236e3 authored by Christopher Fujino's avatar Christopher Fujino Committed by GitHub

Fix tools test verifyVersion() regex (#41744)

parent 19c08e89
...@@ -59,6 +59,13 @@ task: ...@@ -59,6 +59,13 @@ task:
- name: analyze - name: analyze
test_script: test_script:
- dart --enable-asserts ./dev/bots/analyze.dart - dart --enable-asserts ./dev/bots/analyze.dart
- name: bots_tests-linux
skip: "!changesInclude('dev/bots/**')"
test_script:
- (cd ./dev/bots && pub run test)
container:
cpu: 4
memory: 12G
- name: tests_widgets-linux - name: tests_widgets-linux
skip: "!changesInclude('packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master' && $CIRRUS_BRANCH != 'stable' && $CIRRUS_BRANCH != 'beta' && $CIRRUS_BRANCH != 'dev'" skip: "!changesInclude('packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master' && $CIRRUS_BRANCH != 'stable' && $CIRRUS_BRANCH != 'beta' && $CIRRUS_BRANCH != 'dev'"
env: env:
...@@ -320,6 +327,11 @@ task: ...@@ -320,6 +327,11 @@ task:
- flutter update-packages - flutter update-packages
- git fetch origin master - git fetch origin master
matrix: matrix:
- name: bots_tests-windows
skip: "!changesInclude('dev/bots/**')"
test_script:
- cd dev\bots
- pub run test
- name: tests_widgets-windows - name: tests_widgets-windows
skip: "!changesInclude('packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master' && $CIRRUS_BRANCH != 'stable' && $CIRRUS_BRANCH != 'beta' && $CIRRUS_BRANCH != 'dev'" skip: "!changesInclude('packages/flutter/**', 'packages/flutter_test/**', 'packages/flutter_tools/lib/src/test/**', 'bin/internal/**') && $CIRRUS_BRANCH != 'master' && $CIRRUS_BRANCH != 'stable' && $CIRRUS_BRANCH != 'beta' && $CIRRUS_BRANCH != 'dev'"
env: env:
...@@ -496,6 +508,10 @@ task: ...@@ -496,6 +508,10 @@ task:
- bin/flutter doctor -v - bin/flutter doctor -v
- bin/flutter update-packages - bin/flutter update-packages
matrix: matrix:
- name: bots_tests-macos
skip: "!changesInclude('dev/bots/**')"
test_script:
- (cd ./dev/bots && pub run test)
- name: tests_widgets-macos - name: tests_widgets-macos
only_if: $CIRRUS_BRANCH == 'master' only_if: $CIRRUS_BRANCH == 'master'
env: env:
......
...@@ -8,6 +8,7 @@ import 'dart:io'; ...@@ -8,6 +8,7 @@ import 'dart:io';
import 'package:googleapis/bigquery/v2.dart' as bq; import 'package:googleapis/bigquery/v2.dart' as bq;
import 'package:googleapis_auth/auth_io.dart' as auth; import 'package:googleapis_auth/auth_io.dart' as auth;
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:meta/meta.dart';
import 'package:path/path.dart' as path; import 'package:path/path.dart' as path;
import 'flutter_compact_formatter.dart'; import 'flutter_compact_formatter.dart';
...@@ -153,7 +154,10 @@ Future<void> _runSmokeTests() async { ...@@ -153,7 +154,10 @@ Future<void> _runSmokeTests() async {
); );
// Verify that we correctly generated the version file. // Verify that we correctly generated the version file.
await _verifyVersion(path.join(flutterRoot, 'version')); final bool validVersion = await verifyVersion(path.join(flutterRoot, 'version'));
if (!validVersion) {
exit(1);
}
} }
Future<bq.BigqueryApi> _getBigqueryApi() async { Future<bq.BigqueryApi> _getBigqueryApi() async {
...@@ -924,27 +928,31 @@ Future<void> _runFlutterTest(String workingDirectory, { ...@@ -924,27 +928,31 @@ Future<void> _runFlutterTest(String workingDirectory, {
} }
} }
Future<void> _verifyVersion(String filename) async { // the optional `file` argument is an override for testing
if (!File(filename).existsSync()) { @visibleForTesting
Future<bool> verifyVersion(String filename, [File file]) async {
final RegExp pattern = RegExp(r'^\d+\.\d+\.\d+(\+hotfix\.\d+)?(-pre\.\d+)?$');
file ??= File(filename);
final String version = await file.readAsString();
if (!file.existsSync()) {
print('$redLine'); print('$redLine');
print('The version logic failed to create the Flutter version file.'); print('The version logic failed to create the Flutter version file.');
print('$redLine'); print('$redLine');
exit(1); return false;
} }
final String version = await File(filename).readAsString();
if (version == '0.0.0-unknown') { if (version == '0.0.0-unknown') {
print('$redLine'); print('$redLine');
print('The version logic failed to determine the Flutter version.'); print('The version logic failed to determine the Flutter version.');
print('$redLine'); print('$redLine');
exit(1); return false;
} }
final RegExp pattern = RegExp(r'^\d+\.\d+\.\d+(?:|-pre\.\d+|\+hotfix\.\d+)$');
if (!version.contains(pattern)) { if (!version.contains(pattern)) {
print('$redLine'); print('$redLine');
print('The version logic generated an invalid version string.'); print('The version logic generated an invalid version string: "$version".');
print('$redLine'); print('$redLine');
exit(1); return false;
} }
return true;
} }
Future<void> _runIntegrationTests() async { Future<void> _runIntegrationTests() async {
......
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:async';
import 'dart:io' hide Platform;
import 'package:mockito/mockito.dart';
import '../test.dart';
import 'common.dart';
class MockFile extends Mock implements File {}
void main() {
MockFile file;
setUp(() {
file = MockFile();
when(file.existsSync()).thenReturn(true);
});
group('verifyVersion()', () {
test('passes for valid version strings', () async {
const List<String> valid_versions = <String>[
'1.2.3',
'12.34.56',
'1.2.3-pre.1',
'1.2.3+hotfix.1',
'1.2.3+hotfix.12-pre.12',
];
for (String version in valid_versions) {
when(file.readAsString()).thenAnswer((Invocation invocation) => Future<String>.value(version));
expect(await verifyVersion(version, file), isTrue, reason: '$version is invalid');
}
});
test('fails for invalid version strings', () async {
const List<String> invalid_versions = <String>[
'1.2.3.4',
'1.2.3.',
'1.2-pre.1',
'1.2.3-pre',
'1.2.3-pre.1+hotfix.1',
' 1.2.3',
];
for (String version in invalid_versions) {
when(file.readAsString()).thenAnswer((Invocation invocation) => Future<String>.value(version));
expect(await verifyVersion(version, file), isFalse);
}
});
});
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment