diff options
author | Matthias Klumpp <matthias@tenstral.net> | 2017-08-29 04:57:06 +0200 |
---|---|---|
committer | Matthias Klumpp <matthias@tenstral.net> | 2017-09-12 17:32:03 +0200 |
commit | d83c2894428104188cd5f75565ee7bd2b4fdcd54 (patch) | |
tree | 652870d859ef82232f3f28cdb2512b36e36fda2e /test cases | |
parent | e1fc17ef2a532d539678b9a9378bca59eda38a91 (diff) | |
download | meson-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.d | 51 | ||||
-rw-r--r-- | test cases/d/9 features/data/food.txt | 6 | ||||
-rw-r--r-- | test cases/d/9 features/data/people.txt | 5 | ||||
-rw-r--r-- | test cases/d/9 features/meson.build | 28 |
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) |