Skip to content

Commit 7f90e71

Browse files
committed
add tests for open behavior
1 parent 852f3b0 commit 7f90e71

File tree

1 file changed

+271
-1
lines changed

1 file changed

+271
-1
lines changed

tests/testsuite/doc.rs

+271-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use cargo::core::compiler::RustDocFingerprint;
44
use cargo_test_support::paths::CargoPathExt;
55
use cargo_test_support::registry::Package;
6-
use cargo_test_support::{basic_lib_manifest, basic_manifest, git, project};
6+
use cargo_test_support::{basic_lib_manifest, basic_manifest, cross_compile, git, project};
77
use cargo_test_support::{rustc_host, symlink_supported, tools};
88
use std::fs;
99
use std::str;
@@ -777,6 +777,29 @@ fn doc_target() {
777777
.is_file());
778778
}
779779

780+
#[cargo_test]
781+
fn doc_and_open() {
782+
let p = project()
783+
.file(
784+
"src/lib.rs",
785+
"
786+
/// test
787+
pub fn foo() {}
788+
",
789+
)
790+
.build();
791+
792+
p.cargo("doc --verbose --open --target")
793+
.arg(rustc_host())
794+
.env("BROWSER", tools::echo())
795+
.with_stderr_contains("[..] Documenting foo v0.0.1 ([..])")
796+
.with_stderr_contains(&format!(
797+
"[..] Opening [..]/target/{}/doc/foo/index.html",
798+
rustc_host()
799+
))
800+
.run();
801+
}
802+
780803
#[cargo_test]
781804
fn target_specific_not_documented() {
782805
let p = project()
@@ -1206,6 +1229,49 @@ fn doc_virtual_manifest_one_project() {
12061229
.run();
12071230
}
12081231

1232+
#[cargo_test]
1233+
fn doc_and_open_virtual_manifest_one_project() {
1234+
if cross_compile::disabled() {
1235+
return;
1236+
}
1237+
let target = cross_compile::alternate();
1238+
let p = project()
1239+
.file(
1240+
"Cargo.toml",
1241+
r#"
1242+
[workspace]
1243+
members = ["foo", "bar"]
1244+
"#,
1245+
)
1246+
.file("foo/Cargo.toml", &basic_manifest("foo", "0.1.0"))
1247+
.file("foo/src/lib.rs", "")
1248+
.file(
1249+
"bar/Cargo.toml",
1250+
&format!(
1251+
r#"
1252+
cargo-features = ["per-package-target"]
1253+
[package]
1254+
name = "bar"
1255+
version = "0.1.0"
1256+
forced-target = "{}"
1257+
"#,
1258+
target
1259+
),
1260+
)
1261+
.file("bar/src/lib.rs", "")
1262+
.build();
1263+
1264+
p.cargo("doc -p bar --open")
1265+
.masquerade_as_nightly_cargo(&["per-package-target"])
1266+
.env("BROWSER", tools::echo())
1267+
.with_stderr_contains("[..] Documenting bar v0.1.0 ([..])")
1268+
.with_stderr_contains(&format!(
1269+
"[..] Opening [..]/target/{}/doc/bar/index.html",
1270+
target
1271+
))
1272+
.run();
1273+
}
1274+
12091275
#[cargo_test]
12101276
fn doc_virtual_manifest_glob() {
12111277
let p = project()
@@ -1306,6 +1372,210 @@ fn doc_workspace_open_help_message() {
13061372
.run();
13071373
}
13081374

1375+
#[cargo_test]
1376+
fn doc_workspace_open_first_one_built_for_host() {
1377+
if cross_compile::disabled() {
1378+
return;
1379+
}
1380+
let target = cross_compile::alternate();
1381+
let p = project()
1382+
.file(
1383+
"Cargo.toml",
1384+
r#"
1385+
[workspace]
1386+
members = ["foo", "bar"]
1387+
"#,
1388+
)
1389+
.file("foo/Cargo.toml", &basic_manifest("foo", "0.1.0"))
1390+
.file("foo/src/lib.rs", "")
1391+
.file(
1392+
"bar/Cargo.toml",
1393+
&format!(
1394+
r#"
1395+
cargo-features = ["per-package-target"]
1396+
[package]
1397+
name = "bar"
1398+
version = "0.1.0"
1399+
forced-target = "{}"
1400+
"#,
1401+
target
1402+
),
1403+
)
1404+
.file("bar/src/lib.rs", "")
1405+
.build();
1406+
1407+
p.cargo("doc --workspace --open")
1408+
.masquerade_as_nightly_cargo(&["per-package-target"])
1409+
.env("BROWSER", tools::echo())
1410+
.with_stderr_contains("[..] Documenting bar v0.1.0 ([..])")
1411+
.with_stderr_contains("[..] Documenting foo v0.1.0 ([..])")
1412+
.with_stderr_contains("[..] Opening [..]/foo/index.html")
1413+
.run();
1414+
}
1415+
1416+
#[cargo_test]
1417+
fn doc_workspace_open_first_one_when_no_one_built_for_host() {
1418+
if cross_compile::disabled() {
1419+
return;
1420+
}
1421+
let target = cross_compile::alternate();
1422+
1423+
let p = project()
1424+
.file(
1425+
"Cargo.toml",
1426+
r#"
1427+
[workspace]
1428+
members = ["foo", "bar"]
1429+
"#,
1430+
)
1431+
.file(
1432+
"foo/Cargo.toml",
1433+
&format!(
1434+
r#"
1435+
cargo-features = ["per-package-target"]
1436+
[package]
1437+
name = "foo"
1438+
version = "0.1.0"
1439+
forced-target = "{}"
1440+
"#,
1441+
target
1442+
),
1443+
)
1444+
.file("foo/src/lib.rs", "")
1445+
.file(
1446+
"bar/Cargo.toml",
1447+
&format!(
1448+
r#"
1449+
cargo-features = ["per-package-target"]
1450+
[package]
1451+
name = "bar"
1452+
version = "0.1.0"
1453+
forced-target = "{}"
1454+
"#,
1455+
target
1456+
),
1457+
)
1458+
.file("bar/src/lib.rs", "")
1459+
.build();
1460+
1461+
p.cargo("doc --workspace --open")
1462+
.masquerade_as_nightly_cargo(&["per-package-target"])
1463+
.env("BROWSER", tools::echo())
1464+
.with_stderr_contains("[..] Documenting bar v0.1.0 ([..])")
1465+
.with_stderr_contains("[..] Documenting foo v0.1.0 ([..])")
1466+
.with_stderr_contains(&format!(
1467+
"[..] Opening [..]/target/{}/doc/bar/index.html",
1468+
target
1469+
))
1470+
.run();
1471+
}
1472+
1473+
#[cargo_test]
1474+
fn doc_workspace_open_first_one_built_for_target() {
1475+
if cross_compile::disabled() {
1476+
return;
1477+
}
1478+
let target = cross_compile::alternate();
1479+
1480+
let p = project()
1481+
.file(
1482+
"Cargo.toml",
1483+
r#"
1484+
[workspace]
1485+
members = ["foo", "bar"]
1486+
"#,
1487+
)
1488+
.file("foo/Cargo.toml", &basic_manifest("foo", "0.1.0"))
1489+
.file("foo/src/lib.rs", "")
1490+
.file(
1491+
"bar/Cargo.toml",
1492+
&format!(
1493+
r#"
1494+
cargo-features = ["per-package-target"]
1495+
[package]
1496+
name = "bar"
1497+
version = "0.1.0"
1498+
forced-target = "{}"
1499+
"#,
1500+
target
1501+
),
1502+
)
1503+
.file("bar/src/lib.rs", "")
1504+
.build();
1505+
1506+
p.cargo("doc --workspace --open --target")
1507+
.arg(target)
1508+
.masquerade_as_nightly_cargo(&["per-package-target"])
1509+
.env("BROWSER", tools::echo())
1510+
.with_stderr_contains("[..] Documenting bar v0.1.0 ([..])")
1511+
.with_stderr_contains("[..] Documenting foo v0.1.0 ([..])")
1512+
.with_stderr_contains(&format!(
1513+
"[..] Opening [..]/target/{}/doc/bar/index.html",
1514+
target
1515+
))
1516+
.run();
1517+
}
1518+
1519+
#[cargo_test]
1520+
fn doc_workspace_open_first_one_when_no_one_built_for_target() {
1521+
if cross_compile::disabled() {
1522+
return;
1523+
}
1524+
let target = cross_compile::alternate();
1525+
1526+
let p = project()
1527+
.file(
1528+
"Cargo.toml",
1529+
r#"
1530+
[workspace]
1531+
members = ["foo", "bar"]
1532+
"#,
1533+
)
1534+
.file(
1535+
"foo/Cargo.toml",
1536+
&format!(
1537+
r#"
1538+
cargo-features = ["per-package-target"]
1539+
[package]
1540+
name = "foo"
1541+
version = "0.1.0"
1542+
forced-target = "{}"
1543+
"#,
1544+
target
1545+
),
1546+
)
1547+
.file("foo/src/lib.rs", "")
1548+
.file(
1549+
"bar/Cargo.toml",
1550+
&format!(
1551+
r#"
1552+
cargo-features = ["per-package-target"]
1553+
[package]
1554+
name = "bar"
1555+
version = "0.1.0"
1556+
forced-target = "{}"
1557+
"#,
1558+
target
1559+
),
1560+
)
1561+
.file("bar/src/lib.rs", "")
1562+
.build();
1563+
1564+
// We don't build for host, so we should open the first one built for TARGET.
1565+
let host_target = rustc_host();
1566+
p.cargo("doc --workspace --open --target")
1567+
.arg(host_target)
1568+
.masquerade_as_nightly_cargo(&["per-package-target"])
1569+
.env("BROWSER", tools::echo())
1570+
.with_stderr_contains("[..] Documenting bar v0.1.0 ([..])")
1571+
.with_stderr_contains("[..] Documenting foo v0.1.0 ([..])")
1572+
.with_stderr_contains(&format!(
1573+
"[..] Opening [..]/target/{}/doc/bar/index.html",
1574+
target
1575+
))
1576+
.run();
1577+
}
1578+
13091579
#[cargo_test(nightly, reason = "-Zextern-html-root-url is unstable")]
13101580
fn doc_extern_map_local() {
13111581
let p = project()

0 commit comments

Comments
 (0)