talos

Форк
0
/
argsbuilder_test.go 
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

5
package argsbuilder_test
6

7
import (
8
	"testing"
9

10
	"github.com/stretchr/testify/suite"
11

12
	"github.com/siderolabs/talos/pkg/argsbuilder"
13
)
14

15
type ArgsbuilderSuite struct {
16
	suite.Suite
17
}
18

19
func (suite *ArgsbuilderSuite) TestMergeAdditive() {
20
	args := argsbuilder.Args{
21
		"param":  "value1,value2,value3",
22
		"param2": "",
23
	}
24

25
	suite.Require().NoError(
26
		args.Merge(argsbuilder.Args{
27
			"param": "value2, value10",
28
		},
29
			argsbuilder.WithMergePolicies(argsbuilder.MergePolicies{
30
				"param": argsbuilder.MergeAdditive,
31
			}),
32
		),
33
	)
34

35
	suite.Require().Equal("value1,value2,value3,value10", args["param"])
36
	suite.Assert().Equal([]string{"--param=value1,value2,value3,value10", "--param2="}, args.Args())
37

38
	suite.Require().NoError(
39
		args.Merge(argsbuilder.Args{
40
			"param2": "value1, value5",
41
		},
42
			argsbuilder.WithMergePolicies(argsbuilder.MergePolicies{
43
				"param2": argsbuilder.MergeAdditive,
44
			}),
45
		),
46
	)
47

48
	suite.Require().Equal("value1,value5", args["param2"])
49
	suite.Assert().Equal([]string{"--param=value1,value2,value3,value10", "--param2=value1,value5"}, args.Args())
50
}
51

52
func (suite *ArgsbuilderSuite) TestMergeOverwrite() {
53
	args := argsbuilder.Args{
54
		"param": "value1,value2",
55
	}
56

57
	suite.Require().NoError(
58
		args.Merge(argsbuilder.Args{
59
			"param": "value10",
60
		},
61
			argsbuilder.WithMergePolicies(argsbuilder.MergePolicies{
62
				"param2": argsbuilder.MergeAdditive,
63
			}),
64
		),
65
	)
66

67
	suite.Require().Equal("value10", args["param"])
68
	suite.Assert().Equal([]string{"--param=value10"}, args.Args())
69
}
70

71
func (suite *ArgsbuilderSuite) TestMergeDenied() {
72
	args := argsbuilder.Args{
73
		"param": "value1,value2",
74
	}
75

76
	suite.Require().Error(
77
		args.Merge(argsbuilder.Args{
78
			"param": "value10",
79
		},
80
			argsbuilder.WithMergePolicies(argsbuilder.MergePolicies{
81
				"param": argsbuilder.MergeDenied,
82
			}),
83
		),
84
	)
85
}
86

87
func (suite *ArgsbuilderSuite) TestMergeDenyList() {
88
	args := argsbuilder.Args{
89
		"param": "value1,value2",
90
	}
91

92
	denyList := argsbuilder.Args{
93
		"param1": "",
94
		"param2": "",
95
		"param3": "",
96
	}
97

98
	suite.Require().Error(
99
		args.Merge(argsbuilder.Args{
100
			"param2": "value10",
101
		},
102
			argsbuilder.WithDenyList(denyList),
103
		),
104
	)
105
}
106

107
func TestArgsbuilderSuite(t *testing.T) {
108
	suite.Run(t, &ArgsbuilderSuite{})
109
}
110

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.