From 311c975911125935d5f05f37660d9b6c973a2846 Mon Sep 17 00:00:00 2001 From: Ingo Oppermann Date: Thu, 25 Aug 2022 10:09:25 +0300 Subject: [PATCH] Fix restreamer tests --- io/fs/dummy.go | 6 ++++-- restream/restream.go | 51 ++++++++++++++++++++++++++++++-------------- 2 files changed, 39 insertions(+), 18 deletions(-) diff --git a/io/fs/dummy.go b/io/fs/dummy.go index d1b48f7d..b8e36ad1 100644 --- a/io/fs/dummy.go +++ b/io/fs/dummy.go @@ -22,12 +22,13 @@ func (d *dummyFile) Stat() (FileInfo, error) { return &dummyFileInfo{}, nil } type dummyFilesystem struct { name string + typ string } func (d *dummyFilesystem) Name() string { return d.name } func (d *dummyFilesystem) Base() string { return "/" } func (d *dummyFilesystem) Rebase(string) error { return nil } -func (d *dummyFilesystem) Type() string { return "dummy" } +func (d *dummyFilesystem) Type() string { return d.typ } func (d *dummyFilesystem) Size() (int64, int64) { return 0, -1 } func (d *dummyFilesystem) Resize(int64) {} func (d *dummyFilesystem) Files() int64 { return 0 } @@ -39,8 +40,9 @@ func (d *dummyFilesystem) DeleteAll() int64 { return func (d *dummyFilesystem) List(string) []FileInfo { return []FileInfo{} } // NewDummyFilesystem return a dummy filesystem -func NewDummyFilesystem(name string) Filesystem { +func NewDummyFilesystem(name, typ string) Filesystem { return &dummyFilesystem{ name: name, + typ: typ, } } diff --git a/restream/restream.go b/restream/restream.go index d8cc3240..5f6e8d44 100644 --- a/restream/restream.go +++ b/restream/restream.go @@ -595,16 +595,23 @@ func (r *restream) validateConfig(config *app.Config) (bool, error) { return false, fmt.Errorf("the address for input '#%s:%s' must not be empty", config.ID, io.ID) } - maxFails := 0 - for _, fs := range r.fs.diskfs { - io.Address, err = r.validateInputAddress(io.Address, fs.Base()) - if err != nil { - maxFails++ + if len(r.fs.diskfs) != 0 { + maxFails := 0 + for _, fs := range r.fs.diskfs { + io.Address, err = r.validateInputAddress(io.Address, fs.Base()) + if err != nil { + maxFails++ + } } - } - if maxFails == len(r.fs.diskfs) { - return false, fmt.Errorf("the address for input '#%s:%s' (%s) is invalid: %w", config.ID, io.ID, io.Address, err) + if maxFails == len(r.fs.diskfs) { + return false, fmt.Errorf("the address for input '#%s:%s' (%s) is invalid: %w", config.ID, io.ID, io.Address, err) + } + } else { + io.Address, err = r.validateInputAddress(io.Address, "/") + if err != nil { + return false, fmt.Errorf("the address for input '#%s:%s' (%s) is invalid: %w", config.ID, io.ID, io.Address, err) + } } } @@ -634,22 +641,34 @@ func (r *restream) validateConfig(config *app.Config) (bool, error) { return false, fmt.Errorf("the address for output '#%s:%s' must not be empty", config.ID, io.ID) } - maxFails := 0 - for _, fs := range r.fs.diskfs { + if len(r.fs.diskfs) != 0 { + maxFails := 0 + for _, fs := range r.fs.diskfs { + isFile := false + io.Address, isFile, err = r.validateOutputAddress(io.Address, fs.Base()) + if err != nil { + maxFails++ + } + + if isFile { + hasFiles = true + } + } + + if maxFails == len(r.fs.diskfs) { + return false, fmt.Errorf("the address for output '#%s:%s' is invalid: %w", config.ID, io.ID, err) + } + } else { isFile := false - io.Address, isFile, err = r.validateOutputAddress(io.Address, fs.Base()) + io.Address, isFile, err = r.validateOutputAddress(io.Address, "/") if err != nil { - maxFails++ + return false, fmt.Errorf("the address for output '#%s:%s' is invalid: %w", config.ID, io.ID, err) } if isFile { hasFiles = true } } - - if maxFails == len(r.fs.diskfs) { - return false, fmt.Errorf("the address for output '#%s:%s' is invalid: %w", config.ID, io.ID, err) - } } return hasFiles, nil