[flutter_tools] fix windows vscode lookup (#56491)

diff --git a/packages/flutter_tools/test/general.shard/vscode/vscode_test.dart b/packages/flutter_tools/test/general.shard/vscode/vscode_test.dart
new file mode 100644
index 0000000..25c0e5e
--- /dev/null
+++ b/packages/flutter_tools/test/general.shard/vscode/vscode_test.dart
@@ -0,0 +1,32 @@
+// 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:file/file.dart';
+import 'package:file/memory.dart';
+import 'package:flutter_tools/src/base/file_system.dart';
+import 'package:flutter_tools/src/base/logger.dart';
+import 'package:flutter_tools/src/base/version.dart';
+import 'package:flutter_tools/src/globals.dart' as globals;
+import 'package:flutter_tools/src/vscode/vscode.dart';
+
+import '../../src/common.dart';
+import '../../src/context.dart';
+
+void main() {
+  testUsingContext('VsCode.fromDirectory does not crash when packages.json is malformed', () {
+    final BufferLogger bufferLogger = globals.logger as BufferLogger;
+    // Create invalid JSON file.
+    globals.fs.file(globals.fs.path.join('', 'resources', 'app', 'package.json'))
+      ..createSync(recursive: true)
+      ..writeAsStringSync('{');
+
+    final VsCode vsCode = VsCode.fromDirectory('', '');
+
+    expect(vsCode.version, Version.unknown);
+    expect(bufferLogger.traceText, contains('Error parsing VSCode'));
+  }, overrides: <Type, Generator>{
+    FileSystem: () => MemoryFileSystem(),
+    ProcessManager: () => FakeProcessManager.any(),
+  });
+}