|
@@ -13,124 +13,124 @@ func TestGithubDependencyPatternRegex(t *testing.T) {
|
|
|
// Valid patterns
|
|
|
{
|
|
|
name: "basic version pattern",
|
|
|
- input: "owner/repo/1.0.0/manifest.json",
|
|
|
+ input: "owner/repo:1.0.0/manifest.yaml",
|
|
|
expected: true,
|
|
|
},
|
|
|
{
|
|
|
name: "version with patch",
|
|
|
- input: "owner/repo/1.0.1/manifest.yaml",
|
|
|
+ input: "owner/repo:1.0.1/manifest.yaml",
|
|
|
expected: true,
|
|
|
},
|
|
|
{
|
|
|
name: "version with pre-release",
|
|
|
- input: "owner/repo/1.0.0-beta/manifest.json",
|
|
|
+ input: "owner/repo:1.0.0-beta/manifest.yaml",
|
|
|
expected: true,
|
|
|
},
|
|
|
{
|
|
|
name: "version with x pattern",
|
|
|
- input: "owner/repo/1.x.x/manifest.json",
|
|
|
+ input: "owner/repo:1.x.x/manifest.yaml",
|
|
|
expected: true,
|
|
|
},
|
|
|
{
|
|
|
name: "version with X pattern",
|
|
|
- input: "owner/repo/1.X.X/manifest.json",
|
|
|
+ input: "owner/repo:1.X.X/manifest.yaml",
|
|
|
expected: true,
|
|
|
},
|
|
|
{
|
|
|
name: "version with mixed x pattern",
|
|
|
- input: "owner/repo/1.2.x/manifest.json",
|
|
|
+ input: "owner/repo:1.2.x/manifest.yaml",
|
|
|
expected: true,
|
|
|
},
|
|
|
{
|
|
|
name: "version with tilde",
|
|
|
- input: "owner/repo/~1.0.0/manifest.json",
|
|
|
+ input: "owner/repo:~1.0.0/manifest.yaml",
|
|
|
expected: true,
|
|
|
},
|
|
|
{
|
|
|
name: "version with caret",
|
|
|
- input: "owner/repo/^1.0.0/manifest.json",
|
|
|
+ input: "owner/repo:^1.0.0/manifest.yaml",
|
|
|
expected: true,
|
|
|
},
|
|
|
{
|
|
|
name: "version range",
|
|
|
- input: "owner/repo/1.0.0-2.0.0/manifest.json",
|
|
|
+ input: "owner/repo:1.0.0-2.0.0/manifest.yaml",
|
|
|
expected: true,
|
|
|
},
|
|
|
{
|
|
|
name: "complex owner and repo names",
|
|
|
- input: "complex-owner/complex-repo-name/1.0.0/manifest.json",
|
|
|
+ input: "complex-owner/complex-repo-name:1.0.0/manifest.yaml",
|
|
|
expected: true,
|
|
|
},
|
|
|
{
|
|
|
name: "underscore in names",
|
|
|
- input: "owner_name/repo_name/1.0.0/manifest.json",
|
|
|
+ input: "owner_name/repo_name:1.0.0/manifest.yaml",
|
|
|
expected: true,
|
|
|
},
|
|
|
|
|
|
// Invalid patterns
|
|
|
{
|
|
|
name: "four digit version",
|
|
|
- input: "owner/repo/1.0.0.1/manifest.json",
|
|
|
+ input: "owner/repo:1.0.0.1/manifest.yaml",
|
|
|
expected: false,
|
|
|
},
|
|
|
{
|
|
|
name: "empty owner",
|
|
|
- input: "/repo/1.0.0/manifest.json",
|
|
|
+ input: "/repo:1.0.0/manifest.yaml",
|
|
|
expected: false,
|
|
|
},
|
|
|
{
|
|
|
name: "empty repo",
|
|
|
- input: "owner//1.0.0/manifest.json",
|
|
|
+ input: "owner//1.0.0/manifest.yaml",
|
|
|
expected: false,
|
|
|
},
|
|
|
{
|
|
|
name: "invalid version format",
|
|
|
- input: "owner/repo/1.0/manifest.json",
|
|
|
+ input: "owner/repo:1.0/manifest.yaml",
|
|
|
expected: false,
|
|
|
},
|
|
|
{
|
|
|
name: "missing manifest file",
|
|
|
- input: "owner/repo/1.0.0/",
|
|
|
+ input: "owner/repo:1.0.0/",
|
|
|
expected: false,
|
|
|
},
|
|
|
{
|
|
|
name: "uppercase in owner",
|
|
|
- input: "Owner/repo/1.0.0/manifest.json",
|
|
|
+ input: "Owner/repo:1.0.0/manifest.yaml",
|
|
|
expected: false,
|
|
|
},
|
|
|
{
|
|
|
name: "uppercase in repo",
|
|
|
- input: "owner/Repo/1.0.0/manifest.json",
|
|
|
+ input: "owner/Repo:1.0.0/manifest.yaml",
|
|
|
expected: false,
|
|
|
},
|
|
|
{
|
|
|
name: "invalid characters in owner",
|
|
|
- input: "owner@/repo/1.0.0/manifest.json",
|
|
|
+ input: "owner@/repo:1.0.0/manifest.yaml",
|
|
|
expected: false,
|
|
|
},
|
|
|
{
|
|
|
name: "invalid characters in repo",
|
|
|
- input: "owner/repo#/1.0.0/manifest.json",
|
|
|
+ input: "owner/repo#:1.0.0/manifest.yaml",
|
|
|
expected: false,
|
|
|
},
|
|
|
{
|
|
|
name: "too long owner name",
|
|
|
- input: "ownerwithaverylongnamethatshouldnotbeallowedinthiscaseownerwithaverylongnamethatshouldnotbeallowedinthiscase/repo/1.0.0/manifest.json",
|
|
|
+ input: "ownerwithaverylongnamethatshouldnotbeallowedinthiscaseownerwithaverylongnamethatshouldnotbeallowedinthiscase/repo:1.0.0/manifest.yaml",
|
|
|
expected: false,
|
|
|
},
|
|
|
{
|
|
|
name: "too long repo name",
|
|
|
- input: "owner/repowithavrepowithaverylongnamethatshouldnotbeallowedinthiscaseandshouldbeshorterthanspecifiedintherequirementsrepowithaverylongnamethatshouldnotbeallowedinthiscaseandshouldbeshorterthanspecifiedintherequirementserylongnamethatshouldnotbeallowedinthiscaseandshouldbeshorterthanspecifiedintherequirements/1.0.0/manifest.json",
|
|
|
+ input: "owner/repowithavrepowithaverylongnamethatshouldnotbeallowedinthiscaseandshouldbeshorterthanspecifiedintherequirementsrepowithaverylongnamethatshouldnotbeallowedinthiscaseandshouldbeshorterthanspecifiedintherequirementserylongnamethatshouldnotbeallowedinthiscaseandshouldbeshorterthanspecifiedintherequirements:1.0.0/manifest.yaml",
|
|
|
expected: false,
|
|
|
},
|
|
|
{
|
|
|
name: "invalid version range format",
|
|
|
- input: "owner/repo/1.0.0-/manifest.json",
|
|
|
+ input: "owner/repo:1.0.0-/manifest.yaml",
|
|
|
expected: false,
|
|
|
},
|
|
|
{
|
|
|
name: "invalid pre-release format",
|
|
|
- input: "owner/repo/1.0.0-toolongprerelease/manifest.json",
|
|
|
+ input: "owner/repo:1.0.0-toolongprerelease/manifest.yaml",
|
|
|
expected: false,
|
|
|
},
|
|
|
}
|