Skip to content

Commit a25e9be

Browse files
committed
test: move fake_release to TestEnvironment to avoid circular deps
1 parent a297e74 commit a25e9be

File tree

11 files changed

+146
-178
lines changed

11 files changed

+146
-178
lines changed

src/db/delete.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -190,17 +190,17 @@ mod tests {
190190
let db = env.db();
191191

192192
// Create fake packages in the database
193-
let pkg1_v1_id = db
193+
let pkg1_v1_id = env
194194
.fake_release()
195195
.name("package-1")
196196
.version("1.0.0")
197197
.create()?;
198-
let pkg1_v2_id = db
198+
let pkg1_v2_id = env
199199
.fake_release()
200200
.name("package-1")
201201
.version("2.0.0")
202202
.create()?;
203-
let pkg2_id = db.fake_release().name("package-2").create()?;
203+
let pkg2_id = env.fake_release().name("package-2").create()?;
204204

205205
assert!(crate_exists(&db.conn(), "package-1")?);
206206
assert!(crate_exists(&db.conn(), "package-2")?);
@@ -244,13 +244,13 @@ mod tests {
244244
}
245245

246246
let db = env.db();
247-
let v1 = db
247+
let v1 = env
248248
.fake_release()
249249
.name("a")
250250
.version("1.0.0")
251251
.author("malicious actor")
252252
.create()?;
253-
let v2 = db
253+
let v2 = env
254254
.fake_release()
255255
.name("a")
256256
.version("2.0.0")

src/storage/database.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ pub(super) struct DatabaseConnection {
7575
}
7676

7777
impl DatabaseConnection {
78-
pub(super) fn start_storage_transaction(&self) -> Result<DatabaseStorageTransaction<'_>, Error> {
78+
pub(super) fn start_storage_transaction(
79+
&self,
80+
) -> Result<DatabaseStorageTransaction<'_>, Error> {
7981
Ok(DatabaseStorageTransaction {
8082
transaction: Some(self.conn.transaction()?),
8183
})

src/test/mod.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,10 @@ impl TestEnvironment {
177177
pub(crate) fn s3(&self) -> &TestS3 {
178178
self.s3.get_or_init(TestS3::new)
179179
}
180+
181+
pub(crate) fn fake_release(&self) -> fakes::FakeRelease {
182+
fakes::FakeRelease::new(self.db())
183+
}
180184
}
181185

182186
pub(crate) struct TestDatabase {
@@ -215,10 +219,6 @@ impl TestDatabase {
215219
.get()
216220
.expect("failed to get a connection out of the pool")
217221
}
218-
219-
pub(crate) fn fake_release(&self) -> fakes::FakeRelease {
220-
fakes::FakeRelease::new(self)
221-
}
222222
}
223223

224224
impl Drop for TestDatabase {
@@ -252,6 +252,7 @@ impl TestFrontend {
252252
db.pool.clone(),
253253
config,
254254
build_queue,
255+
storage,
255256
)
256257
.expect("failed to start the web server"),
257258
client: Client::new(),

src/web/crate_details.rs

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -340,19 +340,19 @@ mod tests {
340340
wrapper(|env| {
341341
let db = env.db();
342342

343-
db.fake_release().name("foo").version("0.0.1").create()?;
344-
db.fake_release().name("foo").version("0.0.2").create()?;
345-
db.fake_release()
343+
env.fake_release().name("foo").version("0.0.1").create()?;
344+
env.fake_release().name("foo").version("0.0.2").create()?;
345+
env.fake_release()
346346
.name("foo")
347347
.version("0.0.3")
348348
.build_result_successful(false)
349349
.create()?;
350-
db.fake_release()
350+
env.fake_release()
351351
.name("foo")
352352
.version("0.0.4")
353353
.yanked(true)
354354
.create()?;
355-
db.fake_release()
355+
env.fake_release()
356356
.name("foo")
357357
.version("0.0.5")
358358
.build_result_successful(false)
@@ -373,17 +373,17 @@ mod tests {
373373
wrapper(|env| {
374374
let db = env.db();
375375

376-
db.fake_release()
376+
env.fake_release()
377377
.name("foo")
378378
.version("0.0.1")
379379
.build_result_successful(false)
380380
.create()?;
381-
db.fake_release()
381+
env.fake_release()
382382
.name("foo")
383383
.version("0.0.2")
384384
.build_result_successful(false)
385385
.create()?;
386-
db.fake_release()
386+
env.fake_release()
387387
.name("foo")
388388
.version("0.0.3")
389389
.yanked(true)
@@ -401,18 +401,18 @@ mod tests {
401401
wrapper(|env| {
402402
let db = env.db();
403403

404-
db.fake_release().name("foo").version("0.0.1").create()?;
405-
db.fake_release()
404+
env.fake_release().name("foo").version("0.0.1").create()?;
405+
env.fake_release()
406406
.name("foo")
407407
.version("0.0.2")
408408
.build_result_successful(false)
409409
.create()?;
410-
db.fake_release()
410+
env.fake_release()
411411
.name("foo")
412412
.version("0.0.3")
413413
.yanked(true)
414414
.create()?;
415-
db.fake_release().name("foo").version("0.0.4").create()?;
415+
env.fake_release().name("foo").version("0.0.4").create()?;
416416

417417
assert_last_successful_build_equals(&db, "foo", "0.0.1", None)?;
418418
assert_last_successful_build_equals(&db, "foo", "0.0.2", Some("0.0.4"))?;
@@ -428,25 +428,25 @@ mod tests {
428428
let db = env.db();
429429

430430
// Add new releases of 'foo' out-of-order since CrateDetails should sort them descending
431-
db.fake_release().name("foo").version("0.1.0").create()?;
432-
db.fake_release().name("foo").version("0.1.1").create()?;
433-
db.fake_release()
431+
env.fake_release().name("foo").version("0.1.0").create()?;
432+
env.fake_release().name("foo").version("0.1.1").create()?;
433+
env.fake_release()
434434
.name("foo")
435435
.version("0.3.0")
436436
.build_result_successful(false)
437437
.create()?;
438-
db.fake_release().name("foo").version("1.0.0").create()?;
439-
db.fake_release().name("foo").version("0.12.0").create()?;
440-
db.fake_release()
438+
env.fake_release().name("foo").version("1.0.0").create()?;
439+
env.fake_release().name("foo").version("0.12.0").create()?;
440+
env.fake_release()
441441
.name("foo")
442442
.version("0.2.0")
443443
.yanked(true)
444444
.create()?;
445-
db.fake_release()
445+
env.fake_release()
446446
.name("foo")
447447
.version("0.2.0-alpha")
448448
.create()?;
449-
db.fake_release()
449+
env.fake_release()
450450
.name("foo")
451451
.version("0.0.1")
452452
.build_result_successful(false)
@@ -517,9 +517,9 @@ mod tests {
517517
wrapper(|env| {
518518
let db = env.db();
519519

520-
db.fake_release().name("foo").version("0.0.1").create()?;
521-
db.fake_release().name("foo").version("0.0.3").create()?;
522-
db.fake_release().name("foo").version("0.0.2").create()?;
520+
env.fake_release().name("foo").version("0.0.1").create()?;
521+
env.fake_release().name("foo").version("0.0.3").create()?;
522+
env.fake_release().name("foo").version("0.0.2").create()?;
523523

524524
for version in &["0.0.1", "0.0.2", "0.0.3"] {
525525
let details = CrateDetails::new(&db.conn(), "foo", version).unwrap();
@@ -535,13 +535,13 @@ mod tests {
535535
wrapper(|env| {
536536
let db = env.db();
537537

538-
db.fake_release().name("foo").version("0.0.1").create()?;
539-
db.fake_release()
538+
env.fake_release().name("foo").version("0.0.1").create()?;
539+
env.fake_release()
540540
.name("foo")
541541
.version("0.0.3")
542542
.yanked(true)
543543
.create()?;
544-
db.fake_release().name("foo").version("0.0.2").create()?;
544+
env.fake_release().name("foo").version("0.0.2").create()?;
545545

546546
for version in &["0.0.1", "0.0.2", "0.0.3"] {
547547
let details = CrateDetails::new(&db.conn(), "foo", version).unwrap();
@@ -557,17 +557,17 @@ mod tests {
557557
wrapper(|env| {
558558
let db = env.db();
559559

560-
db.fake_release()
560+
env.fake_release()
561561
.name("foo")
562562
.version("0.0.1")
563563
.yanked(true)
564564
.create()?;
565-
db.fake_release()
565+
env.fake_release()
566566
.name("foo")
567567
.version("0.0.3")
568568
.yanked(true)
569569
.create()?;
570-
db.fake_release()
570+
env.fake_release()
571571
.name("foo")
572572
.version("0.0.2")
573573
.yanked(true)
@@ -585,9 +585,7 @@ mod tests {
585585
#[test]
586586
fn releases_dropdowns_is_correct() {
587587
wrapper(|env| {
588-
let db = env.db();
589-
590-
db.fake_release()
588+
env.fake_release()
591589
.name("binary")
592590
.version("0.1.0")
593591
.binary(true)

src/web/file.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! Database based file handler
22
3-
use crate::storage::{Storage, Blob};
3+
use crate::storage::{Blob, Storage};
44
use crate::{error::Result, Config};
55
use iron::{status, Handler, IronError, IronResult, Request, Response};
66

@@ -79,10 +79,9 @@ mod tests {
7979
#[test]
8080
fn file_roundtrip() {
8181
wrapper(|env| {
82-
let db = env.db();
8382
let now = Utc::now();
8483

85-
db.fake_release().create()?;
84+
env.fake_release().create()?;
8685

8786
let mut file = File::from_path(
8887
&env.storage(),
@@ -113,9 +112,7 @@ mod tests {
113112
config.max_file_size_html = MAX_HTML_SIZE;
114113
});
115114

116-
let db = env.db();
117-
118-
db.fake_release()
115+
env.fake_release()
119116
.name("dummy")
120117
.version("0.1.0")
121118
.rustdoc_file("small.html", &[b'A'; MAX_HTML_SIZE / 2] as &[u8])

src/web/metrics.rs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -347,14 +347,12 @@ mod tests {
347347
#[test]
348348
fn releases() {
349349
wrapper(|env| {
350-
env.db()
351-
.fake_release()
350+
env.fake_release()
352351
.name("rcc")
353352
.version("0.0.0")
354353
.repo("https://github.com/jyn514/rcc")
355354
.create()?;
356-
env.db()
357-
.fake_release()
355+
env.fake_release()
358356
.name("rcc")
359357
.version("1.0.0")
360358
.build_result_successful(false)
@@ -391,13 +389,8 @@ mod tests {
391389
#[test]
392390
fn crates() {
393391
wrapper(|env| {
394-
env.db()
395-
.fake_release()
396-
.name("rcc")
397-
.version("0.0.0")
398-
.create()?;
399-
env.db()
400-
.fake_release()
392+
env.fake_release().name("rcc").version("0.0.0").create()?;
393+
env.fake_release()
401394
.name("hexponent")
402395
.version("0.2.0")
403396
.create()?;

src/web/mod.rs

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -640,8 +640,8 @@ mod test {
640640
use kuchiki::traits::TendrilSink;
641641
use serde_json::json;
642642

643-
fn release(version: &str, db: &TestDatabase) -> i32 {
644-
db.fake_release()
643+
fn release(version: &str, env: &TestEnvironment) -> i32 {
644+
env.fake_release()
645645
.name("foo")
646646
.version(version)
647647
.create()
@@ -679,8 +679,7 @@ mod test {
679679
#[test]
680680
fn test_show_clipboard_for_crate_pages() {
681681
wrapper(|env| {
682-
env.db()
683-
.fake_release()
682+
env.fake_release()
684683
.name("fake_crate")
685684
.version("0.0.1")
686685
.source_file("test.rs", &[])
@@ -702,8 +701,7 @@ mod test {
702701
#[test]
703702
fn test_hide_clipboard_for_non_crate_pages() {
704703
wrapper(|env| {
705-
env.db()
706-
.fake_release()
704+
env.fake_release()
707705
.name("fake_crate")
708706
.version("0.0.1")
709707
.create()
@@ -739,8 +737,7 @@ mod test {
739737
#[test]
740738
fn binary_docs_redirect_to_crate() {
741739
wrapper(|env| {
742-
let db = env.db();
743-
db.fake_release()
740+
env.fake_release()
744741
.name("bat")
745742
.version("0.2.0")
746743
.binary(true)
@@ -760,8 +757,7 @@ mod test {
760757
#[test]
761758
fn can_view_source() {
762759
wrapper(|env| {
763-
let db = env.db();
764-
db.fake_release()
760+
env.fake_release()
765761
.name("regex")
766762
.version("0.3.0")
767763
.source_file("src/main.rs", br#"println!("definitely valid rust")"#)
@@ -783,7 +779,7 @@ mod test {
783779
wrapper(|env| {
784780
let db = env.db();
785781
let version = |v| version(v, db);
786-
let release = |v| release(v, db);
782+
let release = |v| release(v, env);
787783

788784
release("0.3.1-pre");
789785
assert_eq!(version(Some("*")), semver("0.3.1-pre"));
@@ -809,14 +805,14 @@ mod test {
809805
wrapper(|env| {
810806
let db = env.db();
811807

812-
let release_id = release("0.3.0", db);
808+
let release_id = release("0.3.0", env);
813809
let query = "UPDATE releases SET yanked = true WHERE id = $1 AND version = '0.3.0'";
814810

815811
db.conn().query(query, &[&release_id]).unwrap();
816812
assert_eq!(version(None, db), None);
817813
assert_eq!(version(Some("0.3"), db), None);
818814

819-
release("0.1.0+4.1", db);
815+
release("0.1.0+4.1", env);
820816
assert_eq!(version(Some("0.1.0+4.1"), db), exact("0.1.0+4.1"));
821817
assert_eq!(version(None, db), semver("0.1.0+4.1"));
822818

@@ -830,10 +826,10 @@ mod test {
830826
wrapper(|env| {
831827
let db = env.db();
832828

833-
release("0.1.0+4.1", db);
834-
release("0.1.1", db);
829+
release("0.1.0+4.1", env);
830+
release("0.1.1", env);
835831
assert_eq!(version(None, db), semver("0.1.1"));
836-
release("0.5.1+zstd.1.4.4", db);
832+
release("0.5.1+zstd.1.4.4", env);
837833
assert_eq!(version(None, db), semver("0.5.1+zstd.1.4.4"));
838834
assert_eq!(version(Some("0.5"), db), semver("0.5.1+zstd.1.4.4"));
839835
assert_eq!(

0 commit comments

Comments
 (0)