// 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:conductor/proto/conductor_state.pb.dart' as pb; import 'package:conductor/state.dart'; import 'package:file/file.dart'; import 'package:file/memory.dart'; import './common.dart'; void main() { test('writeStateToFile() pretty-prints JSON with 2 spaces', () { final MemoryFileSystem fileSystem = MemoryFileSystem.test(); final File stateFile = fileSystem.file('/path/to/statefile.json') ..createSync(recursive: true); const String candidateBranch = 'flutter-2.3-candidate.0'; final pb.ConductorState state = pb.ConductorState( releaseChannel: 'stable', releaseVersion: '2.3.4', incrementLevel: 'z', engine: pb.Repository( candidateBranch: candidateBranch, upstream: pb.Remote( name: 'upstream', url: 'https://github.com/flutter/engine.git', ), ), framework: pb.Repository( candidateBranch: candidateBranch, upstream: pb.Remote( name: 'upstream', url: 'https://github.com/flutter/flutter.git', ), ), ); writeStateToFile( stateFile, state, <String>['[status] hello world'], ); final String serializedState = stateFile.readAsStringSync(); const String expectedString = ''' { "releaseChannel": "stable", "releaseVersion": "2.3.4", "engine": { "candidateBranch": "flutter-2.3-candidate.0", "upstream": { "name": "upstream", "url": "https://github.com/flutter/engine.git" } }, "framework": { "candidateBranch": "flutter-2.3-candidate.0", "upstream": { "name": "upstream", "url": "https://github.com/flutter/flutter.git" } }, "logs": [ "[status] hello world" ], "incrementLevel": "z" }'''; expect(serializedState, expectedString); }); }