@@ -99,9 +99,14 @@ func TestConstraintsParser(t *testing.T) {
99
99
good := []goodStringTest {
100
100
{"" , "" }, // always true
101
101
{"=1.3.0" , "=1.3.0" },
102
+ {"1.3.0" , "^1.3.0" },
103
+ {"!1.0.0" , "!(^1.0.0)" },
102
104
{" =1.3.0 " , "=1.3.0" },
105
+ {" 1.3.0 " , "^1.3.0" },
103
106
{"=1.3.0 " , "=1.3.0" },
107
+ {"1.3.0 " , "^1.3.0" },
104
108
{" =1.3.0" , "=1.3.0" },
109
+ {" 1.3.0" , "^1.3.0" },
105
110
{">=1.3.0" , ">=1.3.0" },
106
111
{">1.3.0" , ">1.3.0" },
107
112
{"<=1.3.0" , "<=1.3.0" },
@@ -111,16 +116,35 @@ func TestConstraintsParser(t *testing.T) {
111
116
{"^1.3.0 " , "^1.3.0" },
112
117
{" ^1.3.0 " , "^1.3.0" },
113
118
{"(=1.4.0)" , "=1.4.0" },
119
+ {"(1.4.0)" , "^1.4.0" },
114
120
{"!(=1.4.0)" , "!(=1.4.0)" },
121
+ {"!(1.4.0)" , "!(^1.4.0)" },
115
122
{"!(((=1.4.0)))" , "!(=1.4.0)" },
123
+ {"!(((1.4.0)))" , "!(^1.4.0)" },
116
124
{"=1.2.4 && =1.3.0" , "(=1.2.4 && =1.3.0)" },
117
125
{"=1.2.4 && ^1.3.0" , "(=1.2.4 && ^1.3.0)" },
126
+ {"1.2.4 && 1.3.0" , "(^1.2.4 && ^1.3.0)" },
118
127
{"=1.2.4 && =1.3.0 && =1.2.0" , "(=1.2.4 && =1.3.0 && =1.2.0)" },
128
+ {"1.2.4 && 1.3.0 && 1.2.0" , "(^1.2.4 && ^1.3.0 && ^1.2.0)" },
119
129
{"=1.2.4 && =1.3.0 || =1.2.0" , "((=1.2.4 && =1.3.0) || =1.2.0)" },
130
+ {"1.2.4 && 1.3.0 || 1.2.0" , "((^1.2.4 && ^1.3.0) || ^1.2.0)" },
120
131
{"=1.2.4 || =1.3.0 && =1.2.0" , "(=1.2.4 || (=1.3.0 && =1.2.0))" },
121
132
{"(=1.2.4 || =1.3.0) && =1.2.0" , "((=1.2.4 || =1.3.0) && =1.2.0)" },
133
+ {"(1.2.4 || 1.3.0) && 1.2.0" , "((^1.2.4 || ^1.3.0) && ^1.2.0)" },
122
134
{"(=1.2.4 || !>1.3.0) && =1.2.0" , "((=1.2.4 || !(>1.3.0)) && =1.2.0)" },
135
+ {"(1.2.4 || !>1.3.0) && 1.2.0" , "((^1.2.4 || !(>1.3.0)) && ^1.2.0)" },
123
136
{"!(=1.2.4 || >1.3.0) && =1.2.0" , "(!(=1.2.4 || >1.3.0) && =1.2.0)" },
137
+ {"!(1.2.4 || >1.3.0) && 1.2.0" , "(!(^1.2.4 || >1.3.0) && ^1.2.0)" },
138
+ {">1.0.0 && 2.0.0" , "(>1.0.0 && ^2.0.0)" },
139
+ {">1.0.0 && =2.0.0" , "(>1.0.0 && =2.0.0)" },
140
+ {">1.0.0 || 2.0.0" , "(>1.0.0 || ^2.0.0)" },
141
+ {">1.0.0 || =2.0.0" , "(>1.0.0 || =2.0.0)" },
142
+ {"(>1.0.0) || 2.0.0" , "(>1.0.0 || ^2.0.0)" },
143
+ {"(>1.0.0) || =2.0.0" , "(>1.0.0 || =2.0.0)" },
144
+ {">1.0.0 || (2.0.0)" , "(>1.0.0 || ^2.0.0)" },
145
+ {">1.0.0 || (=2.0.0)" , "(>1.0.0 || =2.0.0)" },
146
+ {"((>1.0.0) || (2.0.0))" , "(>1.0.0 || ^2.0.0)" },
147
+ {"((>1.0.0) || (=2.0.0))" , "(>1.0.0 || =2.0.0)" },
124
148
}
125
149
for i , test := range good {
126
150
in := test .In
@@ -134,7 +158,6 @@ func TestConstraintsParser(t *testing.T) {
134
158
}
135
159
136
160
bad := []string {
137
- "1.0.0" ,
138
161
"= 1.0.0" ,
139
162
">= 1.0.0" ,
140
163
"> 1.0.0" ,
@@ -144,19 +167,21 @@ func TestConstraintsParser(t *testing.T) {
144
167
">1.0.0 =2.0.0" ,
145
168
">1.0.0 &" ,
146
169
"^1.1.1.1" ,
147
- "!1.0.0" ,
148
- ">1.0.0 && 2.0.0" ,
149
170
">1.0.0 | =2.0.0" ,
150
171
"(>1.0.0 | =2.0.0)" ,
151
172
"(>1.0.0 || =2.0.0" ,
152
- ">1.0.0 || 2.0.0" ,
173
+ "!1.0.0.0" ,
174
+ "!1.0.0 && !1.0.0.0" ,
175
+ "(!1.0.0 && !1.0.0" ,
176
+ "!1.0.0 || !1.0.0.0" ,
177
+ "(!1.0.0 || !1.0.0" ,
153
178
}
154
179
for i , s := range bad {
155
180
in := s
156
181
t .Run (fmt .Sprintf ("BadString%03d" , i ), func (t * testing.T ) {
157
182
p , err := ParseConstraint (in )
158
- require .Nil (t , p )
159
- require .Error (t , err )
183
+ require .Nil (t , p , "parsing: %s" , in )
184
+ require .Error (t , err , "parsing: %s" , in )
160
185
fmt .Printf ("'%s' parse error: %s\n " , in , err )
161
186
})
162
187
}
0 commit comments