From 8c03774e1f05a1b9a87c5231562ba39989604773 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Tue, 12 Jan 2021 15:55:41 +0100 Subject: Updated menu tests to account properly for duplicate keys --- config/config.go | 2 +- config/menu.go | 9 ++++----- config/menu_test.go | 19 ++----------------- 3 files changed, 7 insertions(+), 23 deletions(-) (limited to 'config') diff --git a/config/config.go b/config/config.go index 1deaf04..aa1672a 100644 --- a/config/config.go +++ b/config/config.go @@ -4,7 +4,7 @@ import ( "os" "github.com/pkg/errors" - "gopkg.in/yaml.v2" + "gopkg.in/yaml.v3" ) type Config struct { diff --git a/config/menu.go b/config/menu.go index 004c7fe..a442036 100644 --- a/config/menu.go +++ b/config/menu.go @@ -47,13 +47,12 @@ func (m *Menu) validate(name string) error { return errors.New("YOffset must be a positive integer") } // MenuEntries - keys := make(map[string]bool) + if len(m.MenuEntries) == 0 { + return errors.New("A Menu needs MenuEntries to be valid") + } + // Duplicate detection is natively handled by the yaml parser for i := 0; i < len(m.MenuEntries); i++ { m.MenuEntries[i].validate() - if _, duplicate := keys[m.MenuEntries[i].Key]; duplicate { - return errors.New("A Menu has a duplicate key " + m.MenuEntries[i].Key) - } - keys[m.MenuEntries[i].Key] = true if m.MenuEntries[i].Action == "menu "+name { return errors.New("A menu shall not loop on itself") } diff --git a/config/menu_test.go b/config/menu_test.go index 98405c7..d0b1805 100644 --- a/config/menu_test.go +++ b/config/menu_test.go @@ -26,24 +26,9 @@ func TestMenuValidate(t *testing.T) { t.Fatal("Negative YOffset should not be valid") } // MenuEntries are mostly tested bellow - menu = Menu{ - XOffset: 1, - YOffset: 1, - MenuEntries: []MenuEntry{ - MenuEntry{ - Key: "a", - Label: "test", - Action: "quit", - }, - MenuEntry{ - Key: "a", - Label: "duplicate", - Action: "quit", - }, - }, - } + menu = Menu{} if err := menu.validate("test"); err == nil { - t.Fatal("Duplicate Keys in MenuEntries should not be allowed") + t.Fatal("A menu without menu entries should not be valid") } // loop menu menu = Menu{ -- cgit v1.2.3