aboutsummaryrefslogtreecommitdiff
path: root/test cases
diff options
context:
space:
mode:
authorJehan <Jehan@users.noreply.github.com>2019-11-19 20:05:54 +0100
committerJussi Pakkanen <jpakkane@gmail.com>2019-11-19 21:05:54 +0200
commit6ed36e97aeb01dd779115a9710d3a97cdbcb4ccf (patch)
treea519e1b0acc22d7a70ed20ea39dc8f5712a5daa9 /test cases
parent24cdb4a92fe6fa73514dcceb555346d131cf889e (diff)
downloadmeson-6ed36e97aeb01dd779115a9710d3a97cdbcb4ccf.zip
meson-6ed36e97aeb01dd779115a9710d3a97cdbcb4ccf.tar.gz
meson-6ed36e97aeb01dd779115a9710d3a97cdbcb4ccf.tar.bz2
Have set() and set_quoted() of configuration object work with newlines.
* Have set() and set_quoted() of configuration object work with newlines. set_quoted() makes the value into a double-quoted string, so let's assume C-style string, in particular with newlines as "\n". Also take care of remaining newlines in dump_conf_header(). C or nasm macros expect single-line values so if the value was multi-line, we would end up with broken syntax. Appending a backslash at each end of line make them concat into a single line in both C and nasm format (note: multi-line macros in nasm are actually possible apparently but use another format not outputted by current meson code). Also note that the replacement is done at the end only when dumping the conf as a header because we cannot assume anything about the format when replacing variables from an input file (in this case, it should be the dev responsibility). * Add unit tests for multiline set() and set_quoted().
Diffstat (limited to 'test cases')
-rw-r--r--test cases/common/14 configure file/dumpprog.c8
-rw-r--r--test cases/common/14 configure file/meson.build4
2 files changed, 12 insertions, 0 deletions
diff --git a/test cases/common/14 configure file/dumpprog.c b/test cases/common/14 configure file/dumpprog.c
index 9f63b23..fb71d39 100644
--- a/test cases/common/14 configure file/dumpprog.c
+++ b/test cases/common/14 configure file/dumpprog.c
@@ -48,5 +48,13 @@ int main(void) {
printf("Quoted number defined incorrectly.\n");
return 1;
}
+ if(MULTILINE != 3) {
+ printf("Multiline macro defined incorrectly.\n");
+ return 1;
+ }
+ if(strcmp(MULTILINE_STRING, "line1\nline2") != 0) {
+ printf("Quoted multiline macro defined incorrectly.\n");
+ return 1;
+ }
SHOULD_BE_RETURN 0;
}
diff --git a/test cases/common/14 configure file/meson.build b/test cases/common/14 configure file/meson.build
index 4a2f15a..956c5a4 100644
--- a/test cases/common/14 configure file/meson.build
+++ b/test cases/common/14 configure file/meson.build
@@ -88,6 +88,10 @@ dump.set('SHOULD_BE_ONE', 1)
dump.set('SHOULD_BE_ZERO', 0, description : 'Absolutely zero')
dump.set('SHOULD_BE_QUOTED_ONE', '"1"')
+dump.set('MULTILINE', '1\n+2')
+dump.set_quoted('MULTILINE_STRING', '''line1
+line2''')
+
dump.set_quoted('INTEGER_AS_STRING', '12')
if dump.get_unquoted('INTEGER_AS_STRING').to_int() == 12
dump.set('SHOULD_BE_UNQUOTED_STRING', dump.get_unquoted('SHOULD_BE_STRING'))