Pin the version of flutter/plugins to test against (#71166)

This commit is contained in:
Amir Hardon 2020-11-24 17:18:06 -08:00 committed by GitHub
parent 99bc4de73c
commit 2ceb371d21
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 65 additions and 2 deletions

View File

@ -1,5 +1,6 @@
Dart SDK dependency
===================
## Flutter SDK dependency versions
The files in this directory specifies pinned versions of various dependencies of the flutter SDK.
The `bin/internal/engine.version` file controls which version of the Flutter engine to use.
The file contains the commit hash of a commit in the <https://github.com/flutter/engine> repository.
@ -11,3 +12,7 @@ commit for a pull request no matter how many engine commits there are inside
that pull request. If it's `rebase`, the number of commits in the framework is
equal to the number of engine commits in the pull request. The latter method
makes it easier to detect regressions but costs more test resources.
Ths `bin/internal/flutter_plugins.version` file specifies the version of the `flutter/plugins` repository to be used for testing.
Note that `flutter/plugins` isn't an upstream dependency of `flutter/flutter` it is only used as part of the test suite for verification,
the pinned version here makes sure that tests are deterministic at each `flutter/flutter` commit.

View File

@ -0,0 +1 @@
592b5b27431689336fa4c721a099eedf787aeb56

View File

@ -7,6 +7,8 @@ import 'dart:convert';
import 'dart:io';
import 'dart:math' as math;
import 'package:file/file.dart' as fs;
import 'package:file/local.dart';
import 'package:googleapis/bigquery/v2.dart' as bq;
import 'package:googleapis_auth/auth_io.dart' as auth;
import 'package:http/http.dart' as http;
@ -37,6 +39,7 @@ final String pub = path.join(flutterRoot, 'bin', 'cache', 'dart-sdk', 'bin', 'pu
final String pubCache = path.join(flutterRoot, '.pub-cache');
final String toolRoot = path.join(flutterRoot, 'packages', 'flutter_tools');
final String engineVersionFile = path.join(flutterRoot, 'bin', 'internal', 'engine.version');
final String flutterPluginsVersionFile = path.join(flutterRoot, 'bin', 'internal', 'flutter_plugins.version');
String get platformFolderName {
if (Platform.isWindows)
@ -861,6 +864,25 @@ Future<void> _runWebLongRunningTests() async {
await _stopChromeDriver();
}
/// Returns the commit hash of the flutter/plugins repository that's rolled in.
///
/// The flutter/plugins repository is a downstream dependency, it is only used
/// by flutter/flutter for testing purposes, to assure stable tests for a given
/// flutter commit the flutter/plugins commit hash to test against is coded in
/// the bin/internal/flutter_plugins.version file.
///
/// The `filesystem` parameter specified filesystem to read the plugins version file from.
/// The `pluginsVersionFile` parameter allows specifying an alternative path for the
/// plugins version file, when null [flutterPluginsVersionFile] is used.
Future<String> getFlutterPluginsVersion({
fs.FileSystem fileSystem = const LocalFileSystem(),
String pluginsVersionFile,
}) async {
final File versionFile = fileSystem.file(pluginsVersionFile ?? flutterPluginsVersionFile);
final String versionFileContents = await versionFile.readAsString();
return versionFileContents.trim();
}
/// Executes the test suite for the flutter/plugins repo.
Future<void> _runFlutterPluginsTests() async {
Future<void> runAnalyze() async {
@ -877,6 +899,17 @@ Future<void> _runFlutterPluginsTests() async {
],
workingDirectory: checkout.path,
);
final String pluginsCommit = await getFlutterPluginsVersion();
await runCommand(
'git',
<String>[
'-c',
'core.longPaths=true',
'checkout',
pluginsCommit,
],
workingDirectory: checkout.path,
);
await runCommand(
pub,
<String>[

View File

@ -4,7 +4,10 @@
import 'dart:io' hide Platform;
import 'package:file/file.dart' as fs;
import 'package:file/memory.dart';
import 'package:mockito/mockito.dart';
import 'package:path/path.dart' as path;
import '../test.dart';
import 'common.dart';
@ -56,4 +59,25 @@ void main() {
}
});
});
group('flutter/plugins version', () {
final MemoryFileSystem memoryFileSystem = MemoryFileSystem();
final fs.File pluginsVersionFile = memoryFileSystem.file(path.join('bin','internal','flutter_plugins.version'));
const String kSampleHash = '592b5b27431689336fa4c721a099eedf787aeb56';
setUpAll(() {
pluginsVersionFile.createSync(recursive: true);
});
test('commit hash', () async {
pluginsVersionFile.writeAsStringSync(kSampleHash);
final String actualHash = await getFlutterPluginsVersion(fileSystem: memoryFileSystem, pluginsVersionFile: pluginsVersionFile.path);
expect(actualHash, kSampleHash);
});
test('commit hash with newlines', () async {
pluginsVersionFile.writeAsStringSync('\n$kSampleHash\n');
final String actualHash = await getFlutterPluginsVersion(fileSystem: memoryFileSystem, pluginsVersionFile: pluginsVersionFile.path);
expect(actualHash, kSampleHash);
});
});
}