Unverified Commit 7edcc92b authored by Kate Lovett's avatar Kate Lovett Committed by GitHub

Refactoring Gold to enable both Luci & Cirrus support (#49815)

parent 77c46276
...@@ -85,7 +85,8 @@ const double _kDividerThickness = 1.0; ...@@ -85,7 +85,8 @@ const double _kDividerThickness = 1.0;
/// sheet title and message text style. /// sheet title and message text style.
/// ///
/// To display action buttons that look like standard iOS action sheet buttons, /// To display action buttons that look like standard iOS action sheet buttons,
/// provide [CupertinoActionSheetAction]s for the [actions] given to this action sheet. /// provide [CupertinoActionSheetAction]s for the [actions] given to this action
/// sheet.
/// ///
/// To include a iOS-style cancel button separate from the other buttons, /// To include a iOS-style cancel button separate from the other buttons,
/// provide an [CupertinoActionSheetAction] for the [cancelButton] given to this /// provide an [CupertinoActionSheetAction] for the [cancelButton] given to this
......
...@@ -108,6 +108,7 @@ void main() { ...@@ -108,6 +108,7 @@ void main() {
process: process, process: process,
platform: platform, platform: platform,
httpClient: mockHttpClient, httpClient: mockHttpClient,
ci: ContinuousIntegrationEnvironment.cirrus,
); );
when(process.run(any)) when(process.run(any))
...@@ -165,6 +166,76 @@ void main() { ...@@ -165,6 +166,76 @@ void main() {
); );
}); });
test('correctly inits tryjob for luci', () async {
platform = FakePlatform(
environment: <String, String>{
'FLUTTER_ROOT': _kFlutterRoot,
'GOLDCTL' : 'goldctl',
'SWARMING_TASK_ID' : '4ae997b50dfd4d11',
'LOGDOG_STREAM_PREFIX' : 'buildbucket/cr-buildbucket.appspot.com/8885996262141582672',
'GOLD_TRYJOB' : 'refs/pull/49815/head',
},
operatingSystem: 'macos'
);
skiaClient = SkiaGoldClient(
workDirectory,
fs: fs,
process: process,
platform: platform,
httpClient: mockHttpClient,
ci: ContinuousIntegrationEnvironment.luci,
);
final List<String> ciArguments = skiaClient.getCIArguments();
expect(
ciArguments,
equals(
<String>[
'--changelist', '49815',
'--cis', 'buildbucket',
'--jobid', '8885996262141582672',
],
),
);
});
test('correctly inits tryjob for cirrus', () async {
platform = FakePlatform(
environment: <String, String>{
'FLUTTER_ROOT': _kFlutterRoot,
'GOLDCTL' : 'goldctl',
'CIRRUS_CI' : 'true',
'CIRRUS_TASK_ID' : '8885996262141582672',
'CIRRUS_PR' : '49815',
},
operatingSystem: 'macos'
);
skiaClient = SkiaGoldClient(
workDirectory,
fs: fs,
process: process,
platform: platform,
httpClient: mockHttpClient,
ci: ContinuousIntegrationEnvironment.cirrus,
);
final List<String> ciArguments = skiaClient.getCIArguments();
expect(
ciArguments,
equals(
<String>[
'--changelist', '49815',
'--cis', 'cirrus',
'--jobid', '8885996262141582672',
],
),
);
});
group('Request Handling', () { group('Request Handling', () {
String testName; String testName;
String pullRequestNumber; String pullRequestNumber;
...@@ -456,12 +527,12 @@ void main() { ...@@ -456,12 +527,12 @@ void main() {
}); });
group('FlutterGoldenFileComparator', () { group('FlutterGoldenFileComparator', () {
FlutterSkiaGoldFileComparator comparator; FlutterPostSubmitFileComparator comparator;
setUp(() { setUp(() {
final Directory basedir = fs.directory('flutter/test/library/') final Directory basedir = fs.directory('flutter/test/library/')
..createSync(recursive: true); ..createSync(recursive: true);
comparator = FlutterSkiaGoldFileComparator( comparator = FlutterPostSubmitFileComparator(
basedir.uri, basedir.uri,
MockSkiaGoldClient(), MockSkiaGoldClient(),
fs: fs, fs: fs,
...@@ -497,7 +568,7 @@ void main() { ...@@ -497,7 +568,7 @@ void main() {
setUp(() { setUp(() {
final Directory basedir = fs.directory('flutter/test/library/') final Directory basedir = fs.directory('flutter/test/library/')
..createSync(recursive: true); ..createSync(recursive: true);
comparator = FlutterSkiaGoldFileComparator( comparator = FlutterPostSubmitFileComparator(
basedir.uri, basedir.uri,
mockSkiaClient, mockSkiaClient,
fs: fs, fs: fs,
...@@ -506,7 +577,21 @@ void main() { ...@@ -506,7 +577,21 @@ void main() {
}); });
group('correctly determines testing environment', () { group('correctly determines testing environment', () {
test('returns true', () { test('returns true for Luci', () {
platform = FakePlatform(
environment: <String, String>{
'FLUTTER_ROOT': _kFlutterRoot,
'SWARMING_TASK_ID' : '12345678990',
},
operatingSystem: 'macos'
);
expect(
FlutterPostSubmitFileComparator.isAvailableForEnvironment(platform),
isTrue,
);
});
test('returns true for Cirrus', () {
platform = FakePlatform( platform = FakePlatform(
environment: <String, String>{ environment: <String, String>{
'FLUTTER_ROOT': _kFlutterRoot, 'FLUTTER_ROOT': _kFlutterRoot,
...@@ -518,7 +603,7 @@ void main() { ...@@ -518,7 +603,7 @@ void main() {
operatingSystem: 'macos' operatingSystem: 'macos'
); );
expect( expect(
FlutterSkiaGoldFileComparator.isAvailableForEnvironment(platform), FlutterPostSubmitFileComparator.isAvailableForEnvironment(platform),
isTrue, isTrue,
); );
}); });
...@@ -535,7 +620,7 @@ void main() { ...@@ -535,7 +620,7 @@ void main() {
operatingSystem: 'macos' operatingSystem: 'macos'
); );
expect( expect(
FlutterSkiaGoldFileComparator.isAvailableForEnvironment(platform), FlutterPostSubmitFileComparator.isAvailableForEnvironment(platform),
isFalse, isFalse,
); );
}); });
...@@ -551,7 +636,7 @@ void main() { ...@@ -551,7 +636,7 @@ void main() {
operatingSystem: 'macos' operatingSystem: 'macos'
); );
expect( expect(
FlutterSkiaGoldFileComparator.isAvailableForEnvironment(platform), FlutterPostSubmitFileComparator.isAvailableForEnvironment(platform),
isFalse, isFalse,
); );
}); });
...@@ -566,7 +651,7 @@ void main() { ...@@ -566,7 +651,7 @@ void main() {
operatingSystem: 'macos' operatingSystem: 'macos'
); );
expect( expect(
FlutterSkiaGoldFileComparator.isAvailableForEnvironment(platform), FlutterPostSubmitFileComparator.isAvailableForEnvironment(platform),
isFalse, isFalse,
); );
}); });
...@@ -583,7 +668,7 @@ void main() { ...@@ -583,7 +668,7 @@ void main() {
operatingSystem: 'macos' operatingSystem: 'macos'
); );
expect( expect(
FlutterSkiaGoldFileComparator.isAvailableForEnvironment(platform), FlutterPostSubmitFileComparator.isAvailableForEnvironment(platform),
isFalse, isFalse,
); );
}); });
...@@ -595,7 +680,7 @@ void main() { ...@@ -595,7 +680,7 @@ void main() {
final MockSkiaGoldClient mockSkiaClient = MockSkiaGoldClient(); final MockSkiaGoldClient mockSkiaClient = MockSkiaGoldClient();
group('correctly determines testing environment', () { group('correctly determines testing environment', () {
test('returns true', () { test('returns true for Cirrus', () {
platform = FakePlatform( platform = FakePlatform(
environment: <String, String>{ environment: <String, String>{
'FLUTTER_ROOT': _kFlutterRoot, 'FLUTTER_ROOT': _kFlutterRoot,
...@@ -611,6 +696,21 @@ void main() { ...@@ -611,6 +696,21 @@ void main() {
); );
}); });
test('returns true for Luci', () {
platform = FakePlatform(
environment: <String, String>{
'FLUTTER_ROOT': _kFlutterRoot,
'SWARMING_TASK_ID' : '12345678990',
'GOLD_TRYJOB' : 'git/ref/12345/head'
},
operatingSystem: 'macos'
);
expect(
FlutterPreSubmitFileComparator.isAvailableForEnvironment(platform),
isTrue,
);
});
test('returns false - no PR', () { test('returns false - no PR', () {
platform = FakePlatform( platform = FakePlatform(
environment: <String, String>{ environment: <String, String>{
...@@ -642,7 +742,7 @@ void main() { ...@@ -642,7 +742,7 @@ void main() {
); );
}); });
test('returns false - not on Cirrus', () { test('returns false - not on Cirrus or Luci', () {
platform = FakePlatform( platform = FakePlatform(
environment: <String, String>{ environment: <String, String>{
'FLUTTER_ROOT': _kFlutterRoot, 'FLUTTER_ROOT': _kFlutterRoot,
...@@ -765,21 +865,7 @@ void main() { ...@@ -765,21 +865,7 @@ void main() {
group('Skipping', () { group('Skipping', () {
group('correctly determines testing environment', () { group('correctly determines testing environment', () {
test('returns true on LUCI', () { test('returns true on Cirrus shards that don\'t run golden tests', () {
platform = FakePlatform(
environment: <String, String>{
'FLUTTER_ROOT': _kFlutterRoot,
'SWARMING_TASK_ID' : '1234567890',
},
operatingSystem: 'macos'
);
expect(
FlutterSkippingGoldenFileComparator.isAvailableForEnvironment(platform),
isTrue,
);
});
test('returns true on Cirrus', () {
platform = FakePlatform( platform = FakePlatform(
environment: <String, String>{ environment: <String, String>{
'FLUTTER_ROOT': _kFlutterRoot, 'FLUTTER_ROOT': _kFlutterRoot,
...@@ -788,10 +874,11 @@ void main() { ...@@ -788,10 +874,11 @@ void main() {
operatingSystem: 'macos' operatingSystem: 'macos'
); );
expect( expect(
FlutterSkippingGoldenFileComparator.isAvailableForEnvironment(platform), FlutterSkippingFileComparator.isAvailableForEnvironment(platform),
isTrue, isTrue,
); );
}); });
test('returns false - no CI', () { test('returns false - no CI', () {
platform = FakePlatform( platform = FakePlatform(
environment: <String, String>{ environment: <String, String>{
...@@ -800,7 +887,7 @@ void main() { ...@@ -800,7 +887,7 @@ void main() {
operatingSystem: 'macos' operatingSystem: 'macos'
); );
expect( expect(
FlutterSkippingGoldenFileComparator.isAvailableForEnvironment( FlutterSkippingFileComparator.isAvailableForEnvironment(
platform), platform),
isFalse, isFalse,
); );
...@@ -891,7 +978,7 @@ void main() { ...@@ -891,7 +978,7 @@ void main() {
goldens: mockSkiaClient, goldens: mockSkiaClient,
baseDirectory: mockDirectory, baseDirectory: mockDirectory,
); );
expect(comparator.runtimeType, FlutterSkippingGoldenFileComparator); expect(comparator.runtimeType, FlutterSkippingFileComparator);
when(mockSkiaClient.getExpectations()) when(mockSkiaClient.getExpectations())
.thenAnswer((_) => throw const SocketException("Can't reach Gold")); .thenAnswer((_) => throw const SocketException("Can't reach Gold"));
...@@ -900,7 +987,7 @@ void main() { ...@@ -900,7 +987,7 @@ void main() {
goldens: mockSkiaClient, goldens: mockSkiaClient,
baseDirectory: mockDirectory, baseDirectory: mockDirectory,
); );
expect(comparator.runtimeType, FlutterSkippingGoldenFileComparator); expect(comparator.runtimeType, FlutterSkippingFileComparator);
}); });
}); });
}); });
......
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