@@ -753,53 +753,62 @@ fn _arm_exec_compiled_test(config: &config, props: &TestProps,
753
753
copy_result. out, copy_result. err) ) ;
754
754
}
755
755
756
- // execute program
757
756
logv ( config, fmt ! ( "executing (%s) %s" , config. target, cmdline) ) ;
758
757
759
- // adb shell dose not forward stdout and stderr of internal result
760
- // to stdout and stderr separately but to stdout only
761
- let mut newargs_out = ~[ ] ;
762
- let mut newargs_err = ~[ ] ;
763
- newargs_out. push ( ~"shell") ;
764
- newargs_err. push ( ~"shell") ;
758
+ let mut runargs = ~[ ] ;
765
759
766
- let mut newcmd_out = ~"";
767
- let mut newcmd_err = ~"";
760
+ // run test via adb_run_wrapper
761
+ runargs. push ( ~"shell") ;
762
+ runargs. push ( fmt ! ( "%s/adb_run_wrapper.sh" , config. adb_test_dir) ) ;
763
+ runargs. push ( fmt ! ( "%s" , config. adb_test_dir) ) ;
764
+ runargs. push ( fmt ! ( "%s" , prog_short) ) ;
768
765
769
- newcmd_out. push_str ( fmt ! ( "LD_LIBRARY_PATH=%s %s/%s" ,
770
- config. adb_test_dir, config. adb_test_dir, prog_short) ) ;
766
+ for args. args. each |tv| {
767
+ runargs. push ( tv. to_owned ( ) ) ;
768
+ }
771
769
772
- newcmd_err. push_str ( fmt ! ( "LD_LIBRARY_PATH=%s %s/%s" ,
773
- config. adb_test_dir, config. adb_test_dir, prog_short) ) ;
770
+ procsrv:: run ( "" , config. adb_path , runargs, ~[ ( ~"", ~"") ] , Some ( ~"") ) ;
774
771
775
- for args. args. each |tv| {
776
- newcmd_out. push_str ( " " ) ;
777
- newcmd_err. push_str ( " " ) ;
778
- newcmd_out. push_str ( * tv) ;
779
- newcmd_err. push_str ( * tv) ;
772
+ // get exitcode of result
773
+ runargs = ~[ ] ;
774
+ runargs. push ( ~"shell") ;
775
+ runargs. push ( ~"cat") ;
776
+ runargs. push ( fmt ! ( "%s/%s.exitcode" , config. adb_test_dir, prog_short) ) ;
777
+
778
+ let procsrv:: Result { out : exitcode_out, err : _, status : _ } =
779
+ procsrv:: run ( "" , config. adb_path , runargs, ~[ ( ~"", ~"") ] ,
780
+ Some ( ~"") ) ;
781
+
782
+ let mut exitcode : int = 0 ;
783
+ for str:: each_char( exitcode_out) |c| {
784
+ if !c. is_digit ( ) { break ; }
785
+ exitcode = exitcode * 10 + match c {
786
+ '0' .. '9' => c as int - ( '0' as int ) ,
787
+ _ => 101 ,
788
+ }
780
789
}
781
790
782
- newcmd_out. push_str ( " 2>/dev/null" ) ;
783
- newcmd_err. push_str ( " 1>/dev/null" ) ;
791
+ // get stdout of result
792
+ runargs = ~[ ] ;
793
+ runargs. push ( ~"shell") ;
794
+ runargs. push ( ~"cat") ;
795
+ runargs. push ( fmt ! ( "%s/%s.stdout" , config. adb_test_dir, prog_short) ) ;
784
796
785
- newargs_out . push ( newcmd_out ) ;
786
- newargs_err . push ( newcmd_err ) ;
797
+ let procsrv :: Result { out : stdout_out , err : _ , status : _ } =
798
+ procsrv :: run ( "" , config . adb_path , runargs , ~ [ ( ~"" , ~"" ) ] , Some ( ~"" ) ) ;
787
799
788
- let procsrv:: Result { out : out_out, err : _out_err, status : out_status } =
789
- procsrv:: run ( "" , config. adb_path , newargs_out, ~[ ( ~"", ~"") ] ,
790
- Some ( ~"") ) ;
791
- let procsrv:: Result { out : err_out, err : _err_err, status : _err_status } =
792
- procsrv:: run ( "" , config. adb_path , newargs_err, ~[ ( ~"", ~"") ] ,
793
- Some ( ~"") ) ;
800
+ // get stderr of result
801
+ runargs = ~[ ] ;
802
+ runargs. push ( ~"shell") ;
803
+ runargs. push ( ~"cat") ;
804
+ runargs. push ( fmt ! ( "%s/%s.stderr" , config. adb_test_dir, prog_short) ) ;
794
805
795
- dump_output ( config, testfile, out_out, err_out) ;
806
+ let procsrv:: Result { out : stderr_out, err : _, status : _ } =
807
+ procsrv:: run ( "" , config. adb_path , runargs, ~[ ( ~"", ~"") ] , Some ( ~"") ) ;
796
808
797
- match err_out {
798
- ~"" => ProcRes { status : out_status, stdout : out_out,
799
- stderr : err_out, cmdline : cmdline } ,
800
- _ => ProcRes { status : 101 , stdout : out_out,
801
- stderr : err_out, cmdline : cmdline }
802
- }
809
+ dump_output ( config, testfile, stdout_out, stderr_out) ;
810
+
811
+ ProcRes { status : exitcode, stdout : stdout_out, stderr : stderr_out, cmdline : cmdline }
803
812
}
804
813
805
814
fn _dummy_exec_compiled_test ( config : & config , props : & TestProps ,
0 commit comments