diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2017-02-05 10:20:06 +0700 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2017-02-17 17:15:26 +0100 |
commit | 93ca7c9e958e34469a337e4efcc7c75774ec50fd (patch) | |
tree | 5dfa296cfe74fd5ef8f0d41ea4078704f453aa04 /hugofs | |
parent | e34af6ee30f70f5780a281e2fd8f4ed9b487ee61 (diff) | |
download | hugo-93ca7c9e958e34469a337e4efcc7c75774ec50fd.tar.gz hugo-93ca7c9e958e34469a337e4efcc7c75774ec50fd.zip |
all: Refactor to nonglobal Viper, i18n etc.
This is a final rewrite that removes all the global state in Hugo, which also enables
the use if `t.Parallel` in tests.
Updates #2701
Fixes #3016
Diffstat (limited to 'hugofs')
-rw-r--r-- | hugofs/fs.go | 25 | ||||
-rw-r--r-- | hugofs/fs_test.go | 19 |
2 files changed, 23 insertions, 21 deletions
diff --git a/hugofs/fs.go b/hugofs/fs.go index 3afa17956..1ddb98214 100644 --- a/hugofs/fs.go +++ b/hugofs/fs.go @@ -16,7 +16,7 @@ package hugofs import ( "github.com/spf13/afero" - "github.com/spf13/viper" + "github.com/spf13/hugo/config" ) // Os points to an Os Afero file system. @@ -39,30 +39,37 @@ type Fs struct { // NewDefault creates a new Fs with the OS file system // as source and destination file systems. -func NewDefault() *Fs { +func NewDefault(cfg config.Provider) *Fs { fs := &afero.OsFs{} - return newFs(fs) + return newFs(fs, cfg) } // NewDefault creates a new Fs with the MemMapFs // as source and destination file systems. // Useful for testing. -func NewMem() *Fs { +func NewMem(cfg config.Provider) *Fs { fs := &afero.MemMapFs{} - return newFs(fs) + return newFs(fs, cfg) } -func newFs(base afero.Fs) *Fs { +// NewFrom creates a new Fs based on the provided Afero Fs +// as source and destination file systems. +// Useful for testing. +func NewFrom(fs afero.Fs, cfg config.Provider) *Fs { + return newFs(fs, cfg) +} + +func newFs(base afero.Fs, cfg config.Provider) *Fs { return &Fs{ Source: base, Destination: base, Os: &afero.OsFs{}, - WorkingDir: getWorkingDirFs(base), + WorkingDir: getWorkingDirFs(base, cfg), } } -func getWorkingDirFs(base afero.Fs) *afero.BasePathFs { - workingDir := viper.GetString("workingDir") +func getWorkingDirFs(base afero.Fs, cfg config.Provider) *afero.BasePathFs { + workingDir := cfg.GetString("workingDir") if workingDir != "" { return afero.NewBasePathFs(afero.NewReadOnlyFs(base), workingDir).(*afero.BasePathFs) diff --git a/hugofs/fs_test.go b/hugofs/fs_test.go index 5482e6d27..95900e6a2 100644 --- a/hugofs/fs_test.go +++ b/hugofs/fs_test.go @@ -22,10 +22,8 @@ import ( ) func TestNewDefault(t *testing.T) { - viper.Reset() - defer viper.Reset() - - f := NewDefault() + v := viper.New() + f := NewDefault(v) assert.NotNil(t, f.Source) assert.IsType(t, new(afero.OsFs), f.Source) @@ -39,10 +37,8 @@ func TestNewDefault(t *testing.T) { } func TestNewMem(t *testing.T) { - viper.Reset() - defer viper.Reset() - - f := NewMem() + v := viper.New() + f := NewMem(v) assert.NotNil(t, f.Source) assert.IsType(t, new(afero.MemMapFs), f.Source) @@ -53,12 +49,11 @@ func TestNewMem(t *testing.T) { } func TestWorkingDir(t *testing.T) { - viper.Reset() - defer viper.Reset() + v := viper.New() - viper.Set("workingDir", "/a/b/") + v.Set("workingDir", "/a/b/") - f := NewMem() + f := NewMem(v) assert.NotNil(t, f.WorkingDir) assert.IsType(t, new(afero.BasePathFs), f.WorkingDir) |