ringtest

79 views
Skip to first unread message

Azzeddine Remmal

unread,
Oct 4, 2026, 3:46:15 PM (5 days ago) Oct 4
to The Ring Programming Language
Hello Mahmoud  and everyone.

ringtest is a modern, ultra-fast, and lightweight unit testing framework and test runner for the Ring programming language.

It brings familiar BDD/TDD-style assertions (describe, it, test, expect), comprehensive lifecycle hooks, rich diagnostic error tips, and automated test discovery with colorful terminal reports, interactive HTML dashboards, and JUnit XML outputs to the Ring ecosystem.

Features
Ultra Fast: Zero-overhead test runner executing suites in milliseconds.
Beautiful ANSI Reporter: Instant colored feedback (✓ PASS, ✗ FAIL, timings, and clean diffs).
Automatic Discovery: Automatically scans and runs all *_test.ring and test_*.ring files in ./tests.
Interactive HTML Dashboard: Generate self-contained dark-mode HTML reports with --html.
CI/CD JUnit XML: Standard JUnit XML reports (--junit / --xml) for GitHub Actions, GitLab CI, and Jenkins.
Complete Lifecycle Hooks: Suite-level & Global beforeAll, beforeEach, afterEach, and afterAll.
Smart Diagnostics: Built-in Ring runtime error analysis (R19, R24, R26...) with actionable fix tips.
Subprocess Isolation: Isolated execution so failing tests or crashes don't break the entire test run.
Test Filtering: Filter tests by description with --filter=<text>.
Watch Mode: Re-run tests automatically on file changes with --watch.
JSON Output: Machine-readable output for CI/CD integration with --json.
Mocking: Built-in mock registry and call recorder for isolating tests.
Zero External Dependencies: Pure native Ring implementation.

Installation
Using RingPM
ringpm install ringtest from Azzeddine2017


my regards,
Azzeddine

Bert Mariani

unread,
Oct 4, 2026, 3:56:03 PM (5 days ago) Oct 4
to The Ring Programming Language
Hello Azzeddine

Not sure what the output characters are below

===================================================
C:\Users\bert_>ringpm install ringtest from Azzeddine2017

Installing ringtest (master) ---> ringtest (1.0.4)
Installing stdlib (master)
Installing ringsubprocess (master) ---> ringsubprocess (1.0.5)
Download Package Files For ringsubprocess
Download File : main.ring
Download File : README.md
Download File : setup.ring
Download File : bin/load/subprocess.ring
Download File : bin/ring_subprocess.dll
Download File : extensions/ringsubprocess/buildvc_x64.bat
Download File : extensions/ringsubprocess/example/example.ring
Download File : extensions/ringsubprocess/example/ffmpeg_processor.ring
Download File : extensions/ringsubprocess/example/gemini_chat.ring
Download File : extensions/ringsubprocess/example/lesson_stdin.ring
Download File : extensions/ringsubprocess/example/quotes_example.ring
Download File : extensions/ringsubprocess/example/system_info.ring
Download File : extensions/ringsubprocess/example/test.ring
Download File : extensions/ringsubprocess/example/test2.ring
Download File : extensions/ringsubprocess/example/weather_example.ring
Download File : extensions/ringsubprocess/example/youtube_example.ring
Download File : extensions/ringsubprocess/README.md
Download File : extensions/ringsubprocess/ring_subprocess.c
Download File : extensions/ringsubprocess/ring_subprocess.h
Download File : extensions/ringsubprocess/subprocess.ring
Preparing ringsubprocess

 Ring Subprocess package installed successfully!
