rakelib/test.rake
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 21 Nov 2016 23:00:19 +0000
changeset 77 570ae23d0ce2
parent 69 23cdc822cfc5
child 93 650412e81596
permissions -rw-r--r--
Specify (nonstandard) temporary directory when running tests The directory is located within build tree. This is because * Helps debugging tests since temporary data of individual build trees are separated and * more importantly, it helps to avoid garbage to heap up on Windows slaves (assuming workspaces is thrown away regularly) Windows rarely (if at all) cleans `%HOME%\AppData\Local\Temp`
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
     1
TESTREPORT_CLASS = 'Builder::TestReport'
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
     2
LINTREPORT_CLASS = 'Builder::LintReport'
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
     3
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
     4
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
     5
# A helper class to keep a summary of a test report
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
     6
class TestReportSummary
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
     7
  SUMMARIES = []
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
     8
  PATTERN = /tests=\"(?<run>\d+)\".+failures=\"(?<failed>\d+)\" errors=\"(?<errors>\d+)\" skipped=\"(?<skipped>\d+)\"/
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
     9
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    10
  attr_reader :pkg, :run, :failed, :errors, :skipped 
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    11
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    12
  def passed
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    13
    return @run - @failed - @errors - @skipped
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    14
  end
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    15
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    16
  def outcome
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    17
    if @failed > 0 or @errors > 0 then
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    18
      return 'FAILED'
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    19
    else
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    20
      return 'PASSED'
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    21
    end
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    22
  end
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    23
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    24
  # Creates a new summary for given package and report file. 
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    25
  def initialize(pkg_name, report_file)
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    26
    if not File.exist? report_file then 
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    27
      raise Exception.new("Report file does not exist! #{report_file}");
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    28
    end
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    29
    @pkg = pkg_name
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    30
    matches = PATTERN.match(IO.read(report_file, 512))
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    31
    if not matches then
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    32
      raise Exception.new("Cannot \"parse\" report file!")
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    33
      # Maybe the buffer is too small? Try to read up more
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    34
      # data....
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    35
    end
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    36
    @run = matches['run'].to_i
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    37
    @failed = matches['failed'].to_i
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    38
    @errors = matches['errors'].to_i
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    39
    @skipped = matches['skipped'].to_i
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    40
  end
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    41
end
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
desc "Run tests"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
task :'test' => :'test:all'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
desc "Run tests (alias for target test)"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
task :'tests' => :'test'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
task :'setup:tasks' => :'setup:tasks:test'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
def run_report(app, packages, report, global_opts = '', report_opts = '')
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
  #run_report_st = BUILD_DIR / 'stx' / 'goodies' / 'builder' / 'reports' / 'report-runner-old.st'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
  run_report_st = BUILD_DIR / 'stx' / 'goodies' / 'builder' / 'reports' / 'report-runner.st'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
  coveragerportformat_dot_st = BUILD_DIR / 'stx' / 'goodies' / 'builder' / 'reports' / 'Builder__CoverageReportFormat.st'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
  report_dir = File.expand_path(REPORT_DIR)
77
570ae23d0ce2 Specify (nonstandard) temporary directory when running tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    58
  tmp_dir = File.expand_path(TMP_DIR)
570ae23d0ce2 Specify (nonstandard) temporary directory when running tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    59
  
570ae23d0ce2 Specify (nonstandard) temporary directory when running tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    60
  # Set STX_TMPDIR environment to make sure all temporary files created by 
570ae23d0ce2 Specify (nonstandard) temporary directory when running tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    61
  # Smalltalk/X goes to a local tmp directory (which should be discarded 
570ae23d0ce2 Specify (nonstandard) temporary directory when running tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    62
  # regularly). This helps to avoid garbage to heap up on Windows slaves 
570ae23d0ce2 Specify (nonstandard) temporary directory when running tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    63
  # assuming workspaces is thrown away often.
570ae23d0ce2 Specify (nonstandard) temporary directory when running tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    64
  ENV['STX_TMPDIR'] = tmp_dir
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
  if app
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    exe_dir = BUILD_DIR / app.directory
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    if win32?
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
      exe = "#{app.executable}.com"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    else
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
      exe = "./#{app.executable}"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
  else
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    exe_dir = BUILD_DIR / 'stx' / 'projects' / 'smalltalk'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
    if win32?
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
      exe = "stx.com"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
    else
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
      exe = "./stx"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
