aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorNick2023-02-13 15:01:09 -0500
committerGitHub2023-02-13 15:01:09 -0500
commit7b5b739a2f9d9c84ec216ff629dbf0d1dd8a4322 (patch)
tree80624177b947ebdb8bc33a37bb1d9334a3acd040 /modules
parent51383ec0841ec2562e5c4a9dadd4fef82974dd5c (diff)
Move `IsReadmeFile*` from `modules/markup/` to `modules/util` (#22877)
These functions don't examine contents, just filenames, so they don't fit in well in a markup module. This was originally part of https://github.com/go-gitea/gitea/pull/22177. Signed-off-by: Nick Guenther <nick.guenther@polymtl.ca>
Diffstat (limited to 'modules')
-rw-r--r--modules/markup/renderer.go38
-rw-r--r--modules/markup/renderer_test.go91
-rw-r--r--modules/util/path.go39
-rw-r--r--modules/util/path_test.go81
4 files changed, 120 insertions, 129 deletions
diff --git a/modules/markup/renderer.go b/modules/markup/renderer.go
index 5a31e961f..df2c9ebfc 100644
--- a/modules/markup/renderer.go
+++ b/modules/markup/renderer.go
@@ -317,41 +317,3 @@ func IsMarkupFile(name, markup string) bool {
}
return false
}
-
-// IsReadmeFile reports whether name looks like a README file
-// based on its name.
-func IsReadmeFile(name string) bool {
- name = strings.ToLower(name)
- if len(name) < 6 {
- return false
- } else if len(name) == 6 {
- return name == "readme"
- }
- return name[:7] == "readme."
-}
-
-// IsReadmeFileExtension reports whether name looks like a README file
-// based on its name. It will look through the provided extensions and check if the file matches
-// one of the extensions and provide the index in the extension list.
-// If the filename is `readme.` with an unmatched extension it will match with the index equaling
-// the length of the provided extension list.
-// Note that the '.' should be provided in ext, e.g ".md"
-func IsReadmeFileExtension(name string, ext ...string) (int, bool) {
- name = strings.ToLower(name)
- if len(name) < 6 || name[:6] != "readme" {
- return 0, false
- }
-
- for i, extension := range ext {
- extension = strings.ToLower(extension)
- if name[6:] == extension {
- return i, true
- }
- }
-
- if name[6] == '.' {
- return len(ext), true
- }
-
- return 0, false
-}
diff --git a/modules/markup/renderer_test.go b/modules/markup/renderer_test.go
index 624558c3f..0791081f9 100644
--- a/modules/markup/renderer_test.go
+++ b/modules/markup/renderer_test.go
@@ -2,94 +2,3 @@
// SPDX-License-Identifier: MIT
package markup_test
-
-import (
- "testing"
-
- . "code.gitea.io/gitea/modules/markup"
-
- _ "code.gitea.io/gitea/modules/markup/markdown"
-
- "github.com/stretchr/testify/assert"
-)
-
-func TestMisc_IsReadmeFile(t *testing.T) {
- trueTestCases := []string{
- "readme",
- "README",
- "readME.mdown",
- "README.md",
- "readme.i18n.md",
- }
- falseTestCases := []string{
- "test.md",
- "wow.MARKDOWN",
- "LOL.mDoWn",
- "test",
- "abcdefg",
- "abcdefghijklmnopqrstuvwxyz",
- "test.md.test",
- "readmf",
- }
-
- for _, testCase := range trueTestCases {
- assert.True(t, IsReadmeFile(testCase))
- }
- for _, testCase := range falseTestCases {
- assert.False(t, IsReadmeFile(testCase))
- }
-
- type extensionTestcase struct {
- name string
- expected bool
- idx int
- }
-
- exts := []string{".md", ".txt", ""}
- testCasesExtensions := []extensionTestcase{
- {
- name: "readme",
- expected: true,
- idx: 2,
- },
- {
- name: "readme.md",
- expected: true,
- idx: 0,
- },
- {
- name: "README.md",
- expected: true,
- idx: 0,
- },
- {
- name: "ReAdMe.Md",
- expected: true,
- idx: 0,
- },
- {
- name: "readme.txt",
- expected: true,
- idx: 1,
- },
- {
- name: "readme.doc",
- expected: true,
- idx: 3,
- },
- {
- name: "readmee.md",
- },
- {
- name: "readme..",
- expected: true,
- idx: 3,
- },
- }
-
- for _, testCase := range testCasesExtensions {
- idx, ok := IsReadmeFileExtension(testCase.name, exts...)
- assert.Equal(t, testCase.expected, ok)
- assert.Equal(t, testCase.idx, idx)
- }
-}
diff --git a/modules/util/path.go b/modules/util/path.go
index e060b527f..74acb7a85 100644
--- a/modules/util/path.go
+++ b/modules/util/path.go
@@ -11,6 +11,7 @@ import (
"path/filepath"
"regexp"
"runtime"
+ "strings"
)
// EnsureAbsolutePath ensure that a path is absolute, making it
@@ -201,3 +202,41 @@ func CommonSkip(name string) bool {
return false
}
+
+// IsReadmeFileName reports whether name looks like a README file
+// based on its name.
+func IsReadmeFileName(name string) bool {
+ name = strings.ToLower(name)
+ if len(name) < 6 {
+ return false
+ } else if len(name) == 6 {
+ return name == "readme"
+ }
+ return name[:7] == "readme."
+}
+
+// IsReadmeFileExtension reports whether name looks like a README file
+// based on its name. It will look through the provided extensions and check if the file matches
+// one of the extensions and provide the index in the extension list.
+// If the filename is `readme.` with an unmatched extension it will match with the index equaling
+// the length of the provided extension list.
+// Note that the '.' should be provided in ext, e.g ".md"
+func IsReadmeFileExtension(name string, ext ...string) (int, bool) {
+ name = strings.ToLower(name)
+ if len(name) < 6 || name[:6] != "readme" {
+ return 0, false
+ }
+
+ for i, extension := range ext {
+ extension = strings.ToLower(extension)
+ if name[6:] == extension {
+ return i, true
+ }
+ }
+
+ if name[6] == '.' {
+ return len(ext), true
+ }
+
+ return 0, false
+}
diff --git a/modules/util/path_test.go b/modules/util/path_test.go
index 5794df1eb..93f4f67cf 100644
--- a/modules/util/path_test.go
+++ b/modules/util/path_test.go
@@ -55,3 +55,84 @@ func TestFileURLToPath(t *testing.T) {
}
}
}
+
+func TestMisc_IsReadmeFileName(t *testing.T) {
+ trueTestCases := []string{
+ "readme",
+ "README",
+ "readME.mdown",
+ "README.md",
+ "readme.i18n.md",
+ }
+ falseTestCases := []string{
+ "test.md",
+ "wow.MARKDOWN",
+ "LOL.mDoWn",
+ "test",
+ "abcdefg",
+ "abcdefghijklmnopqrstuvwxyz",
+ "test.md.test",
+ "readmf",
+ }
+
+ for _, testCase := range trueTestCases {
+ assert.True(t, IsReadmeFileName(testCase))
+ }
+ for _, testCase := range falseTestCases {
+ assert.False(t, IsReadmeFileName(testCase))
+ }
+
+ type extensionTestcase struct {
+ name string
+ expected bool
+ idx int
+ }
+
+ exts := []string{".md", ".txt", ""}
+ testCasesExtensions := []extensionTestcase{
+ {
+ name: "readme",
+ expected: true,
+ idx: 2,
+ },
+ {
+ name: "readme.md",
+ expected: true,
+ idx: 0,
+ },
+ {
+ name: "README.md",
+ expected: true,
+ idx: 0,
+ },
+ {
+ name: "ReAdMe.Md",
+ expected: true,
+ idx: 0,
+ },
+ {
+ name: "readme.txt",
+ expected: true,
+ idx: 1,
+ },
+ {
+ name: "readme.doc",
+ expected: true,
+ idx: 3,
+ },
+ {
+ name: "readmee.md",
+ },
+ {
+ name: "readme..",
+ expected: true,
+ idx: 3,
+ },
+ }
+
+ for _, testCase := range testCasesExtensions {
+ idx, ok := IsReadmeFileExtension(testCase.name, exts...)
+ assert.Equal(t, testCase.expected, ok)
+ assert.Equal(t, testCase.idx, idx)
+ }
+}