b6fad30665
This allows the 'unsafe' mark to be removed from the test.
73 lines
2.3 KiB
C
73 lines
2.3 KiB
C
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
|
|
#include <unistd.h>
|
|
|
|
#include "alloc-util.h"
|
|
#include "fileio.h"
|
|
#include "hostname-setup.h"
|
|
#include "string-util.h"
|
|
#include "tests.h"
|
|
#include "tmpfile-util.h"
|
|
|
|
static void test_read_etc_hostname(void) {
|
|
char path[] = "/tmp/hostname.XXXXXX";
|
|
char *hostname;
|
|
int fd;
|
|
|
|
fd = mkostemp_safe(path);
|
|
assert(fd > 0);
|
|
close(fd);
|
|
|
|
/* simple hostname */
|
|
assert_se(write_string_file(path, "foo", WRITE_STRING_FILE_CREATE) == 0);
|
|
assert_se(read_etc_hostname(path, &hostname) == 0);
|
|
assert_se(streq(hostname, "foo"));
|
|
hostname = mfree(hostname);
|
|
|
|
/* with comment */
|
|
assert_se(write_string_file(path, "# comment\nfoo", WRITE_STRING_FILE_CREATE) == 0);
|
|
assert_se(read_etc_hostname(path, &hostname) == 0);
|
|
assert_se(hostname);
|
|
assert_se(streq(hostname, "foo"));
|
|
hostname = mfree(hostname);
|
|
|
|
/* with comment and extra whitespace */
|
|
assert_se(write_string_file(path, "# comment\n\n foo ", WRITE_STRING_FILE_CREATE) == 0);
|
|
assert_se(read_etc_hostname(path, &hostname) == 0);
|
|
assert_se(hostname);
|
|
assert_se(streq(hostname, "foo"));
|
|
hostname = mfree(hostname);
|
|
|
|
/* cleans up name */
|
|
assert_se(write_string_file(path, "!foo/bar.com", WRITE_STRING_FILE_CREATE) == 0);
|
|
assert_se(read_etc_hostname(path, &hostname) == 0);
|
|
assert_se(hostname);
|
|
assert_se(streq(hostname, "foobar.com"));
|
|
hostname = mfree(hostname);
|
|
|
|
/* no value set */
|
|
hostname = (char*) 0x1234;
|
|
assert_se(write_string_file(path, "# nothing here\n", WRITE_STRING_FILE_CREATE) == 0);
|
|
assert_se(read_etc_hostname(path, &hostname) == -ENOENT);
|
|
assert_se(hostname == (char*) 0x1234); /* does not touch argument on error */
|
|
|
|
/* nonexisting file */
|
|
assert_se(read_etc_hostname("/non/existing", &hostname) == -ENOENT);
|
|
assert_se(hostname == (char*) 0x1234); /* does not touch argument on error */
|
|
|
|
unlink(path);
|
|
}
|
|
|
|
static void test_hostname_setup(void) {
|
|
hostname_setup(false);
|
|
}
|
|
|
|
int main(int argc, char *argv[]) {
|
|
test_setup_logging(LOG_DEBUG);
|
|
|
|
test_read_etc_hostname();
|
|
test_hostname_setup();
|
|
|
|
return 0;
|
|
}
|