Starting the package...
ΓûêΓûêΓûêΓûêΓûêΓûêΓòù ΓûêΓûêΓòùΓûêΓûêΓûêΓòù   ΓûêΓûêΓòù ΓûêΓûêΓûêΓûêΓûêΓûêΓòù
ΓûêΓûêΓòöΓòÉΓòÉΓûêΓûêΓòùΓûêΓûêΓòæΓûêΓûêΓûêΓûêΓòù  ΓûêΓûêΓòæΓûêΓûêΓòöΓòÉΓòÉΓòÉΓòÉΓò¥
ΓûêΓûêΓûêΓûêΓûêΓûêΓòöΓò¥ΓûêΓûêΓòæΓûêΓûêΓòöΓûêΓûêΓòù ΓûêΓûêΓòæΓûêΓûêΓòæ  ΓûêΓûêΓûêΓòù
ΓûêΓûêΓòöΓòÉΓòÉΓûêΓûêΓòùΓûêΓûêΓòæΓûêΓûêΓòæΓòÜΓûêΓûêΓòùΓûêΓûêΓòæΓûêΓûêΓòæ   ΓûêΓûêΓòæ
ΓûêΓûêΓòæ  ΓûêΓûêΓòæΓûêΓûêΓòæΓûêΓûêΓòæ ΓòÜΓûêΓûêΓûêΓûêΓòæΓòÜΓûêΓûêΓûêΓûêΓûêΓûêΓòöΓò¥
ΓòÜΓòÉΓò¥  ΓòÜΓòÉΓò¥ΓòÜΓòÉΓò¥ΓòÜΓòÉΓò¥  ΓòÜΓòÉΓòÉΓòÉΓò¥ ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥

ΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓòù   ΓûêΓûêΓòùΓûêΓûêΓûêΓûêΓûêΓûêΓòù ΓûêΓûêΓûêΓûêΓûêΓûêΓòù ΓûêΓûêΓûêΓûêΓûêΓûêΓòù  ΓûêΓûêΓûêΓûêΓûêΓûêΓòù  ΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòù
ΓûêΓûêΓòöΓòÉΓòÉΓòÉΓòÉΓò¥ΓûêΓûêΓòæ   ΓûêΓûêΓòæΓûêΓûêΓòöΓòÉΓòÉΓûêΓûêΓòùΓûêΓûêΓòöΓòÉΓòÉΓûêΓûêΓòùΓûêΓûêΓòöΓòÉΓòÉΓûêΓûêΓòùΓûêΓûêΓòöΓòÉΓòÉΓòÉΓûêΓûêΓòùΓûêΓûêΓòöΓòÉΓòÉΓòÉΓòÉΓò¥ΓûêΓûêΓòöΓòÉΓòÉΓòÉΓòÉΓò¥ΓûêΓûêΓòöΓòÉΓòÉΓòÉΓòÉΓò¥ΓûêΓûêΓòöΓòÉΓòÉΓòÉΓòÉΓò¥ΓûêΓûêΓòöΓòÉΓòÉΓòÉΓòÉΓò¥
ΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓòæ   ΓûêΓûêΓòæΓûêΓûêΓûêΓûêΓûêΓûêΓòöΓò¥ΓûêΓûêΓûêΓûêΓûêΓûêΓòöΓò¥ΓûêΓûêΓûêΓûêΓûêΓûêΓòöΓò¥ΓûêΓûêΓòæ   ΓûêΓûêΓòæΓûêΓûêΓòæ     ΓûêΓûêΓûêΓûêΓûêΓòù  ΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòù
ΓòÜΓòÉΓòÉΓòÉΓòÉΓûêΓûêΓòæΓûêΓûêΓòæ   ΓûêΓûêΓòæΓûêΓûêΓòöΓòÉΓòÉΓûêΓûêΓòùΓûêΓûêΓòöΓòÉΓòÉΓòÉΓò¥ ΓûêΓûêΓòöΓòÉΓòÉΓûêΓûêΓòùΓûêΓûêΓòæ   ΓûêΓûêΓòæΓûêΓûêΓòæ     ΓûêΓûêΓòöΓòÉΓòÉΓò¥  ΓòÜΓòÉΓòÉΓòÉΓòÉΓûêΓûêΓòæΓòÜΓòÉΓòÉΓòÉΓòÉΓûêΓûêΓòæΓòÜΓòÉΓòÉΓòÉΓòÉΓûêΓûêΓòæ
ΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòæΓòÜΓûêΓûêΓûêΓûêΓûêΓûêΓòöΓò¥ΓûêΓûêΓûêΓûêΓûêΓûêΓòöΓò¥ΓûêΓûêΓòæ     ΓûêΓûêΓòæ  ΓûêΓûêΓòæΓòÜΓûêΓûêΓûêΓûêΓûêΓûêΓòöΓò¥ΓòÜΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòæΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòæΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòæ
ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥ ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥ ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥ ΓòÜΓòÉΓò¥     ΓòÜΓòÉΓò¥  ΓòÜΓòÉΓò¥ ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥  ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥

ΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓòù  ΓûêΓûêΓòùΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓûêΓòù   ΓûêΓûêΓòùΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓòù ΓûêΓûêΓûêΓûêΓûêΓûêΓòù ΓûêΓûêΓûêΓòù   ΓûêΓûêΓòù
ΓûêΓûêΓòöΓòÉΓòÉΓòÉΓòÉΓò¥ΓòÜΓûêΓûêΓòùΓûêΓûêΓòöΓò¥ΓòÜΓòÉΓòÉΓûêΓûêΓòöΓòÉΓòÉΓò¥ΓûêΓûêΓòöΓòÉΓòÉΓòÉΓòÉΓò¥ΓûêΓûêΓûêΓûêΓòù  ΓûêΓûêΓòæΓûêΓûêΓòöΓòÉΓòÉΓòÉΓòÉΓò¥ΓûêΓûêΓòæΓûêΓûêΓòöΓòÉΓòÉΓòÉΓûêΓûêΓòùΓûêΓûêΓûêΓûêΓòù  ΓûêΓûêΓòæ
ΓûêΓûêΓûêΓûêΓûêΓòù   ΓòÜΓûêΓûêΓûêΓòöΓò¥    ΓûêΓûêΓòæ   ΓûêΓûêΓûêΓûêΓûêΓòù  ΓûêΓûêΓòöΓûêΓûêΓòù ΓûêΓûêΓòæΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓòæΓûêΓûêΓòæ   ΓûêΓûêΓòæΓûêΓûêΓòöΓûêΓûêΓòù ΓûêΓûêΓòæ
ΓûêΓûêΓòöΓòÉΓòÉΓò¥   ΓûêΓûêΓòöΓûêΓûêΓòù    ΓûêΓûêΓòæ   ΓûêΓûêΓòöΓòÉΓòÉΓò¥  ΓûêΓûêΓòæΓòÜΓûêΓûêΓòùΓûêΓûêΓòæΓòÜΓòÉΓòÉΓòÉΓòÉΓûêΓûêΓòæΓûêΓûêΓòæΓûêΓûêΓòæ   ΓûêΓûêΓòæΓûêΓûêΓòæΓòÜΓûêΓûêΓòùΓûêΓûêΓòæ
ΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓòöΓò¥ ΓûêΓûêΓòù   ΓûêΓûêΓòæ   ΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓòæ ΓòÜΓûêΓûêΓûêΓûêΓòæΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòæΓûêΓûêΓòæΓòÜΓûêΓûêΓûêΓûêΓûêΓûêΓòöΓò¥ΓûêΓûêΓòæ ΓòÜΓûêΓûêΓûêΓûêΓòæ
ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥ΓòÜΓòÉΓò¥  ΓòÜΓòÉΓò¥   ΓòÜΓòÉΓò¥   ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥ΓòÜΓòÉΓò¥  ΓòÜΓòÉΓòÉΓòÉΓò¥ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥ΓòÜΓòÉΓò¥ ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥ ΓòÜΓòÉΓò¥  ΓòÜΓòÉΓòÉΓòÉΓò¥

Γò¡ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Version 1.0.0 ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓò«
Γöé                                                                           Γöé
Γöé  Author: Azzeddine Remmal                                                 Γöé
Γöé  GitHub: github.com/azzedinedev/RingSubprocess                            Γöé
Γöé                                                                           Γöé
Γò░ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓò»

Γò¡ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Description ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓò«

Γöé A modern and powerful subprocess management extension for the Ring           Γöé
Γöé programming language, providing an intuitive interface for creating and      Γöé
Γöé managing system processes with advanced features and real-time               Γöé
Γöé capabilities.                                                                Γöé
Γò░ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓò»
Γò¡ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Features ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓò«

