From 7823389dc6ba7c3fb4bb4492ec2ee959e1791def Mon Sep 17 00:00:00 2001 From: Shi-Hao Hong Date: Thu, 26 Nov 2020 19:46:28 +0800 Subject: [PATCH 01/14] Update CI for nnbd branch (#249) --- .ci/Dockerfile | 5 +++-- .cirrus.yml | 26 ++++++++++++++------------ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/.ci/Dockerfile b/.ci/Dockerfile index a7b75d6c97f0..14a1b03a7885 100644 --- a/.ci/Dockerfile +++ b/.ci/Dockerfile @@ -1,5 +1,5 @@ -# Last updated 10/22/2020 (to rebuild the docker image, update this timestamp) -FROM cirrusci/flutter:stable-web +# Last updated 11/26/2020 (to rebuild the docker image, update this timestamp) +FROM cirrusci/flutter:dev RUN sudo apt-get update && \ sudo apt-get upgrade --yes && \ @@ -9,6 +9,7 @@ RUN sudo apt-get update && \ # This must occur after the install of gpg-agent RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && \ sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-5.0 main" && \ + sudo apt-add-repository "deb http://archive.ubuntu.com/ubuntu/ xenial main" && \ sudo apt-get update && \ sudo apt-get install --yes --allow-unauthenticated clang-format-5.0 && \ sudo apt-get clean --yes diff --git a/.cirrus.yml b/.cirrus.yml index 673bf9ba34e8..5a74c3855fc2 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -5,9 +5,9 @@ task: cpu: 4 memory: 8G upgrade_script: - - flutter channel master + - flutter channel dev - flutter upgrade - - git fetch origin master + - git fetch origin nnbd activate_script: pub global activate flutter_plugin_tools matrix: - name: analyze @@ -31,16 +31,18 @@ task: - ./script/incremental_build.sh java-test # must come after apk build depends_on: - analyze - - name: web_benchmarks_test - script: - - ./script/install_chromium.sh - - export CHROME_EXECUTABLE=$(pwd)/.chromium/chrome-linux/chrome - - flutter config --enable-web - - cd packages/web_benchmarks/testing/test_app - - flutter packages get - - cd ../.. - - flutter packages get - - dart testing/web_benchmarks_test.dart + # TODO(shihaohong): Skip because new builds do not contain Chromium: + # https://github.com/cirruslabs/docker-images-flutter/issues/66 + # - name: web_benchmarks_test + # script: + # - ./script/install_chromium.sh + # - export CHROME_EXECUTABLE=$(pwd)/.chromium/chrome-linux/chrome + # - flutter config --enable-web + # - cd packages/web_benchmarks/testing/test_app + # - flutter packages get + # - cd ../.. + # - flutter packages get + # - dart testing/web_benchmarks_test.dart task: use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true' From 7abc119e0e0417915939513337773e0e7286a2ec Mon Sep 17 00:00:00 2001 From: Yash Johri Date: Sun, 29 Nov 2020 01:56:01 +0530 Subject: [PATCH 02/14] [xdg_directories] Migrate to null safety --- packages/xdg_directories/CHANGELOG.md | 4 ++ .../xdg_directories/lib/xdg_directories.dart | 42 +++++++++---------- packages/xdg_directories/pubspec.yaml | 14 +++---- .../test/xdg_directories_test.dart | 42 +++++++++---------- 4 files changed, 53 insertions(+), 49 deletions(-) diff --git a/packages/xdg_directories/CHANGELOG.md b/packages/xdg_directories/CHANGELOG.md index 3ebfa401cefd..bda7c5a04b34 100644 --- a/packages/xdg_directories/CHANGELOG.md +++ b/packages/xdg_directories/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.0.0-nullsafety.0] - Migrated to null safety + +* Migrated to null safety. + ## [0.1.2] - Reduce dependencies on external libraries. * Broaden dependencies to allow nullsafety version of process, meta, and path to be OK. diff --git a/packages/xdg_directories/lib/xdg_directories.dart b/packages/xdg_directories/lib/xdg_directories.dart index ba4be8b4cd8f..c83f26ce2444 100644 --- a/packages/xdg_directories/lib/xdg_directories.dart +++ b/packages/xdg_directories/lib/xdg_directories.dart @@ -21,7 +21,7 @@ typedef EnvironmentAccessor = String Function(String envVar); /// /// Only available to tests. @visibleForTesting -set xdgEnvironmentOverride(EnvironmentAccessor override) { +set xdgEnvironmentOverride(EnvironmentAccessor? override) { _xdgEnvironmentOverride = override; _getenv = _xdgEnvironmentOverride ?? _productionGetEnv; } @@ -31,10 +31,10 @@ set xdgEnvironmentOverride(EnvironmentAccessor override) { /// /// Only available to tests. @visibleForTesting -EnvironmentAccessor get xdgEnvironmentOverride => _xdgEnvironmentOverride; -EnvironmentAccessor _xdgEnvironmentOverride; +EnvironmentAccessor? get xdgEnvironmentOverride => _xdgEnvironmentOverride; +EnvironmentAccessor? _xdgEnvironmentOverride; EnvironmentAccessor _productionGetEnv = - (String value) => Platform.environment[value]; + (String value) => Platform.environment[value]!; EnvironmentAccessor _getenv = _productionGetEnv; /// A testing function that replaces the process manager used to run xdg-user-path @@ -49,12 +49,12 @@ set xdgProcessManager(ProcessManager processManager) { ProcessManager _processManager = const LocalProcessManager(); List _directoryListFromEnvironment( - String envVar, List fallback) { + String? envVar, List? fallback) { assert(envVar != null); assert(fallback != null); - final String value = _getenv(envVar); + final String? value = _getenv(envVar!); if (value == null || value.isEmpty) { - return fallback; + return fallback!; } return value.split(':').where((String value) { return value.isNotEmpty; @@ -63,9 +63,9 @@ List _directoryListFromEnvironment( }).toList(); } -Directory _directoryFromEnvironment(String envVar, String fallback) { +Directory? _directoryFromEnvironment(String? envVar, String? fallback) { assert(envVar != null); - final String value = _getenv(envVar); + final String? value = _getenv(envVar!); if (value == null || value.isEmpty) { if (fallback == null) { return null; @@ -76,16 +76,16 @@ Directory _directoryFromEnvironment(String envVar, String fallback) { } // Creates a Directory from a fallback path. -Directory _getDirectory(String subdir) { +Directory _getDirectory(String? subdir) { assert(subdir != null); - assert(subdir.isNotEmpty); - final String homeDir = _getenv('HOME'); + assert(subdir!.isNotEmpty); + final String? homeDir = _getenv('HOME'); if (homeDir == null || homeDir.isEmpty) { throw StateError( 'The "HOME" environment variable is not set. This package (and POSIX) ' 'requires that HOME be set.'); } - return Directory(path.joinAll([homeDir, subdir])); + return Directory(path.joinAll([homeDir, subdir!])); } /// The base directory relative to which user-specific @@ -93,7 +93,7 @@ Directory _getDirectory(String subdir) { /// `$XDG_CACHE_HOME`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory get cacheHome => +Directory? get cacheHome => _directoryFromEnvironment('XDG_CACHE_HOME', '.cache'); /// The list of preference-ordered base directories relative to @@ -112,7 +112,7 @@ List get configDirs { /// configuration files should be written. (Corresponds to `$XDG_CONFIG_HOME`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory get configHome => +Directory? get configHome => _directoryFromEnvironment('XDG_CONFIG_HOME', '.config'); /// The list of preference-ordered base directories relative to @@ -130,7 +130,7 @@ List get dataDirs { /// written. (Corresponds to `$XDG_DATA_HOME`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory get dataHome => +Directory? get dataHome => _directoryFromEnvironment('XDG_DATA_HOME', '.local/share'); /// The base directory relative to which user-specific runtime @@ -138,7 +138,7 @@ Directory get dataHome => /// `$XDG_RUNTIME_DIR`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory get runtimeDir => _directoryFromEnvironment('XDG_RUNTIME_DIR', null); +Directory? get runtimeDir => _directoryFromEnvironment('XDG_RUNTIME_DIR', null); /// Gets the xdg user directory named by `dirName`. /// @@ -147,7 +147,7 @@ Directory getUserDirectory(String dirName) { final ProcessResult result = _processManager.runSync( ['xdg-user-dir', dirName], includeParentEnvironment: true, - stdoutEncoding: Encoding.getByName('utf8'), + stdoutEncoding: Encoding.getByName('utf8')!, ); final String path = utf8.decode(result.stdout).split('\n')[0]; return Directory(path); @@ -161,7 +161,7 @@ Directory getUserDirectory(String dirName) { /// These are the names of the variables in "[configHome]/user-dirs.dirs", with /// the `XDG_` prefix removed and the `_DIR` suffix removed. Set getUserDirectoryNames() { - final File configFile = File(path.join(configHome.path, 'user-dirs.dirs')); + final File configFile = File(path.join(configHome!.path, 'user-dirs.dirs')); List contents; try { contents = configFile.readAsLinesSync(); @@ -172,11 +172,11 @@ Set getUserDirectoryNames() { final RegExp dirRegExp = RegExp(r'^\s*XDG_(?[^=]*)_DIR\s*=\s*(?.*)\s*$'); for (String line in contents) { - final RegExpMatch match = dirRegExp.firstMatch(line); + final RegExpMatch? match = dirRegExp.firstMatch(line); if (match == null) { continue; } - result.add(match.namedGroup('dirname')); + result.add(match.namedGroup('dirname')!); } return result; } diff --git a/packages/xdg_directories/pubspec.yaml b/packages/xdg_directories/pubspec.yaml index 92e743762385..918437dd1072 100644 --- a/packages/xdg_directories/pubspec.yaml +++ b/packages/xdg_directories/pubspec.yaml @@ -1,16 +1,16 @@ name: xdg_directories description: A Dart package for reading XDG directory configuration information on Linux. -version: 0.1.2 +version: 1.0.0-nullsafety.0 homepage: https://github.com/flutter/packages/tree/master/packages/xdg_directories environment: - sdk: ">=2.3.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" dependencies: - meta: ">=1.2.2 <2.0.0" - path: ">=1.6.4 <2.0.0" - process: ">=3.0.12 <5.0.0" + meta: ^1.3.0-nullsafety.6 + path: ^1.8.0-nullsafety.3 + process: ^4.0.0-nullsafety.4 dev_dependencies: - mockito: ^4.1.1 - test: ^1.15.3 + mockito: ^4.1.3 + test: ^1.16.0-nullsafety.12 diff --git a/packages/xdg_directories/test/xdg_directories_test.dart b/packages/xdg_directories/test/xdg_directories_test.dart index 9e1eca2b3c04..7fbe875a0711 100644 --- a/packages/xdg_directories/test/xdg_directories_test.dart +++ b/packages/xdg_directories/test/xdg_directories_test.dart @@ -14,14 +14,14 @@ import 'package:xdg_directories/xdg_directories.dart' as xdg; void main() { final Map fakeEnv = {}; - Directory tmpDir; + Directory? tmpDir; - String testPath(String subdir) => path.join(tmpDir.path, subdir); + String testPath(String subdir) => path.join(tmpDir!.path, subdir); setUp(() { tmpDir = Directory.systemTemp.createTempSync('xdg_test'); fakeEnv.clear(); - fakeEnv['HOME'] = tmpDir.path; + fakeEnv['HOME'] = tmpDir!.path; fakeEnv['XDG_CACHE_HOME'] = testPath('.test_cache'); fakeEnv['XDG_CONFIG_DIRS'] = testPath('etc/test_xdg'); fakeEnv['XDG_CONFIG_HOME'] = testPath('.test_config'); @@ -29,11 +29,11 @@ void main() { '${testPath('usr/local/test_share')}:${testPath('usr/test_share')}'; fakeEnv['XDG_DATA_HOME'] = testPath('.local/test_share'); fakeEnv['XDG_RUNTIME_DIR'] = testPath('.local/test_runtime'); - Directory(fakeEnv['XDG_CONFIG_HOME']).createSync(recursive: true); - Directory(fakeEnv['XDG_CACHE_HOME']).createSync(recursive: true); - Directory(fakeEnv['XDG_DATA_HOME']).createSync(recursive: true); - Directory(fakeEnv['XDG_RUNTIME_DIR']).createSync(recursive: true); - File(path.join(fakeEnv['XDG_CONFIG_HOME'], 'user-dirs.dirs')) + Directory(fakeEnv['XDG_CONFIG_HOME']!).createSync(recursive: true); + Directory(fakeEnv['XDG_CACHE_HOME']!).createSync(recursive: true); + Directory(fakeEnv['XDG_DATA_HOME']!).createSync(recursive: true); + Directory(fakeEnv['XDG_RUNTIME_DIR']!).createSync(recursive: true); + File(path.join(fakeEnv['XDG_CONFIG_HOME']!, 'user-dirs.dirs')) .writeAsStringSync(r''' XDG_DESKTOP_DIR="$HOME/Desktop" XDG_DOCUMENTS_DIR="$HOME/Documents" @@ -44,12 +44,12 @@ XDG_PUBLICSHARE_DIR="$HOME/Public" XDG_TEMPLATES_DIR="$HOME/Templates" XDG_VIDEOS_DIR="$HOME/Videos" '''); - xdg.xdgEnvironmentOverride = (String key) => fakeEnv[key]; + xdg.xdgEnvironmentOverride = (String key) => fakeEnv[key]!; }); tearDown(() { if (tmpDir != null) { - tmpDir.deleteSync(recursive: true); + tmpDir!.deleteSync(recursive: true); } // Stop overriding the environment accessor. xdg.xdgEnvironmentOverride = null; @@ -62,10 +62,10 @@ XDG_VIDEOS_DIR="$HOME/Videos" test('Default fallback values work', () { fakeEnv.clear(); - fakeEnv['HOME'] = tmpDir.path; - expect(xdg.cacheHome.path, equals(testPath('.cache'))); - expect(xdg.configHome.path, equals(testPath('.config'))); - expect(xdg.dataHome.path, equals(testPath('.local/share'))); + fakeEnv['HOME'] = tmpDir!.path; + expect(xdg.cacheHome!.path, equals(testPath('.cache'))); + expect(xdg.configHome!.path, equals(testPath('.config'))); + expect(xdg.dataHome!.path, equals(testPath('.local/share'))); expect(xdg.runtimeDir, isNull); expectDirList(xdg.configDirs, ['/etc/xdg']); @@ -73,10 +73,10 @@ XDG_VIDEOS_DIR="$HOME/Videos" }); test('Values pull from environment', () { - expect(xdg.cacheHome.path, equals(testPath('.test_cache'))); - expect(xdg.configHome.path, equals(testPath('.test_config'))); - expect(xdg.dataHome.path, equals(testPath('.local/test_share'))); - expect(xdg.runtimeDir.path, equals(testPath('.local/test_runtime'))); + expect(xdg.cacheHome!.path, equals(testPath('.test_cache'))); + expect(xdg.configHome!.path, equals(testPath('.test_config'))); + expect(xdg.dataHome!.path, equals(testPath('.local/test_share'))); + expect(xdg.runtimeDir!.path, equals(testPath('.local/test_runtime'))); expectDirList(xdg.configDirs, [testPath('etc/test_xdg')]); expectDirList(xdg.dataDirs, [ @@ -122,13 +122,13 @@ class FakeProcessManager extends Fake implements ProcessManager { @override ProcessResult runSync( List command, { - String workingDirectory, - Map environment, + String? workingDirectory, + Map? environment, bool includeParentEnvironment = true, bool runInShell = false, Encoding stdoutEncoding = systemEncoding, Encoding stderrEncoding = systemEncoding, }) { - return ProcessResult(0, 0, expected[command[1]].codeUnits, []); + return ProcessResult(0, 0, expected[command[1]]!.codeUnits, []); } } From e9e7977aa47c33249dfbce656ccc9855b79a6897 Mon Sep 17 00:00:00 2001 From: Yash Johri Date: Tue, 29 Dec 2020 22:01:39 +0530 Subject: [PATCH 03/14] Mockito to nnbd --- packages/xdg_directories/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xdg_directories/pubspec.yaml b/packages/xdg_directories/pubspec.yaml index 918437dd1072..a0969ca0d24d 100644 --- a/packages/xdg_directories/pubspec.yaml +++ b/packages/xdg_directories/pubspec.yaml @@ -12,5 +12,5 @@ dependencies: process: ^4.0.0-nullsafety.4 dev_dependencies: - mockito: ^4.1.3 + mockito: ^5.0.0-nullsafety.0 test: ^1.16.0-nullsafety.12 From c734d9152f3c7616405c4535eebb4fe0772a2069 Mon Sep 17 00:00:00 2001 From: Yash Johri Date: Wed, 30 Dec 2020 00:02:57 +0530 Subject: [PATCH 04/14] Tests fixed --- packages/xdg_directories/lib/xdg_directories.dart | 8 ++++---- packages/xdg_directories/pubspec.yaml | 2 +- packages/xdg_directories/test/xdg_directories_test.dart | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/xdg_directories/lib/xdg_directories.dart b/packages/xdg_directories/lib/xdg_directories.dart index c83f26ce2444..3fd3b2f4b6d8 100644 --- a/packages/xdg_directories/lib/xdg_directories.dart +++ b/packages/xdg_directories/lib/xdg_directories.dart @@ -13,7 +13,7 @@ import 'package:process/process.dart'; /// An override function used by the tests to override the environment variable /// lookups using [xdgEnvironmentOverride]. -typedef EnvironmentAccessor = String Function(String envVar); +typedef EnvironmentAccessor = String? Function(String? envVar); /// A testing setter that replaces the real environment lookups with an override. /// @@ -34,7 +34,7 @@ set xdgEnvironmentOverride(EnvironmentAccessor? override) { EnvironmentAccessor? get xdgEnvironmentOverride => _xdgEnvironmentOverride; EnvironmentAccessor? _xdgEnvironmentOverride; EnvironmentAccessor _productionGetEnv = - (String value) => Platform.environment[value]!; + (String? value) => Platform.environment[value]!; EnvironmentAccessor _getenv = _productionGetEnv; /// A testing function that replaces the process manager used to run xdg-user-path @@ -65,7 +65,7 @@ List _directoryListFromEnvironment( Directory? _directoryFromEnvironment(String? envVar, String? fallback) { assert(envVar != null); - final String? value = _getenv(envVar!); + final String? value = _getenv(envVar); if (value == null || value.isEmpty) { if (fallback == null) { return null; @@ -147,7 +147,7 @@ Directory getUserDirectory(String dirName) { final ProcessResult result = _processManager.runSync( ['xdg-user-dir', dirName], includeParentEnvironment: true, - stdoutEncoding: Encoding.getByName('utf8')!, + stdoutEncoding: Encoding.getByName('utf8') ?? systemEncoding, ); final String path = utf8.decode(result.stdout).split('\n')[0]; return Directory(path); diff --git a/packages/xdg_directories/pubspec.yaml b/packages/xdg_directories/pubspec.yaml index a0969ca0d24d..2cb58bb62f40 100644 --- a/packages/xdg_directories/pubspec.yaml +++ b/packages/xdg_directories/pubspec.yaml @@ -13,4 +13,4 @@ dependencies: dev_dependencies: mockito: ^5.0.0-nullsafety.0 - test: ^1.16.0-nullsafety.12 + test: ^1.16.0-nullsafety.13 diff --git a/packages/xdg_directories/test/xdg_directories_test.dart b/packages/xdg_directories/test/xdg_directories_test.dart index 7fbe875a0711..1f5cc8181587 100644 --- a/packages/xdg_directories/test/xdg_directories_test.dart +++ b/packages/xdg_directories/test/xdg_directories_test.dart @@ -44,7 +44,7 @@ XDG_PUBLICSHARE_DIR="$HOME/Public" XDG_TEMPLATES_DIR="$HOME/Templates" XDG_VIDEOS_DIR="$HOME/Videos" '''); - xdg.xdgEnvironmentOverride = (String key) => fakeEnv[key]!; + xdg.xdgEnvironmentOverride = (String? key) => fakeEnv[key]; }); tearDown(() { From b7d28d21a05840ba09f7ac92172faa378e8104de Mon Sep 17 00:00:00 2001 From: Yash Johri Date: Thu, 7 Jan 2021 00:00:23 +0530 Subject: [PATCH 05/14] Null safety changes --- .../xdg_directories/lib/xdg_directories.dart | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/xdg_directories/lib/xdg_directories.dart b/packages/xdg_directories/lib/xdg_directories.dart index 3fd3b2f4b6d8..e5d6eefb6f24 100644 --- a/packages/xdg_directories/lib/xdg_directories.dart +++ b/packages/xdg_directories/lib/xdg_directories.dart @@ -13,7 +13,7 @@ import 'package:process/process.dart'; /// An override function used by the tests to override the environment variable /// lookups using [xdgEnvironmentOverride]. -typedef EnvironmentAccessor = String? Function(String? envVar); +typedef EnvironmentAccessor = String? Function(String envVar); /// A testing setter that replaces the real environment lookups with an override. /// @@ -49,12 +49,12 @@ set xdgProcessManager(ProcessManager processManager) { ProcessManager _processManager = const LocalProcessManager(); List _directoryListFromEnvironment( - String? envVar, List? fallback) { - assert(envVar != null); - assert(fallback != null); - final String? value = _getenv(envVar!); + String envVar, List fallback) { + ArgumentError.checkNotNull(envVar); + ArgumentError.checkNotNull(fallback); + final String? value = _getenv(envVar); if (value == null || value.isEmpty) { - return fallback!; + return fallback; } return value.split(':').where((String value) { return value.isNotEmpty; @@ -63,8 +63,8 @@ List _directoryListFromEnvironment( }).toList(); } -Directory? _directoryFromEnvironment(String? envVar, String? fallback) { - assert(envVar != null); +Directory? _directoryFromEnvironment(String envVar, String? fallback) { + ArgumentError.checkNotNull(envVar); final String? value = _getenv(envVar); if (value == null || value.isEmpty) { if (fallback == null) { @@ -76,16 +76,16 @@ Directory? _directoryFromEnvironment(String? envVar, String? fallback) { } // Creates a Directory from a fallback path. -Directory _getDirectory(String? subdir) { - assert(subdir != null); - assert(subdir!.isNotEmpty); +Directory _getDirectory(String subdir) { + ArgumentError.checkNotNull(subdir); + assert(subdir.isNotEmpty); final String? homeDir = _getenv('HOME'); if (homeDir == null || homeDir.isEmpty) { throw StateError( 'The "HOME" environment variable is not set. This package (and POSIX) ' 'requires that HOME be set.'); } - return Directory(path.joinAll([homeDir, subdir!])); + return Directory(path.joinAll([homeDir, subdir])); } /// The base directory relative to which user-specific From 35ced39aeb5de99a207e3d7eb5415ee5913c4e97 Mon Sep 17 00:00:00 2001 From: Yash Johri Date: Thu, 7 Jan 2021 00:01:41 +0530 Subject: [PATCH 06/14] Null safety changes --- packages/xdg_directories/lib/xdg_directories.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xdg_directories/lib/xdg_directories.dart b/packages/xdg_directories/lib/xdg_directories.dart index e5d6eefb6f24..e09177516e42 100644 --- a/packages/xdg_directories/lib/xdg_directories.dart +++ b/packages/xdg_directories/lib/xdg_directories.dart @@ -34,7 +34,7 @@ set xdgEnvironmentOverride(EnvironmentAccessor? override) { EnvironmentAccessor? get xdgEnvironmentOverride => _xdgEnvironmentOverride; EnvironmentAccessor? _xdgEnvironmentOverride; EnvironmentAccessor _productionGetEnv = - (String? value) => Platform.environment[value]!; + (String value) => Platform.environment[value]; EnvironmentAccessor _getenv = _productionGetEnv; /// A testing function that replaces the process manager used to run xdg-user-path From dc06918dfa5b66cd194ba756179047be2ff1aea2 Mon Sep 17 00:00:00 2001 From: Yash Johri Date: Thu, 7 Jan 2021 00:06:11 +0530 Subject: [PATCH 07/14] Updated dependency --- packages/xdg_directories/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xdg_directories/pubspec.yaml b/packages/xdg_directories/pubspec.yaml index 2cb58bb62f40..89f798d007f7 100644 --- a/packages/xdg_directories/pubspec.yaml +++ b/packages/xdg_directories/pubspec.yaml @@ -12,5 +12,5 @@ dependencies: process: ^4.0.0-nullsafety.4 dev_dependencies: - mockito: ^5.0.0-nullsafety.0 + mockito: ^5.0.0-nullsafety.1 test: ^1.16.0-nullsafety.13 From a1be179b35f7d53e2216c37a39b9130948f83e29 Mon Sep 17 00:00:00 2001 From: Yash Johri Date: Sun, 17 Jan 2021 11:21:00 +0530 Subject: [PATCH 08/14] Made required changes --- .../xdg_directories/lib/xdg_directories.dart | 23 +++++++++++++------ .../test/xdg_directories_test.dart | 14 +++++------ 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/packages/xdg_directories/lib/xdg_directories.dart b/packages/xdg_directories/lib/xdg_directories.dart index e09177516e42..6c25bbc4dd88 100644 --- a/packages/xdg_directories/lib/xdg_directories.dart +++ b/packages/xdg_directories/lib/xdg_directories.dart @@ -75,6 +75,15 @@ Directory? _directoryFromEnvironment(String envVar, String? fallback) { return Directory(value); } +Directory _directoryFromEnv(String envVar, String fallback) { + ArgumentError.checkNotNull(envVar); + final String? value = _getenv(envVar); + if (value == null || value.isEmpty) { + return _getDirectory(fallback); + } + return Directory(value); +} + // Creates a Directory from a fallback path. Directory _getDirectory(String subdir) { ArgumentError.checkNotNull(subdir); @@ -93,8 +102,8 @@ Directory _getDirectory(String subdir) { /// `$XDG_CACHE_HOME`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory? get cacheHome => - _directoryFromEnvironment('XDG_CACHE_HOME', '.cache'); +Directory get cacheHome => + _directoryFromEnv('XDG_CACHE_HOME', '.cache'); /// The list of preference-ordered base directories relative to /// which configuration files should be searched. (Corresponds to @@ -112,8 +121,8 @@ List get configDirs { /// configuration files should be written. (Corresponds to `$XDG_CONFIG_HOME`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory? get configHome => - _directoryFromEnvironment('XDG_CONFIG_HOME', '.config'); +Directory get configHome => + _directoryFromEnv('XDG_CONFIG_HOME', '.config'); /// The list of preference-ordered base directories relative to /// which data files should be searched. (Corresponds to `$XDG_DATA_DIRS`). @@ -130,8 +139,8 @@ List get dataDirs { /// written. (Corresponds to `$XDG_DATA_HOME`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory? get dataHome => - _directoryFromEnvironment('XDG_DATA_HOME', '.local/share'); +Directory get dataHome => + _directoryFromEnv('XDG_DATA_HOME', '.local/share'); /// The base directory relative to which user-specific runtime /// files and other file objects should be placed. (Corresponds to @@ -161,7 +170,7 @@ Directory getUserDirectory(String dirName) { /// These are the names of the variables in "[configHome]/user-dirs.dirs", with /// the `XDG_` prefix removed and the `_DIR` suffix removed. Set getUserDirectoryNames() { - final File configFile = File(path.join(configHome!.path, 'user-dirs.dirs')); + final File configFile = File(path.join(configHome.path, 'user-dirs.dirs')); List contents; try { contents = configFile.readAsLinesSync(); diff --git a/packages/xdg_directories/test/xdg_directories_test.dart b/packages/xdg_directories/test/xdg_directories_test.dart index 1f5cc8181587..d730acb2236a 100644 --- a/packages/xdg_directories/test/xdg_directories_test.dart +++ b/packages/xdg_directories/test/xdg_directories_test.dart @@ -44,7 +44,7 @@ XDG_PUBLICSHARE_DIR="$HOME/Public" XDG_TEMPLATES_DIR="$HOME/Templates" XDG_VIDEOS_DIR="$HOME/Videos" '''); - xdg.xdgEnvironmentOverride = (String? key) => fakeEnv[key]; + xdg.xdgEnvironmentOverride = (String key) => fakeEnv[key]; }); tearDown(() { @@ -63,9 +63,9 @@ XDG_VIDEOS_DIR="$HOME/Videos" test('Default fallback values work', () { fakeEnv.clear(); fakeEnv['HOME'] = tmpDir!.path; - expect(xdg.cacheHome!.path, equals(testPath('.cache'))); - expect(xdg.configHome!.path, equals(testPath('.config'))); - expect(xdg.dataHome!.path, equals(testPath('.local/share'))); + expect(xdg.cacheHome.path, equals(testPath('.cache'))); + expect(xdg.configHome.path, equals(testPath('.config'))); + expect(xdg.dataHome.path, equals(testPath('.local/share'))); expect(xdg.runtimeDir, isNull); expectDirList(xdg.configDirs, ['/etc/xdg']); @@ -73,9 +73,9 @@ XDG_VIDEOS_DIR="$HOME/Videos" }); test('Values pull from environment', () { - expect(xdg.cacheHome!.path, equals(testPath('.test_cache'))); - expect(xdg.configHome!.path, equals(testPath('.test_config'))); - expect(xdg.dataHome!.path, equals(testPath('.local/test_share'))); + expect(xdg.cacheHome.path, equals(testPath('.test_cache'))); + expect(xdg.configHome.path, equals(testPath('.test_config'))); + expect(xdg.dataHome.path, equals(testPath('.local/test_share'))); expect(xdg.runtimeDir!.path, equals(testPath('.local/test_runtime'))); expectDirList(xdg.configDirs, [testPath('etc/test_xdg')]); From 0279a530ad178d0721fa7cdd99e79871d2118429 Mon Sep 17 00:00:00 2001 From: Yash Johri Date: Fri, 22 Jan 2021 20:44:17 +0530 Subject: [PATCH 09/14] tmpDir late changes --- packages/xdg_directories/lib/xdg_directories.dart | 9 +++------ .../xdg_directories/test/xdg_directories_test.dart | 12 +++++------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/packages/xdg_directories/lib/xdg_directories.dart b/packages/xdg_directories/lib/xdg_directories.dart index 6c25bbc4dd88..ad7c45c2418a 100644 --- a/packages/xdg_directories/lib/xdg_directories.dart +++ b/packages/xdg_directories/lib/xdg_directories.dart @@ -102,8 +102,7 @@ Directory _getDirectory(String subdir) { /// `$XDG_CACHE_HOME`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory get cacheHome => - _directoryFromEnv('XDG_CACHE_HOME', '.cache'); +Directory get cacheHome => _directoryFromEnv('XDG_CACHE_HOME', '.cache'); /// The list of preference-ordered base directories relative to /// which configuration files should be searched. (Corresponds to @@ -121,8 +120,7 @@ List get configDirs { /// configuration files should be written. (Corresponds to `$XDG_CONFIG_HOME`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory get configHome => - _directoryFromEnv('XDG_CONFIG_HOME', '.config'); +Directory get configHome => _directoryFromEnv('XDG_CONFIG_HOME', '.config'); /// The list of preference-ordered base directories relative to /// which data files should be searched. (Corresponds to `$XDG_DATA_DIRS`). @@ -139,8 +137,7 @@ List get dataDirs { /// written. (Corresponds to `$XDG_DATA_HOME`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory get dataHome => - _directoryFromEnv('XDG_DATA_HOME', '.local/share'); +Directory get dataHome => _directoryFromEnv('XDG_DATA_HOME', '.local/share'); /// The base directory relative to which user-specific runtime /// files and other file objects should be placed. (Corresponds to diff --git a/packages/xdg_directories/test/xdg_directories_test.dart b/packages/xdg_directories/test/xdg_directories_test.dart index d730acb2236a..41018a7b8f13 100644 --- a/packages/xdg_directories/test/xdg_directories_test.dart +++ b/packages/xdg_directories/test/xdg_directories_test.dart @@ -14,14 +14,14 @@ import 'package:xdg_directories/xdg_directories.dart' as xdg; void main() { final Map fakeEnv = {}; - Directory? tmpDir; + late Directory tmpDir; - String testPath(String subdir) => path.join(tmpDir!.path, subdir); + String testPath(String subdir) => path.join(tmpDir.path, subdir); setUp(() { tmpDir = Directory.systemTemp.createTempSync('xdg_test'); fakeEnv.clear(); - fakeEnv['HOME'] = tmpDir!.path; + fakeEnv['HOME'] = tmpDir.path; fakeEnv['XDG_CACHE_HOME'] = testPath('.test_cache'); fakeEnv['XDG_CONFIG_DIRS'] = testPath('etc/test_xdg'); fakeEnv['XDG_CONFIG_HOME'] = testPath('.test_config'); @@ -48,9 +48,7 @@ XDG_VIDEOS_DIR="$HOME/Videos" }); tearDown(() { - if (tmpDir != null) { - tmpDir!.deleteSync(recursive: true); - } + tmpDir.deleteSync(recursive: true); // Stop overriding the environment accessor. xdg.xdgEnvironmentOverride = null; }); @@ -62,7 +60,7 @@ XDG_VIDEOS_DIR="$HOME/Videos" test('Default fallback values work', () { fakeEnv.clear(); - fakeEnv['HOME'] = tmpDir!.path; + fakeEnv['HOME'] = tmpDir.path; expect(xdg.cacheHome.path, equals(testPath('.cache'))); expect(xdg.configHome.path, equals(testPath('.config'))); expect(xdg.dataHome.path, equals(testPath('.local/share'))); From bb2b72348d09ffba6c8f851265d4805e802a0763 Mon Sep 17 00:00:00 2001 From: Yash Johri Date: Fri, 22 Jan 2021 20:46:17 +0530 Subject: [PATCH 10/14] version changes --- packages/xdg_directories/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xdg_directories/pubspec.yaml b/packages/xdg_directories/pubspec.yaml index 89f798d007f7..dcc30ac11c7b 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: 1.0.0-nullsafety.0 +version: 0.2.0-nullsafety homepage: https://github.com/flutter/packages/tree/master/packages/xdg_directories environment: From c1b4be7685c160a52bc7a15525657ce750e6130c Mon Sep 17 00:00:00 2001 From: Yash Johri Date: Fri, 22 Jan 2021 21:26:10 +0530 Subject: [PATCH 11/14] version changes --- packages/xdg_directories/CHANGELOG.md | 2 +- packages/xdg_directories/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/xdg_directories/CHANGELOG.md b/packages/xdg_directories/CHANGELOG.md index bda7c5a04b34..2e5b7932eecf 100644 --- a/packages/xdg_directories/CHANGELOG.md +++ b/packages/xdg_directories/CHANGELOG.md @@ -1,4 +1,4 @@ -## [1.0.0-nullsafety.0] - Migrated to null safety +## [0.2.0-nullsafety.0] - Migrated to null safety * Migrated to null safety. diff --git a/packages/xdg_directories/pubspec.yaml b/packages/xdg_directories/pubspec.yaml index dcc30ac11c7b..639c81ca375f 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 +version: 0.2.0-nullsafety.0 homepage: https://github.com/flutter/packages/tree/master/packages/xdg_directories environment: From a0277dfce4011c9b47b1250e5010618cddeaac03 Mon Sep 17 00:00:00 2001 From: Yash Johri Date: Fri, 22 Jan 2021 22:23:29 +0530 Subject: [PATCH 12/14] Function name changes --- packages/xdg_directories/lib/xdg_directories.dart | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/xdg_directories/lib/xdg_directories.dart b/packages/xdg_directories/lib/xdg_directories.dart index ad7c45c2418a..ddf035049fb2 100644 --- a/packages/xdg_directories/lib/xdg_directories.dart +++ b/packages/xdg_directories/lib/xdg_directories.dart @@ -63,14 +63,11 @@ List _directoryListFromEnvironment( }).toList(); } -Directory? _directoryFromEnvironment(String envVar, String? fallback) { +Directory? _directoryFromEnvWithFallback(String envVar) { ArgumentError.checkNotNull(envVar); final String? value = _getenv(envVar); if (value == null || value.isEmpty) { - if (fallback == null) { - return null; - } - return _getDirectory(fallback); + return null; } return Directory(value); } @@ -144,7 +141,7 @@ Directory get dataHome => _directoryFromEnv('XDG_DATA_HOME', '.local/share'); /// `$XDG_RUNTIME_DIR`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory? get runtimeDir => _directoryFromEnvironment('XDG_RUNTIME_DIR', null); +Directory? get runtimeDir => _directoryFromEnvWithFallback('XDG_RUNTIME_DIR'); /// Gets the xdg user directory named by `dirName`. /// From 4e4f35d2a050dacd3d7ddacdeee7c25dfea94868 Mon Sep 17 00:00:00 2001 From: Yash Johri Date: Fri, 22 Jan 2021 22:25:08 +0530 Subject: [PATCH 13/14] Function name changes --- packages/xdg_directories/lib/xdg_directories.dart | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/xdg_directories/lib/xdg_directories.dart b/packages/xdg_directories/lib/xdg_directories.dart index ddf035049fb2..4afd2f858c8b 100644 --- a/packages/xdg_directories/lib/xdg_directories.dart +++ b/packages/xdg_directories/lib/xdg_directories.dart @@ -63,7 +63,7 @@ List _directoryListFromEnvironment( }).toList(); } -Directory? _directoryFromEnvWithFallback(String envVar) { +Directory? _directoryFromEnv(String envVar) { ArgumentError.checkNotNull(envVar); final String? value = _getenv(envVar); if (value == null || value.isEmpty) { @@ -72,7 +72,7 @@ Directory? _directoryFromEnvWithFallback(String envVar) { return Directory(value); } -Directory _directoryFromEnv(String envVar, String fallback) { +Directory _directoryFromEnvWithFallback(String envVar, String fallback) { ArgumentError.checkNotNull(envVar); final String? value = _getenv(envVar); if (value == null || value.isEmpty) { @@ -99,7 +99,8 @@ Directory _getDirectory(String subdir) { /// `$XDG_CACHE_HOME`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory get cacheHome => _directoryFromEnv('XDG_CACHE_HOME', '.cache'); +Directory get cacheHome => + _directoryFromEnvWithFallback('XDG_CACHE_HOME', '.cache'); /// The list of preference-ordered base directories relative to /// which configuration files should be searched. (Corresponds to @@ -117,7 +118,8 @@ List get configDirs { /// configuration files should be written. (Corresponds to `$XDG_CONFIG_HOME`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory get configHome => _directoryFromEnv('XDG_CONFIG_HOME', '.config'); +Directory get configHome => + _directoryFromEnvWithFallback('XDG_CONFIG_HOME', '.config'); /// The list of preference-ordered base directories relative to /// which data files should be searched. (Corresponds to `$XDG_DATA_DIRS`). @@ -134,14 +136,15 @@ List get dataDirs { /// written. (Corresponds to `$XDG_DATA_HOME`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory get dataHome => _directoryFromEnv('XDG_DATA_HOME', '.local/share'); +Directory get dataHome => + _directoryFromEnvWithFallback('XDG_DATA_HOME', '.local/share'); /// The base directory relative to which user-specific runtime /// files and other file objects should be placed. (Corresponds to /// `$XDG_RUNTIME_DIR`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory? get runtimeDir => _directoryFromEnvWithFallback('XDG_RUNTIME_DIR'); +Directory? get runtimeDir => _directoryFromEnv('XDG_RUNTIME_DIR'); /// Gets the xdg user directory named by `dirName`. /// From eee3ac861004664a48f5d3aea7cfa7c7a3abb7cf Mon Sep 17 00:00:00 2001 From: Yash Johri Date: Fri, 22 Jan 2021 22:36:32 +0530 Subject: [PATCH 14/14] Function name changes --- packages/xdg_directories/lib/xdg_directories.dart | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/xdg_directories/lib/xdg_directories.dart b/packages/xdg_directories/lib/xdg_directories.dart index 4afd2f858c8b..787fb640d4e0 100644 --- a/packages/xdg_directories/lib/xdg_directories.dart +++ b/packages/xdg_directories/lib/xdg_directories.dart @@ -63,7 +63,7 @@ List _directoryListFromEnvironment( }).toList(); } -Directory? _directoryFromEnv(String envVar) { +Directory? _directoryFromEnvironment(String envVar) { ArgumentError.checkNotNull(envVar); final String? value = _getenv(envVar); if (value == null || value.isEmpty) { @@ -72,7 +72,8 @@ Directory? _directoryFromEnv(String envVar) { return Directory(value); } -Directory _directoryFromEnvWithFallback(String envVar, String fallback) { +Directory _directoryFromEnvironmentWithFallback( + String envVar, String fallback) { ArgumentError.checkNotNull(envVar); final String? value = _getenv(envVar); if (value == null || value.isEmpty) { @@ -100,7 +101,7 @@ Directory _getDirectory(String subdir) { /// /// Throws [StateError] if the HOME environment variable is not set. Directory get cacheHome => - _directoryFromEnvWithFallback('XDG_CACHE_HOME', '.cache'); + _directoryFromEnvironmentWithFallback('XDG_CACHE_HOME', '.cache'); /// The list of preference-ordered base directories relative to /// which configuration files should be searched. (Corresponds to @@ -119,7 +120,7 @@ List get configDirs { /// /// Throws [StateError] if the HOME environment variable is not set. Directory get configHome => - _directoryFromEnvWithFallback('XDG_CONFIG_HOME', '.config'); + _directoryFromEnvironmentWithFallback('XDG_CONFIG_HOME', '.config'); /// The list of preference-ordered base directories relative to /// which data files should be searched. (Corresponds to `$XDG_DATA_DIRS`). @@ -137,14 +138,14 @@ List get dataDirs { /// /// Throws [StateError] if the HOME environment variable is not set. Directory get dataHome => - _directoryFromEnvWithFallback('XDG_DATA_HOME', '.local/share'); + _directoryFromEnvironmentWithFallback('XDG_DATA_HOME', '.local/share'); /// The base directory relative to which user-specific runtime /// files and other file objects should be placed. (Corresponds to /// `$XDG_RUNTIME_DIR`). /// /// Throws [StateError] if the HOME environment variable is not set. -Directory? get runtimeDir => _directoryFromEnv('XDG_RUNTIME_DIR'); +Directory? get runtimeDir => _directoryFromEnvironment('XDG_RUNTIME_DIR'); /// Gets the xdg user directory named by `dirName`. ///