| // 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 'package:file/memory.dart'; |
| import 'package:flutter_tools/src/artifacts.dart'; |
| import 'package:flutter_tools/src/base/file_system.dart'; |
| import 'package:flutter_tools/src/base/logger.dart'; |
| import 'package:flutter_tools/src/build_system/build_system.dart'; |
| import 'package:flutter_tools/src/build_system/targets/localizations.dart'; |
| import 'package:flutter_tools/src/localizations/localizations_utils.dart'; |
| |
| import '../../../src/common.dart'; |
| import '../../../src/fake_process_manager.dart'; |
| |
| void main() { |
| testWithoutContext('generateLocalizations is skipped if l10n.yaml does not exist.', () async { |
| final FileSystem fileSystem = MemoryFileSystem.test(); |
| final Environment environment = Environment.test( |
| fileSystem.currentDirectory, |
| artifacts: Artifacts.test(), |
| fileSystem: fileSystem, |
| logger: BufferLogger.test(), |
| processManager: FakeProcessManager.any(), |
| ); |
| |
| expect(const GenerateLocalizationsTarget().canSkip(environment), true); |
| |
| environment.projectDir.childFile('l10n.yaml').createSync(); |
| |
| expect(const GenerateLocalizationsTarget().canSkip(environment), false); |
| }); |
| |
| testWithoutContext('parseLocalizationsOptions handles valid yaml configuration', () async { |
| final FileSystem fileSystem = MemoryFileSystem.test(); |
| final File configFile = fileSystem.file('l10n.yaml') |
| ..writeAsStringSync(''' |
| arb-dir: arb |
| template-arb-file: example.arb |
| output-localization-file: bar |
| untranslated-messages-file: untranslated |
| output-class: Foo |
| header-file: header |
| header: HEADER |
| use-deferred-loading: true |
| preferred-supported-locales: en_US |
| synthetic-package: false |
| required-resource-attributes: false |
| nullable-getter: false |
| '''); |
| |
| final LocalizationOptions options = parseLocalizationsOptions( |
| file: configFile, |
| logger: BufferLogger.test(), |
| ); |
| |
| expect(options.arbDirectory, Uri.parse('arb')); |
| expect(options.templateArbFile, Uri.parse('example.arb')); |
| expect(options.outputLocalizationsFile, Uri.parse('bar')); |
| expect(options.untranslatedMessagesFile, Uri.parse('untranslated')); |
| expect(options.outputClass, 'Foo'); |
| expect(options.headerFile, Uri.parse('header')); |
| expect(options.header, 'HEADER'); |
| expect(options.deferredLoading, true); |
| expect(options.preferredSupportedLocales, <String>['en_US']); |
| expect(options.useSyntheticPackage, false); |
| expect(options.areResourceAttributesRequired, false); |
| expect(options.usesNullableGetter, false); |
| }); |
| |
| testWithoutContext('parseLocalizationsOptions handles preferredSupportedLocales as list', () async { |
| final FileSystem fileSystem = MemoryFileSystem.test(); |
| final File configFile = fileSystem.file('l10n.yaml')..writeAsStringSync(''' |
| preferred-supported-locales: ['en_US', 'de'] |
| '''); |
| |
| final LocalizationOptions options = parseLocalizationsOptions( |
| file: configFile, |
| logger: BufferLogger.test(), |
| ); |
| |
| expect(options.preferredSupportedLocales, <String>['en_US', 'de']); |
| }); |
| |
| testWithoutContext( |
| 'parseLocalizationsOptions throws exception on invalid yaml configuration', |
| () async { |
| final FileSystem fileSystem = MemoryFileSystem.test(); |
| final File configFile = fileSystem.file('l10n.yaml')..writeAsStringSync(''' |
| use-deferred-loading: string |
| '''); |
| |
| expect( |
| () => parseLocalizationsOptions( |
| file: configFile, |
| logger: BufferLogger.test(), |
| ), |
| throwsException, |
| ); |
| }); |
| } |