Γöé ≡ƒÄ» Simple & Modern API Design                                         Γöé
Γöé ΓÜí High Performance Process Management                                 Γöé
Γöé ≡ƒöä Real-time Output Streaming                                         Γöé
Γöé ≡ƒôè Advanced Process Analytics                                         Γöé
Γöé ≡ƒ¢í∩╕Å Robust Error Handling                                           Γöé
Γöé ≡ƒôí Asynchronous Operations                                            Γöé
Γöé ≡ƒöî Flexible Input/Output Control                                      Γöé
Γöé ≡ƒôª Cross-platform Compatibility                                       Γöé
Γöé ≡ƒöì Detailed Process Monitoring                                        Γöé
Γöé ΓÜÖ∩╕Å Customizable Process Settings                                    Γöé
Γò░ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓò»
Download Package Files For ringtest
Download File : main.ring
Download File : LICENSE
Download File : .gitignore
Download File : README.md
Download File : package.ring
Download File : setup.bat
Download File : setup.sh
Download File : src/ringtest.ring
Download File : src/assertions/expectation.ring
Download File : src/core/suite.ring
Download File : src/core/runner.ring
Download File : src/core/worker.ring
Download File : src/core/reporter.ring
Download File : src/core/mock.ring
Download File : src/cli/args_parser.ring
Download File : tests/sample_test.ring
Download File : tests/math_test.ring
Download File : tests/string_test.ring
Download File : tests/error_test.ring
Download File : tests/hooks_test.ring
Download File : tests/context_test.ring
Download File : tests/mock_test.ring
Download File : tests/diagnostic_demo_test.ring
Download File : bin/ringtest.bat
Download File : bin/ringtest
Download File : bin/load/ringtest.ring
Download File : bin/ringtest.bat

C:\Users\bert_>

=======================
Regards
Bert Mariani

Bert Mariani

unread,
Oct 4, 2026, 4:09:27 PM (5 days ago) Oct 4
to The Ring Programming Language
Hello Azzeddine

Ran:
     setup.bat
     ringtest

Not sure if I am running it correctly.
Not sure what it is testing.

===========================================
c:\ring\tools\ringpm\packages\ringtest> setup.bat
Installing ringtest locally to Ring's bin folder...
[SUCCESS] ringtest wrapper created at: c:\ring\bin\ringtest.bat
You can now use 'ringtest' globally from any terminal

c:\ring\tools\ringpm\packages\ringtest>ringtest
 RUNS  c:/ring/tools/ringpm/packages/ringtest/tests/context_test.ring

Context Suite
  Γ£ô stores and reads back a string (0 ms)
  Γ£ô keeps values across tests (0 ms)
  Γ£ô overwrites an existing key (0 ms)
  Γ£ô increments a counter numerically (0 ms)
  Γ£ô adds an arbitrary step (0 ms)

 RUNS  c:/ring/tools/ringpm/packages/ringtest/tests/diagnostic_demo_test.ring

Diagnostic & Rich Error Reporting Demo
  Γ£ù should show clean diff comparison on mismatch (0 ms)
    Error: AssertionError: Expected [Ring 2.0] but received [Ring 1.22]
    --- Diff ---
    Expected: Ring 2.0
    Received: Ring 1.22
  Γ£ô should trigger R19 diagnostic tip on less parameters (0 ms)
  Γ£ù should trigger R24 diagnostic tip on uninitialized variable (0 ms)
    Error: Error (R24) : Using uninitialized variable: uninitialized_demo_var
    ≡ƒÆí Tip: Accessing an uninitialized or out-of-scope variable. Check variable spelling, scope, or global declaration.

 RUNS  c:/ring/tools/ringpm/packages/ringtest/tests/error_test.ring

Exception Handling Suite
  Γ£ô should detect division by zero exception (0 ms)
  Γ£ô should detect custom raised errors (0 ms)
  Γ£ô should detect syntax errors in eval (0 ms)

 RUNS  c:/ring/tools/ringpm/packages/ringtest/tests/hooks_test.ring

Hooks Suite - Lifecycle Hooks
  Γ£ô should execute beforeAll exactly once before any test (0 ms)
  Γ£ô should execute beforeEach on subsequent tests (0 ms)
  Γ£ô should have accumulated afterEach calls after third test (0 ms)

 RUNS  c:/ring/tools/ringpm/packages/ringtest/tests/math_test.ring

Math Operations Suite
  Γ£ô should calculate addition and subtraction correctly (0 ms)
  Γ£ô should handle multiplication and division (0 ms)
  Γ£ô should validate numerical boundaries (0 ms)
  Γ£ô should verify toBeBetween with math operations (0 ms)

 RUNS  c:/ring/tools/ringpm/packages/ringtest/tests/mock_test.ring

