@@ -757,15 +757,94 @@ pub(crate) struct BuildResult {
757757#[ cfg( test) ]
758758mod 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