77
570ae23d0ce2 Specify (nonstandard) temporary directory when running tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    82
  if not File.directory? tmp_dir then
570ae23d0ce2 Specify (nonstandard) temporary directory when running tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    83
    mkdir_p tmp_dir
570ae23d0ce2 Specify (nonstandard) temporary directory when running tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    84
  end
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
  chdir exe_dir do
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
    packages_args = ''
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    packages.each { | p | packages_args += " -p #{p}" }
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    if File.exist?(coveragerportformat_dot_st)
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
        runner_opts = "-abortOnSEGV -I --execute #{run_report_st}"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    else
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
        runner_opts = "-I -f #{run_report_st}"
7
b6fe3a90f6e0 Added `zip()` & `unzip()` extensions to easily create / extract archives from build scripts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    93
    end    
22
53b717983dfd Removed duplicated "build" string from report ident.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    94
    sh "#{exe} #{runner_opts} #{global_opts} -i \"#{BUILD_ID}\" -D \"#{report_dir}\" -r #{report} #{report_opts} #{packages_args}"
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
  end
77
570ae23d0ce2 Specify (nonstandard) temporary directory when running tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    96
  rm_rf tmp_dir
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
task :'setup:tasks:test' do
48
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   100
  $__testresults__ = []
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   101
  app = project.application  
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
  project.packages.each do | pkg |
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    if pkg.test
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
      task "test:package:#{pkg.name}" => [ 'stx:goodies/builder/reports', REPORT_DIR ] do
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
        if pkg.coverage
48
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   106
          run_report(app, [ pkg.name ], TESTREPORT_CLASS,  '', '--coverage')
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
        else
48
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   108
          run_report(app, [ pkg.name ], TESTREPORT_CLASS)
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   109
	      end
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   110
        # Extract summary from XML report and keep it. Yeah, parsing XML
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   111
        # using regexps is a bad thing, but it's quick and lot less code!
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   112
        report_file = File.expand_path(REPORT_DIR) / "#{pkg.name_components.join('_')}-#{BUILD_ID}-Test.xml"
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   113
        report_summary = TestReportSummary.new(pkg.name, report_file);
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   114
        TestReportSummary::SUMMARIES << report_summary    
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
      end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
      task :'test:packages' => "test:package:#{pkg.name}"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
    if pkg.lint
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
      task "lint:package:#{pkg.name}" => [ 'stx:goodies/builder/reports', REPORT_DIR ]  do
48
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   121
        #puts "LINT DISABLED (because of some bug in recent SmallLint - runs out of memory)"
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   122
        run_report(app, [ pkg.name ], LINTREPORT_CLASS)
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
      end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
      task :'lint:packages' => "lint:package:#{pkg.name}"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
task :'setup:tasks' => :'setup:tasks:test'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
task :'test:setup' => :'setup'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
task :'lint:setup' => :'setup'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
namespace :'test' do
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
  task :'all' => [ :'setup', :'pre', :'main', :'post' ]
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
  task :'pre'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
  task :'post'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
  directory REPORT_DIR
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
  task :'setup'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
48
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   142
  task :'main' => [:'setup', :'packages', :'summary' ]
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
  task :'packages'
48
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   145
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   146
  task :'summary' do
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   147
    outcome = 'PASSED'
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   148
    puts 
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   149
    puts "OVERALL SUMMARY"
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   150
    puts
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   151
    TestReportSummary::SUMMARIES.each do | test_summary |
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   152
      puts "%-20s %s - %d run, %d passed, %d skipped, %d failed, %d errors" % [
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   153
        test_summary.pkg,
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   154
        test_summary.outcome,
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   155
        test_summary.run,
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   156
        test_summary.passed,
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   157
        test_summary.skipped,
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   158
        test_summary.failed,
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   159
        test_summary.errors
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   160
      ]
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   161
      if test_summary.failed > 0 or test_summary.errors > 0 then
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   162
        outcome = 'FAILED'
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   163
      end
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   164
    end
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   165
    puts
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   166
    puts outcome
33088fc2ba3b Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   167
  end
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
desc "Run static analysis on the code (SmallLint)"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
task :'lint' => :'lint:all'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
namespace :'lint' do
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
  task :'all' => [ :'setup', :'pre', :'main', :'post' ]
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
  task :'pre'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
  task :'post'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
  directory REPORT_DIR
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
  task :'setup'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
  task :'main' => [:'setup', :'packages' ]
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
  task :'packages'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
end