blob: 012c66e51217f50cc5e2af6c8c456b409179b3bd [file]
// Copyright 2013 The Flutter Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// See also dev/automated_tests/flutter_test/flutter_gold_test.dart
import 'dart:typed_data';
import 'package:file/file.dart';
import 'package:file/memory.dart';
import 'package:flutter_goldens/flutter_goldens.dart';
import 'package:flutter_test/flutter_test.dart';
const String _kFlutterRoot = '/flutter';
void main() {
group('FlutterGoldenFileComparator', () {
test('calculates the basedir correctly from defaultComparator for local testing', () async {
final fs = MemoryFileSystem();
fs.directory(_kFlutterRoot).createSync(recursive: true);
final defaultComparator = FakeLocalFileComparator();
final Directory root = fs.directory('/')..createSync(recursive: true);
defaultComparator.basedir = root.childDirectory('baz').uri;
final Directory basedir = FlutterGoldenFileComparator.getBaseDirectory(
defaultComparator,
fs: fs,
);
expect(basedir.uri, fs.directory('/baz/skia_goldens').uri);
});
group('_getPackageName', () {
test('extracts name from pubspec.yaml', () {
final fs = MemoryFileSystem();
final Directory packageDir = fs.directory('/my_package')..createSync(recursive: true);
packageDir.childFile('pubspec.yaml').writeAsStringSync('name: my_package_name\n');
fs.currentDirectory = packageDir;
expect(FlutterGoldenFileComparator.getPackageName(fs), 'my_package_name');
});
test('traverses upwards to find pubspec.yaml', () {
final fs = MemoryFileSystem();
final Directory packageDir = fs.directory('/my_package')..createSync(recursive: true);
packageDir.childFile('pubspec.yaml').writeAsStringSync('name: my_package_name\n');
final Directory testDir = packageDir.childDirectory('test')..createSync(recursive: true);
fs.currentDirectory = testDir;
expect(FlutterGoldenFileComparator.getPackageName(fs), 'my_package_name');
});
test('returns null if no pubspec.yaml is found', () {
final fs = MemoryFileSystem();
final Directory someDir = fs.directory('/some/dir')..createSync(recursive: true);
fs.currentDirectory = someDir;
expect(FlutterGoldenFileComparator.getPackageName(fs), isNull);
});
test('handles invalid yaml gracefully', () {
final fs = MemoryFileSystem();
final Directory packageDir = fs.directory('/my_package')..createSync(recursive: true);
packageDir.childFile('pubspec.yaml').writeAsStringSync('invalid: yaml: : :');
fs.currentDirectory = packageDir;
expect(FlutterGoldenFileComparator.getPackageName(fs), isNull);
});
});
});
group('FlutterSkippingFileComparator', () {
test('compare returns true', () async {
final fs = MemoryFileSystem();
final comparator = FlutterSkippingFileComparator(Uri.parse('/basedir'), 'reason', fs: fs);
final bool result = await comparator.compare(
Uint8List.fromList(<int>[1, 2, 3]),
Uri.parse('golden.png'),
);
expect(result, isTrue);
});
});
}
class FakeLocalFileComparator extends Fake implements LocalFileComparator {
@override
late Uri basedir;
}