@@ -117,7 +117,16 @@ class CargoTest < ActiveSupport::TestCase
117
117
:size => nil ,
118
118
:license => "MIT" ,
119
119
:crate_size => 3200 ,
120
- :rust_version => nil } } ,
120
+ :rust_version => nil ,
121
+ :features => { } ,
122
+ :yanked => false ,
123
+ :yank_message => nil ,
124
+ :dl_path => "/api/v1/crates/parameters_lib/0.2.2/download" ,
125
+ :audit_actions => [ { "action" => "publish" , "time" => "2022-03-29T13:35:06.927472+00:00" , "user" => { "avatar" => "https://avatars.githubusercontent.com/u/353709?v=4" , "id" => 65133 , "login" => "TheFox" , "name" => "Christian Mayer" , "url" => "https://github.com/TheFox" } } ] ,
126
+ :lib_links => nil ,
127
+ :has_lib => nil ,
128
+ :bin_names => nil ,
129
+ :edition => nil } } ,
121
130
{ :number => "0.1.0" ,
122
131
:published_at => "2022-03-24T16:19:57.595451+00:00" ,
123
132
:status => nil ,
@@ -134,7 +143,16 @@ class CargoTest < ActiveSupport::TestCase
134
143
:size => nil ,
135
144
:license => "MIT" ,
136
145
:crate_size => 3033 ,
137
- :rust_version => nil } } ,
146
+ :rust_version => nil ,
147
+ :features => { } ,
148
+ :yanked => false ,
149
+ :yank_message => nil ,
150
+ :dl_path => "/api/v1/crates/parameters_lib/0.1.0/download" ,
151
+ :audit_actions => [ { "action" => "publish" , "time" => "2022-03-24T16:19:57.595451+00:00" , "user" => { "avatar" => "https://avatars.githubusercontent.com/u/353709?v=4" , "id" => 65133 , "login" => "TheFox" , "name" => "Christian Mayer" , "url" => "https://github.com/TheFox" } } ] ,
152
+ :lib_links => nil ,
153
+ :has_lib => nil ,
154
+ :bin_names => nil ,
155
+ :edition => nil } } ,
138
156
{ :number => "0.1.0-dev.2" ,
139
157
:published_at => "2022-03-24T16:08:54.337646+00:00" ,
140
158
:status => nil ,
@@ -151,7 +169,16 @@ class CargoTest < ActiveSupport::TestCase
151
169
:size => nil ,
152
170
:license => "MIT" ,
153
171
:crate_size => 3039 ,
154
- :rust_version => nil } } ,
172
+ :rust_version => nil ,
173
+ :features => { } ,
174
+ :yanked => false ,
175
+ :yank_message => nil ,
176
+ :dl_path => "/api/v1/crates/parameters_lib/0.1.0-dev.2/download" ,
177
+ :audit_actions => [ { "action" => "publish" , "time" => "2022-03-24T16:08:54.337646+00:00" , "user" => { "avatar" => "https://avatars.githubusercontent.com/u/353709?v=4" , "id" => 65133 , "login" => "TheFox" , "name" => "Christian Mayer" , "url" => "https://github.com/TheFox" } } ] ,
178
+ :lib_links => nil ,
179
+ :has_lib => nil ,
180
+ :bin_names => nil ,
181
+ :edition => nil } } ,
155
182
{ :number => "0.1.0-dev.1" ,
156
183
:published_at => "2022-03-24T15:58:36.858899+00:00" ,
157
184
:status => nil ,
@@ -168,7 +195,16 @@ class CargoTest < ActiveSupport::TestCase
168
195
:size => nil ,
169
196
:license => "MIT" ,
170
197
:crate_size => 3026 ,
171
- :rust_version => nil } } ]
198
+ :rust_version => nil ,
199
+ :features => { } ,
200
+ :yanked => false ,
201
+ :yank_message => nil ,
202
+ :dl_path => "/api/v1/crates/parameters_lib/0.1.0-dev.1/download" ,
203
+ :audit_actions => [ { "action" => "publish" , "time" => "2022-03-24T15:58:36.858899+00:00" , "user" => { "avatar" => "https://avatars.githubusercontent.com/u/353709?v=4" , "id" => 65133 , "login" => "TheFox" , "name" => "Christian Mayer" , "url" => "https://github.com/TheFox" } } ] ,
204
+ :lib_links => nil ,
205
+ :has_lib => nil ,
206
+ :bin_names => nil ,
207
+ :edition => nil } } ]
172
208
end
173
209
174
210
test 'dependencies_metadata' do
@@ -182,4 +218,34 @@ class CargoTest < ActiveSupport::TestCase
182
218
test 'maintainer_url' do
183
219
assert_equal @ecosystem . maintainer_url ( @maintainer ) , 'https://crates.io/users/foo'
184
220
end
221
+
222
+ test 'versions_metadata includes cargo specific fields' do
223
+ stub_request ( :get , "https://crates.io/api/v1/crates/parameters_lib" )
224
+ . to_return ( { status : 200 , body : file_fixture ( 'cargo/parameters_lib' ) } )
225
+ package_metadata = @ecosystem . package_metadata ( 'parameters_lib' )
226
+ versions_metadata = @ecosystem . versions_metadata ( package_metadata )
227
+
228
+ first_version = versions_metadata . first
229
+ assert_equal first_version [ :metadata ] [ :features ] , { }
230
+ assert_equal first_version [ :metadata ] [ :yanked ] , false
231
+ assert_equal first_version [ :metadata ] [ :dl_path ] , "/api/v1/crates/parameters_lib/0.2.2/download"
232
+ assert_equal first_version [ :metadata ] [ :audit_actions ] . first [ "action" ] , "publish"
233
+ assert_nil first_version [ :metadata ] [ :rust_version ]
234
+ end
235
+
236
+ test 'versions_metadata includes newer cargo api fields' do
237
+ stub_request ( :get , "https://crates.io/api/v1/crates/serde" )
238
+ . to_return ( { status : 200 , body : file_fixture ( 'cargo/serde_fresh' ) } )
239
+ package_metadata = @ecosystem . package_metadata ( 'serde' )
240
+ versions_metadata = @ecosystem . versions_metadata ( package_metadata )
241
+
242
+ first_version = versions_metadata . first
243
+ assert_equal first_version [ :metadata ] [ :edition ] , "2018"
244
+ assert_equal first_version [ :metadata ] [ :rust_version ] , "1.31"
245
+ assert_equal first_version [ :metadata ] [ :has_lib ] , true
246
+ assert_equal first_version [ :metadata ] [ :bin_names ] , [ ]
247
+ assert_nil first_version [ :metadata ] [ :yank_message ]
248
+ assert_nil first_version [ :metadata ] [ :lib_links ]
249
+ assert_equal first_version [ :metadata ] [ :features ] [ "default" ] , [ "std" ]
250
+ end
185
251
end
0 commit comments