folder/* should not ignore the folder itself, only the contents (#3267)
diff --git a/lib/src/ignore.dart b/lib/src/ignore.dart
index fbd93e8..ff22dff 100644
--- a/lib/src/ignore.dart
+++ b/lib/src/ignore.dart
@@ -464,6 +464,9 @@
} else {
expr += '.*';
}
+ } else if (peekChar() == '/' || peekChar() == null) {
+ // /a/* should not match '/a/'
+ expr += '[^/]+';
} else {
// Handle a single '*'
expr += '[^/]*';
@@ -520,7 +523,6 @@
expr = '$expr/\$';
} else {
expr = '$expr/?\$';
- // expr = '$expr\$';
}
try {
return _IgnoreParseResult(
diff --git a/lib/src/validator/changelog.dart b/lib/src/validator/changelog.dart
index 694ace2..614eba2 100644
--- a/lib/src/validator/changelog.dart
+++ b/lib/src/validator/changelog.dart
@@ -21,7 +21,7 @@
final changelog = entrypoint.root.changelogPath;
if (changelog == null) {
- warnings.add('Please add a`CHANGELOG.md` to your package. '
+ warnings.add('Please add a `CHANGELOG.md` to your package. '
'See https://dart.dev/tools/pub/publishing#important-files.');
return;
}
diff --git a/lib/src/validator/gitignore.dart b/lib/src/validator/gitignore.dart
index 78bf9aa..4fb49b1 100644
--- a/lib/src/validator/gitignore.dart
+++ b/lib/src/validator/gitignore.dart
@@ -71,7 +71,7 @@
if (ignoredFilesCheckedIn.isNotEmpty) {
warnings.add('''
-${ignoredFilesCheckedIn.length} checked in ${pluralize('file', ignoredFilesCheckedIn.length)} ${ignoredFilesCheckedIn.length == 1 ? 'is' : 'are'} ignored by a `.gitignore`.
+${ignoredFilesCheckedIn.length} checked-in ${pluralize('file', ignoredFilesCheckedIn.length)} ${ignoredFilesCheckedIn.length == 1 ? 'is' : 'are'} ignored by a `.gitignore`.
Previous versions of Pub would include those in the published package.
Consider adjusting your `.gitignore` files to not ignore those files, and if you do not wish to
diff --git a/test/ignore_test.dart b/test/ignore_test.dart
index 42a189a..a8ab8ac 100644
--- a/test/ignore_test.dart
+++ b/test/ignore_test.dart
@@ -977,6 +977,13 @@
'folder/a.txt': true,
}),
+ TestData('folder/* does not ignore `folder` itself', {
+ '.': ['folder/*', '!folder/a.txt'],
+ }, {
+ 'folder/a.txt': false,
+ 'folder/b.txt': true,
+ }),
+
// Case sensitivity
TestData(
'simple',