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 30da50c commit af6ad54
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 0 deletions.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

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 af6ad54

Please sign in to comment.