Meson build system: testsuite now fully implemented

By the way, switch the CI to use the Meson testsuite, because some test files
have been modified and no longer work with the old build system.
kalman-mex
Sébastien Villemot 2023-09-20 13:07:30 +02:00
parent 01ae836a99
commit e549bbba7a
No known key found for this signature in database
GPG Key ID: 2CECE9350ECEBE4A
15 changed files with 191 additions and 462 deletions

View File

@ -25,17 +25,24 @@ stages:
- sign
- deploy
build_binaries:
build_matlab:
stage: build
script:
- autoreconf -si
- ./configure --with-matlab=/opt/MATLAB/$MATLAB_VERSION PACKAGE_VERSION=$VERSION PACKAGE_STRING="dynare $VERSION"
- make -j $(nproc) LN_S="cp -p"
- meson setup -Dbuild_for=matlab -Dmatlab_path=/opt/MATLAB/$MATLAB_VERSION -Dbuildtype=release build-matlab
- meson compile -v -C build-matlab
artifacts:
paths:
- preprocessor/dynare-preprocessor
- mex/octave/
- mex/matlab/
- build-matlab/
expire_in: 3 days
build_octave:
stage: build
script:
- meson setup -Dbuild_for=octave -Dbuildtype=release build-octave
- meson compile -v -C build-octave
artifacts:
paths:
- build-octave/
expire_in: 3 days
build_doc:
@ -109,32 +116,26 @@ pkg_macOS:
expire_in: 3 days
needs: [ "build_doc" ]
.test_matlab_template:
test_matlab:
stage: test
script:
- meson test -C build-matlab --no-rebuild --num-processes $(($(nproc) * 3 / 4))
artifacts:
paths:
- tests/**/*.m.log
- tests/**/*.m.trs
- tests/**/*.jnl
- tests/run_test_matlab_output.txt
- build-matlab/meson-logs/testlog.txt
when: always
needs: [ "build_binaries" ]
test_matlab:
extends: .test_matlab_template
script:
- autoreconf -si
- ./configure --disable-octave --with-matlab=/opt/MATLAB/$MATLAB_VERSION
- make -j $(($(nproc) * 3 / 4)) -C tests check-matlab
needs: [ "build_matlab" ]
test_old_matlab:
extends: .test_matlab_template
stage: test
script:
- autoreconf -si
- ./configure --disable-octave --with-matlab=/opt/MATLAB/$OLD_MATLAB_VERSION
- make -C mex/build/matlab clean
- make -j $(nproc) -C mex/build/matlab
- make -j $(($(nproc) * 3 / 4)) -C tests check-matlab
- meson setup -Dbuild_for=matlab -Dmatlab_path=/opt/MATLAB/$OLD_MATLAB_VERSION -Dbuildtype=release build-old-matlab
- meson compile -v -C build-old-matlab
- meson test -C build-old-matlab --num-processes $(($(nproc) * 3 / 4))
artifacts:
paths:
- build-old-matlab/meson-logs/testlog.txt
when: always
when: manual
test_octave:
@ -142,17 +143,12 @@ test_octave:
variables:
OPENBLAS_NUM_THREADS: 1
script:
- autoreconf -si
- ./configure --disable-matlab
- make -j $(nproc) -C tests check-octave
- meson test -C build-octave --no-rebuild
artifacts:
paths:
- tests/**/*.o.log
- tests/**/*.o.trs
- tests/**/*.jnl
- tests/run_test_octave_output.txt
- build-octave/meson-logs/testlog.txt
when: always
needs: [ "build_binaries" ]
needs: [ "build_octave" ]
when: manual
# For the sign and deploy jobs, we dont use the “needs” keyword, since we

View File

