Skip to content

Commit bb8cd48

Browse files
committed
fix regression when showing search results with a failed crate
1 parent bbf1c3f commit bb8cd48

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

src/web/releases.rs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -789,8 +789,8 @@ mod tests {
789789
use crate::db::types::BuildStatus;
790790
use crate::registry_api::{CrateOwner, OwnerKind};
791791
use crate::test::{
792-
assert_cache_control, assert_redirect, assert_redirect_unchecked, assert_success, wrapper,
793-
FakeBuild, TestFrontend,
792+
assert_cache_control, assert_redirect, assert_redirect_unchecked, assert_success,
793+
fake_release_that_failed_before_build, wrapper, FakeBuild, TestFrontend,
794794
};
795795
use anyhow::Error;
796796
use chrono::{Duration, TimeZone};
@@ -1298,6 +1298,18 @@ mod tests {
12981298
.docsrs_version("docs.rs 4.0.0")])
12991299
.create()?;
13001300

1301+
// release that failed in the fetch-step, will miss some details
1302+
env.runtime().block_on(async {
1303+
let mut conn = env.async_db().await.async_conn().await;
1304+
fake_release_that_failed_before_build(
1305+
&mut conn,
1306+
"failed_hard",
1307+
"0.1.0",
1308+
"some random error",
1309+
)
1310+
.await
1311+
})?;
1312+
13011313
let _m = crates_io
13021314
.mock("GET", "/api/v1/crates")
13031315
.match_query(Matcher::AllOf(vec![
@@ -1313,7 +1325,8 @@ mod tests {
13131325
{ "name": "some_other_crate" },
13141326
{ "name": "and_another_one" },
13151327
{ "name": "yet_another_crate" },
1316-
{ "name": "in_progress" }
1328+
{ "name": "in_progress" },
1329+
{ "name": "failed_hard" }
13171330
],
13181331
"meta": {
13191332
"next_page": null,
@@ -1327,14 +1340,15 @@ mod tests {
13271340
let links = get_release_links("/releases/search?query=some_random_crate", web)?;
13281341

13291342
// `some_other_crate` won't be shown since we don't have it yet
1330-
assert_eq!(links.len(), 3);
1343+
assert_eq!(links.len(), 4);
13311344
// * `max_version` from the crates.io search result will be ignored since we
13321345
// might not have it yet, or the doc-build might be in progress.
13331346
// * ranking/order from crates.io result is preserved
13341347
// * version used is the highest semver following our own "latest version" logic
13351348
assert_eq!(links[0], "/some_random_crate/latest/some_random_crate/");
13361349
assert_eq!(links[1], "/and_another_one/latest/and_another_one/");
13371350
assert_eq!(links[2], "/yet_another_crate/0.1.0/yet_another_crate/");
1351+
assert_eq!(links[3], "/crate/failed_hard/0.1.0");
13381352
Ok(())
13391353
})
13401354
}

templates/releases/releases.html

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,15 @@
5959
{{ release.stars }}
6060
{{ "star" | fas }}
6161
</div>
62-
{%- else -%}
62+
{%- elif release.build_time -%}
6363
<div class="pure-u-1 pure-u-sm-4-24 pure-u-md-3-24 date"
6464
title="{{ release.build_time | date(format='%FT%TZ') }}">
6565
{{ release.build_time | timeformat(relative=true) }}
6666
</div>
67+
{%- else -%}
68+
<div class="pure-u-1 pure-u-sm-4-24 pure-u-md-3-24 date">
69+
&mdash;
70+
</div>
6771
{%- endif %}
6872
</div>
6973
</a>

0 commit comments

Comments
 (0)