+#define env_file_1 \
+ "a\n" \
+ "b\\\n" \
+ "c\n" \
+ "d\\\n" \
+ "e\\\n" \
+ "f\n" \
+ "g\\ \n" \
+ "h\n" \
+ "i\\"
+
+#define env_file_2 \
+ "a\\\n"
+
+static void test_load_env_file_1(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_1, sizeof(env_file_1)) == sizeof(env_file_1));
+
+ r = load_env_file(name, &data);
+ assert(r == 0);
+ assert(streq(data[0], "a"));
+ assert(streq(data[1], "bc"));
+ assert(streq(data[2], "def"));
+ assert(streq(data[3], "g\\"));
+ 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));
+
+ r = load_env_file(name, &data);
+ assert(r == 0);
+ assert(streq(data[0], "a"));
+ assert(data[1] == NULL);
+ unlink(name);
+}
+
+