fix
This commit is contained in:
@@ -101,12 +101,12 @@ func (p *Parser) Parse() (*Config, error) {
|
||||
}
|
||||
|
||||
// Section detection
|
||||
if strings.HasPrefix(line, "controller") {
|
||||
if strings.HasPrefix(line, "controller {") || strings.HasPrefix(line, "controller{") {
|
||||
currentSection = "controller"
|
||||
currentController = &Controller{}
|
||||
continue
|
||||
}
|
||||
if strings.HasPrefix(line, "device") {
|
||||
if strings.HasPrefix(line, "device {") || strings.HasPrefix(line, "device{") {
|
||||
currentSection = "device"
|
||||
currentDevice = &Device{
|
||||
Parameters: make(map[string]string),
|
||||
|
||||
60
pkg/config/parser_test.go
Normal file
60
pkg/config/parser_test.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestParserControllerDetection(t *testing.T) {
|
||||
sampleConfig := `user = "root"
|
||||
group = "plugdev"
|
||||
device {
|
||||
id = 5
|
||||
name = "TF_OFFICE_DESK"
|
||||
controller = 0
|
||||
protocol = "arctech"
|
||||
model = "selflearning-switch"
|
||||
parameters {
|
||||
house = "12168864"
|
||||
unit = "11"
|
||||
}
|
||||
}
|
||||
controller {
|
||||
id = 1
|
||||
type = 2
|
||||
serial = "AE01DHRN"
|
||||
}
|
||||
`
|
||||
|
||||
dir := t.TempDir()
|
||||
cfgPath := filepath.Join(dir, "tellstick.conf")
|
||||
if err := os.WriteFile(cfgPath, []byte(sampleConfig), 0o600); err != nil {
|
||||
t.Fatalf("failed writing sample config: %v", err)
|
||||
}
|
||||
|
||||
parser := NewParser(cfgPath)
|
||||
cfg, err := parser.Parse()
|
||||
if err != nil {
|
||||
t.Fatalf("parse failed: %v", err)
|
||||
}
|
||||
|
||||
if got, want := len(cfg.Controllers), 1; got != want {
|
||||
t.Fatalf("expected %d controller, got %d", want, got)
|
||||
}
|
||||
ctrl := cfg.Controllers[0]
|
||||
if ctrl.ID != 1 || ctrl.Serial != "AE01DHRN" {
|
||||
t.Fatalf("unexpected controller parsed: %+v", ctrl)
|
||||
}
|
||||
|
||||
if got, want := len(cfg.Devices), 1; got != want {
|
||||
t.Fatalf("expected %d device, got %d", want, got)
|
||||
}
|
||||
dev := cfg.Devices[0]
|
||||
if dev.Name != "TF_OFFICE_DESK" {
|
||||
t.Fatalf("unexpected device parsed: %+v", dev)
|
||||
}
|
||||
if val := dev.Parameters["controller"]; val != "0" {
|
||||
t.Fatalf("expected controller parameter stored, got %q", val)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user