[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
|
// 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) {
|
|||||||
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,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
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