Cleanup
diff --git a/packages/flutter_goldens/lib/flutter_goldens.dart b/packages/flutter_goldens/lib/flutter_goldens.dart
index 8644c43..2ae622d 100644
--- a/packages/flutter_goldens/lib/flutter_goldens.dart
+++ b/packages/flutter_goldens/lib/flutter_goldens.dart
@@ -69,14 +69,17 @@
// Calculate the appropriate basedir for the current test context.
const FileSystem fs = LocalFileSystem();
final Directory testDirectory = fs.directory(defaultComparator.basedir);
- print('test: $testDirectory');
final Directory flutterRoot = fs.directory(Platform.environment[_kFlutterRootKey]);
- print('flutter: $flutterRoot');
- final Directory goldenRoot = flutterRoot.childDirectory(fs.path.join('bin', 'cache', 'pkg', 'goldens'));
- print('golden: $goldenRoot');
- final String testDirectoryRelativePath = fs.path.relative(testDirectory.path, from: flutterRoot.path);
- print('testDRP: $testDirectoryRelativePath');
- print('FGFC instantiated with:${goldenRoot.childDirectory(testDirectoryRelativePath).uri}');
+ final Directory goldenRoot = flutterRoot.childDirectory(fs.path.join(
+ 'bin',
+ 'cache',
+ 'pkg',
+ 'goldens',
+ ));
+ final String testDirectoryRelativePath = fs.path.relative(
+ testDirectory.path,
+ from: flutterRoot.path,
+ );
return FlutterGoldenFileComparator(goldenRoot.childDirectory(testDirectoryRelativePath).uri);
}
@@ -88,11 +91,13 @@
}
final bool authorized = await _skiaClient.auth(fs.directory(basedir));
if (!authorized) {
- //TODO(katelovett): Clean up for final implementation
+ //TODO(katelovett): Clean up for final implementation on CI
return true;
//throw test_package.TestFailure('Could not authorize golctl.');
}
- return await _skiaClient.imgtest(golden.path, goldenFile);
+ await _skiaClient.imgtestInit();
+
+ return await _skiaClient.imgtestAdd(golden.path, goldenFile);
}
@override
diff --git a/packages/flutter_goldens/test/flutter_goldens_test.dart b/packages/flutter_goldens/test/flutter_goldens_test.dart
index 99e2ddb..681a42a 100644
--- a/packages/flutter_goldens/test/flutter_goldens_test.dart
+++ b/packages/flutter_goldens/test/flutter_goldens_test.dart
@@ -52,6 +52,13 @@
// check for successful auth - return true
// check for unsuccessful auth - throw NonZeroExitCode
// check for unavailable auth (not on CI) - return false
+ // check for redundant work
+ });
+
+ group('init', () {
+ // check for successful init - return true
+ // check for unsuccessful init - throw NonZeroExitCode
+ // Check for redundant work
});
group('imgtest', () {
diff --git a/packages/flutter_goldens_client/lib/client.dart b/packages/flutter_goldens_client/lib/client.dart
index 98c207d..b0141f9 100644
--- a/packages/flutter_goldens_client/lib/client.dart
+++ b/packages/flutter_goldens_client/lib/client.dart
@@ -51,7 +51,12 @@
Directory _workDirectory;
- //TODO(katelovett): Environment variables swapped out for CI implementation
+ //TODO(katelovett): Environment variables are temporary for local testing
+ /// The local [Directory] where the Flutter repository is hosted.
+ ///
+ /// Uses the [fs] file system.
+ Directory get flutterRoot => fs.directory(platform.environment[_kFlutterRootKey]);
+
/// The [path] to the local [Directory] where the goldctl tool is hosted.
///
/// Uses the [platform] [environment] in this iteration.
@@ -68,11 +73,6 @@
/// Uses the [platform] [environment] in this iteration.
String get _skiaGoldInstance => platform.environment[_kSkiaGoldInstance];
- /// The local [Directory] where the Flutter repository is hosted.
- ///
- /// Uses the [fs] file system.
- Directory get flutterRoot => fs.directory(platform.environment[_kFlutterRootKey]);
-
/// Prepares the local work space for golden file testing and initializes the
/// goldctl authorization for executing tests.
///
@@ -81,18 +81,24 @@
_workDirectory = workDirectory;
//TODO(katelovett): Cleanup for final CI implementation
- if(_serviceAccount == null)
- return false; // We are not in the proper environment for running these tests.
+ if (_serviceAccount == null)
+ return false; // Not in the proper environment for golden file testing.
- final File authFile = io.File(path.join(_workDirectory.path, 'temp', 'auth_opt.json'));
- if(!authFile.existsSync()) {
+ final File authFile = _workDirectory.childFile(fs.path.join(
+ 'temp',
+ 'auth_opt.json'
+ ));
+ if (!authFile.existsSync()) {
final List<String> authArguments = <String>[
'auth',
'--service-account', _serviceAccount,
'--work-dir', _workDirectory.childDirectory('temp').path,
];
- final io.ProcessResult authResults = io.Process.runSync(_goldctl, authArguments);
+ final io.ProcessResult authResults = io.Process.runSync(
+ _goldctl,
+ authArguments
+ );
if (authResults.exitCode != 0) {
final StringBuffer buf = StringBuffer();
buf
@@ -101,13 +107,14 @@
..writeln('stderr: ${authResults.stderr}');
throw NonZeroExitCode(authResults.exitCode, buf.toString());
}
- } else {
- print('The file is already here, skipping auth.');
}
- // Run init
- final File keysFile = io.File(path.join(_workDirectory.path, 'keys.json'));
- if(!keysFile.existsSync()) {
+ return true;
+ }
+ Future<void> imgtestInit() async {
+ final File keysFile = _workDirectory.childFile('keys.json');
+
+ if(!keysFile.existsSync() || await _isNewCommit()) {
final String commitHash = await _getCommitHash();
final String keys = '${_workDirectory.path}keys.json';
final String failures = '${_workDirectory.path}failures.json';
@@ -124,6 +131,7 @@
'--failure-file', failures,
'--passfail',
];
+
if(imgtestInitArguments.contains(null)) {
final StringBuffer buf = StringBuffer();
buf.writeln('Null argument for Skia Gold imgtest init:');
@@ -133,8 +141,9 @@
final io.ProcessResult imgtestInitResult = io.Process.runSync(
_goldctl,
- imgtestInitArguments
+ imgtestInitArguments,
);
+
if (imgtestInitResult.exitCode != 0) {
final StringBuffer buf = StringBuffer();
buf
@@ -143,14 +152,10 @@
..writeln('stderr: ${imgtestInitResult.stderr}');
throw NonZeroExitCode(imgtestInitResult.exitCode, buf.toString());
}
- } else{
- print('Already init, skipping.');
}
- return true;
}
- Future<bool> imgtest(String testName, File goldenFile) async {
-
+ Future<bool> imgtestAdd(String testName, File goldenFile) async {
final List<String> imgtestArguments = <String>[
'imgtest', 'add',
'--work-dir', _workDirectory.childDirectory('temp').path,
@@ -165,7 +170,10 @@
throw NonZeroExitCode(1, buf.toString());
}
- final io.ProcessResult imgtestResult = io.Process.runSync(_goldctl, imgtestArguments);
+ final io.ProcessResult imgtestResult = io.Process.runSync(
+ _goldctl,
+ imgtestArguments,
+ );
if (imgtestResult.exitCode != 0) {
final StringBuffer buf = StringBuffer();
buf
@@ -176,13 +184,12 @@
..writeln('stderr: ${imgtestResult.stderr}');
throw NonZeroExitCode(imgtestResult.exitCode, buf.toString());
}
- // print('PASS');
return true;
}
Future<String> _getCommitHash() async {
- // TODO(katelovett): Remove after pre-commit tests can be ingested
- return '0572f158fb10505b840281124d07f8785d4f13f0';
+ // TODO(katelovett): Remove after pre-commit tests can be ingested by Skia Gold
+ return 'd4e4726ac262b9f78b002b696f915f552fed3fc8';
// if (!flutterRoot.existsSync()) {
// return null;
// } else {
@@ -191,7 +198,20 @@
// workingDirectory: flutterRoot.path,
// );
// return revParse.exitCode == 0 ? revParse.stdout.trim() : null;
- }
+ }
+
+ Future<bool> _isNewCommit() async {
+ // auth file is there, need to check if we are on a new commit
+ final File resultFile = _workDirectory.childFile(fs.path.join(
+ 'temp',
+ 'result-state.json'
+ ));
+ final String contents = await resultFile.readAsString();
+ final Map<String, dynamic> resultJSON = convert.json.decode(contents);
+ final String lastTestedCommit = resultJSON['SharedConfig']['gitHash'];
+ final String currentCommit = await _getCommitHash();
+ return lastTestedCommit == currentCommit ? false : true;
+ }
String _getKeysJSON() {
// TODO(katelovett): Parse out cleaner key information