Skip to content

Commit

Permalink
Tiny fix about outdated message (#114391)
Browse files Browse the repository at this point in the history
  • Loading branch information
fzyzcjy committed Dec 16, 2022
1 parent a41c447 commit 86b62a3
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 4 deletions.
10 changes: 6 additions & 4 deletions packages/flutter_tools/lib/src/commands/screenshot.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:meta/meta.dart';
import 'package:vm_service/vm_service.dart' as vm_service;

import '../base/common.dart';
Expand Down Expand Up @@ -168,7 +169,7 @@ class ScreenshotCommand extends FlutterCommand {
sink.add(base64.decode(skp.json?['skp'] as String));
await sink.close();
_showOutputFileInfo(outputFile);
_ensureOutputIsNotJsonRpcError(outputFile);
ensureOutputIsNotJsonRpcError(outputFile);
return true;
}

Expand All @@ -192,7 +193,7 @@ class ScreenshotCommand extends FlutterCommand {
sink.add(base64.decode(response.json?['screenshot'] as String));
await sink.close();
_showOutputFileInfo(outputFile);
_ensureOutputIsNotJsonRpcError(outputFile);
ensureOutputIsNotJsonRpcError(outputFile);
return true;
}

Expand All @@ -205,15 +206,16 @@ class ScreenshotCommand extends FlutterCommand {
}
}

void _ensureOutputIsNotJsonRpcError(File outputFile) {
@visibleForTesting
static void ensureOutputIsNotJsonRpcError(File outputFile) {
if (outputFile.lengthSync() >= 1000) {
return;
}
final String content = outputFile.readAsStringSync(
encoding: const AsciiCodec(allowInvalid: true),
);
if (content.startsWith('{"jsonrpc":"2.0", "error"')) {
throwToolExit('It appears the output file contains an error message, not valid skia output.');
throwToolExit('It appears the output file contains an error message, not valid output.');
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,4 +106,24 @@ void main() {
message: 'File was not created, ensure path is valid'));
});
});

group('Screenshot output validation', () {
testWithoutContext('successful', () async {
final MemoryFileSystem fs = MemoryFileSystem.test();
fs.file('test.png').createSync();

expect(() => ScreenshotCommand.ensureOutputIsNotJsonRpcError(fs.file('test.png')),
returnsNormally);
});

testWithoutContext('failed', () async {
final MemoryFileSystem fs = MemoryFileSystem.test();
fs.file('test.png').writeAsStringSync('{"jsonrpc":"2.0", "error":"something"}');

expect(
() => ScreenshotCommand.ensureOutputIsNotJsonRpcError(fs.file('test.png')),
throwsToolExit(
message: 'It appears the output file contains an error message, not valid output.'));
});
});
}

0 comments on commit 86b62a3

Please sign in to comment.