Skip to content

Commit 6bb3e0f

Browse files
Merge pull request #82 from dreamer-coding/main
Fossil Test next step
2 parents a356642 + 363429e commit 6bb3e0f

40 files changed

+6829
-3506
lines changed

.github/workflows/meson_ci.yml

Lines changed: 7 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,8 @@ jobs:
5656
- name: Configure
5757
run: meson setup builddir_msvc_${{ matrix.msvc_version }} --fatal-meson-warnings -Dwerror=true -Dwith_test=enabled -Dwarning_level=3
5858

59-
- name: Compile
60-
run: meson compile -C builddir_msvc_${{ matrix.msvc_version }}
61-
6259
- name: Run Tests
63-
run: meson test -C builddir_msvc_${{ matrix.msvc_version }} -v --test-arg='summary ci'
64-
65-
- name: Upload Test Log
66-
if: failure()
67-
uses: actions/upload-artifact@v4
68-
with:
69-
name: windows_msvc_${{ matrix.msvc_version }}_meson_testlog
70-
path: builddir_msvc_${{ matrix.msvc_version }}/meson-logs/testlog.txt
60+
run: meson test -C builddir_msvc_${{ matrix.msvc_version }} -v --test-args='verbose=ci'
7161

7262
build_macosx:
7363
name: Building on macOS with Xcode ${{ matrix.xcode_version }}
@@ -96,18 +86,8 @@ jobs:
9686
- name: Configure
9787
run: meson setup builddir --fatal-meson-warnings -Dwerror=true -Dwith_test=enabled -Dwarning_level=3
9888

99-
- name: Compile
100-
run: meson compile -C builddir
101-
10289
- name: Run Tests
103-
run: meson test -C builddir -v --test-arg='summary ci'
104-
105-
- name: Upload Test Log
106-
if: failure()
107-
uses: actions/upload-artifact@v4
108-
with:
109-
name: macos_xcode_${{ matrix.xcode_version }}_meson_testlog
110-
path: builddir/meson-logs/testlog.txt
90+
run: meson test -C builddir -v --test-args='verbose=ci'
11191

11292
build_msys:
11393
name: Building on MSYS ${{ matrix.architecture }}
@@ -143,18 +123,8 @@ jobs:
143123
- name: Configure
144124
run: meson setup builddir --fatal-meson-warnings -Dwerror=true -Dwith_test=enabled -Dwarning_level=3
145125

146-
- name: Compile
147-
run: meson compile -C builddir
148-
149126
- name: Run Tests
150-
run: meson test -C builddir -v --test-arg='summary ci'
151-
152-
- name: Upload Test Log
153-
if: failure()
154-
uses: actions/upload-artifact@v4
155-
with:
156-
name: msys_${{ matrix.architecture }}_meson_testlog
157-
path: builddir/meson-logs/testlog.txt
127+
run: meson test -C builddir -v --test-args='verbose=ci'
158128

159129
build_mingw:
160130
name: Building on MinGW ${{ matrix.architecture }}
@@ -194,18 +164,8 @@ jobs:
194164
- name: Configure
195165
run: meson setup builddir --fatal-meson-warnings -Dwerror=true -Dwith_test=enabled -Dwarning_level=3
196166

197-
- name: Compile
198-
run: meson compile -C builddir
199-
200167
- name: Run Tests
201-
run: meson test -C builddir -v --test-arg='summary ci'
202-
203-
- name: Upload Test Log
204-
if: failure()
205-
uses: actions/upload-artifact@v4
206-
with:
207-
name: mingw_${{ matrix.architecture }}_meson_testlog
208-
path: builddir/meson-logs/testlog.txt
168+
run: meson test -C builddir -v --test-args='verbose=ci'
209169

210170
build_posix:
211171
name: Build on Linux ${{ matrix.distro }}
@@ -247,8 +207,7 @@ jobs:
247207
/bin/bash -c "
248208
sudo apt update
249209
meson setup builddir --fatal-meson-warnings -Dwerror=true -Dwith_test=enabled -Dwarning_level=3
250-
meson compile -C builddir
251-
meson test -C builddir -v --test-arg='summary ci'"
210+
meson test -C builddir -v --test-args='verbose=ci'"
252211
253212
build_cross:
254213
name: Building on Bedrock ${{ matrix.architecture }}
@@ -342,9 +301,9 @@ jobs:
342301
343302
- name: Build the Project
344303
run: |
345-
meson compile -C builddir -v
304+
meson compile -C builddir
346305
347306
- name: Test the Project
348307
run: |
349-
meson test -C builddir -v --test-arg='summary ci'
308+
meson test -C builddir -v --test-args='verbose=ci'
350309

README.md

Lines changed: 50 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,17 @@
11
# ***Fossil Test by Fossil Logic***
22

