Changeset 134ac5d in mainline
- Timestamp:
- 2014-06-06T07:54:24Z (11 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8db09e4
- Parents:
- eeb23f2d
- Location:
- uspace
- Files:
-
- 13 added
- 2 deleted
- 34 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/bdsh/test/toktest.c
reeb23f2d r134ac5d 32 32 33 33 #include "../tok.h" 34 #include <pcut/ test.h>34 #include <pcut/pcut.h> 35 35 36 36 PCUT_INIT -
uspace/lib/c/test/main.c
reeb23f2d r134ac5d 28 28 29 29 #include <stdio.h> 30 #include <pcut/ test.h>30 #include <pcut/pcut.h> 31 31 32 32 PCUT_INIT -
uspace/lib/c/test/sprintf.c
reeb23f2d r134ac5d 28 28 29 29 #include <stdio.h> 30 #include <pcut/ test.h>30 #include <pcut/pcut.h> 31 31 32 32 #define BUFFER_SIZE 8192 -
uspace/lib/pcut/README.rst
reeb23f2d r134ac5d 22 22 safe against unexpected crashes, such as null pointer dereference. 23 23 24 More details can be found on PCUT wiki on GitHub. 25 26 https://github.com/vhotspur/pcut/wiki 24 More details can be found on PCUT wiki on GitHub: 25 https://github.com/vhotspur/pcut/wiki 27 26 28 27 29 Main goal - simple to use30 ------------------- ------28 Quick-start example 29 ------------------- 31 30 32 Let's illustrate how PCUT aims to be simple when creating unit tests for 33 function ``intmin`` that ought to return smaller of its two arguments.:: 31 The following code tests the standard ``atoi`` function:: 34 32 35 int intmin(int a, int b) { 36 return a > b ? b : a; 33 #include <pcut/pcut.h> 34 #include <stdlib.h> 35 36 PCUT_INIT 37 38 PCUT_TEST(atoi_zero) { 39 PCUT_ASSERT_INT_EQUALS(0, atoi("0")); 37 40 } 38 41 39 Individual test-cases for such method could cover following cases: getting 40 minimal of 41 42 - two same numbers 43 - negative and positive number 44 - two negative numbers 45 - two positive numbers 46 - "corner case" numbers, such as minimal and maximal represented number 47 48 In PCUT, that would be translated to the following code::: 49 50 #include <pcut/test.h> 51 #include <limits.h> 52 /* Other include to have declaration of intmin */ 53 54 PCUT_INIT 55 56 PCUT_TEST_SUITE(intmin_tests); 57 58 PCUT_TEST(same_number) { 59 PCUT_ASSERT_INT_EQUALS(719, intmin(719, 719) ); 60 PCUT_ASSERT_INT_EQUALS(-4589, intmin(-4589, -4589) ); 42 PCUT_TEST(atoi_positive) { 43 PCUT_ASSERT_INT_EQUALS(42, atoi("42")); 61 44 } 62 45 63 PCUT_TEST(positive_and_negative) { 64 PCUT_ASSERT_INT_EQUALS(-5, intmin(-5, 71) ); 65 PCUT_ASSERT_INT_EQUALS(-17, intmin(423, -17) ); 46 PCUT_TEST(atoi_negative) { 47 PCUT_ASSERT_INT_EQUALS(-273, atoi("-273")); 66 48 } 67 49 68 PCUT_TEST(same_sign) {69 PCUT_ASSERT_INT_EQUALS(22, intmin(129, 22) );70 PCUT_ASSERT_INT_EQUALS(-37, intmin(-37, -1) );71 }72 73 PCUT_TEST(corner_cases) {74 PCUT_ASSERT_INT_EQUALS(INT_MIN, intmin(INT_MIN, -1234) );75 PCUT_ASSERT_INT_EQUALS(9876, intmin(9876, INT_MAX) );76 }77 78 50 PCUT_MAIN() 79 51 80 And that's all. 81 You do not need to manually specify which tests to run etc., 82 everything is done magically via the ``PCUT_INIT``, ``PCUT_MAIN`` and 83 ``PCUT_TEST`` macros. 84 All you need to do is to compile this code and link it with ``libpcut``. 85 Result of the linking would be an executable that runs the tests and 86 reports the results. 52 As you can see, there is no manual listing of tests that form the test 53 suite etc, only the tests and ``PCUT_INIT`` at the beginning and 54 ``PCUT_MAIN`` at the end. 87 55 88 89 Examples 90 -------- 56 This code has to be linked with ``libpcut`` to get an executable that runs 57 the tests and reports the results. 91 58 92 59 More examples, in the form of self-tests, are available in the ``tests/`` 93 60 subdirectory. 61 Other examples can be found on the Wiki. 94 62 95 63 -
uspace/lib/pcut/base.mak
reeb23f2d r134ac5d 31 31 PCUT_CFLAGS = -Wall -Wextra -std=c99 -Werror -I$(PCUT_INCLUDE) 32 32 33 PCUT_PREPROC_SOURCES = \ 34 src/preproc.c 35 33 36 PCUT_SOURCES = \ 34 37 src/assert.c \ -
uspace/lib/pcut/include/pcut/prevs.h
reeb23f2d r134ac5d 1 1 /* 2 * Copyright (c) 2012-201 3Vojtech Horky2 * Copyright (c) 2012-2014 Vojtech Horky 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 #if !defined(PCUT_TEST_H_GUARD) && !defined(PCUT_INTERNAL) 30 #error "You cannot include this file directly." 31 #endif 29 /** 30 * @file 31 * Counter macros internally used by PCUT. 32 */ 32 33 33 34 #ifndef PCUT_PREVS_H_GUARD 34 35 #define PCUT_PREVS_H_GUARD 36 37 #ifndef PCUT_DOXYGEN_IS_RUNNING 38 /** @cond devel */ 35 39 36 40 #define PCUT_PREV_1 0 … … 335 339 #define PCUT_PREV_300 299 336 340 341 /** @endcond */ 342 337 343 #endif 338 344 345 #endif 346 -
uspace/lib/pcut/pcut.mak
reeb23f2d r134ac5d 29 29 -include base.mak 30 30 31 all: $(PCUT_LIB) 31 all: $(PCUT_LIB) $(PCUT_PREPROC) 32 32 33 33 pcut-clean: check-clean platform-clean … … 35 35 36 36 %.o: %.c 37 38 src/%.o: src/%.c 37 39 $(CC) -c -o $@ $(PCUT_CFLAGS) $< 40 41 doxygen: 42 doxygen doc/Doxyfile.devel 43 doxygen doc/Doxyfile.user -
uspace/lib/pcut/src/internal.h
reeb23f2d r134ac5d 27 27 */ 28 28 29 /** @file 30 * Common definitions internally used in PCUT. 31 */ 32 29 33 #ifndef PCUT_INTERNAL_H_GUARD 30 34 #define PCUT_INTERNAL_H_GUARD 31 35 32 #include <pcut/ test.h>36 #include <pcut/pcut.h> 33 37 #include <stdlib.h> 34 38 … … 69 73 pcut_item_t *pcut_get_real_next(pcut_item_t *item); 70 74 pcut_item_t *pcut_get_real(pcut_item_t *item); 71 const char* pcut_run_test(pcut_test_func_t function);72 const char* pcut_run_setup_teardown(pcut_setup_func_t function);73 75 void pcut_print_tests(pcut_item_t *first); 74 76 int pcut_is_arg_with_number(const char *arg, const char *opt, int *value); … … 78 80 int pcut_run_test_single(pcut_item_t *test); 79 81 80 extern pcut_item_t *pcut_current_test; 81 extern pcut_item_t *pcut_current_suite; 82 extern int pcut_running_test_now; 83 extern int pcut_running_setup_now; 82 int pcut_get_test_timeout(pcut_item_t *test); 84 83 84 void pcut_failed_assertion(const char *message); 85 85 void pcut_print_fail_message(const char *msg); 86 86 87 /** Reporting callbacks structure. */ 87 88 typedef struct pcut_report_ops pcut_report_ops_t; 88 /** Reporting callbacks structure. */ 89 90 /** @copydoc pcut_report_ops_t */ 89 91 struct pcut_report_ops { 90 92 /** Initialize the reporting, given all tests. */ … … 116 118 void pcut_report_done(void); 117 119 120 /* OS-dependent functions. */ 118 121 122 /** Tell whether two strings start with the same prefix. 123 * 124 * @param a First string. 125 * @param b Second string. 126 * @param len Length of common prefix. 127 * @return Whether first @p len characters of @p a are the same as in @p b. 128 */ 119 129 int pcut_str_start_equals(const char *a, const char *b, int len); 130 131 /** Get size of string in bytes. 132 * 133 * @param s String in question. 134 * @return Size of @p s in bytes. 135 */ 120 136 int pcut_str_size(const char *s); 137 138 /** Convert string to integer. 139 * 140 * @param s String with integer. 141 * @return Converted integer. 142 */ 121 143 int pcut_str_to_int(const char *s); 144 145 /** Find character in a string. 146 * 147 * @param haystack Where to look for the @p needle. 148 * @param needle Character to find. 149 * @return String starting with @p needle. 150 * @retval NULL there is no @p needle in @p haystack. 151 */ 122 152 char *pcut_str_find_char(const char *haystack, const char needle); 123 153 -
uspace/lib/pcut/src/list.c
reeb23f2d r134ac5d 35 35 #include <stdlib.h> 36 36 #include "internal.h" 37 #include <pcut/ test.h>37 #include <pcut/pcut.h> 38 38 39 39 … … 118 118 } 119 119 120 /** Hide tests that are marked to be skipped. 121 * 122 * Go through all tests and those that have PCUT_EXTRA_SKIP mark 123 * as skipped with PCUT_KIND_SKIP. 124 * 125 * @param first Head of the list. 126 */ 127 static void detect_skipped_tests(pcut_item_t *first) { 128 assert(first != NULL); 129 if (first->kind == PCUT_KIND_SKIP) { 130 first = pcut_get_real_next(first); 131 } 132 for (pcut_item_t *it = first; it != NULL; it = pcut_get_real_next(it)) { 133 if (it->kind != PCUT_KIND_TEST) { 134 continue; 135 } 136 pcut_extra_t *extras = it->test.extras; 137 while (extras->type != PCUT_EXTRA_LAST) { 138 if (extras->type == PCUT_EXTRA_SKIP) { 139 it->kind = PCUT_KIND_SKIP; 140 break; 141 } 142 extras++; 143 } 144 } 145 } 146 120 147 /** Convert the static single-linked list into a flat double-linked list. 121 148 * … … 143 170 } 144 171 172 detect_skipped_tests(next); 173 145 174 set_ids(next); 146 175 -
uspace/lib/pcut/src/os/generic.c
reeb23f2d r134ac5d 76 76 static char extra_output_buffer[OUTPUT_BUFFER_SIZE]; 77 77 78 /** Prepare for a new test. */ 78 /** Prepare for a new test. 79 * 80 * @param test Test that is about to start. 81 */ 79 82 static void before_test_start(pcut_item_t *test) { 80 83 pcut_report_test_start(test); -
uspace/lib/pcut/src/os/helenos.c
reeb23f2d r134ac5d 34 34 #include <stdlib.h> 35 35 #include <str.h> 36 #include <str_error.h> 36 37 #include <unistd.h> 37 38 #include <sys/types.h> … … 41 42 #include <task.h> 42 43 #include <fcntl.h> 44 #include <fibril_synch.h> 43 45 #include "../internal.h" 44 46 … … 68 70 } 69 71 72 void pcut_str_error(int error, char *buffer, int size) { 73 const char *str = str_error(error); 74 if (str == NULL) { 75 str = "(strerror failure)"; 76 } 77 str_cpy(buffer, size, str); 78 } 79 70 80 71 81 /* Forking-mode related functions. */ … … 89 99 static char extra_output_buffer[OUTPUT_BUFFER_SIZE]; 90 100 91 /** Prepare for a new test. */ 101 /** Prepare for a new test. 102 * 103 * @param test Test that is about to be run. 104 */ 92 105 static void before_test_start(pcut_item_t *test) { 93 106 pcut_report_test_start(test); … … 95 108 memset(error_message_buffer, 0, OUTPUT_BUFFER_SIZE); 96 109 memset(extra_output_buffer, 0, OUTPUT_BUFFER_SIZE); 110 } 111 112 /** Mutex guard for forced_termination_cv. */ 113 static fibril_mutex_t forced_termination_mutex 114 = FIBRIL_MUTEX_INITIALIZER(forced_termination_mutex); 115 116 /** Condition-variable for checking whether test timed-out. */ 117 static fibril_condvar_t forced_termination_cv 118 = FIBRIL_CONDVAR_INITIALIZER(forced_termination_cv); 119 120 /** Spawned task id. */ 121 static task_id_t test_task_id; 122 123 /** Flag whether test is still running. 124 * 125 * This flag is used when checking whether test timed-out. 126 */ 127 static int test_running; 128 129 /** Main fibril for checking whether test timed-out. 130 * 131 * @param arg Test that is currently running (pcut_item_t *). 132 * @return EOK Always. 133 */ 134 static int test_timeout_handler_fibril(void *arg) { 135 pcut_item_t *test = arg; 136 int timeout_sec = pcut_get_test_timeout(test); 137 suseconds_t timeout_us = (suseconds_t) timeout_sec * 1000 * 1000; 138 139 fibril_mutex_lock(&forced_termination_mutex); 140 if (!test_running) { 141 goto leave_no_kill; 142 } 143 int rc = fibril_condvar_wait_timeout(&forced_termination_cv, 144 &forced_termination_mutex, timeout_us); 145 if (rc == ETIMEOUT) { 146 task_kill(test_task_id); 147 } 148 leave_no_kill: 149 fibril_mutex_unlock(&forced_termination_mutex); 150 return EOK; 97 151 } 98 152 … … 131 185 int status = TEST_OUTCOME_PASS; 132 186 133 task_id_t task_id; 134 int rc = task_spawnvf(&task_id, self_path, arguments, files); 187 int rc = task_spawnvf(&test_task_id, self_path, arguments, files); 135 188 if (rc != EOK) { 136 189 status = TEST_OUTCOME_ERROR; … … 138 191 } 139 192 193 test_running = 1; 194 195 fid_t killer_fibril = fibril_create(test_timeout_handler_fibril, test); 196 if (killer_fibril == 0) { 197 /* FIXME: somehow announce this problem. */ 198 task_kill(test_task_id); 199 } else { 200 fibril_add_ready(killer_fibril); 201 } 202 140 203 task_exit_t task_exit; 141 204 int task_retval; 142 rc = task_wait(t ask_id, &task_exit, &task_retval);205 rc = task_wait(test_task_id, &task_exit, &task_retval); 143 206 if (rc != EOK) { 144 207 status = TEST_OUTCOME_ERROR; … … 151 214 } 152 215 216 fibril_mutex_lock(&forced_termination_mutex); 217 test_running = 0; 218 fibril_condvar_signal(&forced_termination_cv); 219 fibril_mutex_unlock(&forced_termination_mutex); 220 153 221 read_all(tempfile, extra_output_buffer, OUTPUT_BUFFER_SIZE); 154 222 -
uspace/lib/pcut/src/os/stdc.c
reeb23f2d r134ac5d 54 54 return strchr(haystack, needle); 55 55 } 56 57 void pcut_str_error(int error, char *buffer, int size) { 58 const char *str = strerror(error); 59 if (str == NULL) { 60 str = "(strerror failure)"; 61 } 62 strncpy(buffer, str, size - 1); 63 /* Ensure correct termination. */ 64 buffer[size - 1] = 0; 65 } -
uspace/lib/pcut/src/os/unix.c
reeb23f2d r134ac5d 32 32 */ 33 33 34 /** We need _POSX_SOURCE because of kill(). */ 35 #define _POSIX_SOURCE 34 36 #include <stdlib.h> 35 37 #include <unistd.h> 36 38 #include <sys/types.h> 39 #include <signal.h> 37 40 #include <errno.h> 38 41 #include <assert.h> … … 51 54 static char extra_output_buffer[OUTPUT_BUFFER_SIZE]; 52 55 53 /** Prepare for a new test. */ 56 /** Prepare for a new test. 57 * 58 * @param test Test that is about to be run. 59 */ 54 60 static void before_test_start(pcut_item_t *test) { 55 61 pcut_report_test_start(test); … … 57 63 memset(error_message_buffer, 0, OUTPUT_BUFFER_SIZE); 58 64 memset(extra_output_buffer, 0, OUTPUT_BUFFER_SIZE); 65 } 66 67 /** PID of the forked process running the actual test. */ 68 static pid_t child_pid; 69 70 /** Signal handler that kills the child. 71 * 72 * @param sig Signal number. 73 */ 74 static void kill_child_on_alarm(int sig) { 75 PCUT_UNUSED(sig); 76 kill(child_pid, SIGKILL); 59 77 } 60 78 … … 124 142 125 143 int link_stdout[2], link_stderr[2]; 126 pid_t pid;127 144 128 145 int rc = pipe(link_stdout); … … 141 158 } 142 159 143 pid = fork();144 if ( pid == (pid_t)-1) {160 child_pid = fork(); 161 if (child_pid == (pid_t)-1) { 145 162 snprintf(error_message_buffer, OUTPUT_BUFFER_SIZE - 1, 146 163 "fork() failed: %s.", strerror(rc)); … … 149 166 } 150 167 151 if ( pid == 0) {168 if (child_pid == 0) { 152 169 /* We are the child. */ 153 170 dup2(link_stdout[1], STDOUT_FILENO); … … 164 181 close(link_stderr[1]); 165 182 183 signal(SIGALRM, kill_child_on_alarm); 184 alarm(pcut_get_test_timeout(test)); 185 166 186 size_t stderr_size = read_all(link_stderr[0], extra_output_buffer, OUTPUT_BUFFER_SIZE - 1); 167 187 read_all(link_stdout[0], extra_output_buffer, OUTPUT_BUFFER_SIZE - 1 - stderr_size); … … 169 189 int status; 170 190 wait(&status); 191 alarm(0); 171 192 172 193 rc = convert_wait_status_to_outcome(status); -
uspace/lib/pcut/src/print.c
reeb23f2d r134ac5d 32 32 */ 33 33 34 #include <pcut/ test.h>34 #include <pcut/pcut.h> 35 35 #include <stdio.h> 36 36 #include <stdlib.h> -
uspace/lib/pcut/src/report/tap.c
reeb23f2d r134ac5d 48 48 static int failed_tests_in_suite; 49 49 50 /** Initialize the tap output. */ 50 /** Initialize the TAP output. 51 * 52 * @param all_items Start of the list with all items. 53 */ 51 54 static void tap_init(pcut_item_t *all_items) { 52 55 int tests_total = pcut_count_tests(all_items); … … 56 59 } 57 60 58 /** Report that a suite was started. */ 61 /** Report that a suite was started. 62 * 63 * @param suite Suite that just started. 64 */ 59 65 static void tap_suite_start(pcut_item_t *suite) { 60 66 tests_in_suite = 0; … … 64 70 } 65 71 66 /** Report that a suite was completed. */ 72 /** Report that a suite was completed. 73 * 74 * @param suite Suite that just ended. 75 */ 67 76 static void tap_suite_done(pcut_item_t *suite) { 68 77 printf("#> Finished suite %s (failed %d of %d).\n", … … 104 113 } 105 114 106 /** Report a completed test. */ 115 /** Report a completed test. 116 * 117 * @param test Test that just finished. 118 * @param outcome Outcome of the test. 119 * @param error_message Buffer with error message. 120 * @param teardown_error_message Buffer with error message from a tear-down function. 121 * @param extra_output Extra output from the test (stdout). 122 */ 107 123 static void tap_test_done(pcut_item_t *test, int outcome, 108 124 const char *error_message, const char *teardown_error_message, -
uspace/lib/pcut/src/report/xml.c
reeb23f2d r134ac5d 48 48 static int failed_tests_in_suite; 49 49 50 /** Initialize the XML output. */ 50 /** Initialize the XML output. 51 * 52 * @param all_items Start of the list with all items. 53 */ 51 54 static void xml_init(pcut_item_t *all_items) { 52 55 printf("<?xml version=\"1.0\"?>\n"); … … 58 61 } 59 62 60 /** Report that a suite was started. */ 63 /** Report that a suite was started. 64 * 65 * @param suite Suite that just started. 66 */ 61 67 static void xml_suite_start(pcut_item_t *suite) { 62 68 tests_in_suite = 0; … … 66 72 } 67 73 68 /** Report that a suite was completed. */ 74 /** Report that a suite was completed. 75 * 76 * @param suite Suite that just ended. 77 */ 69 78 static void xml_suite_done(pcut_item_t *suite) { 70 79 printf("\t</suite><!-- %s: %d / %d -->\n", suite->suite.name, … … 111 120 } 112 121 113 /** Report a completed test. */ 122 /** Report a completed test. 123 * 124 * @param test Test that just finished. 125 * @param outcome Outcome of the test. 126 * @param error_message Buffer with error message. 127 * @param teardown_error_message Buffer with error message from a tear-down function. 128 * @param extra_output Extra output from the test (stdout). 129 */ 114 130 static void xml_test_done(pcut_item_t *test, int outcome, 115 131 const char *error_message, const char *teardown_error_message, -
uspace/lib/pcut/src/run.c
reeb23f2d r134ac5d 267 267 } 268 268 269 /** Tells time-out length for a given test. 270 * 271 * @param test Test for which the time-out is questioned. 272 * @return Timeout in seconds. 273 */ 274 int pcut_get_test_timeout(pcut_item_t *test) { 275 PCUT_UNUSED(test); 276 277 int timeout = PCUT_DEFAULT_TEST_TIMEOUT; 278 279 pcut_extra_t *extras = test->test.extras; 280 while (extras->type != PCUT_EXTRA_LAST) { 281 if (extras->type == PCUT_EXTRA_TIMEOUT) { 282 timeout = extras->timeout; 283 } 284 extras++; 285 } 286 287 return timeout; 288 } -
uspace/lib/pcut/tests/alloc.c
reeb23f2d r134ac5d 27 27 */ 28 28 29 #include <pcut/ test.h>29 #include <pcut/pcut.h> 30 30 #include <stdlib.h> 31 31 #include <stdio.h> -
uspace/lib/pcut/tests/asserts.c
reeb23f2d r134ac5d 27 27 */ 28 28 29 #include <pcut/ test.h>29 #include <pcut/pcut.h> 30 30 #include "tested.h" 31 31 … … 47 47 } 48 48 49 PCUT_TEST(str_equals_or_null_base) { 50 PCUT_ASSERT_STR_EQUALS_OR_NULL("xyz", "xyz"); 51 } 52 53 PCUT_TEST(str_equals_or_null_different) { 54 PCUT_ASSERT_STR_EQUALS_OR_NULL("abc", "xyz"); 55 } 56 57 PCUT_TEST(str_equals_or_null_one_null) { 58 PCUT_ASSERT_STR_EQUALS_OR_NULL(NULL, "xyz"); 59 } 60 61 PCUT_TEST(str_equals_or_null_both) { 62 PCUT_ASSERT_STR_EQUALS_OR_NULL(NULL, NULL); 63 } 64 65 PCUT_TEST(assert_true) { 66 PCUT_ASSERT_TRUE(42); 67 PCUT_ASSERT_TRUE(0); 68 } 69 70 PCUT_TEST(assert_false) { 71 PCUT_ASSERT_FALSE(0); 72 PCUT_ASSERT_FALSE(42); 73 } 74 49 75 PCUT_MAIN() -
uspace/lib/pcut/tests/asserts.expected
reeb23f2d r134ac5d 1 1.. 31 1..9 2 2 #> Starting suite Default. 3 3 not ok 1 int_equals failed … … 7 7 not ok 3 str_equals failed 8 8 # error: asserts.c:46: Expected <abc> but got <xyz> ("abc" != "xyz") 9 #> Finished suite Default (failed 3 of 3). 9 ok 4 str_equals_or_null_base 10 not ok 5 str_equals_or_null_different failed 11 # error: asserts.c:54: Expected <abc> but got <xyz> ("abc" != "xyz") 12 not ok 6 str_equals_or_null_one_null failed 13 # error: asserts.c:58: Expected <NULL> but got <xyz> (NULL != "xyz") 14 ok 7 str_equals_or_null_both 15 not ok 8 assert_true failed 16 # error: asserts.c:67: Expected true but got <0> 17 not ok 9 assert_false failed 18 # error: asserts.c:72: Expected false but got <42> 19 #> Finished suite Default (failed 7 of 9). -
uspace/lib/pcut/tests/manytests.c
reeb23f2d r134ac5d 27 27 */ 28 28 29 #include <pcut/ test.h>29 #include <pcut/pcut.h> 30 30 31 31 /* -
uspace/lib/pcut/tests/null.c
reeb23f2d r134ac5d 27 27 */ 28 28 29 #include <pcut/ test.h>29 #include <pcut/pcut.h> 30 30 #include "tested.h" 31 31 -
uspace/lib/pcut/tests/nullteardown.c
reeb23f2d r134ac5d 28 28 29 29 #include <stdio.h> 30 #include <pcut/ test.h>30 #include <pcut/pcut.h> 31 31 #include "tested.h" 32 32 -
uspace/lib/pcut/tests/printing.c
reeb23f2d r134ac5d 27 27 */ 28 28 29 #include <pcut/ test.h>29 #include <pcut/pcut.h> 30 30 #include "tested.h" 31 31 #include <stdio.h> -
uspace/lib/pcut/tests/simple.c
reeb23f2d r134ac5d 27 27 */ 28 28 29 #include <pcut/ test.h>29 #include <pcut/pcut.h> 30 30 #include "tested.h" 31 31 -
uspace/lib/pcut/tests/suite1.c
reeb23f2d r134ac5d 27 27 */ 28 28 29 #include <pcut/ test.h>29 #include <pcut/pcut.h> 30 30 #include "tested.h" 31 31 -
uspace/lib/pcut/tests/suite2.c
reeb23f2d r134ac5d 27 27 */ 28 28 29 #include <pcut/ test.h>29 #include <pcut/pcut.h> 30 30 #include "tested.h" 31 31 -
uspace/lib/pcut/tests/suite_all.c
reeb23f2d r134ac5d 27 27 */ 28 28 29 #include <pcut/ test.h>29 #include <pcut/pcut.h> 30 30 31 31 PCUT_INIT -
uspace/lib/pcut/tests/suites.c
reeb23f2d r134ac5d 27 27 */ 28 28 29 #include <pcut/ test.h>29 #include <pcut/pcut.h> 30 30 #include "tested.h" 31 31 -
uspace/lib/pcut/tests/teardown.c
reeb23f2d r134ac5d 28 28 29 29 #include <stdio.h> 30 #include <pcut/ test.h>30 #include <pcut/pcut.h> 31 31 #include "tested.h" 32 32 -
uspace/lib/pcut/tests/tests.mak
reeb23f2d r134ac5d 27 27 # 28 28 29 TEST_DEPS = $(TEST_BASE)tested.o $(PCUT_LIB)29 TEST_DEPS = $(TEST_BASE)tested.o 30 30 31 31 TEST_APPS = \ 32 32 $(TEST_BASE)alloc.$(EXE_EXT) \ 33 33 $(TEST_BASE)asserts.$(EXE_EXT) \ 34 $(TEST_BASE)errno.$(EXE_EXT) \ 34 35 $(TEST_BASE)manytests.$(EXE_EXT) \ 35 36 $(TEST_BASE)multisuite.$(EXE_EXT) \ … … 38 39 $(TEST_BASE)printing.$(EXE_EXT) \ 39 40 $(TEST_BASE)simple.$(EXE_EXT) \ 41 $(TEST_BASE)skip.$(EXE_EXT) \ 40 42 $(TEST_BASE)suites.$(EXE_EXT) \ 41 $(TEST_BASE)teardown.$(EXE_EXT) 43 $(TEST_BASE)teardown.$(EXE_EXT) \ 44 $(TEST_BASE)timeout.$(EXE_EXT) 42 45 43 46 check-build: $(TEST_APPS) … … 46 49 47 50 check-clean: 48 rm -f $(TEST_BASE)*.o $(TEST_BASE)*. $(EXE_EXT) $(TEST_BASE)*.got51 rm -f $(TEST_BASE)*.o $(TEST_BASE)*.pcut.c $(TEST_BASE)*.$(EXE_EXT) $(TEST_BASE)*.got 49 52 50 53 $(TEST_BASE)%.$(EXE_EXT): $(TEST_DEPS) 51 $( CC) -o $@ $^ $(TEST_LDFLAGS)54 $(LD) -o $@ $^ $(TEST_LDFLAGS) 52 55 53 $(TEST_BASE)alloc.$(EXE_EXT): $(TEST_BASE)alloc.o 54 $(TEST_BASE)asserts.$(EXE_EXT): $(TEST_BASE)asserts.o 55 $(TEST_BASE)manytests.$(EXE_EXT): $(TEST_BASE)manytests.o 56 $(TEST_BASE)multisuite.$(EXE_EXT): $(TEST_BASE)suite_all.o $(TEST_BASE)suite1.o $(TEST_BASE)suite2.o 57 $(TEST_BASE)null.$(EXE_EXT): $(TEST_BASE)null.o 58 $(TEST_BASE)nullteardown.$(EXE_EXT): $(TEST_BASE)nullteardown.o 59 $(TEST_BASE)printing.$(EXE_EXT): $(TEST_BASE)printing.o 60 $(TEST_BASE)simple.$(EXE_EXT): $(TEST_BASE)simple.o 61 $(TEST_BASE)suites.$(EXE_EXT): $(TEST_BASE)suites.o 62 $(TEST_BASE)teardown.$(EXE_EXT): $(TEST_BASE)teardown.o 56 $(TEST_BASE)alloc.$(EXE_EXT): $(TEST_BASE)alloc.o $(PCUT_LIB) 57 $(TEST_BASE)asserts.$(EXE_EXT): $(TEST_BASE)asserts.o $(PCUT_LIB) 58 $(TEST_BASE)errno.$(EXE_EXT): $(TEST_BASE)errno.o $(PCUT_LIB) 59 $(TEST_BASE)manytests.$(EXE_EXT): $(TEST_BASE)manytests.o $(PCUT_LIB) 60 $(TEST_BASE)multisuite.$(EXE_EXT): $(TEST_BASE)suite_all.o $(TEST_BASE)suite1.o $(TEST_BASE)suite2.o $(PCUT_LIB) 61 $(TEST_BASE)null.$(EXE_EXT): $(TEST_BASE)null.o $(PCUT_LIB) 62 $(TEST_BASE)nullteardown.$(EXE_EXT): $(TEST_BASE)nullteardown.o $(PCUT_LIB) 63 $(TEST_BASE)printing.$(EXE_EXT): $(TEST_BASE)printing.o $(PCUT_LIB) 64 $(TEST_BASE)simple.$(EXE_EXT): $(TEST_BASE)simple.o $(PCUT_LIB) 65 $(TEST_BASE)skip.$(EXE_EXT): $(TEST_BASE)skip.o $(PCUT_LIB) 66 $(TEST_BASE)suites.$(EXE_EXT): $(TEST_BASE)suites.o $(PCUT_LIB) 67 $(TEST_BASE)teardown.$(EXE_EXT): $(TEST_BASE)teardown.o $(PCUT_LIB) 68 $(TEST_BASE)timeout.$(EXE_EXT): $(TEST_BASE)timeout.o $(PCUT_LIB) 63 69 70 71 ifeq ($(NEEDS_PREPROC),y) 72 $(TEST_BASE)%.o: $(TEST_BASE)%.pcut.c 73 $(CC) -c -o $@ $(TEST_CFLAGS) $< 74 75 $(TEST_BASE)%.pcut.c: $(TEST_BASE)%.c $(PCUT_PREPROC) 76 $(CC) -E $(TEST_CFLAGS) $< | $(PCUT_PREPROC) >$@ 77 else 64 78 $(TEST_BASE)%.o: $(TEST_BASE)%.c 65 79 $(CC) -c -o $@ $(TEST_CFLAGS) $< 80 endif -
uspace/lib/pcut/unix.mak
reeb23f2d r134ac5d 30 30 OBJ_EXT = o 31 31 PCUT_LIB = libpcut.a 32 PCUT_PREPROC = ./pcut.bin 32 33 33 34 # Installation paths … … 39 40 40 41 PCUT_OBJECTS := $(addsuffix .o,$(basename $(PCUT_SOURCES))) 42 PCUT_PREPROC_OBJECTS := $(addsuffix .o,$(basename $(PCUT_PREPROC_SOURCES))) 41 43 42 44 # Take care of dependencies … … 53 55 EXE_EXT = run 54 56 TEST_CFLAGS = $(PCUT_CFLAGS) 55 TEST_LDFLAGS = -L. -lpcut57 TEST_LDFLAGS = 56 58 -include tests/tests.mak 57 59 TEST_APPS_BASENAMES := $(basename $(TEST_APPS)) … … 75 77 # 76 78 platform-clean: 77 rm -f libpcut.a $(DEPEND)79 rm -f $(DEPEND) $(PCUT_LIB) $(PCUT_PREPROC) 78 80 79 81 # … … 83 85 $(AR) rc $@ $(PCUT_OBJECTS) 84 86 $(RANLIB) $@ 87 88 $(PCUT_PREPROC): $(PCUT_PREPROC_OBJECTS) 89 $(LD) $(LDFLAGS) -o $@ $(PCUT_PREPROC_OBJECTS) 85 90 86 91 %.o: $(DEPEND) -
uspace/lib/posix/test/main.c
reeb23f2d r134ac5d 27 27 */ 28 28 29 #include <pcut/ test.h>29 #include <pcut/pcut.h> 30 30 31 31 PCUT_INIT -
uspace/lib/posix/test/scanf.c
reeb23f2d r134ac5d 33 33 #include "posix/stdio.h" 34 34 35 #include <pcut/ test.h>35 #include <pcut/pcut.h> 36 36 37 37
Note:
See TracChangeset
for help on using the changeset viewer.