From 63681338092c0fe8de800d8e6650e2a22a0a747d Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Wed, 3 Feb 2021 12:37:34 -0500 Subject: [PATCH] [xdg_directories] Fix stdout encoding handling The stdoutEncoding was originally specified as a by-name lookup of "utf8"; this was actually equivalent to 'null', since that's not the correct name. During the null safety migration, a fallback to systemEncoding was added, causing it to always have an encoding. This changed the type of result.stdout, so all calls gave a type error. This fixes the issue by using 'utf8', the singleton encoder object, rather than doing a name lookup, so the type will predicably be a string, and adjusting the code reading it to expect a string. --- packages/xdg_directories/CHANGELOG.md | 5 +++++ packages/xdg_directories/lib/xdg_directories.dart | 4 ++-- packages/xdg_directories/pubspec.yaml | 2 +- packages/xdg_directories/test/xdg_directories_test.dart | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/xdg_directories/CHANGELOG.md b/packages/xdg_directories/CHANGELOG.md index 2e5b7932eecf..ce6349a9165f 100644 --- a/packages/xdg_directories/CHANGELOG.md +++ b/packages/xdg_directories/CHANGELOG.md @@ -1,3 +1,8 @@ +## [0.2.0-nullsafety.1] - Fix getUserDirectory + +* Fixes a regression due to the stdoutEncoding change + in the null-safety migration. + ## [0.2.0-nullsafety.0] - Migrated to null safety * Migrated to null safety. diff --git a/packages/xdg_directories/lib/xdg_directories.dart b/packages/xdg_directories/lib/xdg_directories.dart index 8ec7434f82c6..f5e7e66cfdaf 100644 --- a/packages/xdg_directories/lib/xdg_directories.dart +++ b/packages/xdg_directories/lib/xdg_directories.dart @@ -154,9 +154,9 @@ Directory? getUserDirectory(String dirName) { final ProcessResult result = _processManager.runSync( ['xdg-user-dir', dirName], includeParentEnvironment: true, - stdoutEncoding: Encoding.getByName('utf8') ?? systemEncoding, + stdoutEncoding: utf8, ); - final String path = utf8.decode(result.stdout).split('\n')[0]; + final String path = result.stdout.split('\n')[0]; return Directory(path); } diff --git a/packages/xdg_directories/pubspec.yaml b/packages/xdg_directories/pubspec.yaml index 639c81ca375f..95054e3a1c1b 100644 --- a/packages/xdg_directories/pubspec.yaml +++ b/packages/xdg_directories/pubspec.yaml @@ -1,6 +1,6 @@ name: xdg_directories description: A Dart package for reading XDG directory configuration information on Linux. -version: 0.2.0-nullsafety.0 +version: 0.2.0-nullsafety.1 homepage: https://github.com/flutter/packages/tree/master/packages/xdg_directories environment: diff --git a/packages/xdg_directories/test/xdg_directories_test.dart b/packages/xdg_directories/test/xdg_directories_test.dart index d396ca7fbf7b..255a69eef76d 100644 --- a/packages/xdg_directories/test/xdg_directories_test.dart +++ b/packages/xdg_directories/test/xdg_directories_test.dart @@ -128,6 +128,6 @@ class FakeProcessManager extends Fake implements ProcessManager { Encoding stdoutEncoding = systemEncoding, Encoding stderrEncoding = systemEncoding, }) { - return ProcessResult(0, 0, expected[command[1]]!.codeUnits, []); + return ProcessResult(0, 0, expected[command[1]]!, ''); } }