reportsasunit.sas

Go to the documentation of this file.
00001  
00024 /* change log 
00025    15.07.2009 AM  fixed copydir for Linux
00026    13.08.2008 AM  introduced o_force and o_output
00027    12.08.2008 AM  Reportingsprache umgestellt
00028    11.08.2008 AM  Dateiname der Frameseite an Reportgenerator für assertReport übergeben
00029    05.02.2008 AM  assertManual nach assertReport umgestellt
00030    29.12.2007 AM  Aufruf reportAuton aufgenommen 
00031 */ 
00032 
00033 %MACRO reportSASUnit (
00034    i_language   = EN
00035   ,o_html       = 1
00036   ,o_force      = 0
00037   ,o_output     =
00038 );
00039 %LOCAL l_macname; %LET l_macname=&sysmacroname;
00040 
00041 /*-- check parameters --------------------------------------------------------*/
00042 %IF "&o_html" NE "1" %THEN %LET o_html=0;
00043 
00044 %IF "&o_force" NE "1" %THEN %LET o_force=0;
00045 
00046 %_sasunit_nls (i_language=&i_language)
00047 
00048 /*-- check if target folder exists -------------------------------------------*/
00049 %LOCAL l_output; 
00050 %IF %length(&o_output) %THEN %LET l_output=&o_output;
00051 %ELSE %LET l_output =&g_target/rep;
00052 %LET l_output=%_sasunit_abspath(&g_root,&l_output);
00053 
00054 %IF %_sasunit_handleError(&l_macname, InvalidOutputDir, 
00055    NOT %_sasunit_existDir(&l_output), 
00056    Error in parameter o_output: target folder does not exist) 
00057    %THEN %GOTO errexit;
00058 
00059 /*-- check if test database can be accessed ----------------------------------*/
00060 %IF %_sasunit_handleError(&l_macname, NoTestDB, 
00061    NOT %sysfunc(exist(target.tsu)) OR NOT %symexist(g_project), 
00062    %nrstr(Test database cannot be accessed, call %initSASUnit before %reportSASUnit))
00063    %THEN %GOTO errexit;
00064 
00065 /*-- generate temporary datasets ---------------------------------------------*/
00066 %LOCAL d_rep d_scn d_cas d_auton d_pgm d_pcs;
00067 %_sasunit_tempFilename(d_rep)
00068 %_sasunit_tempFilename(d_scn)
00069 %_sasunit_tempFilename(d_cas)
00070 %_sasunit_tempFilename(d_auton)
00071 %_sasunit_tempFilename(d_pgm)
00072 %_sasunit_tempFilename(d_pcs)
00073 
00074 /*-- generate a last-flag for treeview ---------------------------------------*/
00075 PROC SORT DATA=target.scn OUT=&d_scn;
00076    BY scn_id;
00077 RUN;
00078 DATA &d_scn;
00079    SET &d_scn END=eof;
00080    scn_last = eof;
00081 RUN;
00082 
00083 PROC SORT DATA=target.cas OUT=&d_cas;
00084    BY cas_scnid cas_id;
00085 RUN;
00086 DATA &d_cas;
00087    SET &d_cas;
00088    BY cas_scnid;
00089    cas_last = last.cas_scnid;
00090    cas_pgmucase = upcase(cas_pgm);
00091 RUN;
00092 
00093 PROC SORT DATA=target.cas (KEEP=cas_auton RENAME=(cas_auton=auton_id)) 
00094           OUT=&d_auton NODUPKEY;
00095    BY auton_id;
00096 RUN;
00097 DATA &d_auton;
00098    SET &d_auton END=eof;
00099    auton_last = eof;
00100 RUN;
00101 
00102 data &d_pgm;
00103    SET target.cas (KEEP=cas_auton cas_pgm RENAME=(cas_auton=pgm_auton cas_pgm=pgm_ucase));
00104    pgm_ucase = upcase(pgm_ucase);
00105 RUN;
00106 PROC SORT DATA=&d_pgm NODUPKEY;
00107    BY pgm_auton pgm_ucase;
00108 RUN;
00109 DATA &d_pgm;
00110    SET &d_pgm;
00111    BY pgm_auton;
00112    IF first.pgm_auton THEN pgm_id=0;
00113    pgm_id+1;
00114    pgm_last = last.pgm_auton;
00115 RUN;
00116 
00117 DATA &d_pcs;
00118    SET target.cas (KEEP=cas_auton cas_pgm cas_scnid cas_id RENAME=(cas_auton=pcs_auton cas_pgm=pcs_ucase cas_scnid=pcs_scnid cas_id=pcs_casid));
00119    pcs_ucase = upcase(pcs_ucase);
00120 PROC SORT DATA=&d_pcs OUT=&d_pcs NODUPKEY;
00121    BY pcs_auton pcs_ucase pcs_scnid pcs_casid;
00122 RUN;
00123 DATA &d_pcs;
00124    SET &d_pcs;
00125    BY pcs_auton pcs_ucase;
00126    pcs_last = last.pcs_ucase;
00127 RUN;
00128 
00129 /*-- create reporting dataset ------------------------------------------------*/
00130 %LOCAL i;
00131 PROC SQL NOPRINT;
00132    CREATE TABLE &d_rep (COMPRESS=YES) AS
00133    SELECT 
00134        tsu_project    
00135       ,tsu_root       
00136       ,tsu_target       
00137       ,tsu_sasunit    
00138       ,tsu_sasautos   
00139 %DO i=1 %TO 9;
00140       ,tsu_sasautos&i 
00141 %END;
00142       ,tsu_autoexec   
00143       ,tsu_sascfg     
00144       ,tsu_sasuser    
00145       ,tsu_testdata   
00146       ,tsu_refdata    
00147       ,tsu_doc        
00148       ,tsu_lastinit
00149       ,tsu_lastrep
00150       ,scn_id     
00151       ,scn_path   
00152       ,scn_desc   
00153       ,scn_start  
00154       ,scn_end    
00155       ,scn_rc     
00156       ,scn_res    
00157       ,scn_last
00158       ,cas_id    
00159       ,cas_auton
00160       ,auton_last
00161       ,cas_pgm  
00162       ,pgm_id
00163       ,pgm_last
00164       ,pcs_last
00165       ,cas_desc  
00166       ,cas_spec  
00167       ,cas_start 
00168       ,cas_end   
00169       ,cas_res 
00170       ,cas_last 
00171       ,tst_id    
00172       ,tst_type  
00173       ,tst_desc  
00174       ,tst_exp   
00175       ,tst_act   
00176       ,tst_res
00177    FROM 
00178        target.tsu
00179       ,&d_scn
00180       ,&d_cas
00181       ,target.tst
00182       ,&d_auton
00183       ,&d_pgm
00184       ,&d_pcs
00185    WHERE 
00186       scn_id       = cas_scnid AND
00187       cas_scnid    = tst_scnid AND
00188       cas_id       = tst_casid AND
00189       cas_auton    = auton_id  AND
00190       cas_auton    = pgm_auton AND
00191       cas_pgmucase = pgm_ucase AND
00192       cas_auton    = pcs_auton AND
00193       cas_pgmucase = pcs_ucase AND
00194       cas_scnid    = pcs_scnid AND
00195       cas_id       = pcs_casid
00196    ;
00197    CREATE UNIQUE INDEX idx1 ON &d_rep (scn_id, cas_id, tst_id);
00198    CREATE UNIQUE INDEX idx2 ON &d_rep (cas_auton, pgm_id, scn_id, cas_id, tst_id);
00199 
00200 QUIT;
00201 %IF %_sasunit_handleError(&l_macname, ErrorTestDB, 
00202    &syserr NE 0, 
00203    %nrstr(Fehler beim Zugriff auf die Testdatenbank))
00204    %THEN %GOTO errexit;
00205 
00206 /*-- determine last run ------------------------------------------------------*/
00207 %LOCAL l_lastrun;
00208 PROC SQL NOPRINT;
00209    SELECT coalesce(max(scn_start),0) FORMAT=12.0 INTO :l_lastrun FROM target.scn;
00210 QUIT;
00211 
00212 /*-- report generator --------------------------------------------------------*/
00213 FILENAME repgen temp;
00214 
00215 DATA _null_;
00216    SET &d_rep;
00217    BY scn_id cas_id;
00218    FILE repgen;
00219 
00220    IF _n_=1 THEN DO;
00221       /*-- only if testreport is generated competely anew --------------------*/
00222       IF tsu_lastrep=0 OR &o_force THEN DO;
00223          /*-- copy static files - images, css etc. ---------------------------*/
00224          PUT '%_sasunit_copydir(' /
00225              "    &g_sasunit" '/html/%str(*.*)' /
00226              "   ,&l_output" /
00227              ")";
00228          /*-- create frame HTML page -----------------------------------------*/
00229          PUT '%_sasunit_reportFrameHTML('                 /
00230              "    i_repdata = &d_rep"                     /
00231              "   ,o_html    = &l_output/index.html"   /
00232              ")";
00233       END;
00234       /*-- only if testsuite has been initialized anew after last report -----*/
00235       IF tsu_lastinit > tsu_lastrep OR &o_force THEN DO;
00236          /*-- convert SAS-log from initSASUnit -------------------------------*/
00237          PUT '%_sasunit_reportLogHTML('                   /
00238              "    i_log     = &g_log/000.log"             /
00239              "   ,i_title   = &g_nls_reportSASUnit_001"    /
00240              "   ,o_html    = &l_output/000_log.html" /
00241              ")";
00242          /*-- create overview page -------------------------------------------*/
00243          PUT '%_sasunit_reportHomeHTML('                   /
00244              "    i_repdata = &d_rep"                      /
00245              "   ,o_html    = &l_output/overview.html" /
00246              ")";
00247       END;
00248       /*-- only if a test scenario has been run since last report ------------*/
00249       IF &l_lastrun > tsu_lastrep OR &o_force THEN DO;
00250          /*-- create table of contents ---------------------------------------*/
00251          PUT '%_sasunit_reportTreeHTML('                  /
00252              "    i_repdata = &d_rep"                     /
00253              "   ,o_html    = &l_output/tree.html"    /
00254              ")";
00255          /*-- create list of test scenarios ----------------------------------*/
00256          PUT '%_sasunit_reportScnHTML('                   /
00257              "    i_repdata = &d_rep"                     /
00258              "   ,o_html    = &l_output/scn_overview.html"    /
00259              ")";
00260          /*-- create list of test cases --------------------------------------*/
00261          PUT '%_sasunit_reportCasHTML('                   /
00262              "    i_repdata = &d_rep"                     /
00263              "   ,o_html    = &l_output/cas_overview.html"    /
00264              ")";
00265          /*-- create list of units under test --------------------------------*/
00266          PUT '%_sasunit_reportAutonHTML('                   /
00267              "    i_repdata = &d_rep"                     /
00268              "   ,o_html    = &l_output/auton_overview.html"    /
00269              ")";
00270       END;
00271    END;
00272 
00273    /*-- per scenario ---------------------------------------------------------*/
00274    IF first.scn_id AND scn_id NE . THEN DO;
00275       /*-- only if scenario has been run since report ------------------------*/
00276       IF scn_start > tsu_lastrep OR &o_force THEN DO;
00277          /*-- convert logfile of scenario ------------------------------------*/
00278          PUT '%_sasunit_reportLogHTML(' / 
00279              "    i_log     = &g_log/" scn_id z3. ".log"  /
00280              "   ,i_title   = &g_nls_reportSASUnit_002 " scn_id z3. " (" cas_pgm +(-1) ")" /
00281              "   ,o_html    = &l_output/" scn_id z3. "_log.html" /
00282              ")";
00283       END;
00284    END;
00285 
00286    /*-- only if test case has been run since last report ---------------------*/
00287    IF cas_start > tsu_lastrep OR &o_force THEN DO;
00288 
00289       /*-- per test case -----------------------------------------------------*/
00290       IF first.cas_id AND scn_id NE . AND cas_id NE . THEN DO;
00291          /*-- convert logfile of test case -----------------------------------*/
00292          PUT '%_sasunit_reportLogHTML(' /
00293              "    i_log     = &g_log/" scn_id z3. "_" cas_id z3. ".log" /
00294              "   ,i_title   = &g_nls_reportSASUnit_003 " cas_id z3. " &g_nls_reportSASUnit_004 " scn_id z3. " (" cas_pgm +(-1) ")" /
00295              "   ,o_html    = &l_output/" scn_id z3. "_" cas_id z3. "_log.html" /
00296              ")";
00297          /*-- compile detail information for test case -----------------------*/
00298          PUT '%_sasunit_reportDetailHTML('                   /
00299              "    i_repdata = &d_rep"                        /
00300              "   ,i_scnid   = " scn_id z3.                   /
00301              "   ,i_casid   = " cas_id z3.                   /
00302              "   ,o_html    = &l_output/cas_" scn_id z3. "_" cas_id z3. ".html"    /
00303              ")";
00304       END;
00305  
00306       /*-- per test assertColumns --------------------------------------------*/
00307       IF scn_id NE . AND cas_id NE . AND tst_id NE . AND upcase(tst_type) = 'ASSERTCOLUMNS' THEN DO;
00308          PUT '%_sasunit_reportCmpHTML('                         /
00309              "    i_scnid = " scn_id z3.                        /
00310              "   ,i_casid = " cas_id z3.                        /
00311              "   ,i_tstid = " tst_id z3.                        /
00312              "   ,o_html  = &l_output"                          /
00313              ")";
00314       END;
00315 
00316       /*-- per test assertLibrary --------------------------------------------*/
00317       IF scn_id NE . AND cas_id NE . AND tst_id NE . AND upcase(tst_type) = 'ASSERTLIBRARY' THEN DO;
00318          PUT '%_sasunit_reportLibraryHTML('                         /
00319              "    i_scnid = " scn_id z3.                        /
00320              "   ,i_casid = " cas_id z3.                        /
00321              "   ,i_tstid = " tst_id z3.                        /
00322              "   ,o_html  = &l_output"                          /
00323              ")";
00324       END;
00325 
00326       /*-- per test assertReport ---------------------------------------------*/
00327       IF scn_id NE . AND cas_id NE . AND tst_id NE . AND upcase(tst_type) = 'ASSERTREPORT' THEN DO;
00328          PUT '%_sasunit_reportManHTML('                         /
00329              "    i_scnid = " scn_id z3.                        /
00330              "   ,i_casid = " cas_id z3.                        /
00331              "   ,i_tstid = " tst_id z3.                        /
00332              "   ,i_extexp= " tst_exp                           /
00333              "   ,i_extact= " tst_act                           /
00334              "   ,o_html  = &l_output/_" scn_id z3. "_" cas_id z3. "_" tst_id z3. "_rep.html"    /
00335              "   ,o_output= &l_output"                          /
00336              ")";
00337       END;
00338 
00339    END; /* if test case has been run since last report */
00340 
00341 RUN;
00342 
00343 /*-- create report -----------------------------------------------------------*/
00344 ODS LISTING CLOSE;
00345 %INCLUDE repgen / source2;
00346 FILENAME repgen;
00347 
00348 /*-- save last report date ---------------------------------------------------*/
00349 PROC SQL NOPRINT;
00350    UPDATE target.tsu 
00351       SET tsu_lastrep = %sysfunc(datetime())
00352    ;
00353 QUIT;
00354 
00355 %GOTO exit;
00356 %errexit:
00357    %PUT;
00358    %PUT ======================== Error! reportSASUnit aborted! ==========================================;
00359    %PUT;
00360    %PUT;
00361 %exit:
00362 PROC DATASETS NOWARN NOLIST LIB=work;
00363    DELETE %scan(&d_rep,2,.) %scan(&d_scn,2,.) %scan(&d_cas,2,.) %scan(&d_auton,2,.) 
00364           %scan(&d_pgm,2,.) %scan(&d_pcs,2,.);
00365 QUIT;
00366 %MEND reportSASUnit;

Generated on Sun Oct 10 14:10:15 2010 for SASUnit Examples by  doxygen 1.5.3