mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Fix tools test verifyVersion() regex (#41744)
This commit is contained in:
parent
19c08e891d
commit
e70236e36c
16
.cirrus.yml
16
.cirrus.yml
@ -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:
|
|||||||
- 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:
|
|||||||
- 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';
|
|||||||
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 {
|
|||||||
);
|
);
|
||||||
|
|
||||||
// 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, {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
||||||
|
51
dev/bots/test/test_test.dart
Normal file
51
dev/bots/test/test_test.dart
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
// 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);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user