Changeset 106

Show
Ignore:
Timestamp:
01/25/11 21:11:54 (16 months ago)
Author:
mgalloy
Message:

Added FAILURES_ONLY keyword to display only failed tests.

Location:
trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/Makefile

    r94 r106  
    1 VERSION=1.1 
     1VERSION=1.2dev 
    22REVISION=r`svn info | sed -n 's/Revision: \(.*\)/\1/p'` 
    33RELEASE="$(VERSION)-$(REVISION)" 
  • trunk/RELEASE

    r95 r106  
    22Release notes 
    33------------- 
     4 
     5mgunit 1.2 
     6---------- 
     7 
     8* Added FAILURES_ONLY keyword to display only failured tests. 
     9 
    410 
    511mgunit 1.1 
     
    2026* Fixed memory leak. 
    2127 
    22    
    2328   
    2429mgunit 1.0 
  • trunk/src/mgunit.pro

    r103 r106  
    5353pro mgunit, tests, filename=filename, html=html, xml=xml, gui=gui, junit=junit, $ 
    5454            color=color, $ 
    55             npass=npass, nfail=nfail, nskip=nskip, ntests=ntests 
     55            npass=npass, nfail=nfail, nskip=nskip, ntests=ntests, $ 
     56            failures_only=failuresOnly 
    5657  compile_opt strictarr 
    5758 
     
    7475    testsuite = obj_new('MGutTestSuite', $ 
    7576                        test_runner=testRunner, $ 
    76                         name='All tests') 
     77                        name='All tests', $ 
     78                        failures_only=failuresOnly) 
    7779 
    7880    testRunner->add, obj_new(runnerName, parent=testRunner, $ 
     
    8284    testsuite->add, tests 
    8385    testsuite->run 
     86    if (keyword_set(failuresOnly)) then testsuite->display 
    8487    testsuite->getProperty, npass=npass, nfail=nfail, nskip=nskip, $ 
    8588                            ntests=ntests 
  • trunk/src/mguttestcase__define.pro

    r104 r106  
    136136end 
    137137 
    138    
     138 
     139pro mguttestcase::display 
     140  compile_opt strictarr 
     141 
     142  if (self.nfail eq 0L) then return 
     143   
     144  self.testRunner->reportTestCaseStart, strlowcase(obj_class(self)), $ 
     145                                        ntests=self.ntests, $ 
     146                                        level=self.level 
     147  for t = 0L, self.ntests - 1L do begin 
     148    if ((*self.passes)[t] eq 0B) then begin 
     149      self.testRunner->reportTestStart, (*self.testnames)[t], level=self.level 
     150      self.testRunner->reportTestResult, (*self.logmsgs)[t], passed=(*self.passes)[t], $ 
     151                                         skipped=self.skipped, $ 
     152                                         time=self.time, level=self.level 
     153    endif 
     154  endfor 
     155 
     156  self.testRunner->reportTestCaseResult, npass=self.npass, $ 
     157                                         nfail=self.nfail, $ 
     158                                         nskip=self.nskip, $ 
     159                                         level=self.level   
     160end 
     161 
     162 
    139163;+ 
    140164; Run the tests for this class (i.e. methods with names that start with  
     
    148172  self.nskip = 0L 
    149173   
    150   self.testRunner->reportTestCaseStart, strlowcase(obj_class(self)), $ 
    151                                         ntests=self.ntests, $ 
    152                                         level=self.level 
     174  if (~self.failuresOnly) then begin 
     175    self.testRunner->reportTestCaseStart, strlowcase(obj_class(self)), $ 
     176                                          ntests=self.ntests, $ 
     177                                          level=self.level 
     178  endif 
    153179 
    154180  ; run each test 
    155181  for t = 0L, self.ntests - 1L do begin 
    156     self.testRunner->reportTestStart, (*self.testnames)[t], level=self.level 
     182    if (~self.failuresOnly) then begin 
     183      self.testRunner->reportTestStart, (*self.testnames)[t], level=self.level 
     184    endif 
    157185 
    158186    result = 0L         ; assume test failed 
     
    205233                ? '' $ 
    206234                : msg) 
    207  
    208     self.testRunner->reportTestResult, logMsg, passed=passed, $ 
    209                                        skipped=self.skipped, $ 
    210                                        time=self.time, level=self.level 
     235                 
     236    (*self.logmsgs)[t] = logMsg 
     237    (*self.passes)[t] = passed 
     238    if (~self.failuresOnly) then begin 
     239      self.testRunner->reportTestResult, logMsg, passed=passed, $ 
     240                                         skipped=self.skipped, $ 
     241                                         time=self.time, level=self.level 
     242    endif 
    211243  endfor 
    212244 
    213   self.testRunner->reportTestCaseResult, npass=self.npass, $ 
    214                                          nfail=self.nfail, $ 
    215                                          nskip=self.nskip, $ 
    216                                          level=self.level 
     245  if (~self.failuresOnly) then begin 
     246    self.testRunner->reportTestCaseResult, npass=self.npass, $ 
     247                                           nfail=self.nfail, $ 
     248                                           nskip=self.nskip, $ 
     249                                           level=self.level 
     250  endif 
    217251end 
    218252 
     
    307341;       subclass of `MGutTestRunner` 
    308342;- 
    309 function mguttestcase::init, test_runner=testRunner 
     343function mguttestcase::init, test_runner=testRunner, failures_only=failuresOnly 
    310344  compile_opt strictarr 
    311345 
    312346  self.testRunner = testRunner 
    313  
     347  self.failuresOnly = keyword_set(failuresOnly) 
     348   
    314349  self.testnames = ptr_new(/allocate_heap) 
     350  self.logmsgs = ptr_new(/allocate_heap) 
     351  self.passes = ptr_new(/allocate_heap) 
     352   
    315353  self->findTestnames 
    316354 
     355  *self.logmsgs = strarr(n_elements(*self.testnames)) 
     356  *self.passes = bytarr(n_elements(*self.testnames)) 
     357   
    317358  self.level = 0L 
    318359 
     
    346387             testRunner: obj_new(), $ 
    347388             testnames: ptr_new(), $ 
     389             logmsgs: ptr_new(), $ 
     390             passes: ptr_new(), $ 
    348391             level: 0L, $ 
    349392             ntests: 0L, $ 
     
    352395             nskip: 0L, $ 
    353396             time: 0.0D, $ 
    354              skipped: 0B $ 
     397             skipped: 0B, $ 
     398             failuresOnly: 0B $              
    355399             }              
    356400end 
  • trunk/src/mguttestsuite__define.pro

    r104 r106  
    4141;       0 if no error and 1 if an error 
    4242;    _extra : in, optional, type=keywords 
    43 ;       keywords to OBJ_NEW for test cases and test suites 
     43;       keywords to `OBJ_NEW` for test cases and test suites 
    4444;- 
    4545function mguttestsuite::_makeTestCase, testName, error=error, _extra=e 
     
    5555  self->_recompile, testName 
    5656 
    57   return, obj_new(testName, test_runner=self.testRunner, _strict_extra=e) 
     57  return, obj_new(testName, test_runner=self.testRunner, $ 
     58                  failures_only=self.failuresOnly, _strict_extra=e) 
    5859end 
    5960 
     
    7778 
    7879 
    79 ;+ 
    80 ; Run the contained test suites or test cases. 
    81 ;- 
    82 pro mguttestsuite::run 
    83   compile_opt strictarr 
    84  
    85   self.npass = 0L 
    86   self.nfail = 0L 
    87   self.nskip = 0L 
    88    
     80pro mguttestsuite::display 
     81  compile_opt strictarr 
     82 
     83  if (self.nfail eq 0L) then return 
     84    
    8985  self->getProperty, name=name, ntestcases=ntestcases, ntests=ntests 
    9086  self.testRunner->reportTestSuiteStart, name, $ 
     
    9288                                         ntests=ntests, $ 
    9389                                         level=self.level 
     90 
     91  for t = 0L, ntestcases - 1L do begin 
     92    otestcase = self.testcases->get(position=t) 
     93    otestcase->display 
     94  endfor 
     95   
     96  self.testRunner->reportTestSuiteResult, npass=self.npass, $ 
     97                                          nfail=self.nfail, $ 
     98                                          nskip=self.nskip, $ 
     99                                          level=self.level   
     100end 
     101 
     102 
     103;+ 
     104; Run the contained test suites or test cases. 
     105;- 
     106pro mguttestsuite::run 
     107  compile_opt strictarr 
     108 
     109  self.npass = 0L 
     110  self.nfail = 0L 
     111  self.nskip = 0L 
     112   
     113  if (~self.failuresOnly) then begin 
     114    self->getProperty, name=name, ntestcases=ntestcases, ntests=ntests 
     115    self.testRunner->reportTestSuiteStart, name, $ 
     116                                           ntestcases=ntestcases, $ 
     117                                           ntests=ntests, $ 
     118                                           level=self.level 
     119  endif 
    94120 
    95121  ntestcases = self.testcases->count() 
     
    105131  endfor 
    106132 
    107   self.testRunner->reportTestSuiteResult, npass=self.npass, $ 
    108                                           nfail=self.nfail, $ 
    109                                           nskip=self.nskip, $ 
    110                                           level=self.level 
     133  if (~self.failuresOnly) then begin 
     134    self.testRunner->reportTestSuiteResult, npass=self.npass, $ 
     135                                            nfail=self.nfail, $ 
     136                                            nskip=self.nskip, $ 
     137                                            level=self.level 
     138  endif 
    111139end 
    112140 
     
    170198      otestsuite = obj_new('MGutTestSuite', home=testDirs[d], $ 
    171199                           name=file_basename(testDirs[d]), $ 
    172                            test_runner=self.testRunner) 
     200                           test_runner=self.testRunner, $ 
     201                           failures_only=self.failuresOnly) 
    173202      otestsuite->add, /all 
    174203      self.testcases->add, otestsuite 
     
    278307;       subclass of MGtestRunner 
    279308;- 
    280 function mguttestsuite::init, name=name, home=home, test_runner=testRunner 
     309function mguttestsuite::init, name=name, home=home, test_runner=testRunner, $ 
     310                              failures_only=failuresOnly 
    281311  compile_opt strictarr 
    282312 
     
    297327 
    298328  self.testRunner = testRunner 
    299  
     329  self.failuresOnly = keyword_set(failuresOnly) 
     330   
    300331  self.testcases = obj_new('IDL_Container') 
    301332 
     
    316347;       number of layers below the top-most containing test suite 
    317348;    testcases 
    318 ;       IDL_Container holding test suites or test cases 
     349;       `IDL_Container` holding test suites or test cases 
    319350;    testRunner 
    320 ;       subclass of MGutTestRunner 
     351;       subclass of `MGutTestRunner` 
    321352;    npass  
    322353;       number of passing tests contained in the hierarchy below this test  
     
    340371             npass: 0L, $ 
    341372             nfail: 0L, $ 
    342              nskip: 0L $ 
     373             nskip: 0L, $ 
     374             failuresOnly: 0B $ 
    343375           } 
    344376end