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

Make `codesign.dart` integration test easier to run locally (#50289)

parent 5dfa8e9c
...@@ -5,11 +5,10 @@ ...@@ -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) { ...@@ -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() { ...@@ -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',
......
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