Skip to content

Commit f75d0fe

Browse files
Put doc coverage data into a new DocCoverage struct
1 parent e80a2c8 commit f75d0fe

File tree

3 files changed

+30
-31
lines changed

3 files changed

+30
-31
lines changed

src/db/add_package.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::{
55
};
66

77
use crate::{
8-
docbuilder::BuildResult,
8+
docbuilder::{BuildResult, DocCoverage},
99
error::Result,
1010
index::api::{CrateData, CrateOwner, ReleaseData},
1111
storage::CompressionAlgorithm,
@@ -133,8 +133,7 @@ pub(crate) fn add_package_into_database(
133133
pub(crate) fn add_doc_coverage(
134134
conn: &mut Client,
135135
release_id: i32,
136-
total_items: i32,
137-
documented_items: i32,
136+
doc_coverage: DocCoverage,
138137
) -> Result<i32> {
139138
debug!("Adding doc coverage into database");
140139
let rows = conn.query(
@@ -145,7 +144,7 @@ pub(crate) fn add_doc_coverage(
145144
total_items = $2,
146145
documented_items = $3
147146
RETURNING release_id",
148-
&[&release_id, &total_items, &documented_items],
147+
&[&release_id, &doc_coverage.total_items, &doc_coverage.documented_items],
149148
)?;
150149
Ok(rows[0].get(0))
151150
}

src/docbuilder/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ mod rustwide_builder;
77

88
pub(crate) use self::limits::Limits;
99
pub(self) use self::metadata::Metadata;
10-
pub(crate) use self::rustwide_builder::BuildResult;
10+
pub(crate) use self::rustwide_builder::{BuildResult, DocCoverage};
1111
pub use self::rustwide_builder::RustwideBuilder;
1212

1313
use crate::db::Pool;

src/docbuilder/rustwide_builder.rs

+26-26
Original file line numberDiff line numberDiff line change
@@ -429,10 +429,8 @@ impl RustwideBuilder {
429429
algs,
430430
)?;
431431

432-
if let (Some(total), Some(documented)) =
433-
(res.result.total_items, res.result.documented_items)
434-
{
435-
add_doc_coverage(&mut conn, release_id, total, documented)?;
432+
if let Some(doc_coverage) = res.result.doc_coverage {
433+
add_doc_coverage(&mut conn, release_id, doc_coverage)?;
436434
}
437435

438436
add_build_into_database(&mut conn, release_id, &res.result)?;
@@ -534,7 +532,7 @@ impl RustwideBuilder {
534532
build: &Build,
535533
metadata: &Metadata,
536534
limits: &Limits,
537-
) -> Result<Option<(i32, i32)>> {
535+
) -> Result<Option<DocCoverage>> {
538536
self.make_build_object(
539537
target,
540538
metadata,
@@ -573,16 +571,19 @@ impl RustwideBuilder {
573571
.ok();
574572
if let Some(json) = doc_coverage_json {
575573
if let Ok(Value::Object(m)) = serde_json::from_str(&json) {
576-
let (mut total, mut documented) = (0, 0);
574+
let (mut total_items, mut documented_items) = (0, 0);
577575
for entry in m.values() {
578576
if let Some(Value::Number(n)) = entry.get("total") {
579-
total += n.as_i64().unwrap_or(0) as i32;
577+
total_items += n.as_i64().unwrap_or(0) as i32;
580578
}
581579
if let Some(Value::Number(n)) = entry.get("with_docs") {
582-
documented += n.as_i64().unwrap_or(0) as i32;
580+
documented_items += n.as_i64().unwrap_or(0) as i32;
583581
}
584582
}
585-
return Ok(Some((total, documented)));
583+
return Ok(Some(DocCoverage {
584+
total_items,
585+
documented_items,
586+
}));
586587
}
587588
}
588589
Ok(None)
@@ -648,16 +649,11 @@ impl RustwideBuilder {
648649
.run()
649650
.is_ok()
650651
});
651-
let mut total_items = None;
652-
let mut documented_items = None;
653-
if successful {
654-
if let Some((total, documented)) =
655-
self.get_coverage(target, build, metadata, limits)?
656-
{
657-
total_items = Some(total);
658-
documented_items = Some(documented);
659-
}
660-
}
652+
let doc_coverage = if successful {
653+
self.get_coverage(target, build, metadata, limits)?
654+
} else {
655+
None
656+
};
661657
// If we're passed a default_target which requires a cross-compile,
662658
// cargo will put the output in `target/<target>/doc`.
663659
// However, if this is the default build, we don't want it there,
@@ -677,8 +673,7 @@ impl RustwideBuilder {
677673
rustc_version: self.rustc_version.clone(),
678674
docsrs_version: format!("docsrs {}", crate::BUILD_VERSION),
679675
successful,
680-
total_items,
681-
documented_items,
676+
doc_coverage
682677
},
683678
cargo_metadata,
684679
target: target.to_string(),
@@ -732,14 +727,19 @@ struct FullBuildResult {
732727
cargo_metadata: CargoMetadata,
733728
}
734729

730+
#[derive(Clone, Copy)]
731+
pub(crate) struct DocCoverage {
732+
/// The total items that could be documented in the current crate, used to calculate
733+
/// documentation coverage.
734+
pub(crate) total_items: i32,
735+
/// The items of the crate that are documented, used to calculate documentation coverage.
736+
pub(crate) documented_items: i32,
737+
}
738+
735739
pub(crate) struct BuildResult {
736740
pub(crate) rustc_version: String,
737741
pub(crate) docsrs_version: String,
738742
pub(crate) build_log: String,
739743
pub(crate) successful: bool,
740-
/// The total items that could be documented in the current crate, used to calculate
741-
/// documentation coverage.
742-
pub(crate) total_items: Option<i32>,
743-
/// The items of the crate that are documented, used to calculate documentation coverage.
744-
pub(crate) documented_items: Option<i32>,
744+
pub(crate) doc_coverage: Option<DocCoverage>,
745745
}

0 commit comments

Comments
 (0)