|
|
@@ -4,6 +4,7 @@ |
|
|
|
package setting |
|
|
|
|
|
|
|
import ( |
|
|
|
"path/filepath" |
|
|
|
"testing" |
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert" |
|
|
@@ -90,3 +91,161 @@ STORAGE_TYPE = minio |
|
|
|
assert.EqualValues(t, "gitea", RepoAvatar.Storage.MinioConfig.Bucket) |
|
|
|
assert.EqualValues(t, "repo-avatars/", RepoAvatar.Storage.MinioConfig.BasePath) |
|
|
|
} |
|
|
|
|
|
|
|
type testLocalStoragePathCase struct { |
|
|
|
loader func(rootCfg ConfigProvider) error |
|
|
|
storagePtr **Storage |
|
|
|
expectedPath string |
|
|
|
} |
|
|
|
|
|
|
|
func testLocalStoragePath(t *testing.T, appDataPath, iniStr string, cases []testLocalStoragePathCase) { |
|
|
|
cfg, err := NewConfigProviderFromData(iniStr) |
|
|
|
assert.NoError(t, err) |
|
|
|
AppDataPath = appDataPath |
|
|
|
for _, c := range cases { |
|
|
|
assert.NoError(t, c.loader(cfg)) |
|
|
|
storage := *c.storagePtr |
|
|
|
|
|
|
|
assert.EqualValues(t, "local", storage.Type) |
|
|
|
assert.True(t, filepath.IsAbs(storage.Path)) |
|
|
|
assert.EqualValues(t, filepath.Clean(c.expectedPath), filepath.Clean(storage.Path)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func Test_getStorageInheritStorageTypeLocal(t *testing.T) { |
|
|
|
testLocalStoragePath(t, "/appdata", ` |
|
|
|
[storage] |
|
|
|
STORAGE_TYPE = local |
|
|
|
`, []testLocalStoragePathCase{ |
|
|
|
{loadPackagesFrom, &Packages.Storage, "/appdata/packages"}, |
|
|
|
{loadRepoArchiveFrom, &RepoArchive.Storage, "/appdata/repo-archive"}, |
|
|
|
{loadActionsFrom, &Actions.LogStorage, "/appdata/actions_log"}, |
|
|
|
{loadAvatarsFrom, &Avatar.Storage, "/appdata/avatars"}, |
|
|
|
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/repo-avatars"}, |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func Test_getStorageInheritStorageTypeLocalPath(t *testing.T) { |
|
|
|
testLocalStoragePath(t, "/appdata", ` |
|
|
|
[storage] |
|
|
|
STORAGE_TYPE = local |
|
|
|
PATH = /data/gitea |
|
|
|
`, []testLocalStoragePathCase{ |
|
|
|
{loadPackagesFrom, &Packages.Storage, "/data/gitea/packages"}, |
|
|
|
{loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/repo-archive"}, |
|
|
|
{loadActionsFrom, &Actions.LogStorage, "/data/gitea/actions_log"}, |
|
|
|
{loadAvatarsFrom, &Avatar.Storage, "/data/gitea/avatars"}, |
|
|
|
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/data/gitea/repo-avatars"}, |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func Test_getStorageInheritStorageTypeLocalRelativePath(t *testing.T) { |
|
|
|
testLocalStoragePath(t, "/appdata", ` |
|
|
|
[storage] |
|
|
|
STORAGE_TYPE = local |
|
|
|
PATH = storages |
|
|
|
`, []testLocalStoragePathCase{ |
|
|
|
{loadPackagesFrom, &Packages.Storage, "/appdata/storages/packages"}, |
|
|
|
{loadRepoArchiveFrom, &RepoArchive.Storage, "/appdata/storages/repo-archive"}, |
|
|
|
{loadActionsFrom, &Actions.LogStorage, "/appdata/storages/actions_log"}, |
|
|
|
{loadAvatarsFrom, &Avatar.Storage, "/appdata/storages/avatars"}, |
|
|
|
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/storages/repo-avatars"}, |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func Test_getStorageInheritStorageTypeLocalPathOverride(t *testing.T) { |
|
|
|
testLocalStoragePath(t, "/appdata", ` |
|
|
|
[storage] |
|
|
|
STORAGE_TYPE = local |
|
|
|
PATH = /data/gitea |
|
|
|
|
|
|
|
[repo-archive] |
|
|
|
PATH = /data/gitea/the-archives-dir |
|
|
|
`, []testLocalStoragePathCase{ |
|
|
|
{loadPackagesFrom, &Packages.Storage, "/data/gitea/packages"}, |
|
|
|
{loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/the-archives-dir"}, |
|
|
|
{loadActionsFrom, &Actions.LogStorage, "/data/gitea/actions_log"}, |
|
|
|
{loadAvatarsFrom, &Avatar.Storage, "/data/gitea/avatars"}, |
|
|
|
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/data/gitea/repo-avatars"}, |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func Test_getStorageInheritStorageTypeLocalPathOverrideEmpty(t *testing.T) { |
|
|
|
testLocalStoragePath(t, "/appdata", ` |
|
|
|
[storage] |
|
|
|
STORAGE_TYPE = local |
|
|
|
PATH = /data/gitea |
|
|
|
|
|
|
|
[repo-archive] |
|
|
|
`, []testLocalStoragePathCase{ |
|
|
|
{loadPackagesFrom, &Packages.Storage, "/data/gitea/packages"}, |
|
|
|
{loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/repo-archive"}, |
|
|
|
{loadActionsFrom, &Actions.LogStorage, "/data/gitea/actions_log"}, |
|
|
|
{loadAvatarsFrom, &Avatar.Storage, "/data/gitea/avatars"}, |
|
|
|
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/data/gitea/repo-avatars"}, |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func Test_getStorageInheritStorageTypeLocalRelativePathOverride(t *testing.T) { |
|
|
|
testLocalStoragePath(t, "/appdata", ` |
|
|
|
[storage] |
|
|
|
STORAGE_TYPE = local |
|
|
|
PATH = /data/gitea |
|
|
|
|
|
|
|
[repo-archive] |
|
|
|
PATH = the-archives-dir |
|
|
|
`, []testLocalStoragePathCase{ |
|
|
|
{loadPackagesFrom, &Packages.Storage, "/data/gitea/packages"}, |
|
|
|
{loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/the-archives-dir"}, |
|
|
|
{loadActionsFrom, &Actions.LogStorage, "/data/gitea/actions_log"}, |
|
|
|
{loadAvatarsFrom, &Avatar.Storage, "/data/gitea/avatars"}, |
|
|
|
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/data/gitea/repo-avatars"}, |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func Test_getStorageInheritStorageTypeLocalPathOverride3(t *testing.T) { |
|
|
|
testLocalStoragePath(t, "/appdata", ` |
|
|
|
[storage.repo-archive] |
|
|
|
STORAGE_TYPE = local |
|
|
|
PATH = /data/gitea/archives |
|
|
|
`, []testLocalStoragePathCase{ |
|
|
|
{loadPackagesFrom, &Packages.Storage, "/appdata/packages"}, |
|
|
|
{loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/archives"}, |
|
|
|
{loadActionsFrom, &Actions.LogStorage, "/appdata/actions_log"}, |
|
|
|
{loadAvatarsFrom, &Avatar.Storage, "/appdata/avatars"}, |
|
|
|
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/repo-avatars"}, |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func Test_getStorageInheritStorageTypeLocalPathOverride4(t *testing.T) { |
|
|
|
testLocalStoragePath(t, "/appdata", ` |
|
|
|
[storage.repo-archive] |
|
|
|
STORAGE_TYPE = local |
|
|
|
PATH = /data/gitea/archives |
|
|
|
|
|
|
|
[repo-archive] |
|
|
|
PATH = /tmp/gitea/archives |
|
|
|
`, []testLocalStoragePathCase{ |
|
|
|
{loadPackagesFrom, &Packages.Storage, "/appdata/packages"}, |
|
|
|
{loadRepoArchiveFrom, &RepoArchive.Storage, "/tmp/gitea/archives"}, |
|
|
|
{loadActionsFrom, &Actions.LogStorage, "/appdata/actions_log"}, |
|
|
|
{loadAvatarsFrom, &Avatar.Storage, "/appdata/avatars"}, |
|
|
|
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/repo-avatars"}, |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func Test_getStorageInheritStorageTypeLocalPathOverride5(t *testing.T) { |
|
|
|
testLocalStoragePath(t, "/appdata", ` |
|
|
|
[storage.repo-archive] |
|
|
|
STORAGE_TYPE = local |
|
|
|
PATH = /data/gitea/archives |
|
|
|
|
|
|
|
[repo-archive] |
|
|
|
`, []testLocalStoragePathCase{ |
|
|
|
{loadPackagesFrom, &Packages.Storage, "/appdata/packages"}, |
|
|
|
{loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/archives"}, |
|
|
|
{loadActionsFrom, &Actions.LogStorage, "/appdata/actions_log"}, |
|
|
|
{loadAvatarsFrom, &Avatar.Storage, "/appdata/avatars"}, |
|
|
|
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/repo-avatars"}, |
|
|
|
}) |
|
|
|
} |