| // 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 | |
| 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'])); | |
| if (Platform.isLinux || Platform.isMacOS) { | |
| 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.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); | |
| }); | |
| } |