@ -1,5 +1,4 @@
# TODO:
# - Add tests that are individually listed in {M,O}_TRS_FILES of tests/Makefile.am
# - Install files in right location
# - configuration option to disable preprocessor build, and use it in {windows,macOS}/build.sh
# - add -Wold-style-cast C++ flag except when building flex-generated files
@ -1677,9 +1676,71 @@ mod_and_m_tests = [
{ 'test' : [ 'var-expectations/1-with-time-shift-b/example1.mod' ],
'should_fail' : true },
{ 'test' : [ 'estimation/univariate/nls/staticmodelx.mod' ],
'should_fail' : true }
'should_fail' : true },
# Misc tests with .m files
{ 'test' : [ 'run_all_unit_tests.m' ] },
{ 'test' : [ 'histval_initval_file_unit_tests.m' ],
'extra' : [ 'histval_initval_file/my_assert.m' ] },
{ 'test' : [ 'run_kronecker_tests.m' ],
'extra' : [ 'kronecker/test_kron.m',
'kronecker/nash_matrices.mat' ] },
{ 'test' : [ 'nonlinearsolvers.m' ],
'extra' : [ 'solver-test-functions/brown.m',
'solver-test-functions/broydenbanded.m',
'solver-test-functions/broydentridiagonal.m',
'solver-test-functions/chebyquad.m',
'solver-test-functions/discreteboundaryvalue.m',
'solver-test-functions/discreteintegralequation.m',
'solver-test-functions/helicalvalley.m',
'solver-test-functions/powell1.m',
'solver-test-functions/powell2.m',
'solver-test-functions/rosenbrock.m',
'solver-test-functions/trigonometric.m',
'solver-test-functions/variablydimensioned.m',
'solver-test-functions/watson.m',
'solver-test-functions/wood.m',] },
{ 'test' : [ 'cyclereduction.m' ] },
{ 'test' : [ 'logarithmicreduction.m' ] },
{ 'test' : [ 'riccatiupdate.m' ] },
{ 'test' : [ 'contribs.m' ],
'extra' : [ 'sandbox.mod',
'simulateddata.m' ] }
]
if get_option('build_for') == 'matlab'
mod_and_m_tests += [ { 'test' : [ 'run_block_byte_tests_matlab.m' ],
'extra' : [ 'block_bytecode/run_ls2003.m',
'block_bytecode/ls2003.mod' ] },
{ 'test' : [ 'run_reporting_test_matlab.m' ],
'extra' : [ 'reporting/AnnualTable.m',
'reporting/CommResidTablePage.m',
'reporting/CountryGraphPage.m',
'reporting/CountryTablePage.m',
'reporting/db_a.csv',
'reporting/db_q.csv',
'reporting/dc_a.csv',
'reporting/dc_q.csv',
'reporting/ResidTablePage.m',
'reporting/runDynareReport.m' ] } ]
else
mod_and_m_tests += [ { 'test' : [ 'run_block_byte_tests_octave.m' ],
'extra' : [ 'block_bytecode/run_ls2003.m',
'block_bytecode/ls2003.mod' ] },
{ 'test' : [ 'run_reporting_test_octave.m' ],
'extra' : [ 'reporting/AnnualTable.m',
'reporting/CommResidTablePage.m',
'reporting/CountryGraphPage.m',
'reporting/CountryTablePage.m',
'reporting/db_a.csv',
'reporting/db_q.csv',
'reporting/dc_a.csv',
'reporting/dc_q.csv',
'reporting/ResidTablePage.m',
'reporting/runDynareReport.m' ] } ]
endif
base_test_driver_args = [ get_option('build_for') ]
if get_option('build_for') == 'matlab'
base_test_driver_args += [ matlab_exe.full_path(), matlab_version, matlab_arch ]

View File