Mock Suite
  Γ£ô registers a mock and reports it as called (0 ms)
  Γ£ô counts calls (0 ms)
  Γ£ô returns the registered mock by name (0 ms)
  Γ£ô restores a single mock (0 ms)
  Γ£ô restores all mocks (0 ms)

 RUNS  c:/ring/tools/ringpm/packages/ringtest/tests/sample_test.ring

Basic Assertions Suite
  Γ£ô should verify strict equality and comparisons (0 ms)
  Γ£ô should check boolean truthiness and falsiness (0 ms)
  Γ£ô should verify lists and deep equality (0 ms)
  Γ£ô should verify string substring matching (0 ms)
  Γ£ô should verify toBeBetween assertion (0 ms)
  Γ£ô should verify toMatch assertion (0 ms)
  Γ£ô should verify toBeEmpty assertion (0 ms)
  Γ£ô should verify toHaveLength assertion (0 ms)

 RUNS  c:/ring/tools/ringpm/packages/ringtest/tests/string_test.ring

String Utilities Suite
  Γ£ô should concatenate strings correctly (0 ms)
  Γ£ô should verify string length and content (0 ms)
  Γ£ô should verify truthiness for empty and non-empty strings (0 ms)
  Γ£ô should verify toMatch with string patterns (0 ms)
  Γ£ô should verify toHaveLength with strings (0 ms)


--------------------------------------------------
Test Suites: 7 passed, 8 total
Tests:       2 failed, 34 passed, 36 total
Time:        0.96 s

--------------------------------------------------
STATUS: SOME TESTS FAILED!


c:\ring\tools\ringpm\packages\ringtest>

====================================

Azzeddine Remmal

unread,
Oct 4, 2026, 6:06:09 PM (5 days ago) Oct 4
to The Ring Programming Language
Hello Bert,

Thank you very much for testing and providing this valuable feedback!

1. Why those strange characters appeared (Γ£ô / Γ£ù):
The Windows Command Prompt (CMD) defaults to Code Page 437 instead of UTF-8, which renders UTF-8 checkmarks (✓ and ✗) and the lightbulb emoji (💡) as CP437 symbols (Γ£ô, Γ£ù).
I have updated ringtest to use clean, native Windows-friendly symbols [PASS], [FAIL], and [TIP] on Windows CMD

2. Why 2 tests showed as "FAILED":
When you ran ringtest inside the package directory, it ran its own internal test suite, including diagnostic_demo_test.ring. That file contains intentional demo failures to showcase the rich diffs and error diagnostic tips!
To avoid confusion, I have moved that demo file to an examples/ directory so that running internal tests always reports 100% PASS.

Step-by-Step Guide: How to Use ringtest in Your Own Projects
ringtest is designed to test your own Ring applications and libraries. Here is a quick 1-minute tutorial:

Step 1: Create a Project & Source File
Create a folder for your project (e.g., C:\my_project) and a file named calculator.ring:

code
Ring
# calculator.ring
class Calculator
    func add a, b
        return a + b

    func multiply a, b
        return a * b

Step 2: Create a tests Folder & Test File
Inside C:\my_project, create a tests folder and add calc_test.ring:


# tests/calc_test.ring
load "../calculator.ring"

describe("Calculator Tests", func {
    calc = new Calculator()
    it("should add numbers correctly", func {
        expect(calc.add(10, 20)).toBe(30)
    })
    it("should multiply numbers correctly", func {
        expect(calc.multiply(5, 5)).toBe(25)
    })
})


Step 3: Run ringtest
Open your terminal inside C:\my_project and type:

code
Cmd
ringtest

ringtest will automatically discover all test files in ./tests/, execute them, and print the test summary with timing metrics!
You can also run with HTML reporting:

code
Cmd
ringtest --html

(This will generate an interactive dark-mode report.html in your project root).
Thank you again for testing, Bert! Please let me know if you have any questions.

Best regards,
Azzeddine

Azzeddine Remmal

unread,
Oct 4, 2026, 6:18:37 PM (5 days ago) Oct 4
to The Ring Programming Language
Hello Bert, Mahmoud, and everyone

