Skip to content

Commit 35b7e51

Browse files
committed
tests: Extract integration tests to separate compilation unit
This achieves the primary goal: modifying test files no longer triggers library recompilation, significantly improving incremental test iteration.
1 parent 61ba486 commit 35b7e51

File tree

268 files changed

+362
-373
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

268 files changed

+362
-373
lines changed

Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ opt-level = 2
4646
name = "crates_io"
4747
doctest = true
4848

49+
[[test]]
50+
name = "integration"
51+
path = "src/tests/mod.rs"
52+
4953
[dependencies]
5054
aes-gcm = { version = "=0.10.3", features = ["std"] }
5155
anyhow = "=1.0.100"

src/index.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,9 @@ pub async fn index_metadata(
140140
mod tests {
141141
use super::*;
142142
use crate::schema::users;
143-
use crate::tests::builders::{CrateBuilder, VersionBuilder};
144143
use chrono::{Days, Utc};
145144
use crates_io_test_db::TestDatabase;
145+
use crates_io_test_utils::builders::{CrateBuilder, VersionBuilder};
146146
use insta::assert_json_snapshot;
147147

148148
#[tokio::test]

src/lib.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ pub mod sqs;
4242
pub mod ssh;
4343
pub mod storage;
4444
pub mod tasks;
45-
#[cfg(test)]
46-
pub mod tests;
4745
pub mod typosquat;
4846
pub mod util;
4947
pub mod worker;

src/tests/account_lock.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
use crate::tests::{TestApp, util::RequestHelper};
1+
use crate::{TestApp, util::RequestHelper};
22
use chrono::{DateTime, Duration, Utc};
33
use insta::assert_snapshot;
44

55
const URL: &str = "/api/v1/me";
66
const LOCK_REASON: &str = "test lock reason";
77

88
async fn lock_account(app: &TestApp, user_id: i32, until: Option<DateTime<Utc>>) {
9-
use crate::schema::users;
9+
use crates_io::schema::users;
1010
use diesel::prelude::*;
1111
use diesel_async::RunQueryDsl;
1212

src/tests/authentication.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
use crate::tests::TestApp;
2-
use crate::tests::util::{MockRequestExt, MockTokenUser, RequestHelper, Response};
1+
use crate::TestApp;
2+
use crate::util::{MockRequestExt, MockTokenUser, RequestHelper, Response};
33

4-
use crate::tests::builders::PublishBuilder;
5-
use crate::tests::util::encode_session_header;
4+
use crate::builders::PublishBuilder;
5+
use crate::util::encode_session_header;
66
use http::{Method, StatusCode, header};
77
use insta::assert_snapshot;
88

src/tests/blocked_routes.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use crate::tests::builders::{CrateBuilder, VersionBuilder};
2-
use crate::tests::util::{RequestHelper, TestApp};
1+
use crate::builders::{CrateBuilder, VersionBuilder};
2+
use crate::util::{RequestHelper, TestApp};
33
use http::StatusCode;
44

55
#[tokio::test(flavor = "multi_thread")]

src/tests/categories.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use crate::schema::categories;
21
use claims::assert_ok;
2+
use crates_io::schema::categories;
33
use crates_io_test_db::TestDatabase;
44
use diesel::*;
55
use diesel_async::{AsyncPgConnection, RunQueryDsl};
@@ -53,7 +53,7 @@ async fn sync_adds_new_categories() {
5353
let test_db = TestDatabase::new();
5454
let mut conn = test_db.async_connect().await;
5555

56-
crate::boot::categories::sync_with_connection(ALGORITHMS_AND_SUCH, &mut conn)
56+
crates_io::boot::categories::sync_with_connection(ALGORITHMS_AND_SUCH, &mut conn)
5757
.await
5858
.unwrap();
5959

@@ -66,10 +66,10 @@ async fn sync_removes_missing_categories() {
6666
let test_db = TestDatabase::new();
6767
let mut conn = test_db.async_connect().await;
6868

69-
crate::boot::categories::sync_with_connection(ALGORITHMS_AND_SUCH, &mut conn)
69+
crates_io::boot::categories::sync_with_connection(ALGORITHMS_AND_SUCH, &mut conn)
7070
.await
7171
.unwrap();
72-
crate::boot::categories::sync_with_connection(ALGORITHMS, &mut conn)
72+
crates_io::boot::categories::sync_with_connection(ALGORITHMS, &mut conn)
7373
.await
7474
.unwrap();
7575

@@ -82,10 +82,10 @@ async fn sync_adds_and_removes() {
8282
let test_db = TestDatabase::new();
8383
let mut conn = test_db.async_connect().await;
8484

85-
crate::boot::categories::sync_with_connection(ALGORITHMS_AND_SUCH, &mut conn)
85+
crates_io::boot::categories::sync_with_connection(ALGORITHMS_AND_SUCH, &mut conn)
8686
.await
8787
.unwrap();
88-
crate::boot::categories::sync_with_connection(ALGORITHMS_AND_ANOTHER, &mut conn)
88+
crates_io::boot::categories::sync_with_connection(ALGORITHMS_AND_ANOTHER, &mut conn)
8989
.await
9090
.unwrap();
9191

@@ -99,5 +99,5 @@ async fn test_real_categories() {
9999
let mut conn = test_db.async_connect().await;
100100

101101
const TOML: &str = include_str!("../boot/categories.toml");
102-
assert_ok!(crate::boot::categories::sync_with_connection(TOML, &mut conn).await);
102+
assert_ok!(crates_io::boot::categories::sync_with_connection(TOML, &mut conn).await);
103103
}

src/tests/cors.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use crate::tests::TestApp;
2-
use crate::tests::util::{MockRequestExt, RequestHelper};
1+
use crate::TestApp;
2+
use crate::util::{MockRequestExt, RequestHelper};
33
use insta::assert_snapshot;
44

55
#[tokio::test(flavor = "multi_thread")]

src/tests/dump_db.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
use crate::tests::builders::CrateBuilder;
2-
use crate::tests::util::TestApp;
3-
use crate::worker::jobs::DumpDb;
1+
use crate::builders::CrateBuilder;
2+
use crate::util::TestApp;
43
use bytes::Buf;
4+
use crates_io::worker::jobs::DumpDb;
55
use crates_io_worker::BackgroundJob;
66
use flate2::read::GzDecoder;
77
use insta::{assert_debug_snapshot, assert_snapshot};

src/tests/github_secret_scanning.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
use crate::tests::builders::CrateBuilder;
2-
use crate::tests::util::MockRequestExt;
3-
use crate::tests::util::insta::api_token_redaction;
4-
use crate::tests::{RequestHelper, TestApp};
5-
use crate::util::token::HashedToken;
6-
use crate::{models::ApiToken, schema::api_tokens};
1+
use crate::builders::CrateBuilder;
2+
use crate::util::MockRequestExt;
3+
use crate::util::insta::api_token_redaction;
4+
use crate::{RequestHelper, TestApp};
75
use base64::{Engine as _, engine::general_purpose};
86
use chrono::{TimeDelta, Utc};
97
use claims::assert_ok;
8+
use crates_io::util::token::HashedToken;
9+
use crates_io::{models::ApiToken, schema::api_tokens};
1010
use crates_io_database::models::CrateOwner;
1111
use crates_io_database::models::trustpub::NewToken;
1212
use crates_io_database::schema::trustpub_tokens;

0 commit comments

Comments
 (0)