--- Hi, can you check if it works with the following test case? For me it doesn't, and I think there must be a bug.
Zbyszek src/test/test-strv.c | 10 ++++----- src/test/test-unit-file.c | 53 +++++++++++++++++++++++++++++++++-------------- 2 files changed, 43 insertions(+), 20 deletions(-) diff --git a/src/test/test-strv.c b/src/test/test-strv.c index 7898ea7..8b09c97 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -71,27 +71,27 @@ static void test_strv_join(void) { }; r = strv_join((char **)input_table_multiple, ", "); - assert_se(streq(r, "one, two, three")); + assert(streq(r, "one, two, three")); puts(r); free(r); r = strv_join((char **)input_table_multiple, ";"); - assert_se(streq(r, "one;two;three")); + assert(streq(r, "one;two;three")); puts(r); free(r); r = strv_join((char **)input_table_multiple, NULL); - assert_se(streq(r, "one two three")); + assert(streq(r, "one two three")); puts(r); free(r); r = strv_join((char **)input_table_one, ", "); - assert_se(streq(r, "one")); + assert(streq(r, "one")); puts(r); free(r); r = strv_join((char **)input_table_none, ", "); - assert_se(streq(r, "")); + assert(streq(r, "")); puts(r); free(r); } diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c index 8519131..10e271e 100644 --- a/src/test/test-unit-file.c +++ b/src/test/test-unit-file.c @@ -193,17 +193,33 @@ static void test_config_parse_exec(void) { #define env_file_2 \ "a\\\n" -static void test_load_env_file_1(void) { - char _cleanup_strv_free_ **data = NULL; - int r; +#define env_file_3 \ + "#SPAMD_ARGS=\"-d --socketpath=/var/lib/bulwark/spamd \\\n" \ + "#--nouser-config \\\n" \ + "normal=line" +static void write_read_env_file(char ***data, const char* text) { char name[] = "/tmp/test-load-env-file.XXXXXX"; + int r, i; int _cleanup_close_ fd = mkstemp(name); assert(fd >= 0); - assert_se(write(fd, env_file_1, sizeof(env_file_1)) == sizeof(env_file_1)); - r = load_env_file(name, &data); + r = write(fd, text, strlen(text)+1); + assert_se(r == (int)strlen(text)+1); + + r = load_env_file(name, data); assert(r == 0); + + for(i = 0; *data && (*data)[i]; i++) + puts((*data)[i]); + + unlink(name); +} + +static void test_load_env_file_1(void) { + char _cleanup_strv_free_ **data = NULL; + write_read_env_file(&data, env_file_1); + assert(streq(data[0], "a")); assert(streq(data[1], "bc")); assert(streq(data[2], "def")); @@ -211,25 +227,31 @@ static void test_load_env_file_1(void) { assert(streq(data[4], "h")); assert(streq(data[5], "i\\")); assert(data[6] == NULL); - unlink(name); } static void test_load_env_file_2(void) { char _cleanup_strv_free_ **data = NULL; - int r; - - char name[] = "/tmp/test-load-env-file.XXXXXX"; - int _cleanup_close_ fd = mkstemp(name); - assert(fd >= 0); - assert_se(write(fd, env_file_2, sizeof(env_file_2)) == sizeof(env_file_2)); + write_read_env_file(&data, env_file_2); - r = load_env_file(name, &data); - assert(r == 0); assert(streq(data[0], "a")); assert(data[1] == NULL); - unlink(name); } +static void test_load_env_file_3(void) { + char _cleanup_strv_free_ **data = NULL; + write_read_env_file(&data, env_file_3); + + assert(data); + assert(streq(data[0], + "#SPAMD_ARGS=\"-d --socketpath=/var/lib/bulwark/spamd \\")); + assert(streq(data[1], + "#--nouser-config \\")); + assert(streq(data[2], + "normal=line")); + assert(data[3] == NULL); +} + + #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wnonnull" @@ -305,6 +327,7 @@ int main(int argc, char *argv[]) { test_config_parse_exec(); test_load_env_file_1(); test_load_env_file_2(); + test_load_env_file_3(); test_install_printf(); return 0; -- 1.8.1 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel