Unverified Commit 6dfa53b0 authored by Christopher Fujino's avatar Christopher Fujino Committed by GitHub

[flutter_conductor] pretty-print state JSON file (#87756)

parent 6b32482b
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
import 'dart:convert' show jsonDecode, jsonEncode; import 'dart:convert' show JsonEncoder, jsonDecode;
import 'package:file/file.dart' show File; import 'package:file/file.dart' show File;
import 'package:platform/platform.dart'; import 'package:platform/platform.dart';
...@@ -230,10 +230,13 @@ ReleasePhase getNextPhase(ReleasePhase currentPhase) { ...@@ -230,10 +230,13 @@ ReleasePhase getNextPhase(ReleasePhase currentPhase) {
return nextPhase; return nextPhase;
} }
// Indent two spaces.
const JsonEncoder _encoder = JsonEncoder.withIndent(' ');
void writeStateToFile(File file, pb.ConductorState state, List<String> logs) { void writeStateToFile(File file, pb.ConductorState state, List<String> logs) {
state.logs.addAll(logs); state.logs.addAll(logs);
file.writeAsStringSync( file.writeAsStringSync(
jsonEncode(state.toProto3Json()), _encoder.convert(state.toProto3Json()),
flush: true, flush: true,
); );
} }
......
// 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);
});
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment