From 01f0db4e56b04a4d86f394ca083e7770a21d2240 Mon Sep 17 00:00:00 2001 From: Michael Eischer Date: Sat, 29 Oct 2022 22:03:39 +0200 Subject: [PATCH] return error if RESTIC_COMPRESSION env variable is invalid --- internal/repository/repository.go | 12 +++++++++--- internal/repository/repository_test.go | 8 ++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/internal/repository/repository.go b/internal/repository/repository.go index 3cae7c597..c7ce46bdb 100644 --- a/internal/repository/repository.go +++ b/internal/repository/repository.go @@ -67,9 +67,10 @@ type CompressionMode uint // Constants for the different compression levels. const ( - CompressionAuto CompressionMode = 0 - CompressionOff CompressionMode = 1 - CompressionMax CompressionMode = 2 + CompressionAuto CompressionMode = 0 + CompressionOff CompressionMode = 1 + CompressionMax CompressionMode = 2 + CompressionInvalid CompressionMode = 3 ) // Set implements the method needed for pflag command flag parsing. @@ -82,6 +83,7 @@ func (c *CompressionMode) Set(s string) error { case "max": *c = CompressionMax default: + *c = CompressionInvalid return fmt.Errorf("invalid compression mode %q, must be one of (auto|off|max)", s) } @@ -107,6 +109,10 @@ func (c *CompressionMode) Type() string { // New returns a new repository with backend be. func New(be restic.Backend, opts Options) (*Repository, error) { + if opts.Compression == CompressionInvalid { + return nil, errors.Fatalf("invalid compression mode") + } + if opts.PackSize == 0 { opts.PackSize = DefaultPackSize } diff --git a/internal/repository/repository_test.go b/internal/repository/repository_test.go index 7b5789605..8b10424d0 100644 --- a/internal/repository/repository_test.go +++ b/internal/repository/repository_test.go @@ -679,3 +679,11 @@ func testStreamPack(t *testing.T, version uint) { } }) } + +func TestInvalidCompression(t *testing.T) { + var comp repository.CompressionMode + err := comp.Set("nope") + rtest.Assert(t, err != nil, "missing error") + _, err = repository.New(nil, repository.Options{Compression: comp}) + rtest.Assert(t, err != nil, "missing error") +}