mirror of
https://github.com/rclone/rclone.git
synced 2024-11-23 15:25:06 +08:00
f111e0eaf8
This adds AddOverrideGetter and GetOverride methods to config map and uses them in fs.ConfigMap. This enables us to tell which values have been set and which are just read from the config file or at their defaults. This also deletes the unused AddGetters method in configmap.
166 lines
3.0 KiB
Go
166 lines
3.0 KiB
Go
package configmap
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
var (
|
|
_ Mapper = Simple(nil)
|
|
_ Getter = Simple(nil)
|
|
_ Setter = Simple(nil)
|
|
)
|
|
|
|
func TestConfigMapGet(t *testing.T) {
|
|
m := New()
|
|
|
|
value, found := m.Get("config1")
|
|
assert.Equal(t, "", value)
|
|
assert.Equal(t, false, found)
|
|
|
|
value, found = m.Get("config2")
|
|
assert.Equal(t, "", value)
|
|
assert.Equal(t, false, found)
|
|
|
|
m1 := Simple{
|
|
"config1": "one",
|
|
}
|
|
|
|
m.AddGetter(m1)
|
|
|
|
value, found = m.Get("config1")
|
|
assert.Equal(t, "one", value)
|
|
assert.Equal(t, true, found)
|
|
|
|
value, found = m.Get("config2")
|
|
assert.Equal(t, "", value)
|
|
assert.Equal(t, false, found)
|
|
|
|
m2 := Simple{
|
|
"config1": "one2",
|
|
"config2": "two2",
|
|
}
|
|
|
|
m.AddGetter(m2)
|
|
|
|
value, found = m.Get("config1")
|
|
assert.Equal(t, "one", value)
|
|
assert.Equal(t, true, found)
|
|
|
|
value, found = m.Get("config2")
|
|
assert.Equal(t, "two2", value)
|
|
assert.Equal(t, true, found)
|
|
|
|
}
|
|
|
|
func TestConfigMapSet(t *testing.T) {
|
|
m := New()
|
|
|
|
m1 := Simple{
|
|
"config1": "one",
|
|
}
|
|
m2 := Simple{
|
|
"config1": "one2",
|
|
"config2": "two2",
|
|
}
|
|
|
|
m.AddSetter(m1).AddSetter(m2)
|
|
|
|
m.Set("config2", "potato")
|
|
|
|
assert.Equal(t, Simple{
|
|
"config1": "one",
|
|
"config2": "potato",
|
|
}, m1)
|
|
assert.Equal(t, Simple{
|
|
"config1": "one2",
|
|
"config2": "potato",
|
|
}, m2)
|
|
|
|
m.Set("config1", "beetroot")
|
|
|
|
assert.Equal(t, Simple{
|
|
"config1": "beetroot",
|
|
"config2": "potato",
|
|
}, m1)
|
|
assert.Equal(t, Simple{
|
|
"config1": "beetroot",
|
|
"config2": "potato",
|
|
}, m2)
|
|
}
|
|
|
|
func TestConfigMapGetOverride(t *testing.T) {
|
|
m := New()
|
|
|
|
value, found := m.GetOverride("config1")
|
|
assert.Equal(t, "", value)
|
|
assert.Equal(t, false, found)
|
|
|
|
value, found = m.GetOverride("config2")
|
|
assert.Equal(t, "", value)
|
|
assert.Equal(t, false, found)
|
|
|
|
m1 := Simple{
|
|
"config1": "one",
|
|
}
|
|
|
|
m.AddOverrideGetter(m1)
|
|
|
|
value, found = m.GetOverride("config1")
|
|
assert.Equal(t, "one", value)
|
|
assert.Equal(t, true, found)
|
|
|
|
value, found = m.GetOverride("config2")
|
|
assert.Equal(t, "", value)
|
|
assert.Equal(t, false, found)
|
|
|
|
m2 := Simple{
|
|
"config1": "one2",
|
|
"config2": "two2",
|
|
}
|
|
|
|
m.AddGetter(m2)
|
|
|
|
value, found = m.GetOverride("config1")
|
|
assert.Equal(t, "one", value)
|
|
assert.Equal(t, true, found)
|
|
|
|
value, found = m.GetOverride("config2")
|
|
assert.Equal(t, "", value)
|
|
assert.Equal(t, false, found)
|
|
|
|
value, found = m.Get("config1")
|
|
assert.Equal(t, "one", value)
|
|
assert.Equal(t, true, found)
|
|
|
|
value, found = m.Get("config2")
|
|
assert.Equal(t, "two2", value)
|
|
assert.Equal(t, true, found)
|
|
|
|
}
|
|
|
|
func TestSimpleString(t *testing.T) {
|
|
// Basic
|
|
assert.Equal(t, "", Simple(nil).String())
|
|
assert.Equal(t, "", Simple{}.String())
|
|
assert.Equal(t, "config1='one'", Simple{
|
|
"config1": "one",
|
|
}.String())
|
|
|
|
// Check ordering
|
|
assert.Equal(t, "config1='one',config2='two',config3='three',config4='four',config5='five'", Simple{
|
|
"config5": "five",
|
|
"config4": "four",
|
|
"config3": "three",
|
|
"config2": "two",
|
|
"config1": "one",
|
|
}.String())
|
|
|
|
// Check escaping
|
|
assert.Equal(t, "apple='',config1='o''n''e'", Simple{
|
|
"config1": "o'n'e",
|
|
"apple": "",
|
|
}.String())
|
|
}
|