| 476 | } |
| 477 | |
| 478 | void fxCountResult(txPool* pool, txContext* context, int success, int pending, char* message) |
| 479 | { |
| 480 | txResult* result = context->result; |
| 481 | fxLockMutex(&(pool->resultMutex)); |
| 482 | if (!success && !pending) { |
| 483 | char* name = c_strrchr(context->path, mxSeparator) + 1; |
| 484 | txResult* former = C_NULL; |
| 485 | txResult* current = result->first; |
| 486 | int comparison = 1; |
| 487 | while (current) { |
| 488 | comparison = c_strcmp(current->path, name); |
| 489 | if (comparison >= 0) |
| 490 | break; |
| 491 | comparison = 1; |
| 492 | former = current; |
| 493 | current = current->next; |
| 494 | } |
| 495 | if (comparison > 0) { |
| 496 | txResult* failure = fxNewResult(name, message + 2); |
| 497 | failure->next = current; |
| 498 | failure->parent = result; |
| 499 | failure->file.count = 1; |
| 500 | if (former) |
| 501 | former->next = failure; |
| 502 | else |
| 503 | result->first = failure; |
| 504 | } |
| 505 | else if (comparison == 0) |
| 506 | current->file.count++; |
| 507 | } |
| 508 | while (result) { |
| 509 | result->folder.testCount++; |
| 510 | result->folder.successCount += success; |
| 511 | result->folder.pendingCount += pending; |
| 512 | result = result->parent; |
| 513 | } |
| 514 | fxUnlockMutex(&(pool->resultMutex)); |
| 515 | } |
| 516 | |
| 517 | void fxDefaultFeatures(txPool* pool) |
| 518 | { |
no test coverage detected