@@ -757,15 +757,94 @@ pub(crate) struct BuildResult {
757
757
#[ cfg( test) ]
758
758
mod tests {
759
759
use super :: * ;
760
- use crate :: test:: wrapper;
760
+ use crate :: test:: { assert_redirect , assert_success , wrapper} ;
761
761
762
762
#[ test]
763
+ #[ ignore]
763
764
fn test_build_crate ( ) {
764
765
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
+
765
772
let mut builder = RustwideBuilder :: init ( env) . unwrap ( ) ;
766
773
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 ( ( ) )
769
848
} )
770
849
}
771
850
}
0 commit comments