3-
**Fossil Test** is a powerful and flexible unit testing, mocking, and benchmarking suite developed by Fossil Logic to ensure the reliability, clarity, and performance of **C**, **C++**, and **Python** projects. Supporting multiple development methodologies—including Behavior-Driven Development (BDD), Domain-Driven Design (DDD), and Test-Driven Development (TDD)—Fossil Test offers a versatile foundation for building high-quality, maintainable test suites across diverse workflows. Starting with version 1.1.8, it integrates **Jellyfish AI**, an intelligent system designed to apply AI where it makes sense—enhancing test coverage insights, feedback clarity, and overall developer experience.
4-
5-
The Fossil suite consists of three complementary frameworks to streamline the development and testing process:
6-
7-
- **Fossil Test**: The core unit testing framework that enables developers to create, manage, and execute unit tests effectively, ensuring each component functions as expected.
8-
- **Fossil Mock**: A dedicated mocking library that simulates complex dependencies. Using mock objects, developers can isolate and thoroughly test individual components, improving the precision and reliability of test coverage.
9-
- **Fossil Mark**: A benchmarking tool that provides detailed performance insights by measuring execution time, identifying bottlenecks, and offering in-depth reporting to optimize code efficiency.
10-
11-
Together, **Fossil Test**, **Fossil Mock**, and **Fossil Mark** — now supercharged with **Jellyfish AI** — offer a powerful, integrated toolkit for developing, testing, and optimizing robust software, making them an essential asset for developers committed to quality and performance.
12-
13-
---
14-
15-
## **Key Features**
3+
**Fossil Test** is a comprehensive suite for unit testing, mocking, and benchmarking, designed by Fossil Logic to enhance the reliability, clarity, and performance of **C**, **C++**, and **Python** projects. Supporting methodologies like Behavior-Driven Development (BDD), Domain-Driven Design (DDD), and Test-Driven Development (TDD), it caters to diverse workflows with features such as a robust Command-Line Interface (CLI), advanced mocking tools, integrated benchmarking, and parallel test execution. With additional capabilities like customizable output themes, tag-based test filtering, and detailed performance insights, **Fossil Test**, alongside **Fossil Mock**, **Fossil Mark**, and **Fossil Sanity Kit** for testing command-line operations, forms a powerful toolkit for building, testing, and optimizing high-quality, maintainable software.
164

175
| Feature | Description |
186
|-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|
19-
| **Jellyfish AI Integration** | Intelligent assistant for analyzing test coverage, diagnostics, and improving test clarity (available from v1.1.8 onward). |
20-
| **BDD, DDD, and TDD Support** | Supports Behavior-Driven, Domain-Driven, and Test-Driven Development styles, catering to various project methodologies. |
21-
| **Comprehensive Unit Testing** | A full suite of tools for creating, managing, and executing unit tests, ensuring that individual units of code behave as expected. |
22-
| **Mocking Capabilities** | Powerful mocking features allow developers to simulate complex dependencies, ensuring focused and reliable unit tests. |
23-
| **Performance Tracking** | Measures and reports the performance of each test case, helping developers optimize test execution time and performance. |
24-
| **Command-Line Interface (CLI)** | A powerful CLI for running tests, generating reports, and managing the test suite, supporting automation and integration workflows. |
25-
26-
---
27-
28-
*Note: Jellyfish AI is developed as part of the Fossil Logic ecosystem and is tightly integrated with Fossil Test to offer non-intrusive, intelligent guidance throughout the testing process.*
7+
| **Command-Line Interface (CLI)** | A robust CLI for executing tests, managing test suites, and generating reports, enabling seamless automation and integration workflows. |
8+
| **Support for Multiple Testing Styles** | Fully compatible with Behavior-Driven Development (BDD), Domain-Driven Design (DDD), and Test-Driven Development (TDD) methodologies. |
9+
| **Mocking Capabilities** | Advanced mocking tools to simulate complex dependencies, ensuring isolated and precise unit testing. |
10+
| **Benchmarking Tools** | Integrated benchmarking features to measure execution time, identify bottlenecks, and optimize code performance. |
11+
| **Sanity Kit for Command Tests** | A specialized suite for validating command-line tools and scripts, ensuring consistent behavior across environments. |
12+
| **Customizable Output Themes** | Multiple output themes (e.g., fossil, catch, doctest) to tailor the appearance of test results. |
13+
| **Tag-Based Test Filtering** | Organize and execute tests based on custom tags for better test management. |
14+
| **Detailed Performance Insights** | Comprehensive reporting on test execution times and resource usage to aid in performance optimization. |
2915

3016
---
3117

