config: remove log.Fatal from loading config file #5234

This commit is contained in:
Nick Craig-Wood 2021-04-12 17:36:59 +01:00
parent 2fe4fe2766
commit 661fa5786d
15 changed files with 30 additions and 19 deletions

View File

@ -20,7 +20,7 @@ var (
) )
func prepare(t *testing.T, root string) { func prepare(t *testing.T, root string) {
configfile.LoadConfig(context.Background()) require.NoError(t, configfile.LoadConfig(context.Background()))
// Configure the remote // Configure the remote
config.FileSet(remoteName, "type", "alias") config.FileSet(remoteName, "type", "alias")

View File

@ -47,7 +47,7 @@ func prepareServer(t *testing.T) (configmap.Simple, func()) {
ts := httptest.NewServer(handler) ts := httptest.NewServer(handler)
// Configure the remote // Configure the remote
configfile.LoadConfig(context.Background()) require.NoError(t, configfile.LoadConfig(context.Background()))
// fs.Config.LogLevel = fs.LogLevelDebug // fs.Config.LogLevel = fs.LogLevelDebug
// fs.Config.DumpHeaders = true // fs.Config.DumpHeaders = true
// fs.Config.DumpBodies = true // fs.Config.DumpBodies = true

View File

@ -400,7 +400,10 @@ func initConfig() {
configflags.SetFlags(ci) configflags.SetFlags(ci)
// Load the config // Load the config
configfile.LoadConfig(ctx) err := configfile.LoadConfig(ctx)
if err != nil {
log.Fatalf("Failed to load config: %v", err)
}
// Start accounting // Start accounting
accounting.Start(ctx) accounting.Start(ctx)
@ -411,7 +414,7 @@ func initConfig() {
} }
// Load filters // Load filters
err := filterflags.Reload(ctx) err = filterflags.Reload(ctx)
if err != nil { if err != nil {
log.Fatalf("Failed to load filters: %v", err) log.Fatalf("Failed to load filters: %v", err)
} }

View File

@ -21,7 +21,7 @@ import (
func TestRc(t *testing.T) { func TestRc(t *testing.T) {
ctx := context.Background() ctx := context.Background()
configfile.LoadConfig(ctx) require.NoError(t, configfile.LoadConfig(ctx))
mount := rc.Calls.Get("mount/mount") mount := rc.Calls.Get("mount/mount")
assert.NotNil(t, mount) assert.NotNil(t, mount)
unmount := rc.Calls.Get("mount/unmount") unmount := rc.Calls.Get("mount/unmount")

View File

@ -41,7 +41,7 @@ func startServer(t *testing.T, f fs.Fs) {
} }
func TestInit(t *testing.T) { func TestInit(t *testing.T) {
configfile.LoadConfig(context.Background()) require.NoError(t, configfile.LoadConfig(context.Background()))
f, err := fs.NewFs(context.Background(), "testdata/files") f, err := fs.NewFs(context.Background(), "testdata/files")
l, _ := f.List(context.Background(), "") l, _ := f.List(context.Background(), "")

View File

@ -61,7 +61,7 @@ var (
func TestInit(t *testing.T) { func TestInit(t *testing.T) {
ctx := context.Background() ctx := context.Background()
// Configure the remote // Configure the remote
configfile.LoadConfig(context.Background()) require.NoError(t, configfile.LoadConfig(context.Background()))
// fs.Config.LogLevel = fs.LogLevelDebug // fs.Config.LogLevel = fs.LogLevelDebug
// fs.Config.DumpHeaders = true // fs.Config.DumpHeaders = true
// fs.Config.DumpBodies = true // fs.Config.DumpBodies = true

View File

@ -66,7 +66,7 @@ func createOverwriteDeleteSeq(t testing.TB, path string) []TestRequest {
// TestResticHandler runs tests on the restic handler code, especially in append-only mode. // TestResticHandler runs tests on the restic handler code, especially in append-only mode.
func TestResticHandler(t *testing.T) { func TestResticHandler(t *testing.T) {
ctx := context.Background() ctx := context.Background()
configfile.LoadConfig(ctx) require.NoError(t, configfile.LoadConfig(ctx))
buf := make([]byte, 32) buf := make([]byte, 32)
_, err := io.ReadFull(rand.Reader, buf) _, err := io.ReadFull(rand.Reader, buf)
require.NoError(t, err) require.NoError(t, err)

View File

@ -5,7 +5,6 @@ import (
"context" "context"
"encoding/json" "encoding/json"
"fmt" "fmt"
"log"
mathrand "math/rand" mathrand "math/rand"
"os" "os"
"path/filepath" "path/filepath"
@ -328,7 +327,7 @@ func SetConfigPath(path string) (err error) {
} }
// LoadConfig loads the config file // LoadConfig loads the config file
func LoadConfig(ctx context.Context) { func LoadConfig(ctx context.Context) error {
// Set RCLONE_CONFIG_DIR for backend config and subprocesses // Set RCLONE_CONFIG_DIR for backend config and subprocesses
// If empty configPath (in-memory only) the value will be "." // If empty configPath (in-memory only) the value will be "."
_ = os.Setenv("RCLONE_CONFIG_DIR", filepath.Dir(configPath)) _ = os.Setenv("RCLONE_CONFIG_DIR", filepath.Dir(configPath))
@ -340,10 +339,12 @@ func LoadConfig(ctx context.Context) {
fs.Logf(nil, "Config file %q not found - using defaults", configPath) fs.Logf(nil, "Config file %q not found - using defaults", configPath)
} }
} else if err != nil { } else if err != nil {
log.Fatalf("Failed to load config file %q: %v", configPath, err) fs.Errorf(nil, "Failed to load config file %q: %v", configPath, err)
return errors.Wrap(err, "failed to load config file")
} else { } else {
fs.Debugf(nil, "Using config file from %q", configPath) fs.Debugf(nil, "Using config file from %q", configPath)
} }
return nil
} }
// ErrorConfigFileNotFound is returned when the config file is not found // ErrorConfigFileNotFound is returned when the config file is not found

View File

@ -9,6 +9,7 @@ import (
"github.com/rclone/rclone/fs/config" "github.com/rclone/rclone/fs/config"
"github.com/rclone/rclone/fs/config/configfile" "github.com/rclone/rclone/fs/config/configfile"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
) )
func TestConfigLoad(t *testing.T) { func TestConfigLoad(t *testing.T) {
@ -18,7 +19,7 @@ func TestConfigLoad(t *testing.T) {
assert.NoError(t, config.SetConfigPath(oldConfigPath)) assert.NoError(t, config.SetConfigPath(oldConfigPath))
}() }()
config.ClearConfigPassword() config.ClearConfigPassword()
configfile.LoadConfig(context.Background()) require.NoError(t, configfile.LoadConfig(context.Background()))
sections := config.Data.GetSectionList() sections := config.Data.GetSectionList()
var expect = []string{"RCLONE_ENCRYPT_V0", "nounc", "unc"} var expect = []string{"RCLONE_ENCRYPT_V0", "nounc", "unc"}
assert.Equal(t, expect, sections) assert.Equal(t, expect, sections)

View File

@ -16,9 +16,9 @@ import (
) )
// LoadConfig installs the config file handler and calls config.LoadConfig // LoadConfig installs the config file handler and calls config.LoadConfig
func LoadConfig(ctx context.Context) { func LoadConfig(ctx context.Context) error {
config.Data = &Storage{} config.Data = &Storage{}
config.LoadConfig(ctx) return config.LoadConfig(ctx)
} }
// Storage implements config.Storage for saving and loading config // Storage implements config.Storage for saving and loading config

View File

@ -18,7 +18,7 @@ const testName = "configTestNameForRc"
func TestRc(t *testing.T) { func TestRc(t *testing.T) {
ctx := context.Background() ctx := context.Background()
configfile.LoadConfig(ctx) require.NoError(t, configfile.LoadConfig(ctx))
// Create the test remote // Create the test remote
call := rc.Calls.Get("config/create") call := rc.Calls.Get("config/create")
assert.NotNil(t, call) assert.NotNil(t, call)

View File

@ -43,7 +43,7 @@ func testConfigFile(t *testing.T, configFileName string) func() {
assert.NoError(t, config.SetConfigPath(path)) assert.NoError(t, config.SetConfigPath(path))
ci = &fs.ConfigInfo{} ci = &fs.ConfigInfo{}
configfile.LoadConfig(ctx) require.NoError(t, configfile.LoadConfig(ctx))
assert.Equal(t, []string{}, config.Data.GetSectionList()) assert.Equal(t, []string{}, config.Data.GetSectionList())
// Fake a remote // Fake a remote

View File

@ -103,7 +103,7 @@ type testRun struct {
// Run a suite of tests // Run a suite of tests
func testServer(t *testing.T, tests []testRun, opt *rc.Options) { func testServer(t *testing.T, tests []testRun, opt *rc.Options) {
ctx := context.Background() ctx := context.Background()
configfile.LoadConfig(ctx) require.NoError(t, configfile.LoadConfig(ctx))
mux := http.NewServeMux() mux := http.NewServeMux()
opt.HTTPOptions.Template = testTemplate opt.HTTPOptions.Template = testTemplate
rcServer := newServer(ctx, opt, mux) rcServer := newServer(ctx, opt, mux)

View File

@ -71,7 +71,10 @@ func Initialise() {
if envConfig := os.Getenv("RCLONE_CONFIG"); envConfig != "" { if envConfig := os.Getenv("RCLONE_CONFIG"); envConfig != "" {
_ = config.SetConfigPath(envConfig) _ = config.SetConfigPath(envConfig)
} }
configfile.LoadConfig(ctx) err := configfile.LoadConfig(ctx)
if err != nil {
log.Fatalf("Initialise failed to load config: %v", err)
}
accounting.Start(ctx) accounting.Start(ctx)
if *Verbose { if *Verbose {
ci.LogLevel = fs.LogLevelDebug ci.LogLevel = fs.LogLevelDebug

View File

@ -72,7 +72,10 @@ func main() {
log.Println("test_all should be run from the root of the rclone source code") log.Println("test_all should be run from the root of the rclone source code")
log.Fatal(err) log.Fatal(err)
} }
configfile.LoadConfig(context.Background()) err = configfile.LoadConfig(context.Background())
if err != nil {
log.Fatalf("Failed to load config: %v", err)
}
// Seed the random number generator // Seed the random number generator
rand.Seed(time.Now().UTC().UnixNano()) rand.Seed(time.Now().UTC().UnixNano())