Resguardo inicial

This commit is contained in:
lastdragon
2026-09-06 12:53:21 -06:00
parent 662efe3c2a
commit ad2088d178
94853 changed files with 43200404 additions and 0 deletions
@@ -0,0 +1,2 @@
/harness-selftest
/harness-selftest.seen
@@ -0,0 +1,8 @@
# SPDX-License-Identifier: GPL-2.0
TEST_GEN_PROGS_EXTENDED := harness-selftest
TEST_PROGS := harness-selftest.sh
TEST_FILES := harness-selftest.expected
EXTRA_CLEAN := harness-selftest.seen
include ../lib.mk
@@ -0,0 +1,176 @@
// SPDX-License-Identifier: GPL-2.0
#include <stdio.h>
#include <sys/resource.h>
#include <sys/prctl.h>
/* Avoid any inconsistencies */
#define TH_LOG_STREAM stdout
#include "kselftest_harness.h"
static void test_helper(struct __test_metadata *_metadata)
{
ASSERT_EQ(0, 0);
}
TEST(standalone_pass) {
TH_LOG("before");
ASSERT_EQ(0, 0);
EXPECT_EQ(0, 0);
test_helper(_metadata);
TH_LOG("after");
}
TEST(standalone_fail) {
TH_LOG("before");
EXPECT_EQ(0, 0);
EXPECT_EQ(0, 1);
ASSERT_EQ(0, 1);
TH_LOG("after");
}
TEST_SIGNAL(signal_pass, SIGUSR1) {
TH_LOG("before");
ASSERT_EQ(0, 0);
TH_LOG("after");
kill(getpid(), SIGUSR1);
}
TEST_SIGNAL(signal_fail, SIGUSR1) {
TH_LOG("before");
ASSERT_EQ(0, 1);
TH_LOG("after");
kill(getpid(), SIGUSR1);
}
FIXTURE(fixture) {
pid_t testpid;
};
FIXTURE_SETUP(fixture) {
TH_LOG("setup");
self->testpid = getpid();
}
FIXTURE_TEARDOWN(fixture) {
TH_LOG("teardown same-process=%d", self->testpid == getpid());
}
TEST_F(fixture, pass) {
TH_LOG("before");
ASSERT_EQ(0, 0);
test_helper(_metadata);
standalone_pass(_metadata);
TH_LOG("after");
}
TEST_F(fixture, fail) {
TH_LOG("before");
ASSERT_EQ(0, 1);
fixture_pass(_metadata, self, variant);
TH_LOG("after");
}
TEST_F_TIMEOUT(fixture, timeout, 1) {
TH_LOG("before");
sleep(2);
TH_LOG("after");
}
FIXTURE(fixture_parent) {
pid_t testpid;
};
FIXTURE_SETUP(fixture_parent) {
TH_LOG("setup");
self->testpid = getpid();
}
FIXTURE_TEARDOWN_PARENT(fixture_parent) {
TH_LOG("teardown same-process=%d", self->testpid == getpid());
}
TEST_F(fixture_parent, pass) {
TH_LOG("before");
ASSERT_EQ(0, 0);
TH_LOG("after");
}
FIXTURE(fixture_setup_failure) {
pid_t testpid;
};
FIXTURE_SETUP(fixture_setup_failure) {
TH_LOG("setup");
self->testpid = getpid();
ASSERT_EQ(0, 1);
}
FIXTURE_TEARDOWN(fixture_setup_failure) {
TH_LOG("teardown same-process=%d", self->testpid == getpid());
}
TEST_F(fixture_setup_failure, pass) {
TH_LOG("before");
ASSERT_EQ(0, 0);
TH_LOG("after");
}
TEST(exit_pass) {
exit(KSFT_PASS);
}
TEST(exit_xpass) {
exit(KSFT_XPASS);
}
TEST(exit_fail) {
exit(KSFT_FAIL);
}
TEST(exit_xfail) {
exit(KSFT_XFAIL);
}
TEST(exit_skip) {
exit(KSFT_SKIP);
}
TEST(test_result_pass) {
ksft_test_result_pass("");
}
TEST(test_result_xpass) {
ksft_test_result_xpass("");
}
TEST(test_result_fail) {
ksft_test_result_fail("");
}
TEST(test_result_xfail) {
ksft_test_result_xfail("");
}
TEST(test_result_skip) {
ksft_test_result_skip("");
}
int main(int argc, char **argv)
{
/*
* The harness uses abort() to signal assertion failures, which triggers coredumps.
* This may be useful to debug real failures but not for this selftest, disable them.
*/
struct rlimit rlimit = {
.rlim_cur = 0,
.rlim_max = 0,
};
prctl(PR_SET_DUMPABLE, 0, 0, 0, 0);
setrlimit(RLIMIT_CORE, &rlimit);
return test_harness_run(argc, argv);
}
@@ -0,0 +1,98 @@
TAP version 13
1..19
# Starting 19 tests from 4 test cases.
# RUN global.standalone_pass ...
# harness-selftest.c:19:standalone_pass:before
# harness-selftest.c:23:standalone_pass:after
# OK global.standalone_pass
ok 1 global.standalone_pass
# RUN global.standalone_fail ...
# harness-selftest.c:27:standalone_fail:before
# harness-selftest.c:29:standalone_fail:Expected 0 (0) == 1 (1)
# harness-selftest.c:30:standalone_fail:Expected 0 (0) == 1 (1)
# standalone_fail: Test terminated by assertion
# FAIL global.standalone_fail
not ok 2 global.standalone_fail
# RUN global.signal_pass ...
# harness-selftest.c:35:signal_pass:before
# harness-selftest.c:37:signal_pass:after
# OK global.signal_pass
ok 3 global.signal_pass
# RUN global.signal_fail ...
# harness-selftest.c:42:signal_fail:before
# harness-selftest.c:43:signal_fail:Expected 0 (0) == 1 (1)
# signal_fail: Test terminated by assertion
# FAIL global.signal_fail
not ok 4 global.signal_fail
# RUN global.exit_pass ...
# OK global.exit_pass
ok 5 global.exit_pass
# RUN global.exit_xpass ...
# OK global.exit_xpass
ok 6 global.exit_xpass # XPASS unknown
# RUN global.exit_fail ...
# exit_fail: Test failed
# FAIL global.exit_fail
not ok 7 global.exit_fail
# RUN global.exit_xfail ...
# OK global.exit_xfail
ok 8 global.exit_xfail # XFAIL unknown
# RUN global.exit_skip ...
# OK global.exit_skip
ok 9 global.exit_skip # SKIP unknown
# RUN global.test_result_pass ...
# OK global.test_result_pass
ok 10 global.test_result_pass
# RUN global.test_result_xpass ...
# OK global.test_result_xpass
ok 11 global.test_result_xpass
# RUN global.test_result_fail ...
not ok 1 # Illegal usage of low-level ksft APIs in harness test
# test_result_fail: Test failed
# FAIL global.test_result_fail
not ok 12 global.test_result_fail
# RUN global.test_result_xfail ...
# OK global.test_result_xfail
ok 13 global.test_result_xfail
# RUN global.test_result_skip ...
# OK global.test_result_skip
ok 14 global.test_result_skip
# RUN fixture.pass ...
# harness-selftest.c:53:pass:setup
# harness-selftest.c:62:pass:before
# harness-selftest.c:19:pass:before
# harness-selftest.c:23:pass:after
# harness-selftest.c:66:pass:after
# harness-selftest.c:58:pass:teardown same-process=1
# OK fixture.pass
ok 15 fixture.pass
# RUN fixture.fail ...
# harness-selftest.c:53:fail:setup
# harness-selftest.c:70:fail:before
# harness-selftest.c:71:fail:Expected 0 (0) == 1 (1)
# harness-selftest.c:58:fail:teardown same-process=1
# fail: Test terminated by assertion
# FAIL fixture.fail
not ok 16 fixture.fail
# RUN fixture.timeout ...
# harness-selftest.c:53:timeout:setup
# harness-selftest.c:77:timeout:before
# timeout: Test terminated by timeout
# FAIL fixture.timeout
not ok 17 fixture.timeout
# RUN fixture_parent.pass ...
# harness-selftest.c:87:pass:setup
# harness-selftest.c:96:pass:before
# harness-selftest.c:98:pass:after
# harness-selftest.c:92:pass:teardown same-process=0
# OK fixture_parent.pass
ok 18 fixture_parent.pass
# RUN fixture_setup_failure.pass ...
# harness-selftest.c:106:pass:setup
# harness-selftest.c:108:pass:Expected 0 (0) == 1 (1)
# pass: Test terminated by assertion
# FAIL fixture_setup_failure.pass
not ok 19 fixture_setup_failure.pass
# FAILED: 12 / 19 tests passed.
# 1 skipped test(s) detected. Consider enabling relevant config options to improve coverage.
# Totals: pass:9 fail:7 xfail:1 xpass:1 skip:1 error:0
@@ -0,0 +1,13 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
#
# Selftest for kselftest_harness.h
#
set -e
DIR="$(dirname $(readlink -f "$0"))"
"$DIR"/harness-selftest > harness-selftest.seen || true
diff -u "$DIR"/harness-selftest.expected harness-selftest.seen