From 4240bd1bbed3ce559038806f8abcb6149b353214 Mon Sep 17 00:00:00 2001 From: GGP1 Date: Sun, 28 Jul 2024 13:17:08 -0300 Subject: [PATCH] Use compression if the content is not empty --- commands/file/mv/mv_test.go | 5 ----- db/file/file.go | 8 ++++++++ db/file/file_test.go | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/commands/file/mv/mv_test.go b/commands/file/mv/mv_test.go index f8a7eb9..9417f6a 100644 --- a/commands/file/mv/mv_test.go +++ b/commands/file/mv/mv_test.go @@ -1,7 +1,6 @@ package mv import ( - "runtime" "strconv" "strings" "testing" @@ -75,10 +74,6 @@ func TestMvFileIntoDir(t *testing.T) { } func TestMvErrors(t *testing.T) { - if runtime.GOOS != "windows" { - t.Skip("For some strange reason this test fails in unix systems because the database file throws \"bad file descriptor\"") - } - db := cmdutil.SetContext(t) createFile(t, db, "exists") dir := "dir/" diff --git a/db/file/file.go b/db/file/file.go index 49399a6..9c146b9 100644 --- a/db/file/file.go +++ b/db/file/file.go @@ -130,6 +130,10 @@ func Rename(db *bolt.DB, oldName, newName string) error { } func compress(content []byte) ([]byte, error) { + if len(content) == 0 { + return nil, nil + } + var gzipBuf bytes.Buffer gw := gzip.NewWriter(&gzipBuf) @@ -145,6 +149,10 @@ func compress(content []byte) ([]byte, error) { } func decompress(content []byte) ([]byte, error) { + if len(content) == 0 { + return nil, nil + } + compressed := bytes.NewBuffer(content) gr, err := gzip.NewReader(compressed) if err != nil { diff --git a/db/file/file_test.go b/db/file/file_test.go index c829647..86ca3e7 100644 --- a/db/file/file_test.go +++ b/db/file/file_test.go @@ -202,6 +202,38 @@ func TestKeyError(t *testing.T) { assert.Error(t, err) } +func TestCompression(t *testing.T) { + content := []byte{1, 2, 3} + + compressed, err := compress(content) + assert.NoError(t, err) + + assert.NotEqual(t, content, compressed) + + decompressed, err := decompress(compressed) + assert.NoError(t, err) + + assert.Equal(t, content, decompressed) +} + +func TestCompressNil(t *testing.T) { + var content []byte + + compressed, err := compress(content) + assert.NoError(t, err) + + assert.Equal(t, content, compressed) +} + +func TestDecompressNil(t *testing.T) { + var content []byte + + decompressed, err := decompress(content) + assert.NoError(t, err) + + assert.Equal(t, content, decompressed) +} + func setContext(t testing.TB) *bolt.DB { return dbutil.SetContext(t, bucket.File.GetName()) }