aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Klumpp <matthias@tenstral.net>2018-03-29 15:10:02 +0200
committerMatthias Klumpp <matthias@tenstral.net>2018-03-29 15:16:57 +0200
commitad2ab56e5f000d8be05e3e6d780e3aab00fddbce (patch)
tree609b4713c633cc3553c92cd6bd0797bf1cb8b4f6
parentb4aee4675afd9f9f4a36aea628bab4249d7addbc (diff)
downloadmeson-ad2ab56e5f000d8be05e3e6d780e3aab00fddbce.zip
meson-ad2ab56e5f000d8be05e3e6d780e3aab00fddbce.tar.gz
meson-ad2ab56e5f000d8be05e3e6d780e3aab00fddbce.tar.bz2
Add test to check that D feature flags get applied to all files
This adds regression tests for issue #3337
-rw-r--r--test cases/d/6 unittest/app.d4
-rw-r--r--test cases/d/6 unittest/meson.build6
-rw-r--r--test cases/d/6 unittest/second_unit.d10
-rw-r--r--test cases/d/9 features/app.d9
-rw-r--r--test cases/d/9 features/extra.d9
-rw-r--r--test cases/d/9 features/meson.build10
6 files changed, 40 insertions, 8 deletions
diff --git a/test cases/d/6 unittest/app.d b/test cases/d/6 unittest/app.d
index 751e754..71c6414 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 1551e94..49a0700 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 0000000..fdb62a9
--- /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 37cc1dd..6b43bf0 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 0000000..832b292
--- /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 356e9f3..694e488 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