Skip to content

Commit

Permalink
add test for long crate-names & versions, fix reverse migration & com…
Browse files Browse the repository at this point in the history
…ment it
  • Loading branch information
syphar committed Jun 23, 2024
1 parent 5ba6fdc commit 01ec4de
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,2 +1,10 @@
-- this reverse migration might fail when we have other records
-- referencing releases with longer names or versions.
-- If this has to be reverted we probably would have to manually run
-- db::delete::delete_crate and db::delete::delete_version for the releases
-- and crates.
DELETE FROM crates WHERE LENGTH(name) > 255;
DELETE FROM releases WHERE LENGTH(version) > 100;

ALTER TABLE crates ALTER COLUMN name TYPE VARCHAR(255);
ALTER TABLE releases ALTER COLUMN version TYPE VARCHAR(100);
39 changes: 39 additions & 0 deletions src/db/add_package.rs
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,7 @@ mod test {
use crate::registry_api::OwnerKind;
use crate::test::*;
use crate::utils::CargoMetadata;
use std::iter;
use test_case::test_case;

#[test]
Expand Down Expand Up @@ -1110,4 +1111,42 @@ mod test {
Ok(())
})
}

#[test]
fn test_long_crate_name() {
async_wrapper(|env| async move {
let mut conn = env.async_db().await.async_conn().await;

let name: String = iter::repeat("krate").take(100).collect();
let crate_id = initialize_crate(&mut conn, &name).await?;

let db_name = sqlx::query_scalar!("SELECT name FROM crates WHERE id = $1", crate_id)
.fetch_one(&mut *conn)
.await?;

assert_eq!(db_name, name);

Ok(())
})
}

#[test]
fn test_long_relaase_version() {
async_wrapper(|env| async move {
let mut conn = env.async_db().await.async_conn().await;

let crate_id = initialize_crate(&mut conn, "krate").await?;
let version: String = iter::repeat("version").take(100).collect();
let release_id = initialize_release(&mut conn, crate_id, &version).await?;

let db_version =
sqlx::query_scalar!("SELECT version FROM releases WHERE id = $1", release_id)
.fetch_one(&mut *conn)
.await?;

assert_eq!(db_version, version);

Ok(())
})
}
}

0 comments on commit 01ec4de

Please sign in to comment.