f536987a7e
- doc: add comment
54 lines
2.0 KiB
Go
54 lines
2.0 KiB
Go
package systemd
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
// TestParseUnitPropertiesRequiresExactProperties 验证属性解析严格接受恰好三个预期属性,并拒绝缺失、多余或重复属性。
|
|
func TestParseUnitPropertiesRequiresExactProperties(t *testing.T) {
|
|
t.Parallel()
|
|
unit, err := parseUnitProperties("yms-green.service", []byte("LoadState=loaded\nActiveState=inactive\nSubState=dead\n"))
|
|
if err != nil {
|
|
t.Fatalf("parse systemd properties: %v", err)
|
|
}
|
|
if unit.Name != "yms-green.service" || unit.LoadState != "loaded" || unit.ActiveState != "inactive" || unit.SubState != "dead" {
|
|
t.Fatalf("unexpected unit: %+v", unit)
|
|
}
|
|
|
|
invalid := [][]byte{
|
|
[]byte("LoadState=loaded\nActiveState=inactive\n"),
|
|
[]byte("LoadState=loaded\nActiveState=inactive\nSubState=dead\nDescription=YMS\n"),
|
|
[]byte("LoadState=loaded\nLoadState=loaded\nActiveState=inactive\nSubState=dead\n"),
|
|
}
|
|
for _, output := range invalid {
|
|
if _, err := parseUnitProperties("yms-green.service", output); err == nil {
|
|
t.Fatalf("expected exact property validation failure for %q", output)
|
|
}
|
|
}
|
|
}
|
|
|
|
// TestNewSystemctlRequiresAbsoluteExecutable 验证相对路径会被拒绝,绝对路径会被接受。
|
|
func TestNewSystemctlRequiresAbsoluteExecutable(t *testing.T) {
|
|
t.Parallel()
|
|
if _, err := NewSystemctl("systemctl"); err == nil {
|
|
t.Fatal("expected relative executable path rejection")
|
|
}
|
|
manager, err := NewSystemctl("/usr/bin/systemctl")
|
|
if err != nil || manager.executable != "/usr/bin/systemctl" {
|
|
t.Fatalf("unexpected manager: manager=%+v err=%v", manager, err)
|
|
}
|
|
}
|
|
|
|
// TestValidateUnitNamePreservesOpaqueValue 验证合法单元名被原样保留,空串或带首尾空白被拒绝。
|
|
func TestValidateUnitNamePreservesOpaqueValue(t *testing.T) {
|
|
t.Parallel()
|
|
if err := validateUnitName("backend-green.service"); err != nil {
|
|
t.Fatalf("validate exact unit name: %v", err)
|
|
}
|
|
for _, name := range []string{"", " backend-green.service", "backend-green.service "} {
|
|
if err := validateUnitName(name); err == nil {
|
|
t.Fatalf("expected unit name rejection: %q", name)
|
|
}
|
|
}
|
|
}
|