aboutsummaryrefslogtreecommitdiffstats
path: root/modules/markup
diff options
context:
space:
mode:
authorJason Song <i@wolfogre.com>2022-11-19 23:22:15 +0800
committerGitHub <noreply@github.com>2022-11-19 15:22:15 +0000
commitd3f850cc0e791fa5ee5b25d824c475505fc12444 (patch)
tree67dd48f57356446fb2de93ca149e2c04f2ccc74f /modules/markup
parentc8f3eb6acbf16b9f2e74fa2bfabb384359fbadd8 (diff)
downloadgitea-d3f850cc0e791fa5ee5b25d824c475505fc12444.tar.gz
gitea-d3f850cc0e791fa5ee5b25d824c475505fc12444.zip
Support comma-delimited string as labels in issue template (#21831)
The [labels in issue YAML templates](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms#top-level-syntax) can be a string array or a comma-delimited string, so a single string should be valid labels. The old codes committed in #20987 ignore this, that's why the warning is displayed: <img width="618" alt="image" src="https://user-images.githubusercontent.com/9418365/202112642-93dc72d0-71c3-40a2-9720-30fc2d48c97c.png"> Fixes #17877.
Diffstat (limited to 'modules/markup')
-rw-r--r--modules/markup/markdown/meta_test.go48
1 files changed, 26 insertions, 22 deletions
diff --git a/modules/markup/markdown/meta_test.go b/modules/markup/markdown/meta_test.go
index 720d0066f4..1e9768e618 100644
--- a/modules/markup/markdown/meta_test.go
+++ b/modules/markup/markdown/meta_test.go
@@ -9,82 +9,86 @@ import (
"strings"
"testing"
- "code.gitea.io/gitea/modules/structs"
-
"github.com/stretchr/testify/assert"
)
-func validateMetadata(it structs.IssueTemplate) bool {
- /*
- A legacy to keep the unit tests working.
- Copied from the method "func (it IssueTemplate) Valid() bool", the original method has been removed.
- Because it becomes quite complicated to validate an issue template which is support yaml form now.
- The new way to validate an issue template is to call the Validate in modules/issue/template,
- */
+/*
+IssueTemplate is a legacy to keep the unit tests working.
+Copied from structs.IssueTemplate, the original type has been changed a lot to support yaml template.
+*/
+type IssueTemplate struct {
+ Name string `json:"name" yaml:"name"`
+ Title string `json:"title" yaml:"title"`
+ About string `json:"about" yaml:"about"`
+ Labels []string `json:"labels" yaml:"labels"`
+ Ref string `json:"ref" yaml:"ref"`
+}
+
+func (it *IssueTemplate) Valid() bool {
return strings.TrimSpace(it.Name) != "" && strings.TrimSpace(it.About) != ""
}
func TestExtractMetadata(t *testing.T) {
t.Run("ValidFrontAndBody", func(t *testing.T) {
- var meta structs.IssueTemplate
+ var meta IssueTemplate
body, err := ExtractMetadata(fmt.Sprintf("%s\n%s\n%s\n%s", sepTest, frontTest, sepTest, bodyTest), &meta)
assert.NoError(t, err)
assert.Equal(t, bodyTest, body)
assert.Equal(t, metaTest, meta)
- assert.True(t, validateMetadata(meta))
+ assert.True(t, meta.Valid())
})
t.Run("NoFirstSeparator", func(t *testing.T) {
- var meta structs.IssueTemplate
+ var meta IssueTemplate
_, err := ExtractMetadata(fmt.Sprintf("%s\n%s\n%s", frontTest, sepTest, bodyTest), &meta)
assert.Error(t, err)
})
t.Run("NoLastSeparator", func(t *testing.T) {
- var meta structs.IssueTemplate
+ var meta IssueTemplate
_, err := ExtractMetadata(fmt.Sprintf("%s\n%s\n%s", sepTest, frontTest, bodyTest), &meta)
assert.Error(t, err)
})
t.Run("NoBody", func(t *testing.T) {
- var meta structs.IssueTemplate
+ var meta IssueTemplate
body, err := ExtractMetadata(fmt.Sprintf("%s\n%s\n%s", sepTest, frontTest, sepTest), &meta)
assert.NoError(t, err)
assert.Equal(t, "", body)
assert.Equal(t, metaTest, meta)
- assert.True(t, validateMetadata(meta))
+ assert.True(t, meta.Valid())
})
}
func TestExtractMetadataBytes(t *testing.T) {
t.Run("ValidFrontAndBody", func(t *testing.T) {
- var meta structs.IssueTemplate
+ var meta IssueTemplate
body, err := ExtractMetadataBytes([]byte(fmt.Sprintf("%s\n%s\n%s\n%s", sepTest, frontTest, sepTest, bodyTest)), &meta)
assert.NoError(t, err)
assert.Equal(t, bodyTest, string(body))
assert.Equal(t, metaTest, meta)
- assert.True(t, validateMetadata(meta))
+ assert.True(t, meta.Valid())
})
t.Run("NoFirstSeparator", func(t *testing.T) {
- var meta structs.IssueTemplate
+ var meta IssueTemplate
_, err := ExtractMetadataBytes([]byte(fmt.Sprintf("%s\n%s\n%s", frontTest, sepTest, bodyTest)), &meta)
assert.Error(t, err)
})
t.Run("NoLastSeparator", func(t *testing.T) {
- var meta structs.IssueTemplate
+ var meta IssueTemplate
_, err := ExtractMetadataBytes([]byte(fmt.Sprintf("%s\n%s\n%s", sepTest, frontTest, bodyTest)), &meta)
assert.Error(t, err)
})
t.Run("NoBody", func(t *testing.T) {
- var meta structs.IssueTemplate
+ var meta IssueTemplate
body, err := ExtractMetadataBytes([]byte(fmt.Sprintf("%s\n%s\n%s", sepTest, frontTest, sepTest)), &meta)
assert.NoError(t, err)
assert.Equal(t, "", string(body))
assert.Equal(t, metaTest, meta)
- assert.True(t, validateMetadata(meta))
+ assert.True(t, meta.Valid())
})
}
@@ -97,7 +101,7 @@ labels:
- bug
- "test label"`
bodyTest = "This is the body"
- metaTest = structs.IssueTemplate{
+ metaTest = IssueTemplate{
Name: "Test",
About: "A Test",
Title: "Test Title",