run_unitary_tests_in_directory.m 2.34 KB
Newer Older
Stéphane Adjemian's avatar
Stéphane Adjemian committed
1
function report = run_unitary_tests_in_directory(dirname, savereport, printreport, sendreport)
Stéphane Adjemian's avatar
Stéphane Adjemian committed
2

Stéphane Adjemian's avatar
Stéphane Adjemian committed
3
% Runs all the unitary tests defined in a directory (and subfolders).
Stéphane Adjemian's avatar
Stéphane Adjemian committed
4
%
Stéphane Adjemian's avatar
Stéphane Adjemian committed
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
% INPUTS 
%  - dirname     [string], name of the directory where
%  - savereport  [integer], scalar equal to 0 or 1. If equal to 1 the report is saved in a mat file.
%  - printreport [integer], scalar equal to 0 or 1. If equal to 1 the report is printed on screen.
%  - sendreport  [integer], scalar equal to 0 or 1. If equal to 1 the report is sent by email.
%
% OUTPUTS 
%  - report      [cell], first output argument of run_unitary_test routine.
%
% REMARKS 
%  1. Git needs to be available on the system and it is assumed that the content of dirname is versionned with Git.
%
% See also get_directory_description, run_unitary_tests, build_report_summary

% Copyright (C) 2013-2014 Dynare Team
%
% This file is part of Dynare (m-unit-tests module).
Stéphane Adjemian's avatar
Stéphane Adjemian committed
22
23
24
25
26
27
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
Stéphane Adjemian's avatar
Stéphane Adjemian committed
28
29
30
31
% Dynare's m-unit-tests module is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
% or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
% more details.
Stéphane Adjemian's avatar
Stéphane Adjemian committed
32
33
34
35
%
% You should have received a copy of the GNU General Public License
% along with Dynare.  If not, see <http://www.gnu.org/licenses/>.

Stéphane Adjemian's avatar
Stéphane Adjemian committed
36
37
38
39
INIT_PATH = pwd();

cd(dirname);

Stéphane Adjemian's avatar
Stéphane Adjemian committed
40
41
42
43
44
45
46
47
48
49
50
51
system('git show --pretty=format:"Last commit %H by %an, %ar %n-> %s" HEAD > git.info');
system('git rev-parse HEAD > git.last-commit-hash');

fid = fopen('git.info');
gitinfo = fgetl(fid);
gitinfo = char(gitinfo,fgetl(fid));
fclose(fid);

fid = fopen('git.last-commit-hash');
gitlastcommithash = fgetl(fid);
fclose(fid);

Stéphane Adjemian's avatar
Stéphane Adjemian committed
52
53
cd(INIT_PATH);

Stéphane Adjemian's avatar
Stéphane Adjemian committed
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
matlabverion = version;
platform = computer;

listoffiles = get_directory_description(dirname);

diary(['report-' gitlastcommithash '.log'] )
[report, time] = run_unitary_tests(listoffiles)
diary off

if nargin>1 && savereport>0
    save(['report-' gitlastcommithash '.mat'],'report','time','gitinfo','gitlastcommithash','matlabverion','platform');
end

if nargin>2
    build_report_summary(['report-' gitlastcommithash '.mat'], printreport, sendreport);
Stéphane Adjemian's avatar
Stéphane Adjemian committed
69
end