fix: clean up log files that no longer exist

- If for some reason a action log file does not longer exist in the
database or on the file system, then mark it as being cleaned up.
- Unit test added.
This commit is contained in:
Gusted 2024-12-03 05:00:50 +01:00
parent fe246cc060
commit 4e8677a911
No known key found for this signature in database
GPG key ID: FD821B732837125F
2 changed files with 34 additions and 1 deletions

View file

@ -0,0 +1,31 @@
// Copyright 2024 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: GPL-3.0-or-later
package actions
import (
"testing"
actions_model "code.gitea.io/gitea/models/actions"
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/models/unittest"
"code.gitea.io/gitea/modules/timeutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestCleanup(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
t.Run("Deletes no longer existing logs", func(t *testing.T) {
unittest.AssertSuccessfulInsert(t, &actions_model.ActionTask{ID: 1001, LogExpired: false, LogIndexes: []int64{1, 2, 3, 4}, LogFilename: "does-not-exist", Stopped: timeutil.TimeStamp(1)})
require.NoError(t, CleanupLogs(db.DefaultContext))
task := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionTask{ID: 1001})
assert.EqualValues(t, "does-not-exist", task.LogFilename)
assert.True(t, task.LogExpired)
assert.Nil(t, task.LogIndexes)
})
}