@ -3,6 +3,7 @@
# Executes one or several .mod or .m files in a separate directory, for the testsuite
set -e
shopt -s extglob
if (($# < 7 )); then
echo "Usage: $0 build_for matlab_octave_exe matlab_octave_version matlab_arch source_root build_root test_file(s) [-- extra_file(s)]" 2>&1
@ -40,7 +41,11 @@ cleanup ()
trap cleanup EXIT
for f in "${test_files[@]}" "${extra_files[@]}"; do
subdir=${f%/*}
# NB: for computing the subdir, we do not use ${f%/*}, because the latter does not
# work with files which are not in a subdir (i.e. no slash in the filename).
# We rather use pattern substitution (and we use an extended pattern of the
# form *(pattern-list), hence the extglob option above).
subdir=${f/%*([^\/])/}
mkdir -p "${tmpdir}/${subdir}"
cp "${source_root}/tests/${f}" "${tmpdir}/${f}"
done
@ -69,7 +74,8 @@ export source_root
for test_file in "${test_files[@]}"; do
test_basename=${test_file##*/}
test_subdir=${test_file%/*}
# See the remark above for computing the subdir
test_subdir=${test_file/%*([^\/])/}
if [[ $test_file =~ \.mod$ ]]; then
export mod_file=$test_basename
if [[ $build_for == matlab ]]; then

View File

@ -1,28 +1,15 @@
debug = false;
if debug
[top_test_dir, ~, ~] = fileparts(mfilename('fullpath'));
else
top_test_dir = getenv('TOP_TEST_DIR');
end
addpath(sprintf('%s/matlab', top_test_dir(1:end-6)))
if ~debug
% Test Dynare Version
if ~strcmp(dynare_version(), getenv('DYNARE_VERSION'))
error('Incorrect version of Dynare is being tested')
end
end
source_dir = getenv('source_root');
addpath([source_dir filesep 'matlab']);
dynare_config;
NumberOfTests = 0;
testFailed = 0;
if ~debug
skipline()
disp('*** TESTING: nonlinearsolvers.m ***');
disp('*** TESTING: contribs.m ***');
end
%
@ -31,8 +18,6 @@ end
t0 = clock;
NumberOfTests = NumberOfTests+1;
try
dataset = dseries('simulateddata.m');
@ -51,32 +36,9 @@ end
t1 = clock;
fprintf('\n*** Elapsed time (in seconds): %.1f\n\n', etime(t1, t0));
if ~debug
cd(getenv('TOP_TEST_DIR'));
else
dprintf('FAILED tests: %i', testFailed)
end
if isoctave
fid = fopen('contribs.o.trs', 'w+');
else
fid = fopen('contribs.m.trs', 'w+');
end
if testFailed
fprintf(fid,':test-result: FAIL\n');
fprintf(fid,':list-of-failed-tests: nonlinearsolvers.m\n');
else
fprintf(fid,':test-result: PASS\n');
end
fprintf(fid,':number-tests: %i\n', NumberOfTests);
fprintf(fid,':number-failed-tests: %i\n', testFailed);
fprintf(fid,':elapsed-time: %f\n', etime(t1, t0));
fclose(fid);
if ~debug
exit;
end
quit(testFailed > 0)
%
% END OF TEST
%

View File

@ -1,23 +1,10 @@
debug = false;
if debug
[top_test_dir, ~, ~] = fileparts(mfilename('fullpath'));
else
top_test_dir = getenv('TOP_TEST_DIR');
end
addpath([top_test_dir filesep '..' filesep 'matlab']);
if ~debug
% Test Dynare Version
if ~strcmp(dynare_version(), getenv('DYNARE_VERSION'))
error('Incorrect version of Dynare is being tested')
end
end
source_dir = getenv('source_root');
addpath([source_dir filesep 'matlab']);
dynare_config;
NumberOfTests = 0;
testFailed = 0;
if ~debug
@ -25,17 +12,11 @@ if ~debug
disp('*** TESTING: cyclereduction.m ***');
end
matlab_cr_path = [top_test_dir filesep '..' filesep 'matlab' filesep 'missing' filesep 'mex' filesep 'cycle_reduction'];
matlab_cr_path = [source_dir filesep 'matlab' filesep 'missing' filesep 'mex' filesep 'cycle_reduction'];
addpath(matlab_cr_path);
cycle_reduction_matlab = @cycle_reduction;
rmpath(matlab_cr_path);
if isoctave
addpath([top_test_dir filesep '..' filesep 'mex' filesep 'octave']);
else
addpath([top_test_dir filesep '..' filesep 'mex' filesep 'matlab']);
end
t0 = clock;
% Set the dimension of the problem to be solved.
@ -49,7 +30,6 @@ X1 = zeros(n,n);
X2 = zeros(n,n);
% 1. Solve the equation with the Matlab cycle reduction algorithm
NumberOfTests = NumberOfTests+1;
tElapsed1 = 0.;
try
tic; [X1,info] = cycle_reduction_matlab(C,B,A,cvg_tol,[0.]); tElapsed1 = toc;
@ -69,7 +49,6 @@ catch
end
% 2. Solve the equation with the Fortran cycle reduction algorithm
NumberOfTests = NumberOfTests+1;
tElapsed2 = 0.;
try
tic; [X2,info] = cycle_reduction(C,B,A,cvg_tol,[0.]); tElapsed2 = toc;
@ -89,7 +68,6 @@ catch
end
% 3. Compare solutions of the Fortran and Matlab routines
NumberOfTests = NumberOfTests+1;
if (norm(X1 - X2, 1) > cvg_tol)
testFailed = testFailed+1;
if debug
@ -112,29 +90,6 @@ end
t1 = clock;
if ~debug
cd(getenv('TOP_TEST_DIR'));
else
dprintf('FAILED tests: %i', testFailed)
end
if isoctave
fid = fopen('cyclereduction.o.trs', 'w+');
else
fid = fopen('cyclereduction.m.trs', 'w+');
end
if testFailed
fprintf(fid,':test-result: FAIL\n');
fprintf(fid,':list-of-failed-tests: cyclereduction.m\n');
else
fprintf(fid,':test-result: PASS\n');
end
fprintf(fid,':number-tests: %i\n', NumberOfTests);
fprintf(fid,':number-failed-tests: %i\n', testFailed);
fprintf(fid,':elapsed-time: %f\n', etime(t1, t0));
fclose(fid);
if ~debug
exit;
end
fprintf('\n*** Elapsed time (in seconds): %.1f\n\n', etime(t1, t0));
quit(testFailed > 0)

View File

@ -1,9 +1,9 @@
top_test_dir = getenv('TOP_TEST_DIR');
addpath([top_test_dir filesep '..' filesep 'matlab/']);
source_dir = getenv('source_root');
addpath([source_dir filesep 'matlab']);
dynare_config;
cd('histval_initval_file');
num_tests = 0;
cd histval_initval_file
failed_tests = {};
ds = dseries(randn(10,4));
@ -26,7 +26,6 @@ options.series = 'ds';
ds1 = histvalf_initvalf(caller, M, options);
failed_tests = my_assert(failed_tests, all(all(ds1 == ds)), 'basic test');
num_tests = num_tests + 1;
options = struct();
options.series = 'ds1';
@ -34,7 +33,6 @@ options.first_obs = 2;
ds1 = histvalf_initvalf(caller, M, options);
failed_tests = my_assert(failed_tests, ds1.init == dates('2Y'), ...
'init test 1');
num_tests = num_tests + 1;
options = struct();
options.series = 'ds';
@ -45,7 +43,6 @@ failed_tests = my_assert(failed_tests, ds1.init == dates('2Y'), ...
'first_obs last_obs test 1');
failed_tests = my_assert(failed_tests, ds1.last == dates('9Y'), ...
'first_obs last_obs test 2');
num_tests = num_tests + 2;
options = struct();
options.series = 'ds';
@ -55,7 +52,6 @@ failed_tests = my_assert(failed_tests, ds1.init == dates('1Y'), ...
'last_obs test 1');
failed_tests = my_assert(failed_tests, ds1.last == dates('9Y'), ...
'last_obs test 2');
num_tests = num_tests + 2;
options = struct();
options.series = 'ds';
@ -67,7 +63,6 @@ failed_tests = my_assert(failed_tests, ds1.init == dates('2Y'), ...
'first_obs, last_obs, nobs test 1');
failed_tests = my_assert(failed_tests, ds1.last == dates('9Y'), ...
'first_obs, last_obs, nobs test 2');
num_tests = num_tests + 2;
options = struct();
options.series = 'ds';
@ -78,7 +73,6 @@ failed_tests = my_assert(failed_tests, ds1.init == dates('2Y'), ...
'last_obs, nobs test 1');
failed_tests = my_assert(failed_tests, ds1.last == dates('9Y'), ...
'last_obs, nobs test 2');
num_tests = num_tests + 2;
options = struct();
options.series = 'ds';
@ -96,7 +90,6 @@ catch me
failed_tests = cat(1, failed_tests, 'Wrong nobs error message' );
end
end
num_tests = num_tests + 1;
options = struct();
options.series = 'ds';
@ -111,7 +104,6 @@ catch me
'Wrong first period error message');
end
end
num_tests = num_tests + 1;
options = struct();
options.series = 'ds';
@ -127,7 +119,6 @@ catch me
'Wrong last period error message');
end
end
num_tests = num_tests + 1;
fh = fopen('data.m', 'w');
init__ = 'INIT__ = ''1Y'';';
@ -195,7 +186,6 @@ if ~isoctave && ((ispc && ~matlab_ver_less_than('8.2')) || (~ispc && ~matlab_ver
'*.xlsx file first_obs test');
failed_tests = my_assert(failed_tests, series.nobs == 10, ...
'*.xlsx file nobs test');
num_tests = num_tests + 2;
end
% The table() function is not implemented in Octave
@ -209,26 +199,10 @@ if ~isoctave && (ispc && ~matlab_ver_less_than('8.2'))
'*.xls file first_obs test');
failed_tests = my_assert(failed_tests, series.nobs == 10, ...
'*.xls file nobs test');
num_tests = num_tests + 2;
end
cd(getenv('TOP_TEST_DIR'));
if isoctave
ext = '.o.trs';
else
ext = '.m.trs';
if length(failed_tests) > 0
fprintf('\n*** Failed tests: %s\n', failed_tests{:})
end
fid = fopen([ 'histval_initval_file_unit_tests' ext ], 'w+');
num_failed_tests = length(failed_tests);
if num_failed_tests > 0
fprintf(fid,':test-result: FAIL\n');
fprintf(fid,':number-tests: %d\n', num_tests);
fprintf(fid,':number-failed-tests: %d\n', num_failed_tests);
fprintf(fid,':list-of-failed-tests: %s\n', failed_tests{:});
else
fprintf(fid,':test-result: PASS\n');
fprintf(fid,':number-tests: %d\n', num_tests);
fprintf(fid,':number-failed-tests: 0\n');
end
fclose(fid);
exit;
quit(length(failed_tests) > 0)

View File

@ -1,23 +1,10 @@
debug = false;
if debug
[top_test_dir, ~, ~] = fileparts(mfilename('fullpath'));
else
top_test_dir = getenv('TOP_TEST_DIR');
end
addpath([top_test_dir filesep '..' filesep 'matlab']);
if ~debug
% Test Dynare Version
if ~strcmp(dynare_version(), getenv('DYNARE_VERSION'))
error('Incorrect version of Dynare is being tested')
end
end
source_dir = getenv('source_root');
addpath([source_dir filesep 'matlab']);
dynare_config;
NumberOfTests = 0;
testFailed = 0;
if ~debug
@ -25,17 +12,11 @@ if ~debug
disp('*** TESTING: logarithmicreduction.m ***');
end
matlab_cr_path = [top_test_dir filesep '..' filesep 'matlab' filesep 'missing' filesep 'mex' filesep 'logarithmic_reduction'];
matlab_cr_path = [source_dir filesep 'matlab' filesep 'missing' filesep 'mex' filesep 'logarithmic_reduction'];
addpath(matlab_cr_path);
logarithmic_reduction_matlab = @logarithmic_reduction;
rmpath(matlab_cr_path);
if isoctave
addpath([top_test_dir filesep '..' filesep 'mex' filesep 'octave']);
else
addpath([top_test_dir filesep '..' filesep 'mex' filesep 'matlab']);
end
t0 = clock;
% Set the dimension of the problem to be solved.
@ -49,7 +30,6 @@ X1 = zeros(n,n);
X2 = zeros(n,n);
% 1. Solve the equation with the Matlab logarithmic reduction algorithm
NumberOfTests = NumberOfTests+1;
tElapsed1 = 0.;
try
tic; [X1,info] = logarithmic_reduction_matlab(A,B,C,cvg_tol,300,[0.]); tElapsed1 = toc;
@ -69,7 +49,6 @@ catch
end
% 2. Solve the equation with the Fortran logarithmic reduction algorithm
NumberOfTests = NumberOfTests+1;
tElapsed2 = 0.;
try
tic; [X2,info] = logarithmic_reduction(A,B,C,cvg_tol,300,[0.]); tElapsed2 = toc;
@ -89,7 +68,6 @@ catch
end
% 3. Compare solutions of the Fortran and Matlab routines
NumberOfTests = NumberOfTests+1;
if (norm(X1 - X2, 1) > cvg_tol)
testFailed = testFailed+1;
if debug
@ -112,29 +90,6 @@ end
t1 = clock;
if ~debug
cd(getenv('TOP_TEST_DIR'));
else
dprintf('FAILED tests: %i', testFailed)
end
if isoctave
fid = fopen('logarithmicreduction.o.trs', 'w+');
else
fid = fopen('logarithmicreduction.m.trs', 'w+');
end
if testFailed
fprintf(fid,':test-result: FAIL\n');
fprintf(fid,':list-of-failed-tests: logarithmicreduction.m\n');
else
fprintf(fid,':test-result: PASS\n');
end
fprintf(fid,':number-tests: %i\n', NumberOfTests);
fprintf(fid,':number-failed-tests: %i\n', testFailed);
fprintf(fid,':elapsed-time: %f\n', etime(t1, t0));
fclose(fid);
if ~debug
exit;
end
fprintf('\n*** Elapsed time (in seconds): %.1f\n\n', etime(t1, t0));
quit(testFailed > 0)

View File

@ -1,24 +1,12 @@
debug = false;
if debug
[top_test_dir, ~, ~] = fileparts(mfilename('fullpath'));
else
top_test_dir = getenv('TOP_TEST_DIR');
end
addpath(sprintf('%s/matlab', top_test_dir(1:end-6)))
addpath(sprintf('%s/tests/solver-test-functions', top_test_dir(1:end-6)))
if ~debug
% Test Dynare Version
if ~strcmp(dynare_version(), getenv('DYNARE_VERSION'))
error('Incorrect version of Dynare is being tested')
end
end
source_dir = getenv('source_root');
addpath([source_dir filesep 'matlab']);
dynare_config;
NumberOfTests = 0;
cd solver-test-functions
testFailed = 0;
if ~debug
@ -56,7 +44,6 @@ objfun = { @rosenbrock,
t0 = clock;
for i=1:length(objfun)
NumberOfTests = NumberOfTests+1;
switch func2str(objfun{i})
case 'helicalvalley'
% FIXME block_trust_region is diverging if x(1)<0.
@ -110,7 +97,6 @@ t1 = clock; etime(t1, t0)
%
for i=1:length(objfun)
NumberOfTests = NumberOfTests+1;
switch func2str(objfun{i})
case 'chebyquad'
% Fails with a system of 10 equations.
@ -151,31 +137,8 @@ for i=1:length(objfun)
end
end
t2 = clock; etime(t2, t1)
t2 = clock;
if ~debug
cd(getenv('TOP_TEST_DIR'));
else
dprintf('FAILED tests: %i', testFailed)
end
if isoctave
fid = fopen('nonlinearsolvers.o.trs', 'w+');
else
fid = fopen('nonlinearsolvers.m.trs', 'w+');
end
if testFailed
fprintf(fid,':test-result: FAIL\n');
fprintf(fid,':list-of-failed-tests: nonlinearsolvers.m\n');
else
fprintf(fid,':test-result: PASS\n');
end
fprintf(fid,':number-tests: %i\n', NumberOfTests);
fprintf(fid,':number-failed-tests: %i\n', testFailed);
fprintf(fid,':elapsed-time: %f\n', etime(t2, t0));
fclose(fid);
if ~debug
exit;
end
fprintf('\n*** Elapsed time (in seconds): %.1f\n\n', etime(t2, t0));
quit(testFailed > 0)

View File

@ -1,23 +1,10 @@
debug = true;
if debug
[top_test_dir, ~, ~] = fileparts(mfilename('fullpath'));
else
top_test_dir = getenv('TOP_TEST_DIR');
end
addpath([top_test_dir filesep '..' filesep 'matlab']);
if ~debug
% Test Dynare Version
if ~strcmp(dynare_version(), getenv('DYNARE_VERSION'))
error('Incorrect version of Dynare is being tested')
end
end
source_dir = getenv('source_root');
addpath([source_dir filesep 'matlab']);
dynare_config;
NumberOfTests = 0;
testFailed = 0;
if ~debug
@ -25,12 +12,6 @@ if ~debug
disp('*** TESTING: riccatiupdate.m ***');
end
if isoctave
addpath([top_test_dir filesep '..' filesep 'mex' filesep 'octave']);
else
addpath([top_test_dir filesep '..' filesep 'mex' filesep 'matlab']);
end
t0 = clock;
% Set the number of experiments for time measurement
@ -64,7 +45,6 @@ tElapsed1 = toc;
disp(['Elapsed time for the Matlab Riccati update is: ' num2str(tElapsed1) ' (N=' int2str(N) ').'])
% 2. Update the state varance-covariance matrix with the mex routine
NumberOfTests = NumberOfTests+1;
tElapsed2 = 0.;
Ptmp_fortran = P;
try
@ -112,29 +92,6 @@ end
t1 = clock;
if ~debug
cd(getenv('TOP_TEST_DIR'));
else
dprintf('FAILED tests: %i', testFailed)
end
if isoctave
fid = fopen('riccatiupdate.o.trs', 'w+');
else
fid = fopen('riccatiupdate.m.trs', 'w+');
end
if testFailed
fprintf(fid,':test-result: FAIL\n');
fprintf(fid,':list-of-failed-tests: riccatiupdate.m\n');
else
fprintf(fid,':test-result: PASS\n');
end
fprintf(fid,':number-tests: %i\n', NumberOfTests);
fprintf(fid,':number-failed-tests: %i\n', testFailed);
fprintf(fid,':elapsed-time: %f\n', etime(t1, t0));
fclose(fid);
if ~debug
exit;
end
fprintf('\n*** Elapsed time (in seconds): %.1f\n\n', etime(t1, t0));
quit(testFailed > 0)

View File

@ -15,28 +15,25 @@
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <https://www.gnu.org/licenses/>.
top_test_dir = getenv('TOP_TEST_DIR');
addpath([top_test_dir filesep 'utils']);
addpath([top_test_dir filesep '..' filesep 'matlab']);
source_dir = getenv('source_root');
addpath([source_dir filesep 'tests' filesep 'utils']);
matlab_dir = [source_dir filesep 'matlab'];
addpath(matlab_dir);
dynare_config();
if isoctave
load_octave_packages
end
% Test Dynare Version
if ~strcmp(dynare_version(), getenv('DYNARE_VERSION'))
error('Incorrect version of Dynare is being tested')
end
mlist = get_directory_description('../matlab');
mlist = get_directory_description(matlab_dir);
% Under Octave, do not run tests under matlab/missing/stats/
% Also skip load_m_data_file_legacy.m: it fails in the first test, but
% this is impossible to reproduce outside the runners.
if isoctave
mlist = mlist(find(~strncmp('../matlab/missing/stats/', mlist, 24)));
mlist = mlist(find(~strcmp('../matlab/load_m_file_data_legacy.m', mlist)));
mlist = mlist(find(~strncmp([matlab_dir filesep 'missing/stats/'], mlist, 24)));
mlist = mlist(find(~strcmp([matlab_dir filesep 'load_m_file_data_legacy.m'], mlist)));
end
% Set random seed, for reproducibility
@ -49,14 +46,11 @@ end
failedtests = {};
counter = 0;
for i = 1:length(mlist)
f = [top_test_dir filesep mlist{i} ];
f = mlist{i};
if is_unit_test_available(f)
[check, info] = mtest(f);
for j = 1:size(info, 1)
counter = counter + 1;
if ~info{j,3}
failedtests{length(failedtests)+1} = [ mlist{i} '#' num2str(info{j,2}) ];
end
@ -64,24 +58,8 @@ for i = 1:length(mlist)
end
end
cd(getenv('TOP_TEST_DIR'));
if isoctave
fid = fopen('run_all_unit_tests.o.trs', 'w+');
else
fid = fopen('run_all_unit_tests.m.trs', 'w+');
end
if length(failedtests) > 0
fprintf(fid,':test-result: FAIL\n');
fprintf(fid,':number-tests: %d\n', counter);
fprintf(fid,':number-failed-tests: %d\n', length(failedtests));
fprintf(fid,':list-of-failed-tests: %s\n', failedtests{:});
else
fprintf(fid,':test-result: PASS\n');
fprintf(fid,':number-tests: %d\n', counter);
fprintf(fid,':number-failed-tests: 0\n');
end
fprintf(fid,':elapsed-time: %f\n',0.0);
fclose(fid);
if ~isoctave
exit
fprintf('\n*** Failed tests: %s\n', failedtests{:})
end
quit(length(failedtests) > 0)

View File

@ -1,4 +1,4 @@
% Copyright © 2011-2022 Dynare Team
% Copyright © 2011-2023 Dynare Team
%
% This file is part of Dynare.
%
@ -27,20 +27,14 @@
% block, because otherwise the next 'load wsMat' within a 'catch' block will
% overwrite the last exception.
top_test_dir = getenv('TOP_TEST_DIR');
addpath([top_test_dir filesep 'utils']);
addpath([top_test_dir filesep '..' filesep 'matlab']);
% Test Dynare Version
if ~strcmp(dynare_version(), getenv('DYNARE_VERSION'))
error('Incorrect version of Dynare is being tested')
end
source_dir = getenv('source_root');
addpath([source_dir filesep 'tests' filesep 'utils']);
addpath([source_dir filesep 'matlab']);
% Test block_bytecode/ls2003.mod with various combinations of
% block/bytecode/solve_algo/stack_solve_algo
failedBlock = {};
num_block_tests = 0;
cd([top_test_dir filesep 'block_bytecode']);
cd block_bytecode
has_optimization_toolbox = user_has_matlab_license('optimization_toolbox');
tic;
for blockFlag = 0:1
@ -62,7 +56,6 @@ for blockFlag = 0:1
end
for i = 1:length(solve_algos)
num_block_tests = num_block_tests + 1;
if ~blockFlag && storageFlag == 0 && (i == 1)
% This is the reference simulation path against which all
% other simulations will be tested
@ -108,7 +101,6 @@ for blockFlag = 0:1
end
end
for i = 1:length(stack_solve_algos)
num_block_tests = num_block_tests + 1;
try
old_path = path;
clear oo_ % Ensure that oo_.endo_simul wont be overwritten when loading wsMat
@ -135,20 +127,13 @@ for blockFlag = 0:1
end
end
end
ecput = toc;
delete('wsMat.mat')
cd(top_test_dir);
fid = fopen('run_block_byte_tests_matlab.m.trs', 'w+');
if size(failedBlock,2) > 0
fprintf(fid,':test-result: FAIL\n');
fprintf(fid,':number-tests: %d\n', num_block_tests);
fprintf(fid,':number-failed-tests: %d\n', size(failedBlock,2));
fprintf(fid,':list-of-failed-tests: %s\n', failedBlock{:});
else
fprintf(fid,':test-result: PASS\n');
fprintf(fid,':number-tests: %d\n', num_block_tests);
fprintf(fid,':number-failed-tests: 0\n');
fprintf('\n*** Failed tests: %s\n', failedBlock{:})
end
fprintf(fid,':elapsed-time: %f\n', ecput);
fclose(fid);
exit;
fprintf('\n*** Elapsed time (in seconds): %.1f\n\n', toc);
quit(size(failedBlock,2) > 0)

View File

@ -1,4 +1,4 @@
## Copyright © 2009-2022 Dynare Team
## Copyright © 2009-2023 Dynare Team
##
## This file is part of Dynare.
##
@ -24,20 +24,14 @@
## otherwise the newly created oo_ will be scratched upon loading,
## thus making the path comparison bogus.
top_test_dir = getenv('TOP_TEST_DIR');
addpath([top_test_dir filesep 'utils']);
addpath([top_test_dir filesep '..' filesep 'matlab']);
## Test Dynare Version
if !strcmp(dynare_version(), getenv("DYNARE_VERSION"))
error("Incorrect version of Dynare is being tested")
endif
source_dir = getenv('source_root');
addpath([source_dir filesep 'tests' filesep 'utils']);
addpath([source_dir filesep 'matlab']);
## Test block_bytecode/ls2003.mod with various combinations of
## block/bytecode/solve_algo/stack_solve_algo
failedBlock = {};
num_block_tests = 0;
cd([top_test_dir filesep 'block_bytecode']);
cd block_bytecode
tic;
for blockFlag = 0:1
for storageFlag = 0:2 % 0=M-file, 1=use_dll, 2=bytecode
@ -62,7 +56,6 @@ for blockFlag = 0:1
endif
for i = 1:length(solve_algos)
num_block_tests = num_block_tests + 1;
if !blockFlag && storageFlag == 0 && (i == 1)
## This is the reference simulation path against which all
## other simulations will be tested
@ -105,7 +98,6 @@ for blockFlag = 0:1
endif
endfor
for i = 1:length(stack_solve_algos)
num_block_tests = num_block_tests + 1;
try
old_path = path;
clear oo_ # Ensure that oo_.endo_simul wont be overwritten when loading wsOct
@ -130,22 +122,17 @@ for blockFlag = 0:1
endfor
endfor
endfor
ecput = toc;
delete('wsOct');
cd(top_test_dir);
fid = fopen('run_block_byte_tests_octave.o.trs', 'w+');
if size(failedBlock,2) > 0
fprintf(fid,':test-result: FAIL\n');
fprintf(fid,':number-tests: %d\n', num_block_tests);
fprintf(fid,':number-failed-tests: %d\n', size(failedBlock,2));
fprintf(fid,':list-of-failed-tests: %s\n', failedBlock{:});
else
fprintf(fid,':test-result: PASS\n');
fprintf(fid,':number-tests: %d\n', num_block_tests);
fprintf(fid,':number-failed-tests: 0\n');
fprintf('\n*** Failed tests: %s\n', failedBlock{:})
end
fprintf(fid,':elapsed-time: %f\n', ecput);
fclose(fid);
fprintf('\n*** Elapsed time (in seconds): %.1f\n\n', toc);
quit(size(failedBlock,2) > 0)
## Local variables:
## mode: Octave
## End:

View File

@ -1,4 +1,4 @@
% Copyright © 2021 Dynare Team
% Copyright © 2021-2023 Dynare Team
%
% This file is part of Dynare.
%
@ -15,8 +15,9 @@
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <https://www.gnu.org/licenses/>.
top_test_dir = getenv('TOP_TEST_DIR');
addpath([top_test_dir filesep '..' filesep 'matlab']);
source_dir = getenv('source_root');
addpath([source_dir filesep 'matlab']);
dynare_config
cd kronecker
@ -32,25 +33,12 @@ disp('')
disp('**** Testing A_times_B_kronecker_C MEX...')
info(3) = test_kron(3, num_procs);
cd ..
if isoctave
ext = '.o.trs';
else
ext = '.m.trs';
end
fid = fopen([ 'run_kronecker_tests' ext ], 'w+');
num_failed_tests = sum(~info);
tests = { 'sparse1', 'sparse2', 'dense' };
failed_tests = tests(find(~info));
if num_failed_tests > 0
fprintf(fid,':test-result: FAIL\n');
fprintf(fid,':number-tests: 3\n');
fprintf(fid,':number-failed-tests: %d\n', num_failed_tests);
fprintf(fid,':list-of-failed-tests: %s\n', failed_tests{:});
else
fprintf(fid,':test-result: PASS\n');
fprintf(fid,':number-tests: 3\n');
fprintf(fid,':number-failed-tests: 0\n');
fprintf('\n*** Failed tests: %s\n', failed_tests{:})
end
fclose(fid);
quit(num_failed_tests > 0)

View File

@ -1,4 +1,4 @@
% Copyright © 2013-2022 Dynare Team
% Copyright © 2013-2023 Dynare Team
%
% This file is part of Dynare.
%
@ -15,21 +15,16 @@
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <https://www.gnu.org/licenses/>.
top_test_dir = getenv('TOP_TEST_DIR');
addpath([top_test_dir filesep '..' filesep 'matlab']);
% Test Dynare Version
if ~strcmp(dynare_version(), getenv('DYNARE_VERSION'))
error('Incorrect version of Dynare is being tested')
end
source_dir = getenv('source_root');
addpath([source_dir filesep 'matlab']);
% To add default directories, empty dseries objects
dynare_config
dynare_config;
disp('');
disp(['*** TESTING: run_reporting_test_matlab.m ***']);
try
cd([top_test_dir filesep 'reporting']);
cd reporting
db_a = dseries('db_a.csv');
db_q = dseries('db_q.csv');
dc_a = dseries('dc_a.csv');
@ -40,18 +35,4 @@ catch
testFailed = true;
end
cd(getenv('TOP_TEST_DIR'));
fid = fopen('run_reporting_test_matlab.m.trs', 'w+');
if testFailed
fprintf(fid,':test-result: FAIL\n');
fprintf(fid,':number-tests: 1\n');
fprintf(fid,':number-failed-tests: 1\n');
fprintf(fid,':list-of-failed-tests: run_reporting_test_matlab.m\n');
else
fprintf(fid,':test-result: PASS\n');
fprintf(fid,':number-tests: 1\n');
fprintf(fid,':number-failed-tests: 0\n');
end
fprintf(fid,':elapsed-time: %f\n',0.0);
fclose(fid);
exit;
quit(testFailed)

View File

@ -15,23 +15,18 @@
## You should have received a copy of the GNU General Public License
## along with Dynare. If not, see <https://www.gnu.org/licenses/>.
top_test_dir = getenv('TOP_TEST_DIR');
addpath([top_test_dir filesep 'utils']);
addpath([top_test_dir filesep '..' filesep 'matlab']);
source_dir = getenv('source_root');
addpath([source_dir filesep 'tests' filesep 'utils']);
addpath([source_dir filesep 'matlab']);
load_octave_packages
## Test Dynare Version
if !strcmp(dynare_version(), getenv("DYNARE_VERSION"))
error("Incorrect version of Dynare is being tested")
endif
## To add default directories, empty dseries objects
dynare_config();
printf("\n*** TESTING: run_reporting_test_octave.m ***\n");
try
cd([top_test_dir filesep 'reporting']);
cd reporting
db_a = dseries('db_a.csv');
db_q = dseries('db_q.csv');
dc_a = dseries('dc_a.csv');
@ -42,21 +37,7 @@ catch
testFailed = true;
end
cd(getenv('TOP_TEST_DIR'));
fid = fopen('run_reporting_test_octave.o.trs', 'w+');
if testFailed
fprintf(fid,':test-result: FAIL\n');
fprintf(fid,':number-tests: 1\n');
fprintf(fid,':number-failed-tests: 1\n');
fprintf(fid,':list-of-failed-tests: run_reporting_test_octave.m\n');
else
fprintf(fid,':test-result: PASS\n');
fprintf(fid,':number-tests: 1\n');
fprintf(fid,':number-failed-tests: 0\n');
fprintf(fid,':list-of-passed-tests: run_reporting_test_octave.m\n');
end
fprintf(fid,':elapsed-time: %f\n',0.0);
fclose(fid);
quit(testFailed)
## Local variables:
## mode: Octave