// 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); }); }