author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Thu, 30 Aug 2018 10:06:05 +0100 | |
changeset 254 | 70c9861ad62f |
parent 250 | 86db38276922 |
parent 253 | 3747e4b3256b |
permissions | -rw-r--r-- |
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 = [] |
253
3747e4b3256b
Adding a total time for each test package in the OVERALL SUMMARY
Patrik Svestka <patrik.svestka@gmail.com>
parents:
252
diff
changeset
|
8 |
PATTERN = /tests="(?<run>\d+)".+failures="(?<failed>\d+)" errors="(?<errors>\d+)" skipped="(?<skipped>\d+)" time="(?<time>\d+\.\d+)"/ |
48
33088fc2ba3b
Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
9 |
|
253
3747e4b3256b
Adding a total time for each test package in the OVERALL SUMMARY
Patrik Svestka <patrik.svestka@gmail.com>
parents:
252
diff
changeset
|
10 |
attr_reader :pkg, :run, :failed, :errors, :skipped, :time |
48
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 |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
13 |
@run - @failed - @errors - @skipped |
48
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 |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
17 |
(@failed > 0 or @errors > 0) ? 'FAILED' : 'PASSED' |
48
33088fc2ba3b
Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
18 |
end |
253
3747e4b3256b
Adding a total time for each test package in the OVERALL SUMMARY
Patrik Svestka <patrik.svestka@gmail.com>
parents:
252
diff
changeset
|
19 |
|
3747e4b3256b
Adding a total time for each test package in the OVERALL SUMMARY
Patrik Svestka <patrik.svestka@gmail.com>
parents:
252
diff
changeset
|
20 |
def execution_time |
3747e4b3256b
Adding a total time for each test package in the OVERALL SUMMARY
Patrik Svestka <patrik.svestka@gmail.com>
parents:
252
diff
changeset
|
21 |
hours = (@time/3600).floor |
3747e4b3256b
Adding a total time for each test package in the OVERALL SUMMARY
Patrik Svestka <patrik.svestka@gmail.com>
parents:
252
diff
changeset
|
22 |
minutes = (@time/60).floor |
3747e4b3256b
Adding a total time for each test package in the OVERALL SUMMARY
Patrik Svestka <patrik.svestka@gmail.com>
parents:
252
diff
changeset
|
23 |
seconds = (@time%60).round |
3747e4b3256b
Adding a total time for each test package in the OVERALL SUMMARY
Patrik Svestka <patrik.svestka@gmail.com>
parents:
252
diff
changeset
|
24 |
"#{hours}h:#{minutes}m:#{seconds}s" |
3747e4b3256b
Adding a total time for each test package in the OVERALL SUMMARY
Patrik Svestka <patrik.svestka@gmail.com>
parents:
252
diff
changeset
|
25 |
end |
48
33088fc2ba3b
Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
26 |
|
218
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
27 |
# Creates a new summary for given package and report file. |
48
33088fc2ba3b
Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
28 |
def initialize(pkg_name, report_file) |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
29 |
raise Exception.new("Report file does not exist! #{report_file}") unless File.exist? report_file |
48
33088fc2ba3b
Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
30 |
@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
|
31 |
matches = PATTERN.match(IO.read(report_file, 512)) |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
32 |
|
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
33 |
# Maybe the buffer is too small? Try to read up more |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
34 |
# data.... |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
35 |
raise Exception.new(%q{Cannot "parse" report file!}) unless matches |
48
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 |
253
3747e4b3256b
Adding a total time for each test package in the OVERALL SUMMARY
Patrik Svestka <patrik.svestka@gmail.com>
parents:
252
diff
changeset
|
40 |
@time = matches['time'].to_f |
48
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 |
33088fc2ba3b
Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
42 |
end |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
43 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
44 |
desc 'Run tests' |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
45 |
task :test => :'test:all' |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
46 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
47 |
desc 'Run tests (alias for target test)' |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
48 |
task :tests => :'test' |
0
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 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
51 |
task :'setup:tasks' => :'setup:tasks:test' |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
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
|
54 |
#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
|
55 |
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
|
56 |
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
|
57 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
58 |
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
|
59 |
tmp_dir = File.expand_path(TMP_DIR) |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
60 |
|
218
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
61 |
# Set STX_TMPDIR environment to make sure all temporary files created by |
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
62 |
# Smalltalk/X goes to a local tmp directory (which should be discarded |
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
63 |
# regularly). This helps to avoid garbage to heap up on Windows slaves |
77
570ae23d0ce2
Specify (nonstandard) temporary directory when running tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
69
diff
changeset
|
64 |
# 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
|
65 |
ENV['STX_TMPDIR'] = tmp_dir |
218
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
66 |
|
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
67 |
if app |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
68 |
exe_dir = BUILD_DIR / app.directory |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
69 |
win32? ? (exe = "#{app.executable}.com") : (exe = "./#{app.executable}") |
0
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_dir = BUILD_DIR / 'stx' / 'projects' / 'smalltalk' |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
72 |
win32? ? (exe = 'stx.com') : (exe = './stx') |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
73 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
74 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
75 |
(mkdir_p tmp_dir) unless File.directory?(tmp_dir) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
76 |
chdir exe_dir do |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
77 |
packages_args = '' |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
78 |
packages.each {|p| packages_args += " -p #{p}"} |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
79 |
|
187
79e249bd767a
Rakefiles: run tests with `--abortInInternalError`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
141
diff
changeset
|
80 |
File.exist?(coveragerportformat_dot_st) ? (runner_opts = "--abortOnSEGV --abortOnInternalError -I --execute #{run_report_st}") : (runner_opts = "-I -f #{run_report_st}") |
22
53b717983dfd
Removed duplicated "build" string from report ident.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
15
diff
changeset
|
81 |
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
|
82 |
end |
149
8fd5aaf96f75
Rakefiles: do not remove temporary directory after tests are run
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
141
diff
changeset
|
83 |
# No, do not remove tmp_dir here. If a test fails, |
8fd5aaf96f75
Rakefiles: do not remove temporary directory after tests are run
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
141
diff
changeset
|
84 |
# then temp dir may contain valuable files to debug/reproduce |
8fd5aaf96f75
Rakefiles: do not remove temporary directory after tests are run
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
141
diff
changeset
|
85 |
# (bad image files, outputs and so on). |
8fd5aaf96f75
Rakefiles: do not remove temporary directory after tests are run
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
141
diff
changeset
|
86 |
# Depend on some other external process to wipe out temp directory |
8fd5aaf96f75
Rakefiles: do not remove temporary directory after tests are run
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
141
diff
changeset
|
87 |
# once not needed (full CI build cycle should do that) |
8fd5aaf96f75
Rakefiles: do not remove temporary directory after tests are run
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
141
diff
changeset
|
88 |
# |
8fd5aaf96f75
Rakefiles: do not remove temporary directory after tests are run
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
141
diff
changeset
|
89 |
# rm_rf tmp_dir |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
90 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
91 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
92 |
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
|
93 |
$__testresults__ = [] |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
94 |
app = project.application |
250
86db38276922
Rakefiles: execute tests in random order
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
236
diff
changeset
|
95 |
|
86db38276922
Rakefiles: execute tests in random order
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
236
diff
changeset
|
96 |
# We shuffle the order of the packages by purpose. |
86db38276922
Rakefiles: execute tests in random order
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
236
diff
changeset
|
97 |
# Some tests are CPU bound while some are IO bound, |
86db38276922
Rakefiles: execute tests in random order
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
236
diff
changeset
|
98 |
# so this should help to distribute the load more evenly |
86db38276922
Rakefiles: execute tests in random order
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
236
diff
changeset
|
99 |
# in cases where multiple tests (`rake test` invocations) |
86db38276922
Rakefiles: execute tests in random order
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
236
diff
changeset
|
100 |
# are run in parallel (such as on CI) |
86db38276922
Rakefiles: execute tests in random order
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
236
diff
changeset
|
101 |
project.packages.shuffle.each do |pkg| |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
102 |
if pkg.test |
218
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
103 |
task "test:package:#{pkg.name}:pre" |
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
104 |
task "test:package:#{pkg.name}:post" |
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
105 |
task "test:package:#{pkg.name}:main" => ['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
|
106 |
report_file = File.expand_path(REPORT_DIR) / "#{pkg.name_components.join('_')}-#{BUILD_ID}-Test.xml" |
218
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
107 |
# Sigh, sigh. On CI server, sometimes it happen that tests are simply not run. |
121
dd6b76197aa0
CI: An attempt to address a mysterious problem occuring only on CI server
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
93
diff
changeset
|
108 |
# I was not able to debug the issue anyhow, any attempt to attach a debugger, |
dd6b76197aa0
CI: An attempt to address a mysterious problem occuring only on CI server
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
93
diff
changeset
|
109 |
# add a debug print or run it manually failed as the problem did not manifest. |
218
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
110 |
# |
121
dd6b76197aa0
CI: An attempt to address a mysterious problem occuring only on CI server
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
93
diff
changeset
|
111 |
# This is a feeble and horrible attempt to just cover up the problem by |
dd6b76197aa0
CI: An attempt to address a mysterious problem occuring only on CI server
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
93
diff
changeset
|
112 |
# trying multiple times. I don't want to spend more time chasing issues |
218
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
113 |
# like this. Sorry. |
121
dd6b76197aa0
CI: An attempt to address a mysterious problem occuring only on CI server
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
93
diff
changeset
|
114 |
# |
218
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
115 |
# Let's see if it helps. |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
116 |
5.times do #for i in 1..5 do |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
117 |
pkg.coverage ? run_report(app, [pkg.name], TESTREPORT_CLASS, '', '--coverage') : run_report(app, [pkg.name], TESTREPORT_CLASS) |
121
dd6b76197aa0
CI: An attempt to address a mysterious problem occuring only on CI server
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
93
diff
changeset
|
118 |
# Extract summary from XML report and keep it. Yeah, parsing XML |
218
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
119 |
# using regexps is a bad thing, but it's quick and lot less code! |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
120 |
break if File.exist?(report_file) |
121
dd6b76197aa0
CI: An attempt to address a mysterious problem occuring only on CI server
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
93
diff
changeset
|
121 |
end |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
122 |
report_summary = TestReportSummary.new(pkg.name, report_file) |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
123 |
TestReportSummary::SUMMARIES << report_summary |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
124 |
end |
218
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
125 |
|
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
126 |
task "test:package:#{pkg.name}" => [ "test:package:#{pkg.name}:pre", |
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
127 |
"test:package:#{pkg.name}:main", |
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
128 |
"test:package:#{pkg.name}:post" ] |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
129 |
task :'test:packages' => "test:package:#{pkg.name}" |
218
327e28e1fcaf
Rakefiles: refactored "test" targets to support "...:pre" and "...:post" hooks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
130 |
task "#{pkg.name}:test" => "test:package:#{pkg.name}" |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
131 |
end |
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 |
if pkg.lint |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
134 |
task "lint:package:#{pkg.name}" => %W(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
|
135 |
#puts "LINT DISABLED (because of some bug in recent SmallLint - runs out of memory)" |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
136 |
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
|
137 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
138 |
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
|
139 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
140 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
141 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
142 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
143 |
task :'setup:tasks' => :'setup:tasks:test' |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
144 |
task :'test:setup' => :setup |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
145 |
task :'lint:setup' => :setup |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
146 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
147 |
namespace :test do |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
148 |
task :all => %i(setup pre main post) |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
149 |
task :pre |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
150 |
task :post |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
151 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
152 |
directory REPORT_DIR |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
153 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
154 |
task :setup => :'setup:dependencies' |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
155 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
156 |
task :main => %i(setup packages summary) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
157 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
158 |
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
|
159 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
160 |
task :summary 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
|
161 |
outcome = 'PASSED' |
252
135a52fc8891
Detection of ConEmu environment when running a test suite - warning a user, for the tests maybe unreliable
Patrik Svestka <patrik.svestka@gmail.com>
parents:
236
diff
changeset
|
162 |
# Detect if the test is run in ConEmu environment. Running test suite in ConEmu |
135a52fc8891
Detection of ConEmu environment when running a test suite - warning a user, for the tests maybe unreliable
Patrik Svestka <patrik.svestka@gmail.com>
parents:
236
diff
changeset
|
163 |
# yields often incorrect results due to some code injection and other techniques |
135a52fc8891
Detection of ConEmu environment when running a test suite - warning a user, for the tests maybe unreliable
Patrik Svestka <patrik.svestka@gmail.com>
parents:
236
diff
changeset
|
164 |
# used by ConEmu to fix bugs or other deficiencies in the MS code |
135a52fc8891
Detection of ConEmu environment when running a test suite - warning a user, for the tests maybe unreliable
Patrik Svestka <patrik.svestka@gmail.com>
parents:
236
diff
changeset
|
165 |
if (ENV['ConEmuPID']) |
135a52fc8891
Detection of ConEmu environment when running a test suite - warning a user, for the tests maybe unreliable
Patrik Svestka <patrik.svestka@gmail.com>
parents:
236
diff
changeset
|
166 |
puts |
135a52fc8891
Detection of ConEmu environment when running a test suite - warning a user, for the tests maybe unreliable
Patrik Svestka <patrik.svestka@gmail.com>
parents:
236
diff
changeset
|
167 |
puts 'WARNING: Test was executed within ConEmu environment the test results are UNRELIABLE!' |
135a52fc8891
Detection of ConEmu environment when running a test suite - warning a user, for the tests maybe unreliable
Patrik Svestka <patrik.svestka@gmail.com>
parents:
236
diff
changeset
|
168 |
puts 'Run the test suite directly in the cmd.exe or the powershell.exe.' |
135a52fc8891
Detection of ConEmu environment when running a test suite - warning a user, for the tests maybe unreliable
Patrik Svestka <patrik.svestka@gmail.com>
parents:
236
diff
changeset
|
169 |
puts |
135a52fc8891
Detection of ConEmu environment when running a test suite - warning a user, for the tests maybe unreliable
Patrik Svestka <patrik.svestka@gmail.com>
parents:
236
diff
changeset
|
170 |
end |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
171 |
puts |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
172 |
puts 'OVERALL SUMMARY' |
48
33088fc2ba3b
Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
173 |
puts |
250
86db38276922
Rakefiles: execute tests in random order
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
236
diff
changeset
|
174 |
(TestReportSummary::SUMMARIES.sort { | a, b | a.pkg <=> b.pkg }).each do |test_summary| |
253
3747e4b3256b
Adding a total time for each test package in the OVERALL SUMMARY
Patrik Svestka <patrik.svestka@gmail.com>
parents:
252
diff
changeset
|
175 |
puts "%-20s %s - %d run, %d passed, %d skipped, %d failed, %d errors, execution time: %s" % [ |
141
e2147db5c7f0
Fixed slip in `test.rake` introduced in commit e665031cade7
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
140
diff
changeset
|
176 |
test_summary.pkg, |
e2147db5c7f0
Fixed slip in `test.rake` introduced in commit e665031cade7
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
140
diff
changeset
|
177 |
test_summary.outcome, |
e2147db5c7f0
Fixed slip in `test.rake` introduced in commit e665031cade7
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
140
diff
changeset
|
178 |
test_summary.run, |
e2147db5c7f0
Fixed slip in `test.rake` introduced in commit e665031cade7
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
140
diff
changeset
|
179 |
test_summary.passed, |
e2147db5c7f0
Fixed slip in `test.rake` introduced in commit e665031cade7
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
140
diff
changeset
|
180 |
test_summary.skipped, |
e2147db5c7f0
Fixed slip in `test.rake` introduced in commit e665031cade7
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
140
diff
changeset
|
181 |
test_summary.failed, |
253
3747e4b3256b
Adding a total time for each test package in the OVERALL SUMMARY
Patrik Svestka <patrik.svestka@gmail.com>
parents:
252
diff
changeset
|
182 |
test_summary.errors, |
3747e4b3256b
Adding a total time for each test package in the OVERALL SUMMARY
Patrik Svestka <patrik.svestka@gmail.com>
parents:
252
diff
changeset
|
183 |
test_summary.execution_time |
141
e2147db5c7f0
Fixed slip in `test.rake` introduced in commit e665031cade7
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
140
diff
changeset
|
184 |
] |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
185 |
outcome = 'FAILED' if test_summary.failed > 0 or test_summary.errors > 0 |
48
33088fc2ba3b
Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
186 |
end |
33088fc2ba3b
Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
187 |
puts |
33088fc2ba3b
Print overall test result summary fpr after all tests are run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
188 |
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
|
189 |
end |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
190 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
191 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
192 |
desc 'Run static analysis on the code (SmallLint)' |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
193 |
task :lint => :'lint:all' |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
194 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
195 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
196 |
namespace :lint do |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
197 |
task :all => %i(setup pre main post) |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
198 |
task :pre |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
199 |
task :post |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
200 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
201 |
directory REPORT_DIR |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
202 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
203 |
task :setup |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
204 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
205 |
task :main => %i(setup packages) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
206 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
121
diff
changeset
|
207 |
task :packages |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
208 |
end |