Make codesign.dart
integration test easier to run locally (#50289)
This commit is contained in:
parent
5dfa8e9c05
commit
b65f4211cf
@ -5,11 +5,10 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'package:path/path.dart' as path;
|
import 'package:path/path.dart' as path;
|
||||||
|
|
||||||
String get cacheDirectory {
|
String get repoRoot => path.normalize(path.join(path.dirname(Platform.script.toFilePath()), '..', '..'));
|
||||||
final String flutterRepoRoot = path.normalize(path.join(path.dirname(Platform.script.path), '..', '..'));
|
String get cacheDirectory => path.normalize(path.join(repoRoot, 'bin', 'cache'));
|
||||||
return path.normalize(path.join(flutterRepoRoot, 'bin', 'cache'));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/// Check mime-type of file at [filePath] to determine if it is binary
|
||||||
bool isBinary(String filePath) {
|
bool isBinary(String filePath) {
|
||||||
final ProcessResult result = Process.runSync(
|
final ProcessResult result = Process.runSync(
|
||||||
'file',
|
'file',
|
||||||
@ -22,11 +21,13 @@ bool isBinary(String filePath) {
|
|||||||
return (result.stdout as String).contains('application/x-mach-binary');
|
return (result.stdout as String).contains('application/x-mach-binary');
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> findBinaryPaths() {
|
/// Find every binary file in the given [rootDirectory]
|
||||||
|
List<String> findBinaryPaths([String rootDirectory]) {
|
||||||
|
rootDirectory ??= cacheDirectory;
|
||||||
final ProcessResult result = Process.runSync(
|
final ProcessResult result = Process.runSync(
|
||||||
'find',
|
'find',
|
||||||
<String>[
|
<String>[
|
||||||
cacheDirectory,
|
rootDirectory,
|
||||||
'-type',
|
'-type',
|
||||||
'f',
|
'f',
|
||||||
'-perm',
|
'-perm',
|
||||||
@ -37,10 +38,47 @@ List<String> findBinaryPaths() {
|
|||||||
return allFiles.where(isBinary).toList();
|
return allFiles.where(isBinary).toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Given the path to a stamp file, read the contents.
|
||||||
|
///
|
||||||
|
/// Will throw if the file doesn't exist.
|
||||||
|
String readStamp(String filePath) {
|
||||||
|
final File file = File(filePath);
|
||||||
|
if (!file.existsSync()) {
|
||||||
|
throw 'Error! Stamp file $filePath does not exist!';
|
||||||
|
}
|
||||||
|
return file.readAsStringSync().trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Return whether or not the flutter cache is up to date.
|
||||||
|
bool checkCacheIsCurrent() {
|
||||||
|
try {
|
||||||
|
final String dartSdkStamp = readStamp(path.join(cacheDirectory, 'engine-dart-sdk.stamp'));
|
||||||
|
final String engineVersion = readStamp(path.join(repoRoot, 'bin', 'internal', 'engine.version'));
|
||||||
|
return dartSdkStamp == engineVersion;
|
||||||
|
} catch (e) {
|
||||||
|
print(e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
final List<String> failures = <String>[];
|
final List<String> failures = <String>[];
|
||||||
|
|
||||||
for (final String binaryPath in findBinaryPaths()) {
|
if (!Platform.isMacOS) {
|
||||||
|
print('Error! Expected operating system "macos", actual operating system '
|
||||||
|
'is: "${Platform.operatingSystem}"');
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!checkCacheIsCurrent()) {
|
||||||
|
print(
|
||||||
|
'Warning! Your cache is either not present or not matching your flutter\n'
|
||||||
|
'version. Run a `flutter` command to update your cache, and re-try this\n'
|
||||||
|
'test.');
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (final String binaryPath in findBinaryPaths(cacheDirectory)) {
|
||||||
print('Verifying the code signature of $binaryPath');
|
print('Verifying the code signature of $binaryPath');
|
||||||
final ProcessResult result = Process.runSync(
|
final ProcessResult result = Process.runSync(
|
||||||
'codesign',
|
'codesign',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user