-// Copyright (C) 2021 Simon Ruderich
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
+// SPDX-License-Identifier: GPL-3.0-or-later
+// Copyright (C) 2021-2024 Simon Ruderich
package config
"fmt"
"os"
"path/filepath"
- "reflect"
"testing"
- "github.com/google/go-cmp/cmp"
+ "ruderich.org/simon/safcm/testutil"
)
func TestLoadHosts(t *testing.T) {
if err != nil {
t.Fatal(err)
}
- defer os.Chdir(cwd)
+ defer os.Chdir(cwd) //nolint:errcheck
sliceToHosts := func(hosts []*Host) *Hosts {
res := &Hosts{
nil,
},
+ {
+ "../testdata/host-invalid-duplicate",
+ nil,
+ fmt.Errorf("hosts.yaml: host \"host1.example.org\": host name already exists"),
+ },
{
"../testdata/host-invalid-all",
nil,
for _, tc := range tests {
t.Run(tc.path, func(t *testing.T) {
- err := os.Chdir(filepath.Join(cwd, tc.path))
- if err != nil {
- t.Fatal(err)
- }
+ err := os.Chdir(filepath.Join(cwd, tc.path))
+ if err != nil {
+ t.Fatal(err)
+ }
- res, err := LoadHosts()
-
- if !reflect.DeepEqual(tc.exp, res) {
- t.Errorf("res: %s",
- cmp.Diff(tc.exp, res))
- }
- // Ugly but the simplest way to compare errors (including nil)
- if fmt.Sprintf("%s", err) != fmt.Sprintf("%s", tc.expErr) {
- t.Errorf("err = %#v, want %#v",
- err, tc.expErr)
- }
+ res, err := LoadHosts()
+ testutil.AssertEqual(t, "res", res, tc.exp)
+ testutil.AssertErrorEqual(t, "err", err, tc.expErr)
})
}
}