@@ -14,7 +14,7 @@ pub(crate) struct FakeRelease<'a> {
1414 /// name, content
1515 rustdoc_files : Vec < ( & ' a str , & ' a [ u8 ] ) > ,
1616 doc_targets : Vec < String > ,
17- default_target : Option < String > ,
17+ default_target : Option < & ' a str > ,
1818 cratesio_data : CratesIoData ,
1919 has_docs : bool ,
2020 has_examples : bool ,
@@ -90,16 +90,28 @@ impl<'a> FakeRelease<'a> {
9090 self
9191 }
9292
93+ pub ( crate ) fn default_target ( mut self , target : & ' a str ) -> Self {
94+ self . default_target = Some ( target) ;
95+ self
96+ }
97+
9398 pub ( crate ) fn create ( self ) -> Result < i32 , Error > {
99+ use std:: fs;
100+ use std:: path:: Path ;
101+
94102 let tempdir = tempdir:: TempDir :: new ( "docs.rs-fake" ) ?;
95103
96104 let upload_files = |prefix : & str , files : & [ ( & str , & [ u8 ] ) ] | {
97105 let path_prefix = tempdir. path ( ) . join ( prefix) ;
98- std :: fs:: create_dir ( & path_prefix) ?;
106+ fs:: create_dir ( & path_prefix) ?;
99107
100108 for ( path, data) in files {
109+ // allow `src/main.rs`
110+ if let Some ( parent) = Path :: new ( path) . parent ( ) {
111+ fs:: create_dir_all ( path_prefix. join ( parent) ) ?;
112+ }
101113 let file = path_prefix. join ( & path) ;
102- std :: fs:: write ( file, data) ?;
114+ fs:: write ( file, data) ?;
103115 }
104116
105117 let prefix = format ! ( "{}/{}/{}" , prefix, self . package. name, self . package. version) ;
@@ -116,7 +128,7 @@ impl<'a> FakeRelease<'a> {
116128 & self . package ,
117129 tempdir. path ( ) ,
118130 & self . build_result ,
119- self . default_target . as_deref ( ) . unwrap_or ( "x86_64-unknown-linux-gnu" ) ,
131+ self . default_target . unwrap_or ( "x86_64-unknown-linux-gnu" ) ,
120132 Some ( source_meta) ,
121133 self . doc_targets ,
122134 & self . cratesio_data ,
0 commit comments