Real-World Production Example: ringenv Test Suite
If you want to see ringtest running a comprehensive, real-world application test suite with 15 Test Suites and over 50 unit tests, check out the test file in ringenv:

It tests:
OS & Platform Detection (os_helper.ring)
UI Styling & Color Constants (ui_style.ring)
Package Categories & Hub Registry (categories.ring, cmd_hub.ring)
Virtual Environment Activation Scripts (cmd_venv.ring)
Build Scaffolding & Configuration Parsing (cmd_build.ring)
Archive Extractors & Asset Resolution (cmd_install.ring)
You can clone ringenv and run ringtest inside it:


git clone https://github.com/azzeddine2017/ringenv.git
cd ringenv
ringtest

You will see the entire test suite execute in milliseconds!
To Update ringtest to the Latest Version:


ringpm install ringtest from Azzeddine2017

Thank you again for the feedback and support!

Best regards,
Azzeddine Remmal

Mahmoud Fayed

unread,
Oct 4, 2026, 6:31:04 PM (5 days ago) Oct 4
to The Ring Programming Language
Hello Azzeddine

Thank you very much for the development & sharing :D

Also, Thanks to Bert for testing :D

Added to RingPM Registry and Ring Website (Packages List): Update RingPM Registry - Add RingTest by Azzeddine Remmal · ring-lang/ring@d0e9ad7

Keep up the GREAT WORK :D

Greetings,
Mahmoud

Azzeddine Remmal

unread,
Oct 4, 2026, 6:45:01 PM (5 days ago) Oct 4
to The Ring Programming Language
Hello Mahmoud, and the Ring Community,

Thank you so much, Mahmoud, for the warm encouragement and for adding ringtest to the official RingPM Registry and the Ring website! It is a true honor to contribute to the growth and developer tooling of the Ring ecosystem.

I will continue maintaining and enhancing tools for the Ring community.

Best regards,
Azzeddine 

Mahmoud Fayed

unread,
Oct 5, 2026, 6:28:34 AM (4 days ago) Oct 5
to The Ring Programming Language
Hello Azzeddine

Many months ago, I did a little experiment to prototype a testing framework for Ring
When you shared your wonderful project (RingTest) I remembered this simple prototype 
I decided to upload it to GitHub as a RingPM package so I can share it with You 
Check, if you would like to get some features from it and bring it to (RingTest)


Features include:
* More Assertions
* Parameterized tests
* Skip and expected failures
* Benchmarks

If you find these features are not useful for RingTest, just ignore it
It was just a little prototype (No longer under development), and I am sharing it with you, because it's related to the topic.

Install: 

ringpm install simpletests from ringpackages


Example:

example.png

Output:

output.png

Greetings,
Mahmoud

Azzeddine Remmal

unread,
Oct 5, 2026, 10:11:32 AM (4 days ago) Oct 5
to The Ring Programming Language
Hello Mahmoud,

Thank you very much for sharing your `simpletests` prototype! It was truly inspiring and gave us fantastic ideas for enhancing RingTest.
I am glad to let you know that I have officially integrated and expanded all these key concepts into RingTest (v1.2.0):
  What's New in RingTest 1.2.0:
1. Extended Assertions & Matchers: Added comprehensive matchers including `.toBeNull()`, `.toBeNotNull()`, `.toBeString()`, `.toBeNumber()`, `.toBeList()`, `.toBeObject()`, `.toBeCloseTo()`, `.toBeGreaterThanOrEqual()`, `.toBeLessThanOrEqual()`, `.toStartWith()`, `.toEndWith()`, `.toBeSorted()`, `.toThrowError()`, and Mock Spies (`.toHaveBeenCalled()`, `.toHaveBeenCalledTimes()`).
2. Parameterized / Data-Driven Testing: Added `itEach` / `testEach` to run tests over datasets with automatic description formatting (`%1`, `%2`...).
3. Test Lifecycle & Skipping: Added `itSkip`, `itTodo`, `itFailing` / `itXFail` (expected failures), and `suite.skipAll()`.
4. Benchmarking & High-Precision Timing: Added `benchmark(name, iters, func)` and `benchmarkCompare(...)` to measure ops/sec and speedup factors, with automatic integration with AlQalam's `QalamChronos` for C++ hardware nanosecond precision timekeeping.
5. Enhanced Reporting: Skipped tests and precise timing (nanoseconds/microseconds) are now fully reflected across the terminal CLI, interactive dark-mode HTML reports (`--html`), and standard CI/CD JUnit XML (`--junit`).
Thank you again for your constant support and valuable insights!

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
C:\ring\tools\ringpm\packages\ringtest                                                  
λ ringtest                                                                              
 RUNS  C:/ring/tools/ringpm/packages/ringtest/tests/advanced_features_test.ring        
                                                                                       
