aboutsummaryrefslogtreecommitdiff
path: root/test cases
diff options
context:
space:
mode:
authorMatthias Klumpp <matthias@tenstral.net>2017-08-29 04:57:06 +0200
committerMatthias Klumpp <matthias@tenstral.net>2017-09-12 17:32:03 +0200
commitd83c2894428104188cd5f75565ee7bd2b4fdcd54 (patch)
tree652870d859ef82232f3f28cdb2512b36e36fda2e /test cases
parente1fc17ef2a532d539678b9a9378bca59eda38a91 (diff)
downloadmeson-d83c2894428104188cd5f75565ee7bd2b4fdcd54.zip
meson-d83c2894428104188cd5f75565ee7bd2b4fdcd54.tar.gz
meson-d83c2894428104188cd5f75565ee7bd2b4fdcd54.tar.bz2
d: Add easy way to use D-specific features
Of course D compilers have different flags to set some important D-specific settings. This adds a simple method to change these flags in a compiler-agnostic way in Meson. This replaces the previous `unittest_args` method with a more generic variant.
Diffstat (limited to 'test cases')
-rw-r--r--test cases/d/9 features/app.d51
-rw-r--r--test cases/d/9 features/data/food.txt6
-rw-r--r--test cases/d/9 features/data/people.txt5
-rw-r--r--test cases/d/9 features/meson.build28
4 files changed, 90 insertions, 0 deletions
diff --git a/test cases/d/9 features/app.d b/test cases/d/9 features/app.d
new file mode 100644
index 0000000..37cc1dd
--- /dev/null
+++ b/test cases/d/9 features/app.d
@@ -0,0 +1,51 @@
+
+import std.stdio;
+import std.array : split;
+import std.string : strip;
+
+auto getMenu ()
+{
+ auto foods = import ("food.txt").strip.split ("\n");
+ return foods;
+}
+
+auto getPeople ()
+{
+ return import ("people.txt").strip.split ("\n");
+}
+
+void main (string[] args)
+{
+ import std.array : join;
+ import core.stdc.stdlib : exit;
+
+ immutable request = args[1];
+ if (request == "menu") {
+ version (No_Menu) {
+ } else {
+ writeln ("On the menu: ", getMenu.join (", "));
+ exit (0);
+ }
+ }
+
+ version (With_People) {
+ if (request == "people") {
+ writeln ("People: ", getPeople.join (", "));
+ exit (0);
+ }
+ }
+
+ // we fail here
+ exit (1);
+}
+
+unittest
+{
+ writeln ("TEST");
+ import core.stdc.stdlib : exit;
+
+ writeln(getMenu);
+ assert (getMenu () == ["Spam", "Eggs", "Spam", "Baked Beans", "Spam", "Spam"]);
+
+ exit (0);
+}
diff --git a/test cases/d/9 features/data/food.txt b/test cases/d/9 features/data/food.txt
new file mode 100644
index 0000000..8275dd0
--- /dev/null
+++ b/test cases/d/9 features/data/food.txt
@@ -0,0 +1,6 @@
+Spam
+Eggs
+Spam
+Baked Beans
+Spam
+Spam
diff --git a/test cases/d/9 features/data/people.txt b/test cases/d/9 features/data/people.txt
new file mode 100644
index 0000000..abbae06
--- /dev/null
+++ b/test cases/d/9 features/data/people.txt
@@ -0,0 +1,5 @@
+Rick
+Morty
+Summer
+Beth
+Jerry
diff --git a/test cases/d/9 features/meson.build b/test cases/d/9 features/meson.build
new file mode 100644
index 0000000..9fda3bd
--- /dev/null
+++ b/test cases/d/9 features/meson.build
@@ -0,0 +1,28 @@
+project('D Features', 'd')
+dc = meson.get_compiler('d')
+
+# directory for data
+data_dir = join_paths(meson.current_source_dir(), 'data')
+
+# test string import dirs only
+dfeatures_simple = dc.feature_args(import_dirs: [data_dir])
+
+e_plain = executable('dapp_menu', 'app.d', d_args: dfeatures_simple)
+test('dapp_menu_t_fail', e_plain, should_fail: true)
+test('dapp_menu_t', e_plain, args: ['menu'])
+
+# test feature versions and string imports
+dfeatures_version = dc.feature_args(import_dirs: [data_dir], versions: ['No_Menu', 'With_People'])
+e_versions = executable('dapp_versions', 'app.d', d_args: dfeatures_version)
+test('dapp_versions_t_fail', e_versions, args: ['menu'], should_fail: true)
+test('dapp_versions_t', e_versions, args: ['people'])
+
+# test everything and unittests
+dfeatures_test = dc.feature_args(
+ import_dirs: [data_dir],
+ versions: ['No_Menu', 'With_People'],
+ unittest: true
+)
+e_test = executable('dapp_test', 'app.d',
+ d_args: dfeatures_test)
+test('dapp_test', e_test)