talos
109 строк · 2.4 Кб
1// This Source Code Form is subject to the terms of the Mozilla Public
2// License, v. 2.0. If a copy of the MPL was not distributed with this
3// file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
5package argsbuilder_test
6
7import (
8"testing"
9
10"github.com/stretchr/testify/suite"
11
12"github.com/siderolabs/talos/pkg/argsbuilder"
13)
14
15type ArgsbuilderSuite struct {
16suite.Suite
17}
18
19func (suite *ArgsbuilderSuite) TestMergeAdditive() {
20args := argsbuilder.Args{
21"param": "value1,value2,value3",
22"param2": "",
23}
24
25suite.Require().NoError(
26args.Merge(argsbuilder.Args{
27"param": "value2, value10",
28},
29argsbuilder.WithMergePolicies(argsbuilder.MergePolicies{
30"param": argsbuilder.MergeAdditive,
31}),
32),
33)
34
35suite.Require().Equal("value1,value2,value3,value10", args["param"])
36suite.Assert().Equal([]string{"--param=value1,value2,value3,value10", "--param2="}, args.Args())
37
38suite.Require().NoError(
39args.Merge(argsbuilder.Args{
40"param2": "value1, value5",
41},
42argsbuilder.WithMergePolicies(argsbuilder.MergePolicies{
43"param2": argsbuilder.MergeAdditive,
44}),
45),
46)
47
48suite.Require().Equal("value1,value5", args["param2"])
49suite.Assert().Equal([]string{"--param=value1,value2,value3,value10", "--param2=value1,value5"}, args.Args())
50}
51
52func (suite *ArgsbuilderSuite) TestMergeOverwrite() {
53args := argsbuilder.Args{
54"param": "value1,value2",
55}
56
57suite.Require().NoError(
58args.Merge(argsbuilder.Args{
59"param": "value10",
60},
61argsbuilder.WithMergePolicies(argsbuilder.MergePolicies{
62"param2": argsbuilder.MergeAdditive,
63}),
64),
65)
66
67suite.Require().Equal("value10", args["param"])
68suite.Assert().Equal([]string{"--param=value10"}, args.Args())
69}
70
71func (suite *ArgsbuilderSuite) TestMergeDenied() {
72args := argsbuilder.Args{
73"param": "value1,value2",
74}
75
76suite.Require().Error(
77args.Merge(argsbuilder.Args{
78"param": "value10",
79},
80argsbuilder.WithMergePolicies(argsbuilder.MergePolicies{
81"param": argsbuilder.MergeDenied,
82}),
83),
84)
85}
86
87func (suite *ArgsbuilderSuite) TestMergeDenyList() {
88args := argsbuilder.Args{
89"param": "value1,value2",
90}
91
92denyList := argsbuilder.Args{
93"param1": "",
94"param2": "",
95"param3": "",
96}
97
98suite.Require().Error(
99args.Merge(argsbuilder.Args{
100"param2": "value10",
101},
102argsbuilder.WithDenyList(denyList),
103),
104)
105}
106
107func TestArgsbuilderSuite(t *testing.T) {
108suite.Run(t, &ArgsbuilderSuite{})
109}
110