Skip to content

Commit a8b97d4

Browse files
committed
Added VersionBuilder and converted tests to use it.
1 parent 4e8f84f commit a8b97d4

File tree

4 files changed

+53
-22
lines changed

4 files changed

+53
-22
lines changed

src/tests/all.rs

Lines changed: 44 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -214,12 +214,50 @@ fn user(login: &str) -> User {
214214

215215
use cargo_registry::util::CargoResult;
216216

217+
struct VersionBuilder<'a> {
218+
version: semver::Version,
219+
license: Option<&'a str>,
220+
license_file: Option<&'a str>,
221+
features: HashMap<String, Vec<String>>,
222+
}
223+
224+
impl<'a> VersionBuilder<'a> {
225+
fn new(version: &str) -> VersionBuilder {
226+
let version = semver::Version::parse(version).unwrap_or_else(
227+
|e| {
228+
panic!("The version {} is not valid: {}", version, e);
229+
},
230+
);
231+
232+
VersionBuilder {
233+
version: version,
234+
license: None,
235+
license_file: None,
236+
features: HashMap::new(),
237+
}
238+
}
239+
240+
fn build(self, connection: &PgConnection, crate_id: i32) -> CargoResult<Version> {
241+
let license = match self.license {
242+
Some(license) => Some(license.to_owned()),
243+
None => None,
244+
};
245+
246+
NewVersion::new(
247+
crate_id,
248+
&self.version,
249+
&self.features,
250+
license,
251+
self.license_file,
252+
)?.save(connection, &[])
253+
}
254+
}
255+
217256
struct CrateBuilder<'a> {
218257
owner_id: i32,
219258
krate: NewCrate<'a>,
220-
license_file: Option<&'a str>,
221259
downloads: Option<i32>,
222-
versions: Vec<semver::Version>,
260+
versions: Vec<VersionBuilder<'a>>,
223261
keywords: Vec<&'a str>,
224262
}
225263

@@ -231,7 +269,6 @@ impl<'a> CrateBuilder<'a> {
231269
name: name,
232270
..NewCrate::default()
233271
},
234-
license_file: None,
235272
downloads: None,
236273
versions: Vec::new(),
237274
keywords: Vec::new(),
@@ -268,10 +305,7 @@ impl<'a> CrateBuilder<'a> {
268305
self
269306
}
270307

271-
fn version(mut self, version: &str) -> Self {
272-
let version = semver::Version::parse(version).unwrap_or_else(|e| {
273-
panic!("The version {} is not valid: {}", version, e);
274-
});
308+
fn version(mut self, version: VersionBuilder<'a>) -> Self {
275309
self.versions.push(version);
276310
self
277311
}
@@ -298,14 +332,11 @@ impl<'a> CrateBuilder<'a> {
298332
}
299333

300334
if self.versions.is_empty() {
301-
self.versions.push("0.99.0".parse().expect(
302-
"invalid version number",
303-
));
335+
self.versions.push(VersionBuilder::new("0.99.0"));
304336
}
305337

306-
for version_num in &self.versions {
307-
NewVersion::new(krate.id, version_num, &HashMap::new(), None, self.license_file)?
308-
.save(connection, &[])?;
338+
for version in self.versions {
339+
version.build(&connection, krate.id)?;
309340
}
310341

311342
if !self.keywords.is_empty() {

src/tests/krate.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -357,9 +357,9 @@ fn show() {
357357
.description("description")
358358
.documentation("https://example.com")
359359
.homepage("http://example.com")
360-
.version("1.0.0")
361-
.version("0.5.0")
362-
.version("0.5.1")
360+
.version(::VersionBuilder::new("1.0.0"))
361+
.version(::VersionBuilder::new("0.5.0"))
362+
.version(::VersionBuilder::new("0.5.1"))
363363
.keyword("kw1")
364364
.expect_build(&conn);
365365
}
@@ -763,7 +763,7 @@ fn new_krate_duplicate_version() {
763763
::sign_in_as(&mut req, &user);
764764

765765
::CrateBuilder::new("foo_dupe", user.id)
766-
.version("1.0.0")
766+
.version(::VersionBuilder::new("1.0.0"))
767767
.expect_build(&conn);
768768
}
769769
let json = bad_resp!(middle.call(&mut req));
@@ -949,7 +949,7 @@ fn download() {
949949
let conn = app.diesel_database.get().unwrap();
950950
let user = ::new_user("foo").create_or_update(&conn).unwrap();
951951
::CrateBuilder::new("foo_download", user.id)
952-
.version("1.0.0")
952+
.version(::VersionBuilder::new("1.0.0"))
953953
.expect_build(&conn);
954954
}
955955
let resp = t_resp!(middle.call(&mut req));

src/tests/user.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,11 +155,11 @@ fn following() {
155155
::sign_in_as(&mut req, &user);
156156

157157
::CrateBuilder::new("foo_fighters", user.id)
158-
.version("1.0.0")
158+
.version(::VersionBuilder::new("1.0.0"))
159159
.expect_build(&conn);
160160

161161
::CrateBuilder::new("bar_fighters", user.id)
162-
.version("1.0.0")
162+
.version(::VersionBuilder::new("1.0.0"))
163163
.expect_build(&conn);
164164
}
165165

src/tests/version.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ fn index() {
2929
let conn = app.diesel_database.get().unwrap();
3030
let u = ::new_user("foo").create_or_update(&conn).unwrap();
3131
::CrateBuilder::new("foo_vers_index", u.id)
32-
.version("2.0.0")
33-
.version("2.0.1")
32+
.version(::VersionBuilder::new("2.0.0"))
33+
.version(::VersionBuilder::new("2.0.1"))
3434
.expect_build(&conn);
3535
let ids = versions::table
3636
.select(versions::id)

0 commit comments

Comments
 (0)