// 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:flutter_tools/src/flutter_project_metadata.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/logger.dart'; import 'package:file/memory.dart'; import '../src/common.dart'; void main() { FileSystem fileSystem; BufferLogger logger; File metadataFile; setUp(() { fileSystem = MemoryFileSystem.test(); logger = BufferLogger.test(); metadataFile = fileSystem.file('.metadata'); }); testWithoutContext('project metadata fields are empty when file does not exist', () { final FlutterProjectMetadata projectMetadata = FlutterProjectMetadata(metadataFile, logger); expect(projectMetadata.projectType, isNull); expect(projectMetadata.versionChannel, isNull); expect(projectMetadata.versionRevision, isNull); expect(logger.traceText, contains('.metadata project_type version is malformed.')); expect(logger.traceText, contains('.metadata version is malformed.')); }); testWithoutContext('project metadata fields are empty when file is empty', () { metadataFile.createSync(); final FlutterProjectMetadata projectMetadata = FlutterProjectMetadata(metadataFile, logger); expect(projectMetadata.projectType, isNull); expect(projectMetadata.versionChannel, isNull); expect(projectMetadata.versionRevision, isNull); expect(logger.traceText, contains('.metadata project_type version is malformed.')); expect(logger.traceText, contains('.metadata version is malformed.')); }); testWithoutContext('project metadata fields are empty when file is not valid yaml', () { metadataFile.writeAsStringSync(' channel: @something'); final FlutterProjectMetadata projectMetadata = FlutterProjectMetadata(metadataFile, logger); expect(projectMetadata.projectType, isNull); expect(projectMetadata.versionChannel, isNull); expect(projectMetadata.versionRevision, isNull); expect(logger.traceText, contains('.metadata project_type version is malformed.')); expect(logger.traceText, contains('.metadata version is malformed.')); }); testWithoutContext('projectType is populated when version is malformed', () { metadataFile ..createSync() ..writeAsStringSync(''' version: STRING INSTEAD OF MAP project_type: plugin '''); final FlutterProjectMetadata projectMetadata = FlutterProjectMetadata(metadataFile, logger); expect(projectMetadata.projectType, FlutterProjectType.plugin); expect(projectMetadata.versionChannel, isNull); expect(projectMetadata.versionRevision, isNull); expect(logger.traceText, contains('.metadata version is malformed.')); }); testWithoutContext('version is populated when projectType is malformed', () { metadataFile ..createSync() ..writeAsStringSync(''' version: revision: b59b226a49391949247e3d6122e34bb001049ae4 channel: stable project_type: {} '''); final FlutterProjectMetadata projectMetadata = FlutterProjectMetadata(metadataFile, logger); expect(projectMetadata.projectType, isNull); expect(projectMetadata.versionChannel, 'stable'); expect(projectMetadata.versionRevision, 'b59b226a49391949247e3d6122e34bb001049ae4'); expect(logger.traceText, contains('.metadata project_type version is malformed.')); }); }