Skip to content

Commit 2da2285

Browse files
authored
[gen_l10n] Throw error when arb file does not exist (#107583)
1 parent c4975d9 commit 2da2285

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

packages/flutter_tools/lib/src/localizations/gen_l10n.dart

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -942,7 +942,13 @@ class LocalizationsGenerator {
942942
@visibleForTesting
943943
static File templateArbFileFromFileName(String templateArbFileName, Directory inputDirectory) {
944944
final File templateArbFile = inputDirectory.childFile(templateArbFileName);
945-
final String templateArbFileStatModeString = templateArbFile.statSync().modeString();
945+
final FileStat templateArbFileStat = templateArbFile.statSync();
946+
if (templateArbFileStat.type == FileSystemEntityType.notFound) {
947+
throw L10nException(
948+
"The 'template-arb-file', $templateArbFile, does not exist."
949+
);
950+
}
951+
final String templateArbFileStatModeString = templateArbFileStat.modeString();
946952
if (templateArbFileStatModeString[0] == '-' && templateArbFileStatModeString[3] == '-') {
947953
throw L10nException(
948954
"The 'template-arb-file', $templateArbFile, is not readable.\n"

packages/flutter_tools/test/general.shard/generate_localizations_test.dart

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,32 @@ void main() {
180180
);
181181
});
182182

183+
testWithoutContext('throws error when arb file does not exist', () {
184+
// Set up project directory.
185+
fs.currentDirectory
186+
.childDirectory('lib')
187+
.childDirectory('l10n')
188+
.createSync(recursive: true);
189+
190+
// Arb file should be nonexistent in the l10n directory.
191+
expect(
192+
() => LocalizationsGenerator(
193+
fileSystem: fs,
194+
projectPathString: './',
195+
inputPathString: defaultL10nPathString,
196+
outputPathString: defaultL10nPathString,
197+
templateArbFileName: defaultTemplateArbFileName,
198+
outputFileString: defaultOutputFileString,
199+
classNameString: defaultClassNameString,
200+
),
201+
throwsA(isA<L10nException>().having(
202+
(L10nException e) => e.message,
203+
'message',
204+
contains(', does not exist.'),
205+
)),
206+
);
207+
});
208+
183209
group('className should only take valid Dart class names', () {
184210
setUp(() {
185211
_standardFlutterDirectoryL10nSetup(fs);

0 commit comments

Comments
 (0)