mirror of
https://github.com/jimeh/go-golden.git
synced 2026-02-19 03:16:38 +00:00
81 lines
2.0 KiB
Go
81 lines
2.0 KiB
Go
package golden
|
|
|
|
import "os"
|
|
|
|
type Option interface {
|
|
apply(*gold)
|
|
}
|
|
|
|
type optionFunc func(*gold)
|
|
|
|
func (fn optionFunc) apply(g *gold) {
|
|
fn(g)
|
|
}
|
|
|
|
// WithDirMode sets the file system permissions used for any folders created to
|
|
// hold golden files.
|
|
//
|
|
// When this option is not provided, the default value is 0o755.
|
|
func WithDirMode(mode os.FileMode) Option {
|
|
return optionFunc(func(g *gold) {
|
|
g.dirMode = mode
|
|
})
|
|
}
|
|
|
|
// WithFileMode sets the file system permissions used for any created or updated
|
|
// golden files written to.
|
|
//
|
|
// When this option is not provided, the default value is 0o644.
|
|
func WithFileMode(mode os.FileMode) Option {
|
|
return optionFunc(func(g *gold) {
|
|
g.fileMode = mode
|
|
})
|
|
}
|
|
|
|
// WithSuffix sets the filename suffix used for all golden files.
|
|
//
|
|
// When this option is not provided, the default value is ".golden".
|
|
func WithSuffix(suffix string) Option {
|
|
return optionFunc(func(g *gold) {
|
|
g.suffix = suffix
|
|
})
|
|
}
|
|
|
|
// WithDirname sets the name of the top-level directory used to hold golden
|
|
// files.
|
|
//
|
|
// When this option is not provided, the default value is "testdata".
|
|
func WithDirname(name string) Option {
|
|
return optionFunc(func(g *gold) {
|
|
g.dirname = name
|
|
})
|
|
}
|
|
|
|
// WithUpdateFunc sets the function used to determine if golden files should be
|
|
// updated or not. Essentially the provided UpdateFunc is called by Update().
|
|
//
|
|
// When this option is not provided, the default value is EnvUpdateFunc.
|
|
func WithUpdateFunc(fn UpdateFunc) Option {
|
|
return optionFunc(func(g *gold) {
|
|
g.updateFunc = fn
|
|
})
|
|
}
|
|
|
|
// WithFS sets the afero.Fs instance which is used for all file system
|
|
// operations to read/write golden files.
|
|
//
|
|
// When this option is not provided, the default value is afero.NewOsFs().
|
|
func WithFS(fs FS) Option {
|
|
return optionFunc(func(g *gold) {
|
|
g.fs = fs
|
|
})
|
|
}
|
|
|
|
// WithSilentWrites silences the "golden: writing [...]" log messages whenever
|
|
// set functions write a golden file to disk.
|
|
func WithSilentWrites() Option {
|
|
return optionFunc(func(g *gold) {
|
|
g.logOnWrite = false
|
|
})
|
|
}
|