@@ -9,6 +9,7 @@ package semver
9
9
import (
10
10
"fmt"
11
11
"testing"
12
+ "time"
12
13
13
14
"github.com/stretchr/testify/require"
14
15
)
@@ -74,6 +75,11 @@ func rel(name, ver string, deps []Dependency) Release {
74
75
}
75
76
76
77
func TestResolver (t * testing.T ) {
78
+ a100 := rel ("A" , "1.0.0" , deps ("B>=1.2.0" , "C>=2.0.0" ))
79
+ a110 := rel ("A" , "1.1.0" , deps ("B=1.2.0" , "C>=2.0.0" ))
80
+ a111 := rel ("A" , "1.1.1" , deps ("B" , "C=1.1.1" ))
81
+ a120 := rel ("A" , "1.2.0" , deps ("B=1.2.0" , "C>2.0.0" ))
82
+ a121 := rel ("A" , "1.2.1" , deps ("B" , "C" , "G" , "H" , "I" , "E=1.0.1" ))
77
83
b131 := rel ("B" , "1.3.1" , deps ("C<2.0.0" ))
78
84
b130 := rel ("B" , "1.3.0" , deps ())
79
85
b121 := rel ("B" , "1.2.1" , deps ())
@@ -95,19 +101,40 @@ func TestResolver(t *testing.T) {
95
101
d120 := rel ("D" , "1.2.0" , deps ("E" ))
96
102
e100 := rel ("E" , "1.0.0" , deps ())
97
103
e101 := rel ("E" , "1.0.1" , deps ("F" )) // INVALID
104
+ g130 := rel ("G" , "1.3.0" , deps ())
105
+ g140 := rel ("G" , "1.4.0" , deps ())
106
+ g150 := rel ("G" , "1.5.0" , deps ())
107
+ g160 := rel ("G" , "1.6.0" , deps ())
108
+ g170 := rel ("G" , "1.7.0" , deps ())
109
+ g180 := rel ("G" , "1.8.0" , deps ())
110
+ h130 := rel ("H" , "1.3.0" , deps ())
111
+ h140 := rel ("H" , "1.4.0" , deps ())
112
+ h150 := rel ("H" , "1.5.0" , deps ())
113
+ h160 := rel ("H" , "1.6.0" , deps ())
114
+ h170 := rel ("H" , "1.7.0" , deps ())
115
+ h180 := rel ("H" , "1.8.0" , deps ())
116
+ i130 := rel ("I" , "1.3.0" , deps ())
117
+ i140 := rel ("I" , "1.4.0" , deps ())
118
+ i150 := rel ("I" , "1.5.0" , deps ())
119
+ i160 := rel ("I" , "1.6.0" , deps ())
120
+ i170 := rel ("I" , "1.7.0" , deps ())
121
+ i180 := rel ("I" , "1.8.0" , deps ())
98
122
arch := & Archive {
99
123
Releases : map [string ]Releases {
124
+ "A" : {a100 , a110 , a111 , a120 , a121 },
100
125
"B" : {b131 , b130 , b121 , b120 , b111 , b110 , b100 },
101
126
"C" : {c200 , c120 , c111 , c110 , c102 , c101 , c100 , c021 , c020 , c010 },
102
127
"D" : {d100 , d120 },
103
128
"E" : {e100 , e101 },
129
+ "G" : {g130 , g140 , g150 , g160 , g170 , g180 },
130
+ "H" : {h130 , h140 , h150 , h160 , h170 , h180 },
131
+ "I" : {i130 , i140 , i150 , i160 , i170 , i180 },
104
132
},
105
133
}
106
134
107
- a100 := rel ("A" , "1.0.0" , deps ("B>=1.2.0" , "C>=2.0.0" ))
108
- a110 := rel ("A" , "1.1.0" , deps ("B=1.2.0" , "C>=2.0.0" ))
109
- a111 := rel ("A" , "1.1.1" , deps ("B" , "C=1.1.1" ))
110
- a120 := rel ("A" , "1.2.0" , deps ("B=1.2.0" , "C>2.0.0" ))
135
+ a130 := rel ("A" , "1.3.0" , deps ())
136
+ r0 := arch .Resolve (a130 ) // Non-existent in archive
137
+ require .Nil (t , r0 )
111
138
112
139
r1 := arch .Resolve (a100 )
113
140
require .Len (t , r1 , 3 )
@@ -139,4 +166,17 @@ func TestResolver(t *testing.T) {
139
166
require .Contains (t , r5 , d120 )
140
167
require .Contains (t , r5 , e100 )
141
168
fmt .Println (r5 )
169
+
170
+ done := make (chan bool )
171
+ go func () {
172
+ r6 := arch .Resolve (a121 )
173
+ require .Nil (t , r6 )
174
+ fmt .Println (r6 )
175
+ close (done )
176
+ }()
177
+ select {
178
+ case <- done :
179
+ case <- time .After (time .Second ):
180
+ require .FailNow (t , "test didn't complete in the allocated time" )
181
+ }
142
182
}
0 commit comments