Skip to content

Commit

Permalink
Auto merge of #5522 - DarkDrek:user_agent_option, r=alexcrichton
Browse files Browse the repository at this point in the history
Add option to set user-agent

Fixes #5494
  • Loading branch information
bors committed May 11, 2018
2 parents 0e042e8 + ab4b8b9 commit b24b455
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 2 deletions.
12 changes: 10 additions & 2 deletions src/cargo/ops/registry.rs
Original file line number Diff line number Diff line change
Expand Up @@ -358,8 +358,12 @@ pub fn needs_custom_http_transport(config: &Config) -> CargoResult<bool> {
let timeout = http_timeout(config)?;
let cainfo = config.get_path("http.cainfo")?;
let check_revoke = config.get_bool("http.check-revoke")?;
let user_agent = config.get_string("http.user-agent")?;

Ok(proxy_exists || timeout.is_some() || cainfo.is_some() || check_revoke.is_some())
Ok(
proxy_exists || timeout.is_some() || cainfo.is_some() || check_revoke.is_some()
|| user_agent.is_some(),
)
}

/// Configure a libcurl http handle with the defaults options for Cargo
Expand All @@ -371,7 +375,6 @@ pub fn configure_http_handle(config: &Config, handle: &mut Easy) -> CargoResult<
handle.connect_timeout(Duration::new(30, 0))?;
handle.low_speed_limit(10 /* bytes per second */)?;
handle.low_speed_time(Duration::new(30, 0))?;
handle.useragent(&version().to_string())?;
if let Some(proxy) = http_proxy(config)? {
handle.proxy(&proxy)?;
}
Expand All @@ -385,6 +388,11 @@ pub fn configure_http_handle(config: &Config, handle: &mut Easy) -> CargoResult<
handle.connect_timeout(Duration::new(timeout as u64, 0))?;
handle.low_speed_time(Duration::new(timeout as u64, 0))?;
}
if let Some(user_agent) = config.get_string("http.user-agent")? {
handle.useragent(&user_agent.val)?;
} else {
handle.useragent(&version().to_string())?;
}
Ok(())
}

Expand Down
37 changes: 37 additions & 0 deletions tests/testsuite/bad_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,43 @@ Caused by:
);
}

#[test]
fn bad6() {
let p = project("foo")
.file(
"Cargo.toml",
r#"
[package]
name = "foo"
version = "0.0.0"
authors = []
"#,
)
.file("src/lib.rs", "")
.file(
".cargo/config",
r#"
[http]
user-agent = true
"#,
)
.build();
Package::new("foo", "1.0.0").publish();

assert_that(
p.cargo("publish").arg("-v"),
execs().with_status(101).with_stderr(
"\
error: failed to update registry [..]
Caused by:
invalid configuration for key `http.user-agent`
expected a string, but found a boolean for `http.user-agent` in [..]config
",
),
);
}

#[test]
fn bad_cargo_config_jobs() {
let p = project("foo")
Expand Down

0 comments on commit b24b455

Please sign in to comment.