flutter/dev/customer_testing/test/customer_test_test.dart
Michael Goderbauer 5491c8c146
Auto-format Framework (#160545)
This auto-formats all *.dart files in the repository outside of the
`engine` subdirectory and enforces that these files stay formatted with
a presubmit check.

**Reviewers:** Please carefully review all the commits except for the
one titled "formatted". The "formatted" commit was auto-generated by
running `dev/tools/format.sh -a -f`. The other commits were hand-crafted
to prepare the repo for the formatting change. I recommend reviewing the
commits one-by-one via the "Commits" tab and avoiding Github's "Files
changed" tab as it will likely slow down your browser because of the
size of this PR.

---------

Co-authored-by: Kate Lovett <katelovett@google.com>
Co-authored-by: LongCatIsLooong <31859944+LongCatIsLooong@users.noreply.github.com>
2024-12-19 20:06:21 +00:00

119 lines
4.1 KiB
Dart

// Copyright 2014 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:customer_testing/customer_test.dart';
import 'package:file/file.dart';
import 'package:file/memory.dart';
import 'common.dart';
void main() {
test('constructs expected model', () async {
const String registryContent = '''
contact=abc@gmail.com
fetch=git clone https://github.com/flutter/cocoon.git tests
fetch=git -C tests checkout abc123
setup=flutter --version
setup.windows=flutter doctor
setup.posix=flutter -h
setup.linux=flutter analyze -h
setup.macos=flutter build -h
update=.
# Runs flutter analyze, flutter test, and builds web platform
test.posix=./test_utilities/bin/flutter_test_runner.sh app_flutter
test.posix=./test_utilities/bin/flutter_test_runner.sh repo_dashboard
test.windows=.\test_utilities\bin\flutter_test_runner.bat repo_dashboard
''';
final File registryFile = MemoryFileSystem().file('flutter_cocoon.test')
..writeAsStringSync(registryContent);
final CustomerTest test = CustomerTest(registryFile);
expect(test.contacts, containsAll(<String>['abc@gmail.com']));
expect(
test.fetch,
containsAllInOrder(<String>[
'git clone https://github.com/flutter/cocoon.git tests',
'git -C tests checkout abc123',
]),
);
expect(test.setup.first, 'flutter --version');
if (Platform.isLinux || Platform.isMacOS) {
expect(test.setup.length, 3);
expect(test.setup[1], 'flutter -h');
expect(test.setup[2], Platform.isLinux ? 'flutter analyze -h' : 'flutter build -h');
expect(
test.tests,
containsAllInOrder(<String>[
'./test_utilities/bin/flutter_test_runner.sh app_flutter',
'./test_utilities/bin/flutter_test_runner.sh repo_dashboard',
]),
);
} else if (Platform.isWindows) {
expect(test.setup.length, 2);
expect(test.setup[1], 'flutter doctor');
expect(
test.tests,
containsAllInOrder(<String>['.\test_utilities\bin\flutter_test_runner.bat repo_dashboard']),
);
}
});
test('throws exception when unknown field is passed', () async {
const String registryContent = '''
contact=abc@gmail.com
update=.
fetch=git clone https://github.com/flutter/cocoon.git tests
fetch=git -C tests checkout abc123
test.posix=./test_utilities/bin/flutter_test_runner.sh app_flutter
test.windows=.\test_utilities\bin\flutter_test_runner.bat repo_dashboard
unknownfield=super not cool
''';
final File registryFile = MemoryFileSystem().file('abc.test')
..writeAsStringSync(registryContent);
expect(() => CustomerTest(registryFile), throwsFormatException);
});
test('throws exception when no tests given', () async {
const String registryContent = '''
contact=abc@gmail.com
update=.
fetch=git clone https://github.com/flutter/cocoon.git tests
''';
final File registryFile = MemoryFileSystem().file('abc.test')
..writeAsStringSync(registryContent);
expect(() => CustomerTest(registryFile), throwsFormatException);
});
test('throws exception when only one fetch instruction given', () async {
const String registryContent = '''
contact=abc@gmail.com
update=.
fetch=git clone https://github.com/flutter/cocoon.git tests
test.posix=./test_utilities/bin/flutter_test_runner.sh app_flutter
test.windows=.\test_utilities\bin\flutter_test_runner.bat repo_dashboard
''';
final File registryFile = MemoryFileSystem().file('abc.test')
..writeAsStringSync(registryContent);
expect(() => CustomerTest(registryFile), throwsFormatException);
});
test('throws exception when no contacts given', () async {
const String registryContent = '''
update=.
fetch=git clone https://github.com/flutter/cocoon.git tests
test.posix=./test_utilities/bin/flutter_test_runner.sh app_flutter
test.windows=.\test_utilities\bin\flutter_test_runner.bat repo_dashboard
''';
final File registryFile = MemoryFileSystem().file('abc.test')
..writeAsStringSync(registryContent);
expect(() => CustomerTest(registryFile), throwsFormatException);
});
}