From 994daf8bfdbad7a4ecc41ab00d608da1b6444791 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 19 Sep 2026 15:48:52 -0400 Subject: [PATCH 01/13] Adding workflow --- .gitea/workflows/klist.yml | 63 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 .gitea/workflows/klist.yml diff --git a/.gitea/workflows/klist.yml b/.gitea/workflows/klist.yml new file mode 100644 index 0000000..0c5d337 --- /dev/null +++ b/.gitea/workflows/klist.yml @@ -0,0 +1,63 @@ +name: klist + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-26.04 + + steps: + - uses: actions/checkout@v6 + + - name: Cache Conan dependencies + uses: actions/cache@v3 + with: + path: ~/.conan/data # Or your custom cache directory + key: ${{ runner.os }}-conan-${{ hashFiles('**/conanfile.*') }} + restore-keys: | + ${{ runner.os }}-conan- + + - name: Create tmp folder + run: mkdir tmp + + - name: Install Conan and other dependencies + working-directory: tmp + run: | + sudo apt update + sudo apt install -y cmake + cmake --version + + wget https://github.com/conan-io/conan/releases/download/2.32.0/conan-2.32.0-amd64.deb + sudo dpkg -i conan-2.32.0-amd64.deb + + - name: Configure Conan + run: | + conan profile detect --force # Create a default profile + + - name: Create build directory + run: mkdir build + + - name: Install dependencies + working-directory: build + run: conan install .. --build=missing + + - name: build project + working-directory: build + run: | + source Release/generators/conanbuild.sh + cmake .. --preset conan-release + cmake --build Release + + - name: Test with CTest (optional) + working-directory: build/Release + run: ctest -C Release + + -- 2.47.3 From 436592e5f180def32e5d5c5957aac1ae852b2b2f Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 19 Sep 2026 15:49:49 -0400 Subject: [PATCH 02/13] Update --- .gitea/workflows/klist.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/klist.yml b/.gitea/workflows/klist.yml index 0c5d337..dcf088c 100644 --- a/.gitea/workflows/klist.yml +++ b/.gitea/workflows/klist.yml @@ -12,7 +12,7 @@ concurrency: jobs: build: - runs-on: ubuntu-26.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 -- 2.47.3 From 0e1b32a1d5c360842fb613bc59655167a5ae8a78 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 19 Sep 2026 15:52:59 -0400 Subject: [PATCH 03/13] Adding conanfile --- conanfile.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 conanfile.py diff --git a/conanfile.py b/conanfile.py new file mode 100644 index 0000000..3b83fab --- /dev/null +++ b/conanfile.py @@ -0,0 +1,42 @@ +from conan import ConanFile +from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout +from conan.tools.files import copy +import os + +class klistConan(ConanFile): + name = "klist" + version = "0.0.1" + + description = "A list library" + url = "https://git.kundeng.us/phoenix/klist" + homepage = "https://git.kundeng.us/phoenix/klist" + + settings = "os", "compiler", "build_type", "arch" + generators = "CMakeToolchain", "CMakeDeps" + + # Only add dependencies if needed + requires = "cmocka/1.1.8" + + def layout(self): + cmake_layout(self) + + def build_requirements(self): + self.tool_requires("cmake/4.4.3") + + # def generate(self): + # tc = CMakeToolchain(self) + # tc.generate() + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def package(self): + cmake = CMake(self) + cmake.install() + + def package_info(self): + self.cpp_info.libs = ["klistlib"] + self.cpp_info.includedirs = ["include"] + -- 2.47.3 From df05dc7f624a1b7c50c9c90067eeeb8fcb188b01 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 19 Sep 2026 16:01:45 -0400 Subject: [PATCH 04/13] Adding cmake --- CMakeLists.txt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e88e7a8..301e8be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,10 @@ cmake_minimum_required(VERSION 4.3.4) -project(klist) +project(klist VERSION 0.0.1 LANGUAGES C) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED ON) +set(CMAKE_C_EXTENSIONS OFF) set (INCLUDE include/klist.h @@ -14,3 +18,11 @@ set (SOURCES include_directories(${CMAKE_CURRENT_LIST_DIR}/include/) add_library(klist STATIC ${SOURCES} ${INCLUDE}) + +target_compile_options(klist + PRIVATE + -Wall -Wextra -Wpedantic # Added -Wpedantic for stricter checks +) + +enable_testing() +add_subdirectory(tests) -- 2.47.3 From d84dcd9f3b14da5cc87e9488b67a3815f76b2799 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 19 Sep 2026 16:02:08 -0400 Subject: [PATCH 05/13] Adding test --- tests/CMakeLists.txt | 27 ++++++++++++++ tests/tests.c | 89 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 tests/CMakeLists.txt create mode 100644 tests/tests.c diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000..db3efb2 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,27 @@ +find_package(cmocka REQUIRED) + +# Test executable +add_executable(test_klist + test.c +) + + +# Link libraries +target_link_libraries(test_klist + klistlib + cmocka::cmocka + # ${CURSES_LIBRARIES} +) + +target_include_directories(test_klist PRIVATE + ${CMAKE_SOURCE_DIR}/include +) + +# Add to CTest +add_test(klist_PRINT test_klist COMMAND test_klist) + +# set_tests_properties(klist_PRINT PROPERTIES +# WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +# ENVIRONMENT "TERM=xterm-256color" +# ) + diff --git a/tests/tests.c b/tests/tests.c new file mode 100644 index 0000000..754b06d --- /dev/null +++ b/tests/tests.c @@ -0,0 +1,89 @@ +#include +#include +#include + #include +#include +#include +#include + +// #include "prntconsl.h" // Your library's header +#include "klist.h" + +/* ===== Setup and Teardown Functions ===== */ +static int setup(void **state) +{ + int *test_data = malloc(sizeof(int)); + *test_data = 42; + *state = test_data; + return 0; +} + +static int teardown(void **state) +{ + free(*state); + return 0; +} + +/* ===== Test Cases ===== */ +/* +static void test_addition_success(void **state) +{ + const int result = 5 + 3; + assert_int_equal(result, 8); +} + +static void test_with_fixture_data(void **state) +{ + int *value = *state; + assert_int_equal(*value, 42); + + const int result = *value * 2; + assert_int_equal(result, 84); +} + +static void test_print(void **state) +{ + print("Hello", 0); + print("Hello New line", 1); + print("Another one", 1); +} + +static void test_print_multiple(void **state) +{ + print_msg_multiple_times("Biscut", 10, 1); +} +*/ + +/* ===== Test with Mock Objects ===== */ +/* Mock function that returns values set by the test */ +int __wrap_dependency_function(int param) +{ + check_expected(param); // Verifies param matches expectation + return (int) mock(); // Returns value from will_return() +} + +static void test_with_mock(void **state) +{ + /* Set up expectations: when called with 10, return 20 */ + // expect_value(__wrap_dependency_function, param, 10); + // will_return(__wrap_dependency_function, 20); + + // const int result = 20; + // assert_int_equal(result, 20); +} + +/* ===== Run All Tests ===== */ +int main(void) +{ + const struct CMUnitTest tests[] = { + // cmocka_unit_test(test_print), + // cmocka_unit_test(test_addition_success), + // cmocka_unit_test(test_print_multiple), + // cmocka_unit_test_setup_teardown(test_with_fixture_data, + setup, teardown), + cmocka_unit_test(test_with_mock), + }; + + return cmocka_run_group_tests(tests, NULL, NULL); +} + -- 2.47.3 From 5c07ed46eecf49683e9b485989b05e96a38ba931 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 19 Sep 2026 16:14:31 -0400 Subject: [PATCH 06/13] Rename file --- tests/{tests.c => test.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/{tests.c => test.c} (100%) diff --git a/tests/tests.c b/tests/test.c similarity index 100% rename from tests/tests.c rename to tests/test.c -- 2.47.3 From 86c68c4660a1e8e0c693d6a799d00cb1bec4385f Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 19 Sep 2026 16:20:59 -0400 Subject: [PATCH 07/13] Updating test --- tests/test.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/test.c b/tests/test.c index 754b06d..2b12ab9 100644 --- a/tests/test.c +++ b/tests/test.c @@ -25,6 +25,12 @@ static int teardown(void **state) } /* ===== Test Cases ===== */ +static void test_simple(void **state) +{ + const int a = 400; + const int b = 20; + assert_int_equal((a+b), 420); +} /* static void test_addition_success(void **state) { @@ -76,7 +82,7 @@ static void test_with_mock(void **state) int main(void) { const struct CMUnitTest tests[] = { - // cmocka_unit_test(test_print), + cmocka_unit_test(test_simple), // cmocka_unit_test(test_addition_success), // cmocka_unit_test(test_print_multiple), // cmocka_unit_test_setup_teardown(test_with_fixture_data, -- 2.47.3 From 99118dffc6a3eb3484b0add228259105b1a9b866 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 19 Sep 2026 16:26:11 -0400 Subject: [PATCH 08/13] Test update --- tests/CMakeLists.txt | 11 ----------- tests/test.c | 1 - 2 files changed, 12 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index db3efb2..e00798d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,27 +1,16 @@ find_package(cmocka REQUIRED) -# Test executable add_executable(test_klist test.c ) - -# Link libraries target_link_libraries(test_klist klistlib cmocka::cmocka - # ${CURSES_LIBRARIES} ) target_include_directories(test_klist PRIVATE ${CMAKE_SOURCE_DIR}/include ) -# Add to CTest add_test(klist_PRINT test_klist COMMAND test_klist) - -# set_tests_properties(klist_PRINT PROPERTIES -# WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} -# ENVIRONMENT "TERM=xterm-256color" -# ) - diff --git a/tests/test.c b/tests/test.c index 2b12ab9..99b0e92 100644 --- a/tests/test.c +++ b/tests/test.c @@ -86,7 +86,6 @@ int main(void) // cmocka_unit_test(test_addition_success), // cmocka_unit_test(test_print_multiple), // cmocka_unit_test_setup_teardown(test_with_fixture_data, - setup, teardown), cmocka_unit_test(test_with_mock), }; -- 2.47.3 From 3438a6981ff67b32ca0cb01f66be5178b0347ec7 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 19 Sep 2026 16:29:22 -0400 Subject: [PATCH 09/13] Oops --- tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e00798d..76e7f28 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -5,7 +5,7 @@ add_executable(test_klist ) target_link_libraries(test_klist - klistlib + klist cmocka::cmocka ) -- 2.47.3 From b1fd410eb9fbac7fb0da8532f66cba44d15fd6dc Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 19 Sep 2026 16:32:51 -0400 Subject: [PATCH 10/13] Cleanup conanfile --- conanfile.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/conanfile.py b/conanfile.py index 3b83fab..039d23f 100644 --- a/conanfile.py +++ b/conanfile.py @@ -23,10 +23,6 @@ class klistConan(ConanFile): def build_requirements(self): self.tool_requires("cmake/4.4.3") - # def generate(self): - # tc = CMakeToolchain(self) - # tc.generate() - def build(self): cmake = CMake(self) cmake.configure() @@ -37,6 +33,5 @@ class klistConan(ConanFile): cmake.install() def package_info(self): - self.cpp_info.libs = ["klistlib"] + self.cpp_info.libs = ["klist"] self.cpp_info.includedirs = ["include"] - -- 2.47.3 From 78fa24b286e2b02297d7a969af73f9a7aa083f0c Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 19 Sep 2026 16:37:33 -0400 Subject: [PATCH 11/13] workflow cleanup --- .gitea/workflows/klist.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.gitea/workflows/klist.yml b/.gitea/workflows/klist.yml index dcf088c..fe8ec23 100644 --- a/.gitea/workflows/klist.yml +++ b/.gitea/workflows/klist.yml @@ -40,7 +40,7 @@ jobs: - name: Configure Conan run: | - conan profile detect --force # Create a default profile + conan profile detect --force - name: Create build directory run: mkdir build @@ -59,5 +59,3 @@ jobs: - name: Test with CTest (optional) working-directory: build/Release run: ctest -C Release - - -- 2.47.3 From d19b383bb29f14811f399b5388c86d70a717fd1a Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 19 Sep 2026 16:37:43 -0400 Subject: [PATCH 12/13] Code formatting --- src/klist.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/klist.c b/src/klist.c index 8e6753f..ebd09d6 100644 --- a/src/klist.c +++ b/src/klist.c @@ -44,13 +44,12 @@ int is_list_init(struct node **list) else return 0; } + int list_size(struct node **list) { int count = 0; struct node *tmp = *list; - struct node *in_tmp = NULL; - while (tmp != NULL || tmp->next != NULL) { in_tmp = tmp; tmp = tmp->next; @@ -81,6 +80,7 @@ void insert_at_begin(struct node **list, void *val, size_t val_size) tmp->next = *list; *list = tmp; } + void insert_at_end(struct node **list, void *val, size_t val_size) { struct node *tmp = (struct node*)malloc(sizeof(struct node)); @@ -102,6 +102,7 @@ void insert_at_end(struct node **list, void *val, size_t val_size) tmp->next->data = tmp_val; tmp->next->next = NULL; } + void free_list(struct node **list) { struct node *t = NULL; @@ -120,8 +121,8 @@ void free_list(struct node **list) return; } while (l->next != NULL); - } + void traverse(struct node *list, void (*print_val)(struct node*)) { if (list == NULL) -- 2.47.3 From e650f4c4ef4b0627b6ccf369019d440ab6f2ab0a Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 19 Sep 2026 16:50:53 -0400 Subject: [PATCH 13/13] Fix issue with removed variable --- src/klist.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/klist.c b/src/klist.c index ebd09d6..ee34a0c 100644 --- a/src/klist.c +++ b/src/klist.c @@ -51,7 +51,6 @@ int list_size(struct node **list) struct node *tmp = *list; while (tmp != NULL || tmp->next != NULL) { - in_tmp = tmp; tmp = tmp->next; ++count; -- 2.47.3