@@ -57,7 +43,7 @@ To get started with Fossil Test, ensure you have the following installed:
5743
# ======================
5844
[wrap-git]
5945
url = https://github.com/fossillogic/fossil-test.git
60-
revision = v1.2.0
46+
revision = v1.2.1
6147

6248
[provide]
6349
fossil-test = fossil_test_dep
@@ -83,14 +69,46 @@ The Fossil Test CLI provides an efficient way to run and manage tests directly f
8369
|----------------------------------|-----------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|
8470
| `--version` | Displays the current version of Fossil Test. | Useful for verifying the version of the tool in use. |
8571
| `--help` | Shows help message with usage instructions. | Provides a quick reference for all available commands. |
86-
| `--info` | Displays detailed information about the test run. | Includes information such as test count, duration, and configuration. |
87-
| `reverse [enable/disable]` | Enables or disables reverse order of test execution. | Useful for debugging or ensuring the tests don't depend on execution order. |
88-
| `shuffle [enable/disable]` | Enables or disables shuffling of test execution order. | Helps identify order-dependent issues in the test suite. |
89-
| `dry-run [enable/disable]` | Enables or disables dry run mode, showing which tests will execute without running them. | Ideal for verifying test selection criteria before actual execution. |
90-
| `repeat <number>` | Repeats the test suite a specified number of times. | Handy for stress-testing or reproducing intermittent failures. |
91-
| `color [enable/disable]` | Enables or disables colored output. | Enhances readability in supported terminals. |
92-
| `format <plain, ci, jellyfish>` | Selects the output format for test results. | Affects how test data is displayed; useful for visual or machine-parsed output. |
93-
| `summary <plain, ci, jellyfish>` | Sets the level of summary output after test execution. | `ci` is minimal, `jellyfish` is smart test mode, and `plain` is default classic. |
72+
| `--dry-run` | Perform a dry run without executing commands. | Ideal for verifying test selection criteria before actual execution. |
73+
| `--host` | Shows info about the current host system. | Useful for looking up system you are running test on. |
74+
| `run` | Execute tests with optional parameters. | Supports additional options like `--fail-fast` and `--repeat`. |
75+
| `filter` | Filter tests based on criteria. | Options include filtering by test name, suite name, or tags. |
76+
| `sort` | Sort tests by specified criteria. | Allows sorting in ascending or descending order. |
77+
| `shuffle` | Shuffle tests with optional parameters. | Includes options for specifying a seed or shuffle criteria. |
78+
| `color=<mode>` | Set color mode (enable, disable, auto). | Enhances readability in supported terminals. |
79+
| `theme=<name>` | Set the theme (fossil, catch, doctest, etc.). | Customizes the appearance of test output. |
80+
| `verbose=<level>` | Set verbosity level (plain, ci, doge). | Adjusts the level of detail in test output. |
81+
82+
### Run Command Options
83+
| Option | Description | Notes |
84+
|----------------------|-----------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|
85+
| `--fail-fast` | Stop on the first failure. | Useful for quickly identifying and addressing critical issues. |
86+
| `--only <test>` | Run only the specified test. | Focuses execution on a single test for debugging or validation purposes. |
87+
| `--repeat <count>` | Repeat the test a specified number of times. | Useful for stress testing or verifying consistency across multiple runs. |
88+
| `--help` | Show help for the run command. | Provides detailed usage instructions for the `run` command. |
89+
90+
### Filter Command Options
91+
| Option | Description | Notes |
92+
|----------------------|-----------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|
93+
| `--test-name <name>` | Filter by test name. | Enables precise targeting of individual tests. |
94+
| `--suite-name <name>`| Filter by suite name. | Useful for running all tests within a specific suite. |
95+
| `--tag <tag>` | Filter by tag. | Allows grouping and execution of tests based on custom tags. |
96+
| `--help` | Show help for the filter command. | Provides detailed usage instructions for the `filter` command. |
97+
98+
### Sort Command Options
99+
| Option | Description | Notes |
100+
|----------------------|-----------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|
101+
| `--by <criteria>` | Sort by specified criteria. | Common criteria include execution time, name, or priority. |
102+
| `--order <asc/desc>` | Sort in ascending or descending order. | Helps organize test execution based on preferred order. |
103+
| `--help` | Show help for the sort command. | Provides detailed usage instructions for the `sort` command. |
104+
105+
### Shuffle Command Options
106+
| Option | Description |
107+
|----------------------|-----------------------------------------------------------------------------------------------|
108+
| `--seed <seed>` | Specify the seed for shuffling. |
109+
| `--count <count>` | Number of items to shuffle. |
110+
| `--by <criteria>` | Shuffle by specified criteria. |
111+
| `--help` | Show help for the shuffle command. |
94112

95113
## Configure Build Options
96114

0 commit comments

Comments
 (0)