1 /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * Copyright (C) 2008-2014 Kouhei Sutou <kou@clear-code.com> 4 * 5 * This library is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU Lesser General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 * 18 */ 19 20 #ifndef __CUT_RUN_CONTEXT_H__ 21 #define __CUT_RUN_CONTEXT_H__ 22 23 #include <glib-object.h> 24 25 #include <cutter/cut-test-suite.h> 26 #include <cutter/cut-test-iterator.h> 27 #include <cutter/cut-loader-customizer.h> 28 #include <cutter/cut-private.h> 29 30 G_BEGIN_DECLS 31 32 #define CUT_TYPE_RUN_CONTEXT (cut_run_context_get_type ()) 33 #define CUT_RUN_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CUT_TYPE_RUN_CONTEXT, CutRunContext)) 34 #define CUT_RUN_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CUT_TYPE_RUN_CONTEXT, CutRunContextClass)) 35 #define CUT_IS_RUN_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CUT_TYPE_RUN_CONTEXT)) 36 #define CUT_IS_RUN_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CUT_TYPE_RUN_CONTEXT)) 37 #define CUT_RUN_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), CUT_TYPE_RUN_CONTEXT, CutRunContextClass)) 38 39 typedef enum { 40 CUT_ORDER_NONE_SPECIFIED, 41 CUT_ORDER_NAME_ASCENDING, 42 CUT_ORDER_NAME_DESCENDING 43 } CutOrder; 44 45 typedef struct _CutRunContextClass CutRunContextClass; 46 47 struct _CutRunContext 48 { 49 GObject object; 50 }; 51 52 struct _CutRunContextClass 53 { 54 GObjectClass parent_class; 55 56 void (*start_run) (CutRunContext *context); 57 void (*ready_test_suite) (CutRunContext *context, 58 CutTestSuite *test_suite, 59 guint n_test_cases, 60 guint n_tests); 61 void (*start_test_suite) (CutRunContext *context, 62 CutTestSuite *test_suite); 63 void (*ready_test_case) (CutRunContext *context, 64 CutTestCase *test_case, 65 guint n_tests); 66 void (*start_test_case) (CutRunContext *context, 67 CutTestCase *test_case); 68 void (*ready_test_iterator) (CutRunContext *context, 69 CutTestIterator *test_iterator, 70 guint n_tests); 71 void (*start_test_iterator) (CutRunContext *context, 72 CutTestIterator *test_iterator); 73 void (*start_test) (CutRunContext *context, 74 CutTest *test, 75 CutTestContext *test_context); 76 void (*start_iterated_test) (CutRunContext *context, 77 CutIteratedTest *iterated_test, 78 CutTestContext *test_context); 79 80 void (*pass_assertion) (CutRunContext *context, 81 CutTest *test, 82 CutTestContext *test_context); 83 void (*success_test) (CutRunContext *context, 84 CutTest *test, 85 CutTestContext *test_context, 86 CutTestResult *result); 87 void (*failure_test) (CutRunContext *context, 88 CutTest *test, 89 CutTestContext *test_context, 90 CutTestResult *result); 91 void (*error_test) (CutRunContext *context, 92 CutTest *test, 93 CutTestContext *test_context, 94 CutTestResult *result); 95 void (*pending_test) (CutRunContext *context, 96 CutTest *test, 97 CutTestContext *test_context, 98 CutTestResult *result); 99 void (*notification_test) (CutRunContext *context, 100 CutTest *test, 101 CutTestContext *test_context, 102 CutTestResult *result); 103 void (*omission_test) (CutRunContext *context, 104 CutTest *test, 105 CutTestContext *test_context, 106 CutTestResult *result); 107 void (*crash_test) (CutRunContext *context, 108 CutTest *test, 109 CutTestContext *test_context, 110 CutTestResult *result); 111 void (*complete_test) (CutRunContext *context, 112 CutTest *test, 113 CutTestContext *test_context, 114 gboolean success); 115 void (*complete_iterated_test) 116 (CutRunContext *context, 117 CutIteratedTest *iterated_test, 118 CutTestContext *test_context, 119 gboolean success); 120 121 void (*success_test_iterator) 122 (CutRunContext *context, 123 CutTestIterator *test_iterator, 124 CutTestResult *result); 125 void (*failure_test_iterator) 126 (CutRunContext *context, 127 CutTestIterator *test_iterator, 128 CutTestResult *result); 129 void (*error_test_iterator) (CutRunContext *context, 130 CutTestIterator *test_iterator, 131 CutTestResult *result); 132 void (*pending_test_iterator) 133 (CutRunContext *context, 134 CutTestIterator *test_iterator, 135 CutTestResult *result); 136 void (*notification_test_iterator) 137 (CutRunContext *context, 138 CutTestIterator *test_iterator, 139 CutTestResult *result); 140 void (*omission_test_iterator) 141 (CutRunContext *context, 142 CutTestIterator *test_iterator, 143 CutTestResult *result); 144 void (*crash_test_iterator) (CutRunContext *context, 145 CutTestIterator *test_iterator, 146 CutTestResult *result); 147 void (*complete_test_iterator) 148 (CutRunContext *context, 149 CutTestIterator *test_iterator, 150 gboolean success); 151 152 void (*success_test_case) (CutRunContext *context, 153 CutTestCase *test_case, 154 CutTestResult *result); 155 void (*failure_test_case) (CutRunContext *context, 156 CutTestCase *test_case, 157 CutTestResult *result); 158 void (*error_test_case) (CutRunContext *context, 159 CutTestCase *test_case, 160 CutTestResult *result); 161 void (*pending_test_case) (CutRunContext *context, 162 CutTestCase *test_case, 163 CutTestResult *result); 164 void (*notification_test_case) 165 (CutRunContext *context, 166 CutTestCase *test_case, 167 CutTestResult *result); 168 void (*omission_test_case) (CutRunContext *context, 169 CutTestCase *test_case, 170 CutTestResult *result); 171 void (*crash_test_case) (CutRunContext *context, 172 CutTestCase *test_case, 173 CutTestResult *result); 174 175 void (*failure_in_test_case)(CutRunContext *context, 176 CutTestCase *test_case, 177 CutTestResult *result); 178 void (*error_in_test_case) (CutRunContext *context, 179 CutTestCase *test_case, 180 CutTestResult *result); 181 void (*pending_in_test_case)(CutRunContext *context, 182 CutTestCase *test_case, 183 CutTestResult *result); 184 void (*notification_in_test_case) 185 (CutRunContext *context, 186 CutTestCase *test_case, 187 CutTestResult *result); 188 void (*omission_in_test_case) 189 (CutRunContext *context, 190 CutTestCase *test_case, 191 CutTestResult *result); 192 void (*crash_in_test_case) (CutRunContext *context, 193 CutTestCase *test_case, 194 CutTestResult *result); 195 196 void (*complete_test_case) (CutRunContext *context, 197 CutTestCase *test_case, 198 gboolean success); 199 200 void (*crash_test_suite) (CutRunContext *context, 201 CutTestSuite *test_suite, 202 CutTestResult *result); 203 204 void (*complete_test_suite) (CutRunContext *context, 205 CutTestSuite *test_suite, 206 gboolean success); 207 208 void (*complete_run) (CutRunContext *context, 209 gboolean success); 210 211 void (*error) (CutRunContext *context, 212 GError *error); 213 }; 214 215 GType cut_run_context_get_type (void) G_GNUC_CONST; 216 217 void cut_run_context_set_test_directory (CutRunContext *context, 218 const gchar *directory); 219 const gchar *cut_run_context_get_test_directory (CutRunContext *context); 220 void cut_run_context_set_source_directory (CutRunContext *context, 221 const gchar *directory); 222 const gchar *cut_run_context_get_source_directory (CutRunContext *context); 223 void cut_run_context_set_log_directory (CutRunContext *context, 224 const gchar *directory); 225 const gchar *cut_run_context_get_log_directory (CutRunContext *context); 226 227 void cut_run_context_set_multi_thread (CutRunContext *context, 228 gboolean use_multi_thread); 229 gboolean cut_run_context_get_multi_thread (CutRunContext *context); 230 gboolean cut_run_context_is_multi_thread (CutRunContext *context); 231 232 void cut_run_context_set_max_threads (CutRunContext *context, 233 gint max_threads); 234 gint cut_run_context_get_max_threads (CutRunContext *context); 235 236 void cut_run_context_set_handle_signals (CutRunContext *context, 237 gboolean handle_signals); 238 gboolean cut_run_context_get_handle_signals (CutRunContext *context); 239 240 void cut_run_context_set_exclude_files (CutRunContext *context, 241 const gchar **filenames); 242 const gchar **cut_run_context_get_exclude_files (CutRunContext *context); 243 void cut_run_context_set_exclude_directories 244 (CutRunContext *context, 245 const gchar **directory_names); 246 const gchar **cut_run_context_get_exclude_directories 247 (CutRunContext *context); 248 void cut_run_context_set_target_test_case_names 249 (CutRunContext *context, 250 const gchar **names); 251 const gchar **cut_run_context_get_target_test_case_names(CutRunContext *context); 252 void cut_run_context_set_target_test_names(CutRunContext *context, 253 const gchar **names); 254 const gchar **cut_run_context_get_target_test_names(CutRunContext *context); 255 void cut_run_context_add_loader_customizer(CutRunContext *context, 256 CutLoaderCustomizer *customizer); 257 const GList *cut_run_context_get_loader_customizers 258 (CutRunContext *context); 259 260 guint cut_run_context_get_n_tests (CutRunContext *context); 261 guint cut_run_context_get_n_successes (CutRunContext *context); 262 guint cut_run_context_get_n_assertions (CutRunContext *context); 263 guint cut_run_context_get_n_failures (CutRunContext *context); 264 guint cut_run_context_get_n_errors (CutRunContext *context); 265 guint cut_run_context_get_n_pendings (CutRunContext *context); 266 guint cut_run_context_get_n_notifications (CutRunContext *context); 267 guint cut_run_context_get_n_omissions (CutRunContext *context); 268 CutTestResultStatus cut_run_context_get_status (CutRunContext *context); 269 270 gdouble cut_run_context_get_elapsed (CutRunContext *context); 271 gdouble cut_run_context_get_total_elapsed (CutRunContext *context); 272 273 const GList *cut_run_context_get_results (CutRunContext *context); 274 275 gboolean cut_run_context_is_crashed (CutRunContext *context); 276 277 void cut_run_context_cancel (CutRunContext *context); 278 gboolean cut_run_context_is_canceled (CutRunContext *context); 279 280 CutTestSuite *cut_run_context_create_test_suite (CutRunContext *context); 281 CutTestSuite *cut_run_context_get_test_suite (CutRunContext *context); 282 void cut_run_context_set_test_suite (CutRunContext *context, 283 CutTestSuite *suite); 284 285 void cut_run_context_set_test_case_order (CutRunContext *context, 286 CutOrder order); 287 CutOrder cut_run_context_get_test_case_order (CutRunContext *context); 288 GList *cut_run_context_sort_test_cases (CutRunContext *context, 289 GList *test_cases); 290 291 void cut_run_context_add_listener (CutRunContext *context, 292 CutListener *listener); 293 void cut_run_context_remove_listener (CutRunContext *context, 294 CutListener *listener); 295 296 void cut_run_context_attach_listeners (CutRunContext *context); 297 void cut_run_context_detach_listeners (CutRunContext *context); 298 299 gchar *cut_run_context_build_source_filename(CutRunContext *context, 300 const gchar *filename); 301 302 gboolean cut_run_context_start (CutRunContext *context); 303 void cut_run_context_start_async (CutRunContext *context); 304 305 gboolean cut_run_context_emit_complete_run (CutRunContext *context, 306 gboolean success); 307 void cut_run_context_emit_error (CutRunContext *context, 308 GQuark domain, 309 gint code, 310 GError *sub_error, 311 const gchar *format, 312 ...) G_GNUC_PRINTF(5, 6); 313 314 void cut_run_context_set_command_line_args(CutRunContext *context, 315 gchar **args); 316 const gchar **cut_run_context_get_command_line_args(CutRunContext *context); 317 318 void cut_run_context_delegate_signals (CutRunContext *context, 319 CutRunContext *other_context); 320 gboolean cut_run_context_is_completed (CutRunContext *context); 321 void cut_run_context_set_fatal_failures (CutRunContext *context, 322 gboolean fatal_failures); 323 gboolean cut_run_context_get_fatal_failures (CutRunContext *context); 324 void cut_run_context_set_keep_opening_modules 325 (CutRunContext *context, 326 gboolean keep_opening); 327 gboolean cut_run_context_get_keep_opening_modules 328 (CutRunContext *context); 329 void cut_run_context_set_enable_convenience_attribute_definition 330 (CutRunContext *context, 331 gboolean enable_convenience_attribute_definition); 332 gboolean cut_run_context_get_enable_convenience_attribute_definition 333 (CutRunContext *context); 334 335 void cut_run_context_set_stop_before_test (CutRunContext *context, 336 gboolean stop); 337 gboolean cut_run_context_get_stop_before_test (CutRunContext *context); 338 339 340 G_END_DECLS 341 342 #endif /* __CUT_RUN_CONTEXT_H__ */ 343 344 /* 345 vi:ts=4:nowrap:ai:expandtab:sw=4 346 */ 347