From ad2ab56e5f000d8be05e3e6d780e3aab00fddbce Mon Sep 17 00:00:00 2001 From: Matthias Klumpp Date: Thu, 29 Mar 2018 15:10:02 +0200 Subject: [PATCH] Add test to check that D feature flags get applied to all files This adds regression tests for issue #3337 --- test cases/d/6 unittest/app.d | 4 ++++ test cases/d/6 unittest/meson.build | 6 +++--- test cases/d/6 unittest/second_unit.d | 10 ++++++++++ test cases/d/9 features/app.d | 9 ++++++++- test cases/d/9 features/extra.d | 9 +++++++++ test cases/d/9 features/meson.build | 10 ++++++---- 6 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 test cases/d/6 unittest/second_unit.d create mode 100644 test cases/d/9 features/extra.d diff --git a/test cases/d/6 unittest/app.d b/test cases/d/6 unittest/app.d index 751e754d6..71c641415 100644 --- a/test cases/d/6 unittest/app.d +++ b/test cases/d/6 unittest/app.d @@ -23,10 +23,14 @@ unittest { writeln ("TEST"); import core.stdc.stdlib : exit; + import second_unit; assert (getFour () > 2); assert (getFour () == 4); + // this is a regression test for https://github.com/mesonbuild/meson/issues/3337 + secondModuleTestFunc (); + // we explicitly terminate here to give the unittest program a different exit // code than the main application has. // (this prevents the regular main() from being executed) diff --git a/test cases/d/6 unittest/meson.build b/test cases/d/6 unittest/meson.build index 1551e94c8..49a070047 100644 --- a/test cases/d/6 unittest/meson.build +++ b/test cases/d/6 unittest/meson.build @@ -1,8 +1,8 @@ project('D Unittests', 'd') -e = executable('dapp', 'app.d', install : true) +e = executable('dapp', ['app.d', 'second_unit.d'], install : true) test('dapp_run', e, should_fail: true) -e_test = executable('dapp_test', 'app.d', - d_args: meson.get_compiler('d').unittest_args()) +e_test = executable('dapp_test', ['app.d', 'second_unit.d'], + d_unittest: true) test('dapp_test', e_test) diff --git a/test cases/d/6 unittest/second_unit.d b/test cases/d/6 unittest/second_unit.d new file mode 100644 index 000000000..fdb62a918 --- /dev/null +++ b/test cases/d/6 unittest/second_unit.d @@ -0,0 +1,10 @@ + +void secondModuleTestFunc () +{ + import std.stdio : writeln; + + version (unittest) + writeln ("Hello!"); + else + assert (0); +} diff --git a/test cases/d/9 features/app.d b/test cases/d/9 features/app.d index 37cc1dd6f..6b43bf055 100644 --- a/test cases/d/9 features/app.d +++ b/test cases/d/9 features/app.d @@ -3,6 +3,8 @@ import std.stdio; import std.array : split; import std.string : strip; +import extra; + auto getMenu () { auto foods = import ("food.txt").strip.split ("\n"); @@ -31,7 +33,12 @@ void main (string[] args) version (With_People) { if (request == "people") { writeln ("People: ", getPeople.join (", ")); - exit (0); + + // only exit successfully if the second module also had its module version set. + // this checks for issue https://github.com/mesonbuild/meson/issues/3337 + if (secondModulePeopleVersionSet ()) + exit (0); + exit (1); } } diff --git a/test cases/d/9 features/extra.d b/test cases/d/9 features/extra.d new file mode 100644 index 000000000..832b29207 --- /dev/null +++ b/test cases/d/9 features/extra.d @@ -0,0 +1,9 @@ + +auto secondModulePeopleVersionSet () +{ + version (With_People) { + return true; + } else { + return false; + } +} diff --git a/test cases/d/9 features/meson.build b/test cases/d/9 features/meson.build index 356e9f3ce..694e48891 100644 --- a/test cases/d/9 features/meson.build +++ b/test cases/d/9 features/meson.build @@ -6,8 +6,10 @@ project('D Features', 'd') # STRINGS TO PATHS MANUALLY! data_dir = join_paths(meson.current_source_dir(), 'data') +test_src = ['app.d', 'extra.d'] + e_plain_bcompat = executable('dapp_menu_bcompat', - 'app.d', + test_src, d_import_dirs: [data_dir] ) test('dapp_menu_t_fail_bcompat', e_plain_bcompat, should_fail: true) @@ -18,7 +20,7 @@ test('dapp_menu_t_bcompat', e_plain_bcompat, args: ['menu']) data_dir = include_directories('data') e_plain = executable('dapp_menu', - 'app.d', + test_src, d_import_dirs: [data_dir] ) test('dapp_menu_t_fail', e_plain, should_fail: true) @@ -27,7 +29,7 @@ test('dapp_menu_t', e_plain, args: ['menu']) # test feature versions and string imports e_versions = executable('dapp_versions', - 'app.d', + test_src, d_import_dirs: [data_dir], d_module_versions: ['No_Menu', 'With_People'] ) @@ -36,7 +38,7 @@ test('dapp_versions_t', e_versions, args: ['people']) # test everything and unittests e_test = executable('dapp_test', - 'app.d', + test_src, d_import_dirs: [data_dir], d_module_versions: ['No_Menu', 'With_People'], d_unittest: true