Skip link checking for URL with prefix in config (#846)
This commit is contained in:
parent
e8dc33ad08
commit
75570d041a
|
@ -91,13 +91,15 @@ type TranslateTerm = HashMap<String, String>;
|
||||||
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub struct LinkChecker {
|
pub struct LinkChecker {
|
||||||
|
/// Skip link checking for these URL prefixes
|
||||||
|
pub skip_prefixes: Vec<String>,
|
||||||
/// Skip anchor checking for these URL prefixes
|
/// Skip anchor checking for these URL prefixes
|
||||||
pub skip_anchor_prefixes: Vec<String>,
|
pub skip_anchor_prefixes: Vec<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for LinkChecker {
|
impl Default for LinkChecker {
|
||||||
fn default() -> LinkChecker {
|
fn default() -> LinkChecker {
|
||||||
LinkChecker { skip_anchor_prefixes: Vec::new() }
|
LinkChecker { skip_prefixes: Vec::new(), skip_anchor_prefixes: Vec::new() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -589,10 +591,29 @@ skip_anchor_prefixes = [
|
||||||
"#;
|
"#;
|
||||||
|
|
||||||
let config = Config::parse(config_str).unwrap();
|
let config = Config::parse(config_str).unwrap();
|
||||||
let v = config.link_checker.skip_anchor_prefixes;
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
v,
|
config.link_checker.skip_anchor_prefixes,
|
||||||
vec!["https://caniuse.com/#feat=", "https://github.com/rust-lang/rust/blob/"]
|
vec!["https://caniuse.com/#feat=", "https://github.com/rust-lang/rust/blob/"]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn link_checker_skip_prefixes() {
|
||||||
|
let config_str = r#"
|
||||||
|
title = "My site"
|
||||||
|
base_url = "example.com"
|
||||||
|
|
||||||
|
[link_checker]
|
||||||
|
skip_prefixes = [
|
||||||
|
"http://[2001:db8::]/",
|
||||||
|
"https://www.example.com/path",
|
||||||
|
]
|
||||||
|
"#;
|
||||||
|
|
||||||
|
let config = Config::parse(config_str).unwrap();
|
||||||
|
assert_eq!(
|
||||||
|
config.link_checker.skip_prefixes,
|
||||||
|
vec!["http://[2001:db8::]/", "https://www.example.com/path",]
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -198,6 +198,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn skip_anchor_prefixes() {
|
fn skip_anchor_prefixes() {
|
||||||
let config = LinkChecker {
|
let config = LinkChecker {
|
||||||
|
skip_prefixes: vec![],
|
||||||
skip_anchor_prefixes: vec!["https://github.com/rust-lang/rust/blob/".to_owned()],
|
skip_anchor_prefixes: vec!["https://github.com/rust-lang/rust/blob/".to_owned()],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -399,6 +399,15 @@ impl Site {
|
||||||
all_links
|
all_links
|
||||||
.par_iter()
|
.par_iter()
|
||||||
.filter_map(|(page_path, link)| {
|
.filter_map(|(page_path, link)| {
|
||||||
|
if self
|
||||||
|
.config
|
||||||
|
.link_checker
|
||||||
|
.skip_prefixes
|
||||||
|
.iter()
|
||||||
|
.any(|prefix| link.starts_with(prefix))
|
||||||
|
{
|
||||||
|
return None;
|
||||||
|
}
|
||||||
let res = check_url(&link, &self.config.link_checker);
|
let res = check_url(&link, &self.config.link_checker);
|
||||||
if res.is_valid() {
|
if res.is_valid() {
|
||||||
None
|
None
|
||||||
|
|
|
@ -161,7 +161,10 @@ fn can_build_site_without_live_reload() {
|
||||||
assert!(file_exists!(public, "nested_sass/scss.css"));
|
assert!(file_exists!(public, "nested_sass/scss.css"));
|
||||||
|
|
||||||
// no live reload code
|
// no live reload code
|
||||||
assert_eq!(file_contains!(public, "index.html", "/livereload.js?port=1112&mindelay=10"), false);
|
assert_eq!(
|
||||||
|
file_contains!(public, "index.html", "/livereload.js?port=1112&mindelay=10"),
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
// Both pages and sections are in the sitemap
|
// Both pages and sections are in the sitemap
|
||||||
assert!(file_contains!(
|
assert!(file_contains!(
|
||||||
|
@ -470,11 +473,7 @@ fn can_build_site_with_pagination_for_index() {
|
||||||
"page/1/index.html",
|
"page/1/index.html",
|
||||||
"http-equiv=\"refresh\" content=\"0;url=https://replace-this-with-your-url.com/\""
|
"http-equiv=\"refresh\" content=\"0;url=https://replace-this-with-your-url.com/\""
|
||||||
));
|
));
|
||||||
assert!(file_contains!(
|
assert!(file_contains!(public, "page/1/index.html", "<title>Redirect</title>"));
|
||||||
public,
|
|
||||||
"page/1/index.html",
|
|
||||||
"<title>Redirect</title>"
|
|
||||||
));
|
|
||||||
assert!(file_contains!(
|
assert!(file_contains!(
|
||||||
public,
|
public,
|
||||||
"page/1/index.html",
|
"page/1/index.html",
|
||||||
|
@ -677,8 +676,11 @@ fn can_ignore_markdown_content() {
|
||||||
fn check_site() {
|
fn check_site() {
|
||||||
let (mut site, _tmp_dir, _public) = build_site("test_site");
|
let (mut site, _tmp_dir, _public) = build_site("test_site");
|
||||||
|
|
||||||
let prefixes = &site.config.link_checker.skip_anchor_prefixes;
|
assert_eq!(
|
||||||
assert_eq!(prefixes, &vec!["https://github.com/rust-lang/rust/blob/"]);
|
site.config.link_checker.skip_anchor_prefixes,
|
||||||
|
vec!["https://github.com/rust-lang/rust/blob/"]
|
||||||
|
);
|
||||||
|
assert_eq!(site.config.link_checker.skip_prefixes, vec!["http://[2001:db8::]/"]);
|
||||||
|
|
||||||
site.config.enable_check_mode();
|
site.config.enable_check_mode();
|
||||||
site.load().expect("link check test_site");
|
site.load().expect("link check test_site");
|
||||||
|
|
|
@ -99,6 +99,11 @@ extra_syntaxes = []
|
||||||
|
|
||||||
# Configure the link checker
|
# Configure the link checker
|
||||||
[link_checker]
|
[link_checker]
|
||||||
|
# Skip link checking for external URLs that start with these prefixes
|
||||||
|
skip_prefixes = [
|
||||||
|
"http://[2001:db8::]/",
|
||||||
|
]
|
||||||
|
|
||||||
# Skip anchor checking for external URLs that start with these prefixes
|
# Skip anchor checking for external URLs that start with these prefixes
|
||||||
skip_anchor_prefixes = [
|
skip_anchor_prefixes = [
|
||||||
"https://caniuse.com/",
|
"https://caniuse.com/",
|
||||||
|
|
|
@ -14,6 +14,10 @@ extra_syntaxes = ["syntaxes"]
|
||||||
ignored_content = ["*/ignored.md"]
|
ignored_content = ["*/ignored.md"]
|
||||||
|
|
||||||
[link_checker]
|
[link_checker]
|
||||||
|
skip_prefixes = [
|
||||||
|
"http://[2001:db8::]/",
|
||||||
|
]
|
||||||
|
|
||||||
skip_anchor_prefixes = [
|
skip_anchor_prefixes = [
|
||||||
"https://github.com/rust-lang/rust/blob/",
|
"https://github.com/rust-lang/rust/blob/",
|
||||||
]
|
]
|
||||||
|
|
|
@ -10,4 +10,6 @@ A simple page
|
||||||
|
|
||||||
Link to some rust-lang [source code][permalink].
|
Link to some rust-lang [source code][permalink].
|
||||||
|
|
||||||
|
Internal web server <http://[2001:db8::]/path>.
|
||||||
|
|
||||||
[permalink]: https://github.com/rust-lang/rust/blob/c772948b687488a087356cb91432425662e034b9/src/librustc_back/target/mod.rs#L194-L214
|
[permalink]: https://github.com/rust-lang/rust/blob/c772948b687488a087356cb91432425662e034b9/src/librustc_back/target/mod.rs#L194-L214
|
||||||
|
|
Loading…
Reference in a new issue