Skip to content

Commit 8646073

Browse files
committed
Fix rustdoc files for FakeRelease
rustdoc files and source files are different
1 parent 0c6804d commit 8646073

File tree

2 files changed

+32
-15
lines changed

2 files changed

+32
-15
lines changed

src/test/fakes.rs

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@ use crate::db::CratesIoData;
33
use crate::docbuilder::BuildResult;
44
use crate::utils::{Dependency, MetadataPackage, Target};
55
use failure::Error;
6-
use rustc_serialize::json::Json;
76

87
#[must_use = "FakeRelease does nothing until you call .create()"]
98
pub(crate) struct FakeRelease<'db> {
109
db: &'db TestDatabase,
1110
package: MetadataPackage,
1211
build_result: BuildResult,
13-
files: Vec<(String, String, Vec<u8>)>,
12+
/// name, content
13+
source_files: Vec<(String, Vec<u8>)>,
14+
/// name, content
15+
rustdoc_files: Vec<(String, Vec<u8>)>,
1416
doc_targets: Vec<String>,
1517
default_target: Option<String>,
1618
cratesio_data: CratesIoData,
@@ -47,7 +49,8 @@ impl<'db> FakeRelease<'db> {
4749
build_log: "It works!".into(),
4850
successful: true,
4951
},
50-
files: Vec::new(),
52+
source_files: Vec::new(),
53+
rustdoc_files: Vec::new(),
5154
doc_targets: Vec::new(),
5255
default_target: None,
5356
cratesio_data: CratesIoData {
@@ -92,22 +95,40 @@ impl<'db> FakeRelease<'db> {
9295
self
9396
}
9497

98+
pub(crate) fn rustdoc_file<P, D>(mut self, path: P, data: D) -> Self
99+
where P: Into<String>,
100+
D: Into<Vec<u8>>,
101+
{
102+
let (path, data) = (path.into(), data.into());
103+
self.rustdoc_files.push((path, data));
104+
105+
self
106+
}
107+
95108
pub(crate) fn create(self) -> Result<i32, Error> {
96109
let tempdir = tempdir::TempDir::new("docs.rs-fake")?;
97110

98-
let files: Vec<_> = self.files.into_iter().map(|(mimetype, path, data)| {
99-
let file = tempdir.path().join(&path);
100-
std::fs::write(file, data)?;
111+
let upload_files = |prefix, files: Vec<(String, Vec<u8>)>, package: &MetadataPackage, db: &TestDatabase| {
112+
for (path, data) in files {
113+
let file = tempdir.path().join(&path);
114+
std::fs::write(file, data)?;
115+
}
101116

102-
Ok(Json::Array(vec![Json::String(mimetype), Json::String(path)]))
103-
}).collect::<Result<_, Error>>()?;
117+
let prefix = format!("{}/{}/{}", prefix, package.name, package.version);
118+
crate::db::add_path_into_database(&db.conn(), &prefix, tempdir.path())
119+
};
120+
121+
let rustdoc_meta = upload_files("rustdoc", self.rustdoc_files, &self.package, self.db)?;
122+
log::debug!("added rustdoc files {}", rustdoc_meta);
123+
let source_meta = upload_files("source", self.source_files, &self.package, self.db)?;
124+
log::debug!("added source files {}", source_meta);
104125

105126
let release_id = crate::db::add_package_into_database(
106127
&self.db.conn(),
107128
&self.package,
108129
tempdir.path(),
109130
&self.build_result,
110-
if files.is_empty() { None } else { Some(Json::Array(files)) },
131+
Some(source_meta),
111132
self.doc_targets,
112133
&self.default_target,
113134
&self.cratesio_data,
@@ -116,10 +137,6 @@ impl<'db> FakeRelease<'db> {
116137
)?;
117138
crate::db::add_build_into_database(&self.db.conn(), &release_id, &self.build_result)?;
118139

119-
let prefix = format!("rustdoc/{}/{}", self.package.name, self.package.version);
120-
let added_files = crate::db::add_path_into_database(&self.db.conn(), &prefix, tempdir.path())?;
121-
log::debug!("added files {}", added_files);
122-
123140
Ok(release_id)
124141
}
125142
}

src/web/rustdoc.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -425,8 +425,8 @@ mod test {
425425
db.fake_release()
426426
.name("buggy").version("0.1.0")
427427
.build_result_successful(true)
428-
.file("text/html", "settings.html", "some data")
429-
.file("text/html", "all.html", "some data 2")
428+
.rustdoc_file("settings.html", "some data")
429+
.rustdoc_file("all.html", "some data 2")
430430
.create()?;
431431
db.fake_release()
432432
.name("buggy").version("0.2.0")

0 commit comments

Comments
 (0)