Skip to content

Commit f30b11d

Browse files
committed
fix panic in release-list with incomplete release & successful build
1 parent 1362306 commit f30b11d

File tree

1 file changed

+37
-2
lines changed

1 file changed

+37
-2
lines changed

src/web/releases.rs

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ pub(crate) async fn get_releases(
120120
version: row.get(1),
121121
description: row.get(2),
122122
target_name: row.get(3),
123-
rustdoc_status: row.get(4),
123+
rustdoc_status: row.get::<Option<bool>, _>(4).unwrap_or(false),
124124
build_time: row.get(5),
125125
stars: row.get::<Option<i32>, _>(6).unwrap_or(0),
126126
has_unyanked_releases: None,
@@ -787,10 +787,11 @@ pub(crate) async fn build_queue_handler(
787787
mod tests {
788788
use super::*;
789789
use crate::db::types::BuildStatus;
790+
use crate::db::{finish_build, initialize_build, initialize_crate, initialize_release};
790791
use crate::registry_api::{CrateOwner, OwnerKind};
791792
use crate::test::{
792793
assert_cache_control, assert_redirect, assert_redirect_unchecked, assert_success,
793-
fake_release_that_failed_before_build, wrapper, FakeBuild, TestFrontend,
794+
async_wrapper, fake_release_that_failed_before_build, wrapper, FakeBuild, TestFrontend,
794795
};
795796
use anyhow::Error;
796797
use chrono::{Duration, TimeZone};
@@ -800,6 +801,40 @@ mod tests {
800801
use serde_json::json;
801802
use test_case::test_case;
802803

804+
#[test]
805+
fn test_release_list_with_incomplete_release_and_successful_build() {
806+
async_wrapper(|env| async move {
807+
let db = env.async_db().await;
808+
let mut conn = db.async_conn().await;
809+
810+
let crate_id = initialize_crate(&mut conn, "foo").await?;
811+
let release_id = initialize_release(&mut conn, crate_id, "0.1.0").await?;
812+
let build_id = initialize_build(&mut conn, release_id).await?;
813+
814+
finish_build(
815+
&mut conn,
816+
build_id,
817+
"rustc-version",
818+
"docs.rs 4.0.0",
819+
BuildStatus::Success,
820+
None,
821+
)
822+
.await?;
823+
824+
let releases = get_releases(&mut conn, 1, 10, Order::ReleaseTime, false).await?;
825+
826+
assert_eq!(
827+
vec!["foo"],
828+
releases
829+
.iter()
830+
.map(|release| release.name.as_str())
831+
.collect::<Vec<_>>(),
832+
);
833+
834+
Ok(())
835+
})
836+
}
837+
803838
#[test]
804839
fn get_releases_by_stars() {
805840
wrapper(|env| {

0 commit comments

Comments
 (0)