Dies ist eine experimentelle Umsetzung im folgenden aufgeführten Ziele. Wie es verwendet: - Start über `evcc configure` - Die Konfiguration wird in evcc.yaml geschrieben. Falls diese existiert kann ein alternativer Dateiname angegeben werden Was es kann: - Eine geführte Erstellung der Konfigurationsdatei - Direktes Testen ob die Konfiguration jedes Gerätes auch funktioniert - Konfigurationsabhängigkeiten durch direkte Konfiguration der Abhängigkeit lösen (z.B. Sponsorshipt required) - Konfiguration in für Anwender bekannte Informationen und möglichst wenig Informationseingabe zu ermöglichen, z.B. anhand von Produkten anstatt aus der Implementierungssicht - Bisherige Konfiguration funktioniert weiter
29 lines
640 B
Go
29 lines
640 B
Go
package templates
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
func TestYamlDecode(t *testing.T) {
|
|
for _, value := range []string{`value`, `!value`, `@value`, `"value"`, `"va"lue"`, `va'lue`, `@va'lue`} {
|
|
t.Run(value, func(t *testing.T) {
|
|
quoted := yamlQuote(value)
|
|
input := fmt.Sprintf("key: %s", quoted)
|
|
|
|
var res struct {
|
|
Value string `yaml:"key"`
|
|
}
|
|
|
|
if err := yaml.Unmarshal([]byte(input), &res); err != nil {
|
|
t.Fatalf("expected %s (quoted: %s), got error %v", value, quoted, err)
|
|
}
|
|
|
|
if value != res.Value {
|
|
t.Fatalf("expected %s (quoted: %s), got %s", value, quoted, res.Value)
|
|
}
|
|
})
|
|
}
|
|
}
|