[flutter_conductor] pretty-print state JSON file (#87756)
This commit is contained in:
parent
6b32482b93
commit
6dfa53b048
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// 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:platform/platform.dart';
|
||||
@ -230,10 +230,13 @@ ReleasePhase getNextPhase(ReleasePhase currentPhase) {
|
||||
return nextPhase;
|
||||
}
|
||||
|
||||
// Indent two spaces.
|
||||
const JsonEncoder _encoder = JsonEncoder.withIndent(' ');
|
||||
|
||||
void writeStateToFile(File file, pb.ConductorState state, List<String> logs) {
|
||||
state.logs.addAll(logs);
|
||||
file.writeAsStringSync(
|
||||
jsonEncode(state.toProto3Json()),
|
||||
_encoder.convert(state.toProto3Json()),
|
||||
flush: true,
|
||||
);
|
||||
}
|
||||
|
68
dev/conductor/test/state_test.dart
Normal file
68
dev/conductor/test/state_test.dart
Normal file
@ -0,0 +1,68 @@
|
||||
// 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);
|
||||
});
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user