blob: 85cf22ae2c0944759491e826e89ce942fe503486 [file] [log] [blame]
Tim Windelschmidt6d33a432025-02-04 14:34:25 +01001// Copyright The Monogon Project Authors.
2// SPDX-License-Identifier: Apache-2.0
3
Lorenz Brund67eb4f2023-04-11 16:03:31 +02004package bootparam
5
6import "testing"
7
8func TestConsoles(t *testing.T) {
9 cases := []struct {
10 name string
11 cmdline string
12 consoles []string
13 }{
14 {"Empty", "", []string{}},
15 {"None", "notconsole=test", []string{}},
16 {"Single", "asdf=ttyS1 console=ttyS0,115200", []string{"ttyS0"}},
17 {"MultipleSame", "console=ttyS0 noop console=ttyS0", []string{"ttyS0"}},
18 {"MultipleDiff", "console=tty27 console=ttyACM0", []string{"tty27", "ttyACM0"}},
19 {"WithDev", "console=/dev/ttyXYZ0", []string{"ttyXYZ0"}},
20 {"BrokenBadDev", "console=/etc/passwd", []string{}},
21 {"BrokenNoValue", "console=", []string{}},
22 }
23 for _, c := range cases {
24 t.Run(c.name, func(t *testing.T) {
25 p, _, err := Unmarshal(c.cmdline)
26 if err != nil {
27 t.Fatalf("Failed to parse cmdline %q: %v", c.cmdline, err)
28 }
29 consoles := p.Consoles()
30 wantConsoles := make(map[string]bool)
31 for _, con := range c.consoles {
32 wantConsoles[con] = true
33 }
34 for con := range wantConsoles {
35 if !consoles[con] {
36 t.Errorf("Expected console %s to be returned but it wasn't", con)
37 }
38 }
39 for con := range consoles {
40 if !wantConsoles[con] {
41 t.Errorf("Didn't expect console %s to be returned but it was", con)
42 }
43 }
44 })
45 }
46}