Skip to content

Commit 877a4bc

Browse files
authored
Enable forward slash character in tag pattern of automated github publishing. (#8698)
1 parent 274fe51 commit 877a4bc

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

app/lib/package/backend.dart

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,11 @@ final _defaultMaxVersionsPerPackage = 1000;
5959
final Logger _logger = Logger('pub.cloud_repository');
6060
final _validGitHubUserOrRepoRegExp =
6161
RegExp(r'^[a-z0-9\-\._]+$', caseSensitive: false);
62+
// NOTE: The `/` character is allowed inside the tag pattern because we are
63+
// not splitting the `refs/tags/` prefix. A change of that parsing
64+
// should specifically test the presence of `/`.
6265
final _validGitHubVersionPattern =
63-
RegExp(r'^[a-z0-9\-._]+$', caseSensitive: false);
66+
RegExp(r'^[a-z0-9\-._/]+$', caseSensitive: false);
6467
final _validGitHubEnvironment =
6568
RegExp(r'^[a-z0-9\-\._]+$', caseSensitive: false);
6669

@@ -1759,6 +1762,9 @@ void verifyTagPatternWithRef({
17591762
throw AssertionError(
17601763
'Configured tag pattern does not include `{{version}}`');
17611764
}
1765+
// NOTE: The `/` character is allowed inside the tag pattern because we are
1766+
// not splitting the `refs/tags/` prefix. A change of this parsing
1767+
// should specifically test the presence of `/`.
17621768
final expectedRefStart = 'refs/tags/';
17631769
if (!ref.startsWith(expectedRefStart)) {
17641770
throw AuthorizationException.githubActionIssue(

app/test/package/backend_test.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,8 @@ void main() {
480480
'package-{{version}}',
481481
'package-v{{version}}',
482482
'package-v{{version}}-postfix',
483+
'abc/def-{{version}}',
484+
'{{version}}-abc/def',
483485
];
484486
for (final value in values) {
485487
verifyTagPattern(tagPattern: value);
@@ -491,8 +493,6 @@ void main() {
491493
'', // empty pattern is not allowed
492494
'{{version}}{{version}}', // two {{version}} is not allowed
493495
'%-{{version}}', // % is not allowed
494-
'abc/def-{{version}}', // / is not allowed
495-
'{{version}}-abc/def', // / is not allowed
496496
];
497497
for (final value in values) {
498498
expect(
@@ -506,6 +506,7 @@ void main() {
506506
final values = [
507507
('{{version}}', 'refs/tags/1.0.0'),
508508
('pkg-v{{version}}', 'refs/tags/pkg-v1.0.0'),
509+
('dir/pkg-v{{version}}', 'refs/tags/dir/pkg-v1.0.0'),
509510
];
510511
for (final value in values) {
511512
verifyTagPatternWithRef(
@@ -520,6 +521,7 @@ void main() {
520521
final values = [
521522
('v{{version}}', 'refs/tags/1.0.0'), // does not match `v` prefix
522523
('v{{version}}', 'refs/x/v1.0.0'), // missing refs/tags
524+
('dir/{{version}}', 'refs/tags/v1.0.0'), // missing dir/ prefix
523525
];
524526
for (final value in values) {
525527
expect(

0 commit comments

Comments
 (0)