diff --git a/github/resource_github_repository_autolink_reference.go b/github/resource_github_repository_autolink_reference.go index 110a1fc119..21cac4e21c 100644 --- a/github/resource_github_repository_autolink_reference.go +++ b/github/resource_github_repository_autolink_reference.go @@ -65,10 +65,11 @@ func resourceGithubRepositoryAutolinkReference() *schema.Resource { Description: "The repository name", }, "key_prefix": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - Description: "This prefix appended by a number will generate a link any time it is found in an issue, pull request, or commit", + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "This prefix appended by a number will generate a link any time it is found in an issue, pull request, or commit", + ValidateDiagFunc: validation.ToDiagFunc(validation.StringMatch(regexp.MustCompile(`[^\d]$`), "must not end with a number")), }, "target_url_template": { Type: schema.TypeString, diff --git a/github/resource_github_repository_autolink_reference_test.go b/github/resource_github_repository_autolink_reference_test.go index e97b14abf6..de3b23e7cf 100644 --- a/github/resource_github_repository_autolink_reference_test.go +++ b/github/resource_github_repository_autolink_reference_test.go @@ -268,6 +268,35 @@ func TestAccGithubRepositoryAutolinkReference(t *testing.T) { }) }) + t.Run("errors when key_prefix ends with a number", func(t *testing.T) { + randomID := acctest.RandStringFromCharSet(5, acctest.CharSetAlphaNum) + repoName := fmt.Sprintf("%srepo-autolink-%s", testResourcePrefix, randomID) + config := fmt.Sprintf(` + resource "github_repository" "test" { + name = "%s" + description = "Test autolink creation" + } + + resource "github_repository_autolink_reference" "autolink_invalid" { + repository = github_repository.test.name + + key_prefix = "TEST-1" + target_url_template = "https://example.com/TEST-" + } + `, repoName) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { skipUnauthenticated(t) }, + ProviderFactories: providerFactories, + Steps: []resource.TestStep{ + { + Config: config, + ExpectError: regexp.MustCompile(`must not end with a number`), + }, + }, + }) + }) + t.Run("deletes repository autolink reference without error", func(t *testing.T) { randomID := acctest.RandStringFromCharSet(5, acctest.CharSetAlphaNum) repoName := fmt.Sprintf("%srepo-autolink-%s", testResourcePrefix, randomID)