| // 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/file.dart'; |
| import 'package:flutter_tools/src/convert.dart'; |
| import '../src/common.dart'; |
| import 'test_utils.dart'; |
| |
| /// Checks that all active template files are defined in the template_manifest.json file. |
| void main() { |
| testWithoutContext('Check template manifest is up to date', () { |
| final Map<String, Object?> manifest = json.decode( |
| fileSystem.file('templates/template_manifest.json').readAsStringSync(), |
| ) as Map<String, Object?>; |
| final Set<Uri> declaredFileList = Set<Uri>.from( |
| (manifest['files']! as List<Object?>).cast<String>().map<Uri>(fileSystem.path.toUri)); |
| |
| final Set<Uri> activeTemplateList = fileSystem.directory('templates') |
| .listSync(recursive: true) |
| .whereType<File>() |
| .where((File file) => fileSystem.path.basename(file.path) != 'template_manifest.json' && |
| fileSystem.path.basename(file.path) != 'README.md' && |
| fileSystem.path.basename(file.path) != '.DS_Store') |
| .map((File file) => file.uri) |
| .toSet(); |
| |
| final Set<Uri> difference = activeTemplateList.difference(declaredFileList); |
| |
| expect(difference, isEmpty, reason: 'manifest and template directory should be in-sync'); |
| }); |
| } |