blob: 8b5d2a2b55ba1f98eaf7609703545cec00819d77 [file] [log] [blame]
// Copyright 2013 The Flutter 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:io';
import 'package:golden_tests_harvester/golden_tests_harvester.dart';
import 'package:process/src/interface/process_manager.dart';
import 'package:skia_gold_client/skia_gold_client.dart';
const String _kLuciEnvName = 'LUCI_CONTEXT';
bool get isLuciEnv => Platform.environment.containsKey(_kLuciEnvName);
/// Fake SkiaGoldClient that is used if the harvester is run outside of Luci.
class FakeSkiaGoldClient implements SkiaGoldClient {
FakeSkiaGoldClient(this._workingDirectory);
final Directory _workingDirectory;
@override
Future<void> addImg(String testName, File goldenFile,
{double differentPixelsRate = 0.01,
int pixelColorDelta = 0,
required int screenshotSize}) async {
Logger.instance.log('addImg testName:$testName goldenFile:${goldenFile.path} screenshotSize:$screenshotSize differentPixelsRate:$differentPixelsRate pixelColorDelta:$pixelColorDelta');
}
@override
Future<void> auth() async {
Logger.instance.log('auth');
}
@override
String cleanTestName(String fileName) {
throw UnimplementedError();
}
@override
Map<String, String>? get dimensions => throw UnimplementedError();
@override
List<String> getCIArguments() {
throw UnimplementedError();
}
@override
Future<String?> getExpectationForTest(String testName) {
throw UnimplementedError();
}
@override
Future<List<int>> getImageBytes(String imageHash) {
throw UnimplementedError();
}
@override
String getTraceID(String testName) {
throw UnimplementedError();
}
@override
HttpClient get httpClient => throw UnimplementedError();
@override
ProcessManager get process => throw UnimplementedError();
@override
Directory get workDirectory => _workingDirectory;
}
void _printUsage() {
Logger.instance
.log('dart run ./bin/golden_tests_harvester.dart <working_dir>');
}
Future<void> main(List<String> arguments) async {
if (arguments.length != 1) {
return _printUsage();
}
final Directory workDirectory = Directory(arguments[0]);
final SkiaGoldClient skiaGoldClient = isLuciEnv
? SkiaGoldClient(workDirectory)
: FakeSkiaGoldClient(workDirectory);
await harvest(skiaGoldClient, workDirectory);
}