Fix issue with _ in package names in dart add (#3838)
diff --git a/lib/src/command/add.dart b/lib/src/command/add.dart index eeae0c7..ddd3aac 100644 --- a/lib/src/command/add.dart +++ b/lib/src/command/add.dart
@@ -347,7 +347,7 @@ static final _argRegExp = RegExp( r'^(?:(?<prefix>dev|override):)?' - r'(?<name>[a-zA-Z0-9$.]+)' + r'(?<name>[a-zA-Z0-9_.]+)' r'(?::(?<descriptor>.*))?$', );
diff --git a/test/add/common/add_test.dart b/test/add/common/add_test.dart index 512a7ae..f4a611b 100644 --- a/test/add/common/add_test.dart +++ b/test/add/common/add_test.dart
@@ -33,6 +33,23 @@ ]).validate(); }); + test('adds a package with a multi-component name from path', () async { + await d.dir('foo', [d.libPubspec('fo_o1.a', '1.0.0')]).create(); + + await d.appDir(dependencies: {}).create(); + + await pubAdd(args: ['fo_o1.a:{"path":"../foo"}']); + + await d.appPackageConfigFile([ + d.packageConfigEntry(name: 'fo_o1.a', path: '../foo'), + ]).validate(); + await d.appDir( + dependencies: { + 'fo_o1.a': {'path': '../foo'} + }, + ).validate(); + }); + group('normally', () { test('adds a package from a pub server', () async { final server = await servePackages();