mirror of https://github.com/go-gitea/gitea.git
Browse Source
Backport #35198 by @lunny Fix #31113 After #22385 introduced LFS GC, it never worked due to a bug in the INI library: fields in structs embedded more than one level deep are not populated from the INI file. This PR fixes the issue by replacing the multi-level embedded struct with a single-level struct for parsing the cron.gc_lfs configuration. Added a new test for retrieving cron settings to demonstrate the bug in the INI package. Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>pull/35261/head
3 changed files with 126 additions and 21 deletions
@ -0,0 +1,51 @@ |
|||||||
|
// Copyright 2025 The Gitea Authors. All rights reserved.
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
package cron |
||||||
|
|
||||||
|
import ( |
||||||
|
"testing" |
||||||
|
"time" |
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/setting" |
||||||
|
"code.gitea.io/gitea/modules/test" |
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert" |
||||||
|
) |
||||||
|
|
||||||
|
func Test_GCLFSConfig(t *testing.T) { |
||||||
|
cfg, err := setting.NewConfigProviderFromData(` |
||||||
|
[cron.gc_lfs] |
||||||
|
ENABLED = true |
||||||
|
RUN_AT_START = true |
||||||
|
SCHEDULE = "@every 2h" |
||||||
|
OLDER_THAN = "1h" |
||||||
|
LAST_UPDATED_MORE_THAN_AGO = "7h" |
||||||
|
NUMBER_TO_CHECK_PER_REPO = 10 |
||||||
|
PROPORTION_TO_CHECK_PER_REPO = 0.1 |
||||||
|
`) |
||||||
|
assert.NoError(t, err) |
||||||
|
defer test.MockVariableValue(&setting.CfgProvider, cfg)() |
||||||
|
|
||||||
|
config := &GCLFSConfig{ |
||||||
|
BaseConfig: BaseConfig{ |
||||||
|
Enabled: false, |
||||||
|
RunAtStart: false, |
||||||
|
Schedule: "@every 24h", |
||||||
|
}, |
||||||
|
OlderThan: 24 * time.Hour * 7, |
||||||
|
LastUpdatedMoreThanAgo: 24 * time.Hour * 3, |
||||||
|
NumberToCheckPerRepo: 100, |
||||||
|
ProportionToCheckPerRepo: 0.6, |
||||||
|
} |
||||||
|
|
||||||
|
_, err = setting.GetCronSettings("gc_lfs", config) |
||||||
|
assert.NoError(t, err) |
||||||
|
assert.True(t, config.Enabled) |
||||||
|
assert.True(t, config.RunAtStart) |
||||||
|
assert.Equal(t, "@every 2h", config.Schedule) |
||||||
|
assert.Equal(t, 1*time.Hour, config.OlderThan) |
||||||
|
assert.Equal(t, 7*time.Hour, config.LastUpdatedMoreThanAgo) |
||||||
|
assert.Equal(t, int64(10), config.NumberToCheckPerRepo) |
||||||
|
assert.InDelta(t, 0.1, config.ProportionToCheckPerRepo, 0.001) |
||||||
|
} |
||||||
Loading…
Reference in new issue