Skip to content

Commit de27a1b

Browse files
committed
extend build-test with assertions
1 parent 6ff021c commit de27a1b

File tree

2 files changed

+88
-4
lines changed

2 files changed

+88
-4
lines changed

.github/workflows/ci.yml

+6-1
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,14 @@ jobs:
6060
- name: Build
6161
run: cargo build --workspace --locked
6262

63-
- name: Test
63+
- name: fast tests
6464
run: cargo test --workspace --locked
6565

66+
- name: slow tests
67+
env:
68+
DOCSRS_INCLUDE_DEFAULT_TARGETS: true
69+
run: cargo test --workspace --locked -- --ignored
70+
6671
- name: Clean up the database
6772
run: docker-compose down --volumes
6873

src/docbuilder/rustwide_builder.rs

+82-3
Original file line numberDiff line numberDiff line change
@@ -757,15 +757,94 @@ pub(crate) struct BuildResult {
757757
#[cfg(test)]
758758
mod tests {
759759
use super::*;
760-
use crate::test::wrapper;
760+
use crate::test::{assert_redirect, assert_success, wrapper};
761761

762762
#[test]
763+
#[ignore]
763764
fn test_build_crate() {
764765
wrapper(|env| {
766+
let crate_ = "log";
767+
let version = "0.4.14";
768+
let default_target = "x86_64-unknown-linux-gnu";
769+
770+
assert_eq!(env.config().include_default_targets, true);
771+
765772
let mut builder = RustwideBuilder::init(env).unwrap();
766773
builder
767-
.build_package("log", "0.4.14", PackageKind::CratesIo)
768-
.map(|_| ())
774+
.build_package(crate_, version, PackageKind::CratesIo)
775+
.map(|_| ())?;
776+
777+
// check release record in the db (default and other targets)
778+
let mut conn = env.db().conn();
779+
let rows = conn
780+
.query(
781+
"SELECT
782+
r.rustdoc_status,
783+
r.default_target,
784+
r.doc_targets
785+
FROM
786+
crates as c
787+
INNER JOIN releases AS r ON c.id = r.crate_id
788+
WHERE
789+
c.name = $1 AND
790+
r.version = $2",
791+
&[&crate_, &version],
792+
)
793+
.unwrap();
794+
let row = rows.get(0).unwrap();
795+
796+
assert_eq!(row.get::<_, bool>("rustdoc_status"), true);
797+
assert_eq!(row.get::<_, String>("default_target"), default_target);
798+
799+
let mut targets: Vec<String> = row
800+
.get::<_, Value>("doc_targets")
801+
.as_array()
802+
.unwrap()
803+
.iter()
804+
.map(|v| v.as_str().unwrap().to_owned())
805+
.collect();
806+
targets.sort();
807+
assert_eq!(
808+
targets,
809+
vec![
810+
"i686-pc-windows-msvc",
811+
"i686-unknown-linux-gnu",
812+
"x86_64-apple-darwin",
813+
"x86_64-pc-windows-msvc",
814+
"x86_64-unknown-linux-gnu",
815+
]
816+
);
817+
818+
let storage = env.storage();
819+
let web = env.frontend();
820+
821+
let base = format!("rustdoc/{}/{}", crate_, version);
822+
823+
// default target was built and is accessible
824+
assert!(storage.exists(&format!("{}/{}/index.html", base, crate_))?);
825+
assert_success(&format!("/{0}/{1}/{0}", crate_, version), web)?;
826+
827+
// other targets too
828+
for target in DEFAULT_TARGETS {
829+
let target_docs_present =
830+
storage.exists(&format!("{}/{}/{}/index.html", base, target, crate_))?;
831+
832+
let target_url = format!("/{0}/{1}/{2}/{0}/index.html", crate_, version, target);
833+
834+
if target == &default_target {
835+
assert!(!target_docs_present);
836+
assert_redirect(
837+
&target_url,
838+
&format!("/{0}/{1}/{0}/index.html", crate_, version),
839+
web,
840+
)?;
841+
} else {
842+
assert!(target_docs_present);
843+
assert_success(&target_url, web)?;
844+
}
845+
}
846+
847+
Ok(())
769848
})
770849
}
771850
}

0 commit comments

Comments
 (0)