Advanced Framework Features Suite                                                      
  [PASS]  runs normal tests properly (< 1 ms)                                          
  [SKIP] demonstrates skipped test case (work in progress)                              
  [SKIP] demonstrates todo test case (todo)                                            
  [PASS]  demonstrates expected failure (xfail) (< 1 ms)                                
  [PASS]  calculates addition 1 + 2 = 3 (1 ms)                                          
  [PASS]  calculates addition 10 + 20 = 30 (< 1 ms)                                    
  [PASS]  calculates addition 5 + 5 = 10 (< 1 ms)                                      
  [PASS]  validates non-empty fruits: apple (< 1 ms)                                    
  [PASS]  validates non-empty fruits: banana (< 1 ms)                                  
  [PASS]  validates non-empty fruits: cherry (< 1 ms)                                  
                                                                                       
 RUNS  C:/ring/tools/ringpm/packages/ringtest/tests/benchmark_test.ring                
                                                                                       
Benchmark Integration Suite                                                            
  ⚡ BENCHMARK: String Concatenation (100 iterations)                                    
     Total: 1 ms  Avg: 10 µs  100000 ops/sec                                            
                                                                                       
  [PASS]  measures execution of single benchmark (1 ms)                                
  [PASS]  measures time with chronos / TestTimer API (1 ms)                            
                                                                                       
 RUNS  C:/ring/tools/ringpm/packages/ringtest/tests/context_test.ring                  
                                                                                       
Context Suite                                                                          
  [PASS]  stores and reads back a string (< 1 ms)                                      
  [PASS]  keeps values across tests (< 1 ms)                                            
  [PASS]  overwrites an existing key (< 1 ms)                                          
  [PASS]  increments a counter numerically (< 1 ms)                                    
  [PASS]  adds an arbitrary step (< 1 ms)                                              
                                                                                       
 RUNS  C:/ring/tools/ringpm/packages/ringtest/tests/diagnostic_demo_test.ring          
                                                                                       
Diagnostic & Rich Error Reporting Demo                                                  
  [PASS]  should show clean diff comparison on mismatch (< 1 ms)                        
  [PASS]  should trigger R19 diagnostic tip on less parameters (< 1 ms)                
  [PASS]  should trigger R24 diagnostic tip on uninitialized variable (< 1 ms)          
                                                                                       
 RUNS  C:/ring/tools/ringpm/packages/ringtest/tests/error_test.ring                    
                                                                                       
Exception Handling Suite                                                                
  [PASS]  should detect division by zero exception (< 1 ms)                            
  [PASS]  should detect custom raised errors (1 ms)                                    
  [PASS]  should detect syntax errors in eval (< 1 ms)                                  
                                                                                       
 RUNS  C:/ring/tools/ringpm/packages/ringtest/tests/extended_assertions_test.ring      
                                                                                       
Extended Matchers & Assertions Suite                                                    
  [PASS]  verifies toBeNull and toBeNotNull (< 1 ms)                                    
  [PASS]  verifies type checking matchers (toBeString, toBeNumber, toBeList, toBeObject)
 (< 1 ms)                                                                              
  [PASS]  verifies boundary comparisons (toBeGreaterThanOrEqual, toBeLessThanOrEqual) (<
 1 ms)                                                                                  
  [PASS]  verifies floating point approximation (toBeCloseTo) (< 1 ms)                  
  [PASS]  verifies string prefix and suffix matchers (toStartWith, toEndWith) (< 1 ms)  
  [PASS]  verifies sorted list assertion (toBeSorted) (1 ms)                            
  [PASS]  verifies exception assertions (toThrowError, notToThrow) (< 1 ms)            
  [PASS]  verifies mock spy assertions (toHaveBeenCalled, toHaveBeenCalledTimes) (< 1 ms
)                                                                                      
                                                                                       
 RUNS  C:/ring/tools/ringpm/packages/ringtest/tests/hooks_test.ring                    
                                                                                       
