Skip to content

Commit d2460c8

Browse files
committed
Fix latest_path vs permalink_path
1 parent 7cd57f8 commit d2460c8

File tree

2 files changed

+20
-16
lines changed

2 files changed

+20
-16
lines changed

src/web/rustdoc.rs

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ pub fn rustdoc_redirector_handler(req: &mut Request) -> IronResult<Response> {
195195
#[derive(Debug, Clone, PartialEq, Serialize)]
196196
struct RustdocPage {
197197
latest_path: String,
198+
permalink_path: String,
198199
latest_version: String,
199200
target: String,
200201
inner_path: String,
@@ -465,11 +466,13 @@ pub fn rustdoc_html_server_handler(req: &mut Request) -> IronResult<Response> {
465466
"".to_string()
466467
};
467468

468-
let latest_path = format!(
469+
let permalink_path = format!(
469470
"/crate/{}/{}{}{}",
470471
name, latest_version, target_redirect, query_string
471472
);
472473

474+
let latest_path = format!("/crate/{}/latest{}{}", name, target_redirect, query_string);
475+
473476
metrics
474477
.recently_accessed_releases
475478
.record(krate.crate_id, krate.release_id, target);
@@ -483,6 +486,7 @@ pub fn rustdoc_html_server_handler(req: &mut Request) -> IronResult<Response> {
483486
rendering_time.step("rewrite html");
484487
RustdocPage {
485488
latest_path,
489+
permalink_path,
486490
latest_version,
487491
target,
488492
inner_path,
@@ -844,25 +848,25 @@ mod test {
844848
let redirect = latest_version_redirect("/dummy/0.1.0/dummy/", web)?;
845849
assert_eq!(
846850
redirect,
847-
"/crate/dummy/0.2.0/target-redirect/x86_64-unknown-linux-gnu/dummy/index.html"
851+
"/crate/dummy/latest/target-redirect/x86_64-unknown-linux-gnu/dummy/index.html"
848852
);
849853

850854
// check it keeps the subpage
851855
let redirect = latest_version_redirect("/dummy/0.1.0/dummy/blah/", web)?;
852856
assert_eq!(
853857
redirect,
854-
"/crate/dummy/0.2.0/target-redirect/x86_64-unknown-linux-gnu/dummy/blah/index.html"
858+
"/crate/dummy/latest/target-redirect/x86_64-unknown-linux-gnu/dummy/blah/index.html"
855859
);
856860
let redirect = latest_version_redirect("/dummy/0.1.0/dummy/blah/blah.html", web)?;
857861
assert_eq!(
858862
redirect,
859-
"/crate/dummy/0.2.0/target-redirect/x86_64-unknown-linux-gnu/dummy/blah/blah.html"
863+
"/crate/dummy/latest/target-redirect/x86_64-unknown-linux-gnu/dummy/blah/blah.html"
860864
);
861865

862866
// check it also works for deleted pages
863867
let redirect =
864868
latest_version_redirect("/dummy/0.1.0/dummy/struct.will-be-deleted.html", web)?;
865-
assert_eq!(redirect, "/crate/dummy/0.2.0/target-redirect/x86_64-unknown-linux-gnu/dummy/struct.will-be-deleted.html");
869+
assert_eq!(redirect, "/crate/dummy/latest/target-redirect/x86_64-unknown-linux-gnu/dummy/struct.will-be-deleted.html");
866870

867871
Ok(())
868872
})
@@ -892,14 +896,14 @@ mod test {
892896
latest_version_redirect("/dummy/0.1.0/x86_64-pc-windows-msvc/dummy", web)?;
893897
assert_eq!(
894898
redirect,
895-
"/crate/dummy/0.2.0/target-redirect/x86_64-pc-windows-msvc/dummy/index.html"
899+
"/crate/dummy/latest/target-redirect/x86_64-pc-windows-msvc/dummy/index.html"
896900
);
897901

898902
let redirect =
899903
latest_version_redirect("/dummy/0.1.0/x86_64-pc-windows-msvc/dummy/", web)?;
900904
assert_eq!(
901905
redirect,
902-
"/crate/dummy/0.2.0/target-redirect/x86_64-pc-windows-msvc/dummy/index.html"
906+
"/crate/dummy/latest/target-redirect/x86_64-pc-windows-msvc/dummy/index.html"
903907
);
904908

905909
let redirect = latest_version_redirect(
@@ -908,7 +912,7 @@ mod test {
908912
)?;
909913
assert_eq!(
910914
redirect,
911-
"/crate/dummy/0.2.0/target-redirect/x86_64-pc-windows-msvc/dummy/struct.Blah.html"
915+
"/crate/dummy/latest/target-redirect/x86_64-pc-windows-msvc/dummy/struct.Blah.html"
912916
);
913917

914918
Ok(())
@@ -934,7 +938,7 @@ mod test {
934938

935939
let web = env.frontend();
936940
let redirect = latest_version_redirect("/dummy/0.1.0/dummy/", web)?;
937-
assert_eq!(redirect, "/crate/dummy/0.2.0");
941+
assert_eq!(redirect, "/crate/dummy/latest");
938942

939943
Ok(())
940944
})
@@ -968,13 +972,13 @@ mod test {
968972
let redirect = latest_version_redirect("/dummy/0.1.0/dummy/", web)?;
969973
assert_eq!(
970974
redirect,
971-
"/crate/dummy/0.2.0/target-redirect/x86_64-unknown-linux-gnu/dummy/index.html"
975+
"/crate/dummy/latest/target-redirect/x86_64-unknown-linux-gnu/dummy/index.html"
972976
);
973977

974978
let redirect = latest_version_redirect("/dummy/0.2.1/dummy/", web)?;
975979
assert_eq!(
976980
redirect,
977-
"/crate/dummy/0.2.0/target-redirect/x86_64-unknown-linux-gnu/dummy/index.html"
981+
"/crate/dummy/latest/target-redirect/x86_64-unknown-linux-gnu/dummy/index.html"
978982
);
979983

980984
Ok(())
@@ -1011,13 +1015,13 @@ mod test {
10111015
let redirect = latest_version_redirect("/dummy/0.1.0/dummy/", web)?;
10121016
assert_eq!(
10131017
redirect,
1014-
"/crate/dummy/0.2.1/target-redirect/x86_64-unknown-linux-gnu/dummy/index.html"
1018+
"/crate/dummy/latest/target-redirect/x86_64-unknown-linux-gnu/dummy/index.html"
10151019
);
10161020

10171021
let redirect = latest_version_redirect("/dummy/0.2.0/dummy/", web)?;
10181022
assert_eq!(
10191023
redirect,
1020-
"/crate/dummy/0.2.1/target-redirect/x86_64-unknown-linux-gnu/dummy/index.html"
1024+
"/crate/dummy/latest/target-redirect/x86_64-unknown-linux-gnu/dummy/index.html"
10211025
);
10221026

10231027
Ok(())
@@ -1831,14 +1835,14 @@ mod test {
18311835
let target_redirect = "/crate/pyo3/0.13.2/target-redirect/x86_64-unknown-linux-gnu/src/pyo3/objects/exc.rs.html";
18321836
assert_eq!(
18331837
latest_version_redirect(
1834-
"/pyo3/0.2.7/src/pyo3/objects/exc.rs.html",
1838+
"/pyo3/latest/src/pyo3/objects/exc.rs.html",
18351839
env.frontend()
18361840
)?,
18371841
target_redirect
18381842
);
18391843
assert_redirect(
18401844
target_redirect,
1841-
"/pyo3/0.13.2/pyo3/?search=exc",
1845+
"/pyo3/latest/pyo3/?search=exc",
18421846
env.frontend(),
18431847
)?;
18441848
Ok(())

templates/rustdoc/topbar.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
{%- if metadata.version_or_latest == "latest" -%}
2626
<li class="pure-menu-item">
27-
<a href="{{latest_path | safe}}" class="pure-menu-link description" title="Get a link to this specific version">
27+
<a href="{{permalink_path | safe}}" class="pure-menu-link description" title="Get a link to this specific version">
2828
{{ "link" | fas }} Permalink
2929
</a>
3030
</li>

0 commit comments

Comments
 (0)