From e58e8303f2b48c056a171bd862bb47807e1606d9 Mon Sep 17 00:00:00 2001 From: Juanjo Tugores Date: Fri, 22 Jan 2021 15:55:32 -0600 Subject: [PATCH 1/8] Add logger --- .../file_selector/lib/file_selector.dart | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/file_selector/file_selector/lib/file_selector.dart b/packages/file_selector/file_selector/lib/file_selector.dart index cdb2bf9c726d..425bcc57942c 100644 --- a/packages/file_selector/file_selector/lib/file_selector.dart +++ b/packages/file_selector/file_selector/lib/file_selector.dart @@ -3,18 +3,20 @@ // found in the LICENSE file. import 'dart:async'; - +import 'package:logger/logger.dart'; import 'package:file_selector_platform_interface/file_selector_platform_interface.dart'; - export 'package:file_selector_platform_interface/file_selector_platform_interface.dart' show XFile, XTypeGroup; +final _logger = Logger(); + /// Open file dialog for loading files and return a file path Future openFile({ List acceptedTypeGroups = const [], String? initialDirectory, String? confirmButtonText, }) { + _verifyExtensions(acceptedTypeGroups); return FileSelectorPlatform.instance.openFile( acceptedTypeGroups: acceptedTypeGroups, initialDirectory: initialDirectory, @@ -27,6 +29,7 @@ Future> openFiles({ String? initialDirectory, String? confirmButtonText, }) { + _verifyExtensions(acceptedTypeGroups); return FileSelectorPlatform.instance.openFiles( acceptedTypeGroups: acceptedTypeGroups, initialDirectory: initialDirectory, @@ -40,6 +43,7 @@ Future getSavePath({ String? suggestedName, String? confirmButtonText, }) async { + _verifyExtensions(acceptedTypeGroups); return FileSelectorPlatform.instance.getSavePath( acceptedTypeGroups: acceptedTypeGroups, initialDirectory: initialDirectory, @@ -55,3 +59,16 @@ Future getDirectoryPath({ return FileSelectorPlatform.instance.getDirectoryPath( initialDirectory: initialDirectory, confirmButtonText: confirmButtonText); } + +void _verifyExtensions(List acceptedTypeGroups) { + acceptedTypeGroups?.asMap()?.forEach((i, acceptedTypeGroup) { + acceptedTypeGroup.extensions?.asMap()?.forEach((j, ext) { + if (ext.startsWith('.')) { + _logger.w( + 'acceptedTypeGroups[${i}].extensions[${j}] with value "${ext}" is invalid.' + ' Remove the leading dot.', + ); + } + }); + }); +} From cb4f07a6b6956791c0f46db0cb659ac03f2ad5a9 Mon Sep 17 00:00:00 2001 From: Juanjo Tugores Date: Fri, 29 Jan 2021 13:51:06 -0600 Subject: [PATCH 2/8] Remove logger --- .../file_selector/file_selector/lib/file_selector.dart | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/file_selector/file_selector/lib/file_selector.dart b/packages/file_selector/file_selector/lib/file_selector.dart index 425bcc57942c..f63fc4c547d3 100644 --- a/packages/file_selector/file_selector/lib/file_selector.dart +++ b/packages/file_selector/file_selector/lib/file_selector.dart @@ -3,13 +3,11 @@ // found in the LICENSE file. import 'dart:async'; -import 'package:logger/logger.dart'; +import 'package:flutter/foundation.dart'; import 'package:file_selector_platform_interface/file_selector_platform_interface.dart'; export 'package:file_selector_platform_interface/file_selector_platform_interface.dart' show XFile, XTypeGroup; -final _logger = Logger(); - /// Open file dialog for loading files and return a file path Future openFile({ List acceptedTypeGroups = const [], @@ -63,8 +61,8 @@ Future getDirectoryPath({ void _verifyExtensions(List acceptedTypeGroups) { acceptedTypeGroups?.asMap()?.forEach((i, acceptedTypeGroup) { acceptedTypeGroup.extensions?.asMap()?.forEach((j, ext) { - if (ext.startsWith('.')) { - _logger.w( + if (kDebugMode && ext.startsWith('.')) { + print( 'acceptedTypeGroups[${i}].extensions[${j}] with value "${ext}" is invalid.' ' Remove the leading dot.', ); From 227542d489c21ae7937529661f99e14315850718 Mon Sep 17 00:00:00 2001 From: Juanjo Tugores Date: Fri, 5 Feb 2021 14:57:02 -0600 Subject: [PATCH 3/8] Verify extensions are working. --- .../file_selector/lib/file_selector.dart | 32 +++++++++++-------- .../test/file_selector_test.dart | 18 +++++++++++ .../src/types/x_type_group/x_type_group.dart | 7 ++++ 3 files changed, 44 insertions(+), 13 deletions(-) diff --git a/packages/file_selector/file_selector/lib/file_selector.dart b/packages/file_selector/file_selector/lib/file_selector.dart index f63fc4c547d3..743f1d85f36f 100644 --- a/packages/file_selector/file_selector/lib/file_selector.dart +++ b/packages/file_selector/file_selector/lib/file_selector.dart @@ -14,7 +14,7 @@ Future openFile({ String? initialDirectory, String? confirmButtonText, }) { - _verifyExtensions(acceptedTypeGroups); + acceptedTypeGroups = _verifyTypeGroups(acceptedTypeGroups); return FileSelectorPlatform.instance.openFile( acceptedTypeGroups: acceptedTypeGroups, initialDirectory: initialDirectory, @@ -27,7 +27,7 @@ Future> openFiles({ String? initialDirectory, String? confirmButtonText, }) { - _verifyExtensions(acceptedTypeGroups); + acceptedTypeGroups = _verifyTypeGroups(acceptedTypeGroups); return FileSelectorPlatform.instance.openFiles( acceptedTypeGroups: acceptedTypeGroups, initialDirectory: initialDirectory, @@ -41,7 +41,7 @@ Future getSavePath({ String? suggestedName, String? confirmButtonText, }) async { - _verifyExtensions(acceptedTypeGroups); + acceptedTypeGroups = _verifyTypeGroups(acceptedTypeGroups); return FileSelectorPlatform.instance.getSavePath( acceptedTypeGroups: acceptedTypeGroups, initialDirectory: initialDirectory, @@ -58,15 +58,21 @@ Future getDirectoryPath({ initialDirectory: initialDirectory, confirmButtonText: confirmButtonText); } -void _verifyExtensions(List acceptedTypeGroups) { - acceptedTypeGroups?.asMap()?.forEach((i, acceptedTypeGroup) { - acceptedTypeGroup.extensions?.asMap()?.forEach((j, ext) { - if (kDebugMode && ext.startsWith('.')) { - print( - 'acceptedTypeGroups[${i}].extensions[${j}] with value "${ext}" is invalid.' - ' Remove the leading dot.', - ); +List _verifyTypeGroups(List groups) { + if (groups == null) return groups; + for (var i = 0; i < groups.length; i++) { + if (groups[i] == null || groups[i].extensions == null) continue; + for (var j = 0; j < groups[i].extensions.length; j++) { + if (groups[i].extensions[j] == null) continue; + if (groups[i].extensions[j].startsWith('.')) { + if (kDebugMode) { + print('acceptedTypeGroups[${i}].extensions[${j}]' + ' with value "${groups[i].extensions[j]} is invalid.' + ' Please remove the leading dot.'); + } + groups[i].extensions[j] = groups[i].extensions[j].substring(1); } - }); - }); + } + } + return groups; } diff --git a/packages/file_selector/file_selector/test/file_selector_test.dart b/packages/file_selector/file_selector/test/file_selector_test.dart index b16f234bb3b8..dfd1dac771ef 100644 --- a/packages/file_selector/file_selector/test/file_selector_test.dart +++ b/packages/file_selector/file_selector/test/file_selector_test.dart @@ -83,6 +83,24 @@ void main() { final file = await openFile(acceptedTypeGroups: acceptedTypeGroups); expect(file, expectedFile); }); + + test('works with an extension with leading dot', () async { + final correctTypeGroups = [ + XTypeGroup(label: 'images', extensions: [ + 'jpg', + 'png', + ]), + ]; + final incorrectTypeGroups = [ + XTypeGroup(label: 'images', extensions: [ + '.jpg', + '.png', + ]), + ]; + + openFile(acceptedTypeGroups: incorrectTypeGroups); + verify(mock.openFile(acceptedTypeGroups: incorrectTypeGroups)); + }); }); group('openFiles', () { diff --git a/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart b/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart index f3f05e2ab3a6..cc6732a6ff26 100644 --- a/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart +++ b/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart @@ -41,4 +41,11 @@ class XTypeGroup { 'webWildCards': webWildCards, }; } + + bool operator ==(o) => + label == o.label && + listEquals(extensions, o.extensions) && + listEquals(mimeTypes, o.mimeTypes) && + listEquals(macUTIs, o.macUTIs) && + listEquals(webWildCards, o.webWildCards); } From e956b0672f398ce763e826520c23d49e9f90ea3d Mon Sep 17 00:00:00 2001 From: Juanjo Tugores Date: Sat, 6 Feb 2021 11:19:11 -0600 Subject: [PATCH 4/8] Remove leading dot and warn users about it --- .../file_selector/lib/file_selector.dart | 25 ++----------------- .../test/file_selector_test.dart | 18 ------------- .../src/types/x_type_group/x_type_group.dart | 25 +++++++++++++------ .../method_channel_file_selector_test.dart | 12 ++++----- .../test/x_type_group_test.dart | 9 ++++++- 5 files changed, 33 insertions(+), 56 deletions(-) diff --git a/packages/file_selector/file_selector/lib/file_selector.dart b/packages/file_selector/file_selector/lib/file_selector.dart index 743f1d85f36f..cdb2bf9c726d 100644 --- a/packages/file_selector/file_selector/lib/file_selector.dart +++ b/packages/file_selector/file_selector/lib/file_selector.dart @@ -3,8 +3,9 @@ // found in the LICENSE file. import 'dart:async'; -import 'package:flutter/foundation.dart'; + import 'package:file_selector_platform_interface/file_selector_platform_interface.dart'; + export 'package:file_selector_platform_interface/file_selector_platform_interface.dart' show XFile, XTypeGroup; @@ -14,7 +15,6 @@ Future openFile({ String? initialDirectory, String? confirmButtonText, }) { - acceptedTypeGroups = _verifyTypeGroups(acceptedTypeGroups); return FileSelectorPlatform.instance.openFile( acceptedTypeGroups: acceptedTypeGroups, initialDirectory: initialDirectory, @@ -27,7 +27,6 @@ Future> openFiles({ String? initialDirectory, String? confirmButtonText, }) { - acceptedTypeGroups = _verifyTypeGroups(acceptedTypeGroups); return FileSelectorPlatform.instance.openFiles( acceptedTypeGroups: acceptedTypeGroups, initialDirectory: initialDirectory, @@ -41,7 +40,6 @@ Future getSavePath({ String? suggestedName, String? confirmButtonText, }) async { - acceptedTypeGroups = _verifyTypeGroups(acceptedTypeGroups); return FileSelectorPlatform.instance.getSavePath( acceptedTypeGroups: acceptedTypeGroups, initialDirectory: initialDirectory, @@ -57,22 +55,3 @@ Future getDirectoryPath({ return FileSelectorPlatform.instance.getDirectoryPath( initialDirectory: initialDirectory, confirmButtonText: confirmButtonText); } - -List _verifyTypeGroups(List groups) { - if (groups == null) return groups; - for (var i = 0; i < groups.length; i++) { - if (groups[i] == null || groups[i].extensions == null) continue; - for (var j = 0; j < groups[i].extensions.length; j++) { - if (groups[i].extensions[j] == null) continue; - if (groups[i].extensions[j].startsWith('.')) { - if (kDebugMode) { - print('acceptedTypeGroups[${i}].extensions[${j}]' - ' with value "${groups[i].extensions[j]} is invalid.' - ' Please remove the leading dot.'); - } - groups[i].extensions[j] = groups[i].extensions[j].substring(1); - } - } - } - return groups; -} diff --git a/packages/file_selector/file_selector/test/file_selector_test.dart b/packages/file_selector/file_selector/test/file_selector_test.dart index dfd1dac771ef..b16f234bb3b8 100644 --- a/packages/file_selector/file_selector/test/file_selector_test.dart +++ b/packages/file_selector/file_selector/test/file_selector_test.dart @@ -83,24 +83,6 @@ void main() { final file = await openFile(acceptedTypeGroups: acceptedTypeGroups); expect(file, expectedFile); }); - - test('works with an extension with leading dot', () async { - final correctTypeGroups = [ - XTypeGroup(label: 'images', extensions: [ - 'jpg', - 'png', - ]), - ]; - final incorrectTypeGroups = [ - XTypeGroup(label: 'images', extensions: [ - '.jpg', - '.png', - ]), - ]; - - openFile(acceptedTypeGroups: incorrectTypeGroups); - verify(mock.openFile(acceptedTypeGroups: incorrectTypeGroups)); - }); }); group('openFiles', () { diff --git a/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart b/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart index cc6732a6ff26..e6e8f0afe15b 100644 --- a/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart +++ b/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart @@ -1,6 +1,7 @@ // Copyright 2020 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:flutter/foundation.dart'; /// A set of allowed XTypes class XTypeGroup { @@ -14,7 +15,22 @@ class XTypeGroup { this.mimeTypes, this.macUTIs, this.webWildCards, - }); + }) { + _verifyExtensions(); + } + + void _verifyExtensions() { + if (extensions == null) return; + for (var i = 0; i < extensions!.length; i++) { + if (!extensions![i].startsWith('.')) continue; + if (kDebugMode) { + print('extensions[${i}] with value "${extensions![i]}" is invalid.' + ' We are mutating the extensions list to remove the leading dot.' + ' Please fix it.'); + } + extensions![i] = extensions![i].substring(1); + } + } /// The 'name' or reference to this group of types final String? label; @@ -41,11 +57,4 @@ class XTypeGroup { 'webWildCards': webWildCards, }; } - - bool operator ==(o) => - label == o.label && - listEquals(extensions, o.extensions) && - listEquals(mimeTypes, o.mimeTypes) && - listEquals(macUTIs, o.macUTIs) && - listEquals(webWildCards, o.webWildCards); } diff --git a/packages/file_selector/file_selector_platform_interface/test/method_channel_file_selector_test.dart b/packages/file_selector/file_selector_platform_interface/test/method_channel_file_selector_test.dart index 99f9fe0f0e3b..c863ad361112 100644 --- a/packages/file_selector/file_selector_platform_interface/test/method_channel_file_selector_test.dart +++ b/packages/file_selector/file_selector_platform_interface/test/method_channel_file_selector_test.dart @@ -29,14 +29,14 @@ void main() { test('passes the accepted type groups correctly', () async { final group = XTypeGroup( label: 'text', - extensions: ['.txt'], + extensions: ['txt'], mimeTypes: ['text/plain'], macUTIs: ['public.text'], ); final groupTwo = XTypeGroup( label: 'image', - extensions: ['.jpg'], + extensions: ['jpg'], mimeTypes: ['image/jpg'], macUTIs: ['public.image'], webWildCards: ['image/*']); @@ -90,14 +90,14 @@ void main() { test('passes the accepted type groups correctly', () async { final group = XTypeGroup( label: 'text', - extensions: ['.txt'], + extensions: ['txt'], mimeTypes: ['text/plain'], macUTIs: ['public.text'], ); final groupTwo = XTypeGroup( label: 'image', - extensions: ['.jpg'], + extensions: ['jpg'], mimeTypes: ['image/jpg'], macUTIs: ['public.image'], webWildCards: ['image/*']); @@ -152,14 +152,14 @@ void main() { test('passes the accepted type groups correctly', () async { final group = XTypeGroup( label: 'text', - extensions: ['.txt'], + extensions: ['txt'], mimeTypes: ['text/plain'], macUTIs: ['public.text'], ); final groupTwo = XTypeGroup( label: 'image', - extensions: ['.jpg'], + extensions: ['jpg'], mimeTypes: ['image/jpg'], macUTIs: ['public.image'], webWildCards: ['image/*']); diff --git a/packages/file_selector/file_selector_platform_interface/test/x_type_group_test.dart b/packages/file_selector/file_selector_platform_interface/test/x_type_group_test.dart index bde89f46405d..142e62b06b07 100644 --- a/packages/file_selector/file_selector_platform_interface/test/x_type_group_test.dart +++ b/packages/file_selector/file_selector_platform_interface/test/x_type_group_test.dart @@ -9,7 +9,7 @@ void main() { group('XTypeGroup', () { test('toJSON() creates correct map', () { final label = 'test group'; - final extensions = ['.txt', '.jpg']; + final extensions = ['txt', 'jpg']; final mimeTypes = ['text/plain']; final macUTIs = ['public.plain-text']; final webWildCards = ['image/*']; @@ -41,5 +41,12 @@ void main() { expect(jsonMap['macUTIs'], null); expect(jsonMap['webWildCards'], null); }); + + test('Validates extensions have not leading dots', () { + final extensions = ['.txt', '.jpg']; + final group = XTypeGroup(extensions: extensions); + + expect(group.extensions, ['txt', 'jpg']); + }); }); } From e82e7f362275ecdbb8b16fc4b4e3afbdf23ae251 Mon Sep 17 00:00:00 2001 From: Juanjo Tugores Date: Sat, 20 Feb 2021 17:05:00 -0600 Subject: [PATCH 5/8] Bump the version --- .../file_selector_platform_interface/CHANGELOG.md | 4 ++++ .../file_selector_platform_interface/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/file_selector/file_selector_platform_interface/CHANGELOG.md b/packages/file_selector/file_selector_platform_interface/CHANGELOG.md index ed720ca0515d..8fcc3e06ef49 100644 --- a/packages/file_selector/file_selector_platform_interface/CHANGELOG.md +++ b/packages/file_selector/file_selector_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.1 + +* Replace extensions with leading dots. + ## 2.0.0 * Migration to null-safety diff --git a/packages/file_selector/file_selector_platform_interface/pubspec.yaml b/packages/file_selector/file_selector_platform_interface/pubspec.yaml index 30398a2f0d23..980730eb2676 100644 --- a/packages/file_selector/file_selector_platform_interface/pubspec.yaml +++ b/packages/file_selector/file_selector_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the file_selector plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/file_selector/file_selector_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 2.0.0 +version: 2.0.1 dependencies: flutter: From be15dbfdb5485980160ecd204a4ac0b08f12773f Mon Sep 17 00:00:00 2001 From: Juanjo Tugores Date: Sat, 20 Feb 2021 17:10:56 -0600 Subject: [PATCH 6/8] Ensure tests are explicit about mutating extensions. --- .../file_selector_platform_interface/test/x_type_group_test.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/file_selector/file_selector_platform_interface/test/x_type_group_test.dart b/packages/file_selector/file_selector_platform_interface/test/x_type_group_test.dart index 142e62b06b07..f834c989d77e 100644 --- a/packages/file_selector/file_selector_platform_interface/test/x_type_group_test.dart +++ b/packages/file_selector/file_selector_platform_interface/test/x_type_group_test.dart @@ -46,6 +46,7 @@ void main() { final extensions = ['.txt', '.jpg']; final group = XTypeGroup(extensions: extensions); + expect(group.extensions, extensions); expect(group.extensions, ['txt', 'jpg']); }); }); From 3a32e2f339a88df4d0c3dbf3593f30e65f6ad24e Mon Sep 17 00:00:00 2001 From: Juanjo Tugores Date: Tue, 23 Feb 2021 16:10:55 -0600 Subject: [PATCH 7/8] Add a local var --- .../lib/src/types/x_type_group/x_type_group.dart | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart b/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart index e6e8f0afe15b..59b841ab82cd 100644 --- a/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart +++ b/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart @@ -21,14 +21,15 @@ class XTypeGroup { void _verifyExtensions() { if (extensions == null) return; - for (var i = 0; i < extensions!.length; i++) { - if (!extensions![i].startsWith('.')) continue; + final exts = extensions!; + for (var i = 0; i < exts.length; i++) { + if (!exts[i].startsWith('.')) continue; if (kDebugMode) { - print('extensions[${i}] with value "${extensions![i]}" is invalid.' - ' We are mutating the extensions list to remove the leading dot.' + print('extensions[${i}] with value "${exts[i]}" is invalid.' + ' The leading dots are being removed from the extensions' ' Please fix it.'); } - extensions![i] = extensions![i].substring(1); + exts[i] = exts[i].substring(1); } } From 2082921b9aa769e21f7774484d3571da6cebccf9 Mon Sep 17 00:00:00 2001 From: Juanjo Tugores Date: Fri, 26 Feb 2021 10:52:25 -0600 Subject: [PATCH 8/8] Remove leading dots without mutations. --- .../src/types/x_type_group/x_type_group.dart | 24 ++++--------------- .../test/x_type_group_test.dart | 3 +-- 2 files changed, 6 insertions(+), 21 deletions(-) diff --git a/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart b/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart index 59b841ab82cd..7b3cb12be9f1 100644 --- a/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart +++ b/packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart @@ -1,7 +1,6 @@ // Copyright 2020 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:flutter/foundation.dart'; /// A set of allowed XTypes class XTypeGroup { @@ -11,27 +10,11 @@ class XTypeGroup { /// allowed. XTypeGroup({ this.label, - this.extensions, + List? extensions, this.mimeTypes, this.macUTIs, this.webWildCards, - }) { - _verifyExtensions(); - } - - void _verifyExtensions() { - if (extensions == null) return; - final exts = extensions!; - for (var i = 0; i < exts.length; i++) { - if (!exts[i].startsWith('.')) continue; - if (kDebugMode) { - print('extensions[${i}] with value "${exts[i]}" is invalid.' - ' The leading dots are being removed from the extensions' - ' Please fix it.'); - } - exts[i] = exts[i].substring(1); - } - } + }) : this.extensions = _removeLeadingDots(extensions); /// The 'name' or reference to this group of types final String? label; @@ -58,4 +41,7 @@ class XTypeGroup { 'webWildCards': webWildCards, }; } + + static List? _removeLeadingDots(List? exts) => + exts?.map((ext) => ext.startsWith('.') ? ext.substring(1) : ext).toList(); } diff --git a/packages/file_selector/file_selector_platform_interface/test/x_type_group_test.dart b/packages/file_selector/file_selector_platform_interface/test/x_type_group_test.dart index f834c989d77e..21bbac5d0f90 100644 --- a/packages/file_selector/file_selector_platform_interface/test/x_type_group_test.dart +++ b/packages/file_selector/file_selector_platform_interface/test/x_type_group_test.dart @@ -42,11 +42,10 @@ void main() { expect(jsonMap['webWildCards'], null); }); - test('Validates extensions have not leading dots', () { + test('Leading dots are removed from extensions', () { final extensions = ['.txt', '.jpg']; final group = XTypeGroup(extensions: extensions); - expect(group.extensions, extensions); expect(group.extensions, ['txt', 'jpg']); }); });