mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-23 17:34:00 +03:00
test-os-util: add basic tests for os-release parsing
This commit is contained in:
parent
df78419d10
commit
80e72f80bc
@ -2,8 +2,11 @@
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include "fs-util.h"
|
||||
#include "log.h"
|
||||
#include "os-util.h"
|
||||
#include "string-util.h"
|
||||
#include "strv.h"
|
||||
#include "tests.h"
|
||||
|
||||
TEST(path_is_os_tree) {
|
||||
@ -12,4 +15,63 @@ TEST(path_is_os_tree) {
|
||||
assert_se(path_is_os_tree("/idontexist") == -ENOENT);
|
||||
}
|
||||
|
||||
TEST(parse_os_release) {
|
||||
/* Let's assume that we're running in a valid system, so os-release is available */
|
||||
_cleanup_free_ char *id = NULL, *id2 = NULL, *name = NULL, *foobar = NULL;
|
||||
assert_se(parse_os_release(NULL, "ID", &id) == 1);
|
||||
log_info("ID: %s", id);
|
||||
|
||||
assert_se(setenv("SYSTEMD_OS_RELEASE", "/dev/null", 1) == 0);
|
||||
assert_se(parse_os_release(NULL, "ID", &id2) == 0);
|
||||
log_info("ID: %s", strnull(id2));
|
||||
|
||||
_cleanup_(unlink_tempfilep) char tmpfile[] = "/tmp/test-os-util.XXXXXX";
|
||||
assert_se(write_tmpfile(tmpfile,
|
||||
"ID=the-id \n"
|
||||
"NAME=the-name") == 0);
|
||||
|
||||
assert_se(setenv("SYSTEMD_OS_RELEASE", tmpfile, 1) == 0);
|
||||
assert_se(parse_os_release(NULL, "ID", &id, "NAME", &name) == 2);
|
||||
log_info("ID: %s NAME: %s", id, name);
|
||||
assert_se(streq(id, "the-id"));
|
||||
assert_se(streq(name, "the-name"));
|
||||
|
||||
_cleanup_(unlink_tempfilep) char tmpfile2[] = "/tmp/test-os-util.XXXXXX";
|
||||
assert_se(write_tmpfile(tmpfile2,
|
||||
"ID=\"ignored\" \n"
|
||||
"ID=\"the-id\" \n"
|
||||
"NAME='the-name'") == 0);
|
||||
|
||||
assert_se(setenv("SYSTEMD_OS_RELEASE", tmpfile2, 1) == 0);
|
||||
// FIXME: we return 3, which means that the return value is useless in face of repeats
|
||||
assert_se(parse_os_release(NULL, "ID", &id, "NAME", &name) == 3);
|
||||
log_info("ID: %s NAME: %s", id, name);
|
||||
assert_se(streq(id, "the-id"));
|
||||
assert_se(streq(name, "the-name"));
|
||||
|
||||
assert_se(parse_os_release(NULL, "FOOBAR", &foobar) == 0);
|
||||
log_info("FOOBAR: %s", strnull(foobar));
|
||||
assert_se(foobar == NULL);
|
||||
|
||||
assert_se(unsetenv("SYSTEMD_OS_RELEASE") == 0);
|
||||
}
|
||||
|
||||
TEST(load_os_release_pairs) {
|
||||
_cleanup_(unlink_tempfilep) char tmpfile[] = "/tmp/test-os-util.XXXXXX";
|
||||
assert_se(write_tmpfile(tmpfile,
|
||||
"ID=\"ignored\" \n"
|
||||
"ID=\"the-id\" \n"
|
||||
"NAME='the-name'") == 0);
|
||||
|
||||
assert_se(setenv("SYSTEMD_OS_RELEASE", tmpfile, 1) == 0);
|
||||
|
||||
_cleanup_strv_free_ char **pairs = NULL;
|
||||
assert_se(load_os_release_pairs(NULL, &pairs) == 0);
|
||||
assert_se(strv_equal(pairs, STRV_MAKE("ID", "ignored", // FIXME
|
||||
"ID", "the-id",
|
||||
"NAME", "the-name")));
|
||||
|
||||
assert_se(unsetenv("SYSTEMD_OS_RELEASE") == 0);
|
||||
}
|
||||
|
||||
DEFINE_TEST_MAIN(LOG_DEBUG);
|
||||
|
Loading…
Reference in New Issue
Block a user