mirror of
https://github.com/gogs/gogs.git
synced 2026-02-28 09:10:57 +01:00
86 lines
2.4 KiB
Go
86 lines
2.4 KiB
Go
package database
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"gogs.io/gogs/internal/conf"
|
|
"gogs.io/gogs/internal/markup"
|
|
"gogs.io/gogs/internal/osutil"
|
|
)
|
|
|
|
func TestRepository_ComposeMetas(t *testing.T) {
|
|
repo := &Repository{
|
|
Name: "testrepo",
|
|
Owner: &User{
|
|
Name: "testuser",
|
|
},
|
|
ExternalTrackerFormat: "https://someurl.com/{user}/{repo}/{issue}",
|
|
}
|
|
|
|
t.Run("no external tracker is configured", func(t *testing.T) {
|
|
repo.EnableExternalTracker = false
|
|
|
|
metas := repo.ComposeMetas()
|
|
assert.Equal(t, metas["repoLink"], repo.Link())
|
|
|
|
// Should not have format and style if no external tracker is configured
|
|
_, ok := metas["format"]
|
|
assert.False(t, ok)
|
|
_, ok = metas["style"]
|
|
assert.False(t, ok)
|
|
})
|
|
|
|
t.Run("an external issue tracker is configured", func(t *testing.T) {
|
|
repo.ExternalMetas = nil
|
|
repo.EnableExternalTracker = true
|
|
|
|
// Default to numeric issue style
|
|
assert.Equal(t, markup.IssueNameStyleNumeric, repo.ComposeMetas()["style"])
|
|
repo.ExternalMetas = nil
|
|
|
|
repo.ExternalTrackerStyle = markup.IssueNameStyleNumeric
|
|
assert.Equal(t, markup.IssueNameStyleNumeric, repo.ComposeMetas()["style"])
|
|
repo.ExternalMetas = nil
|
|
|
|
repo.ExternalTrackerStyle = markup.IssueNameStyleAlphanumeric
|
|
assert.Equal(t, markup.IssueNameStyleAlphanumeric, repo.ComposeMetas()["style"])
|
|
repo.ExternalMetas = nil
|
|
|
|
metas := repo.ComposeMetas()
|
|
assert.Equal(t, "testuser", metas["user"])
|
|
assert.Equal(t, "testrepo", metas["repo"])
|
|
assert.Equal(t, "https://someurl.com/{user}/{repo}/{issue}", metas["format"])
|
|
})
|
|
}
|
|
|
|
func Test_CreateRepository_PreventDeletion(t *testing.T) {
|
|
tempRepositoryRoot := filepath.Join(os.TempDir(), "createRepository-tempRepositoryRoot")
|
|
conf.SetMockRepository(
|
|
t,
|
|
conf.RepositoryOpts{
|
|
Root: tempRepositoryRoot,
|
|
},
|
|
)
|
|
err := os.RemoveAll(tempRepositoryRoot)
|
|
require.NoError(t, err)
|
|
defer func() { _ = os.RemoveAll(tempRepositoryRoot) }()
|
|
|
|
owner := &User{Name: "testuser"}
|
|
opts := CreateRepoOptionsLegacy{Name: "safety-test"}
|
|
repoPath := RepoPath(owner.Name, opts.Name)
|
|
require.NoError(t, os.MkdirAll(repoPath, os.ModePerm))
|
|
|
|
canary := filepath.Join(repoPath, "canary.txt")
|
|
require.NoError(t, os.WriteFile(canary, []byte("should survive"), 0o644))
|
|
|
|
_, err = CreateRepository(owner, owner, opts)
|
|
require.Error(t, err)
|
|
assert.Contains(t, err.Error(), "repository directory already exists")
|
|
assert.True(t, osutil.Exist(canary))
|
|
}
|