Files
zinnia/tests/user/system.c
T
2026-10-27 23:11:15 +01:00

62 lines
1.8 KiB
C

// SPDX-License-Identifier: ISC
#include <string.h>
#include <uapi/errno.h>
#include <uapi/utsname.h>
#include "lib/syscall.h"
#include "lib/utest.h"
UTEST(syslog, writes_message) {
const char msg[] = "utest: syslog test";
struct sys_ret ret = sys_syslog(SYSLOG_INFO, msg, sizeof(msg) - 1);
EXPECT_EQ(ret.error, 0);
}
UTEST(syslog, rejects_bad_pointer) {
struct sys_ret ret = sys_syslog(SYSLOG_INFO, (const char*)0x10, 8);
EXPECT_EQ(ret.error, __EFAULT);
}
UTEST(system, uname) {
struct __utsname uts = {};
struct sys_ret ret = sys_getuname(&uts);
ASSERT_EQ(ret.error, 0);
EXPECT_STREQ(uts.sysname, "Zinnia");
EXPECT_STREQ(uts.machine, "x86_64");
}
UTEST(syslog, long_message) {
char msg[1024];
memset(msg, 'x', sizeof(msg));
EXPECT_EQ(sys_syslog(SYSLOG_INFO, msg, sizeof(msg)).error, 0);
}
UTEST(system, uname_rejects_null) {
EXPECT_EQ(sys_getuname(nullptr).error, __EINVAL);
EXPECT_EQ(sys_setuname(nullptr).error, __EINVAL);
}
UTEST(system, uname_rejects_bad_pointer) {
EXPECT_EQ(sys_getuname((void*)0x10).error, __EFAULT);
EXPECT_EQ(sys_setuname((const void*)0x10).error, __EFAULT);
}
UTEST(system, setuname) {
struct __utsname original = {};
ASSERT_EQ(sys_getuname(&original).error, 0);
struct __utsname changed = original;
memset(changed.nodename, 0, sizeof(changed.nodename));
memcpy(changed.nodename, "foobar", sizeof("foobar"));
ASSERT_EQ(sys_setuname(&changed).error, 0);
struct __utsname now = {};
EXPECT_EQ(sys_getuname(&now).error, 0);
EXPECT_STREQ(now.nodename, "foobar");
EXPECT_STREQ(now.sysname, original.sysname);
EXPECT_EQ(sys_setuname(&original).error, 0);
EXPECT_EQ(sys_getuname(&now).error, 0);
EXPECT_STREQ(now.nodename, original.nodename);
}