Hooks Suite - Lifecycle Hooks                                                          
  [PASS]  should execute beforeAll exactly once before any test (1 ms)                  
  [PASS]  should execute beforeEach on subsequent tests (< 1 ms)                        
  [PASS]  should have accumulated afterEach calls after third test (< 1 ms)            
                                                                                       
 RUNS  C:/ring/tools/ringpm/packages/ringtest/tests/math_test.ring                      
                                                                                       
Math Operations Suite                                                                  
  [PASS]  should calculate addition and subtraction correctly (< 1 ms)                  
  [PASS]  should handle multiplication and division (< 1 ms)                            
  [PASS]  should validate numerical boundaries (< 1 ms)                                
  [PASS]  should verify toBeBetween with math operations (< 1 ms)                      
                                                                                       
 RUNS  C:/ring/tools/ringpm/packages/ringtest/tests/mock_test.ring                      
                                                                                       
Mock Suite                                                                              
  [PASS]  registers a mock and reports it as called (1 ms)                              
  [PASS]  counts calls (< 1 ms)                                                        
  [PASS]  returns the registered mock by name (< 1 ms)                                  
  [PASS]  restores a single mock (< 1 ms)                                              
  [PASS]  restores all mocks (< 1 ms)                                                  
                                                                                       
 RUNS  C:/ring/tools/ringpm/packages/ringtest/tests/sample_test.ring                    
                                                                                       
Basic Assertions Suite                                                                  
  [PASS]  should verify strict equality and comparisons (1 ms)                          
  [PASS]  should check boolean truthiness and falsiness (< 1 ms)                        
  [PASS]  should verify lists and deep equality (< 1 ms)                                
  [PASS]  should verify string substring matching (< 1 ms)                              
  [PASS]  should verify toBeBetween assertion (< 1 ms)                                  
  [PASS]  should verify toMatch assertion (< 1 ms)                                      
  [PASS]  should verify toBeEmpty assertion (< 1 ms)                                    
  [PASS]  should verify toHaveLength assertion (< 1 ms)                                
                                                                                       
 RUNS  C:/ring/tools/ringpm/packages/ringtest/tests/string_test.ring                    
                                                                                       
String Utilities Suite                                                                  
  [PASS]  should concatenate strings correctly (< 1 ms)                                
  [PASS]  should verify string length and content (< 1 ms)                              
  [PASS]  should verify truthiness for empty and non-empty strings (< 1 ms)            
  [PASS]  should verify toMatch with string patterns (< 1 ms)                          
  [PASS]  should verify toHaveLength with strings (< 1 ms)                              
                                                                                       
                                                                                       
--------------------------------------------------                                      
Test Suites: 11 passed, 11 total                                                        
Tests:       2 skipped, 54 passed, 56 total                                            
Time:        1.93 s                                                                    
--------------------------------------------------                                      
STATUS: ALL TESTS PASSED!                                                              

 --------------------------------------------------------------------------------------------------------------------------------------------------------------------

Best regards,  
Azzeddine

Mahmoud Fayed

unread,
Oct 5, 2026, 10:15:47 AM (4 days ago) Oct 5
to The Ring Programming Language
Hello Azzeddine

Thank you very much for the updates :D

Keep up the GREAT WORK :D

Greetings,
Mahmoud

Bert Mariani

unread,
Oct 5, 2026, 2:11:31 PM (4 days ago) Oct 5
to The Ring Programming Language
Hello Azzeddine

One small little thing --- characters  Γ£ö  

========================================
C:\MyStuff\AA-Rosetta-Curl>  ringtest --html
 RUNS  C:/MyStuff/AA-Rosetta-Curl/Rosetta_FormDesigner-TaskController_test.ring
--------------------------------------------------
Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Time:        0.76 s

--------------------------------------------------
STATUS: ALL TESTS PASSED!

Γ£ö HTML Report generated: C:/MyStuff/AA-Rosetta-Curl/reports/test-report.html

C:\MyStuff\AA-Rosetta-Curl>

RingTest.png

Regards
Bert Mariani

Reply all
Reply to author
Forward
0 new messages