From d498918fbc1cd3868a42eb3c82ee5321f200a52b Mon Sep 17 00:00:00 2001 From: Fadi Hanna Al-Kass Date: Wed, 2 Jul 2025 23:15:16 -0700 Subject: [PATCH 1/2] Switch to cargo test --- CHANGELOG.md | 2 ++ makefile | 2 +- scripts/test.sh | 13 ------------ tests/logger.rs | 14 +++++++++++++ tests/test_runner.rs | 50 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 67 insertions(+), 14 deletions(-) delete mode 100644 scripts/test.sh create mode 100644 tests/logger.rs create mode 100644 tests/test_runner.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index c89dac4..0c38145 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Changed +- Replaced custom bash test script with standard `cargo test` integration tests. ## [0.9.9] - 2025-06-30 ### Added diff --git a/makefile b/makefile index b454a86..38cad81 100644 --- a/makefile +++ b/makefile @@ -1,2 +1,2 @@ test: - bash scripts/test.sh + cargo test diff --git a/scripts/test.sh b/scripts/test.sh deleted file mode 100644 index 3324bb8..0000000 --- a/scripts/test.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -for example in examples/*.rs; do - echo "$example" - cp "$example" src/main.rs - cargo run - rv=$? - if [ $rv -ne 0 ]; then - echo "returning $rv" - exit $rv - fi -done -rm src/main.rs diff --git a/tests/logger.rs b/tests/logger.rs new file mode 100644 index 0000000..336a385 --- /dev/null +++ b/tests/logger.rs @@ -0,0 +1,14 @@ +use polish::logger::Logger; + +#[test] +fn logger_counts_increment() { + let mut logger = Logger::new(); + logger.pass("ok".to_string()); + logger.fail("err".to_string()); + logger.warn("warn".to_string()); + logger.info("info".to_string()); + assert_eq!(logger.get_num_pass(), 1); + assert_eq!(logger.get_num_fail(), 1); + assert_eq!(logger.get_num_warn(), 1); + assert_eq!(logger.get_num_info(), 1); +} diff --git a/tests/test_runner.rs b/tests/test_runner.rs new file mode 100644 index 0000000..214727e --- /dev/null +++ b/tests/test_runner.rs @@ -0,0 +1,50 @@ +use polish::test_case::{TestCase, TestCaseStatus, TestRunner, Testable, TEST_RUNNER_ATTRIBUTES, TEST_RUNNER_TIME_UNITS}; +use polish::logger::Logger; + +#[test] +fn run_test_returns_true_on_pass() { + let tc = TestCase::new("title", "criteria", Box::new(|_: &mut Logger| TestCaseStatus::PASSED)); + let mut runner = TestRunner::new(); + assert!(runner.run_test(tc)); +} + +#[test] +fn run_test_returns_false_on_fail() { + let tc = TestCase::new("title", "criteria", Box::new(|_: &mut Logger| TestCaseStatus::FAILED)); + let mut runner = TestRunner::new(); + assert!(!runner.run_test(tc)); +} + +#[test] +fn run_tests_bails_after_failure() { + let tests = vec![ + TestCase::new("one", "crit", Box::new(|_: &mut Logger| TestCaseStatus::FAILED)), + TestCase::new("two", "crit", Box::new(|_: &mut Logger| TestCaseStatus::PASSED)), + ]; + let mut runner = TestRunner::new(); + runner.set_attribute(TEST_RUNNER_ATTRIBUTES.bail_out_after_first_failure); + assert!(!runner.run_tests(tests)); +} + +#[test] +fn run_tests_from_class_example() { + struct MyClass; + impl Testable for MyClass { + fn tests(self) -> Vec { + vec![ + TestCase::new("t1", "crit", Box::new(|_: &mut Logger| TestCaseStatus::PASSED)), + TestCase::new("t2", "crit", Box::new(|_: &mut Logger| TestCaseStatus::SKIPPED)), + ] + } + } + let mut runner = TestRunner::new(); + assert!(runner.run_tests_from_class(MyClass)); +} + +#[test] +fn test_time_unit() { + let tc = TestCase::new("title", "criteria", Box::new(|_: &mut Logger| TestCaseStatus::PASSED)); + let mut runner = TestRunner::new(); + runner.set_time_unit(TEST_RUNNER_TIME_UNITS.seconds); + assert!(runner.run_test(tc)); +} From 60e9d2f487b21f049cfa592cbd3ef286a3d0d48e Mon Sep 17 00:00:00 2001 From: Fadi Hanna Al-Kass Date: Wed, 2 Jul 2025 23:19:26 -0700 Subject: [PATCH 2/2] Remove makefile and use cargo test --- .github/workflows/ci.yml | 4 ++-- CHANGELOG.md | 1 + makefile | 2 -- 3 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 makefile diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 81f4a3d..e172fd3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,5 +21,5 @@ jobs: override: true - name: Build run: cargo build --release - - name: Run example tests - run: make test + - name: Run tests + run: cargo test diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c38145..1e3ef31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Changed - Replaced custom bash test script with standard `cargo test` integration tests. +- Removed `makefile`; tests are now run directly with `cargo`. ## [0.9.9] - 2025-06-30 ### Added diff --git a/makefile b/makefile deleted file mode 100644 index 38cad81..0000000 --- a/makefile +++ /dev/null @@ -1,2 +0,0 @@ -test: - cargo test