@@ -45,6 +45,20 @@ fn update_crate() {
45
45
String :: from ( "rust-lang/rust" )
46
46
) ;
47
47
48
+ let gitlab = Badge :: Gitlab {
49
+ branch : Some ( String :: from ( "beta" ) ) ,
50
+ repository : String :: from ( "rust-lang/rust" ) ,
51
+ } ;
52
+ let mut badge_attributes_gitlab = HashMap :: new ( ) ;
53
+ badge_attributes_gitlab. insert (
54
+ String :: from ( "branch" ) ,
55
+ String :: from ( "beta" )
56
+ ) ;
57
+ badge_attributes_gitlab. insert (
58
+ String :: from ( "repository" ) ,
59
+ String :: from ( "rust-lang/rust" )
60
+ ) ;
61
+
48
62
let mut badges = HashMap :: new ( ) ;
49
63
50
64
// Updating with no badges has no effect
@@ -68,6 +82,15 @@ fn update_crate() {
68
82
Badge :: update_crate ( tx ( & req) , & krate, badges. clone ( ) ) . unwrap ( ) ;
69
83
assert_eq ! ( krate. badges( tx( & req) ) . unwrap( ) , vec![ travis_ci. clone( ) ] ) ;
70
84
85
+ // Replacing one badge with another (again)
86
+ badges. clear ( ) ;
87
+ badges. insert (
88
+ String :: from ( "gitlab" ) ,
89
+ badge_attributes_gitlab. clone ( )
90
+ ) ;
91
+ Badge :: update_crate ( tx ( & req) , & krate, badges. clone ( ) ) . unwrap ( ) ;
92
+ assert_eq ! ( krate. badges( tx( & req) ) . unwrap( ) , vec![ gitlab. clone( ) ] ) ;
93
+
71
94
// Updating badge attributes
72
95
let travis_ci2 = Badge :: TravisCi {
73
96
branch : None ,
@@ -83,14 +106,14 @@ fn update_crate() {
83
106
badge_attributes_travis_ci2. clone ( )
84
107
) ;
85
108
Badge :: update_crate ( tx ( & req) , & krate, badges. clone ( ) ) . unwrap ( ) ;
86
- assert_eq ! ( krate. badges( tx( & req) ) . unwrap( ) , vec![ travis_ci2. clone( ) ] ) ;
109
+ assert_eq ! ( krate. badges( tx( & req) ) . unwrap( ) , vec![ gitlab . clone ( ) , travis_ci2. clone( ) ] ) ;
87
110
88
111
// Removing one badge
89
112
badges. clear ( ) ;
90
113
Badge :: update_crate ( tx ( & req) , & krate, badges. clone ( ) ) . unwrap ( ) ;
91
114
assert_eq ! ( krate. badges( tx( & req) ) . unwrap( ) , vec![ ] ) ;
92
115
93
- // Adding 2 badges
116
+ // Adding 3 badges
94
117
badges. insert (
95
118
String :: from ( "appveyor" ) ,
96
119
badge_attributes_appveyor. clone ( )
@@ -99,22 +122,28 @@ fn update_crate() {
99
122
String :: from ( "travis-ci" ) ,
100
123
badge_attributes_travis_ci. clone ( )
101
124
) ;
125
+ badges. insert (
126
+ String :: from ( "gitlab" ) ,
127
+ badge_attributes_gitlab. clone ( )
128
+ ) ;
102
129
Badge :: update_crate (
103
130
tx ( & req) , & krate, badges. clone ( )
104
131
) . unwrap ( ) ;
105
132
106
133
let current_badges = krate. badges ( tx ( & req) ) . unwrap ( ) ;
107
- assert_eq ! ( current_badges. len( ) , 2 ) ;
134
+ assert_eq ! ( current_badges. len( ) , 3 ) ;
108
135
assert ! ( current_badges. contains( & appveyor) ) ;
109
136
assert ! ( current_badges. contains( & travis_ci) ) ;
137
+ assert ! ( current_badges. contains( & gitlab) ) ;
110
138
111
139
// Removing all badges
112
140
badges. clear ( ) ;
113
141
Badge :: update_crate ( tx ( & req) , & krate, badges. clone ( ) ) . unwrap ( ) ;
114
142
assert_eq ! ( krate. badges( tx( & req) ) . unwrap( ) , vec![ ] ) ;
115
143
116
- // Attempting to add one valid badge (appveyor) and two invalid badges
117
- // (travis-ci without a required attribute and an unknown badge type)
144
+ // Attempting to add one valid badge (appveyor) and three invalid badges
145
+ // (travis-ci and gitlab without a required attribute and an unknown badge
146
+ // type)
118
147
119
148
// Extra invalid keys are fine, we'll just ignore those
120
149
badge_attributes_appveyor. insert (
@@ -133,6 +162,13 @@ fn update_crate() {
133
162
badge_attributes_travis_ci. clone ( )
134
163
) ;
135
164
165
+ // Repository is a required key
166
+ badge_attributes_gitlab. remove ( "repository" ) ;
167
+ badges. insert (
168
+ String :: from ( "gitlab" ) ,
169
+ badge_attributes_gitlab. clone ( )
170
+ ) ;
171
+
136
172
// This is not a badge that crates.io knows about
137
173
let mut invalid_attributes = HashMap :: new ( ) ;
138
174
invalid_attributes. insert (
@@ -147,8 +183,9 @@ fn update_crate() {
147
183
let invalid_badges = Badge :: update_crate (
148
184
tx ( & req) , & krate, badges. clone ( )
149
185
) . unwrap ( ) ;
150
- assert_eq ! ( invalid_badges. len( ) , 2 ) ;
186
+ assert_eq ! ( invalid_badges. len( ) , 3 ) ;
151
187
assert ! ( invalid_badges. contains( & String :: from( "travis-ci" ) ) ) ;
188
+ assert ! ( invalid_badges. contains( & String :: from( "gitlab" ) ) ) ;
152
189
assert ! ( invalid_badges. contains( & String :: from( "not-a-badge" ) ) ) ;
153
190
assert_eq ! ( krate. badges( tx( & req) ) . unwrap( ) , vec![ appveyor. clone( ) ] ) ;
154
191
}
0 commit comments