mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-20 04:15:18 +02:00
fix: seek write of dbfs
This commit is contained in:
parent
15db111df1
commit
c42577642d
@ -38,7 +38,7 @@ type file struct {
|
|||||||
var _ File = (*file)(nil)
|
var _ File = (*file)(nil)
|
||||||
|
|
||||||
func (f *file) readAt(fileMeta *FileMeta, offset int64, p []byte) (n int, err error) {
|
func (f *file) readAt(fileMeta *FileMeta, offset int64, p []byte) (n int, err error) {
|
||||||
if f.offset >= fileMeta.FileSize {
|
if offset >= fileMeta.FileSize {
|
||||||
return 0, io.EOF
|
return 0, io.EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,9 +13,8 @@ import (
|
|||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
"code.gitea.io/gitea/models/unittest"
|
"code.gitea.io/gitea/models/unittest"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func changeDefaultFileBlockSize(n int64) (restore func()) {
|
func changeDefaultFileBlockSize(n int64) (restore func()) {
|
||||||
@ -152,3 +151,36 @@ func TestDbfsReadWrite(t *testing.T) {
|
|||||||
_, err = f2r.ReadString('\n')
|
_, err = f2r.ReadString('\n')
|
||||||
assert.ErrorIs(t, err, io.EOF)
|
assert.ErrorIs(t, err, io.EOF)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDbfsSeekWrite(t *testing.T) {
|
||||||
|
defer changeDefaultFileBlockSize(4)()
|
||||||
|
|
||||||
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||||
|
|
||||||
|
f, err := OpenFile(db.DefaultContext, "test2.log", os.O_RDWR|os.O_CREATE)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
n, err := f.Write([]byte("111"))
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
_, err = f.Seek(int64(n), io.SeekStart)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
_, err = f.Write([]byte("222"))
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
_, err = f.Seek(int64(n), io.SeekStart)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
_, err = f.Write([]byte("333"))
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
fr, err := OpenFile(db.DefaultContext, "test2.log", os.O_RDONLY)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
buf, err := io.ReadAll(fr)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, "111333", string(buf))
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user