From 113f8b4b4c0728e4dcd9184a7e261335197aa404 Mon Sep 17 00:00:00 2001 From: Jason Esterhuizen Date: Sat, 1 Feb 2025 19:27:35 +0200 Subject: [PATCH 01/10] [FEAT] Added test workflow --- .github/workflows/run_tests.yaml | 42 ++++++++++++++++++++++++++++++++ app/version | 2 +- 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/run_tests.yaml diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml new file mode 100644 index 0000000..973f294 --- /dev/null +++ b/.github/workflows/run_tests.yaml @@ -0,0 +1,42 @@ +name: Run Tests + +on: + push: + branches: + - '**' # Run on all branches + pull_request: + branches: + - main # Run on PRs targeting main + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python 3.13 + uses: actions/setup-python@v5 + with: + python-version: '3.13' + + - name: Create and activate virtual environment + run: | + python -m venv .venv + source .venv/bin/activate + + - name: Make ace executable + run: chmod +x ./ace + + - name: Run tests + run: ./ace --test + + - name: Upload test results + if: always() # Run even if tests fail + uses: actions/upload-artifact@v4 + with: + name: pytest-results + path: | + .pytest_cache/ + tests/**/test-*.xml + tests/**/test-*.html \ No newline at end of file diff --git a/app/version b/app/version index 9d3bd29..3df41da 100644 --- a/app/version +++ b/app/version @@ -1,4 +1,4 @@ { - "version": "0.0.0", + "version": "0.0.1", "rebuild_date": "2025-02-01" } \ No newline at end of file From 0027f15de7e8f3f99566c57d72d71d9c4f431437 Mon Sep 17 00:00:00 2001 From: Jason Esterhuizen Date: Sat, 1 Feb 2025 19:31:25 +0200 Subject: [PATCH 02/10] updates --- .github/workflows/dynamic-readme.yaml | 2 ++ app/version | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dynamic-readme.yaml b/.github/workflows/dynamic-readme.yaml index b2d9ff5..c7b992b 100644 --- a/.github/workflows/dynamic-readme.yaml +++ b/.github/workflows/dynamic-readme.yaml @@ -4,6 +4,8 @@ on: push: paths: - 'app/version' + branches-ignore: + - main permissions: contents: write diff --git a/app/version b/app/version index 3df41da..9d3bd29 100644 --- a/app/version +++ b/app/version @@ -1,4 +1,4 @@ { - "version": "0.0.1", + "version": "0.0.0", "rebuild_date": "2025-02-01" } \ No newline at end of file From 836134b30890463ca3c33c8de4586e48f302b4b5 Mon Sep 17 00:00:00 2001 From: Jason Esterhuizen Date: Sat, 1 Feb 2025 19:32:34 +0200 Subject: [PATCH 03/10] [BUG] Removed push --- .github/workflows/run_tests.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml index 973f294..4d632fe 100644 --- a/.github/workflows/run_tests.yaml +++ b/.github/workflows/run_tests.yaml @@ -1,9 +1,6 @@ name: Run Tests on: - push: - branches: - - '**' # Run on all branches pull_request: branches: - main # Run on PRs targeting main From 5a5dc16060c5a8b0337fe3e3a656b8bd2f95966f Mon Sep 17 00:00:00 2001 From: Jason Esterhuizen Date: Sat, 1 Feb 2025 19:34:01 +0200 Subject: [PATCH 04/10] [TEST] Failed test and version update --- app/version | 2 +- tests/unit/logger/test_logger.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/version b/app/version index 9d3bd29..3df41da 100644 --- a/app/version +++ b/app/version @@ -1,4 +1,4 @@ { - "version": "0.0.0", + "version": "0.0.1", "rebuild_date": "2025-02-01" } \ No newline at end of file diff --git a/tests/unit/logger/test_logger.py b/tests/unit/logger/test_logger.py index 8374e31..6d9f823 100644 --- a/tests/unit/logger/test_logger.py +++ b/tests/unit/logger/test_logger.py @@ -3,7 +3,6 @@ import json import logging import os -import shutil import signal import sys from unittest import mock @@ -75,7 +74,7 @@ def test_verbose_mode_handler_config(monkeypatch, cleanup): console_handlers: logging.Handler = [handler for handler in logger.logger.handlers if isinstance(handler, logging.StreamHandler) and handler == logger.console_handler] assert len(file_handlers) == 1, "Should have 1 FileHandler" - assert len(console_handlers) == 0, "Should have 0 ConsoleHandlers in verbose mode" + assert len(console_handlers) != 0, "Should have 0 ConsoleHandlers in verbose mode" def test_non_verbose_mode_handler_config(monkeypatch, cleanup): """Test handler configuration based on verbosity""" From 19745866cdb120ee44917600090f5a2a2eaec5df Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Feb 2025 17:34:17 +0000 Subject: [PATCH 05/10] [DOCS] Updated version badge to 0.0.1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 689038d..f519b7a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Version](https://img.shields.io/badge/version-0.0.0-blue) +![Version](https://img.shields.io/badge/version-0.0.1-blue)

🧠 ACE Prototype 🧠

From 7efaed2f71e84f15a43fc45fe4d46da667dad54f Mon Sep 17 00:00:00 2001 From: Jason Esterhuizen Date: Sat, 1 Feb 2025 19:38:50 +0200 Subject: [PATCH 06/10] [BUG] Tried to fix action not failing on failed tests --- .github/workflows/run_tests.yaml | 24 ++++++++++-------------- ace | 4 ++-- app/version | 2 +- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml index 4d632fe..7a4918e 100644 --- a/.github/workflows/run_tests.yaml +++ b/.github/workflows/run_tests.yaml @@ -1,14 +1,12 @@ name: Run Tests - on: pull_request: branches: - - main # Run on PRs targeting main + - main # Run on PRs targeting main jobs: test: runs-on: ubuntu-latest - steps: - uses: actions/checkout@v4 @@ -16,24 +14,22 @@ jobs: uses: actions/setup-python@v5 with: python-version: '3.13' - - - name: Create and activate virtual environment - run: | - python -m venv .venv - source .venv/bin/activate - - - name: Make ace executable - run: chmod +x ./ace - name: Run tests + id: run_tests run: ./ace --test - + - name: Upload test results - if: always() # Run even if tests fail + if: always() # Run even if tests fail uses: actions/upload-artifact@v4 with: name: pytest-results path: | .pytest_cache/ tests/**/test-*.xml - tests/**/test-*.html \ No newline at end of file + tests/**/test-*.html + + # Force the workflow to fail if tests failed + - name: Check test results + if: steps.run_tests.outcome != 'success' + run: exit 1 diff --git a/ace b/ace index 85b50d7..1813c9e 100755 --- a/ace +++ b/ace @@ -11,7 +11,7 @@ run_tests() { python -m pytest tests/unit/ -v deactivate - exit 0 + exit $? } run_ace() { @@ -22,7 +22,7 @@ run_ace() { ACE_LOGGER_FILE_NAME="startup" ACE_LOGGER_VERBOSE="$ACE_LOGGER_VERBOSE_ENV" ./startup.py "${@}" deactivate - exit 0 + exit $? } # MAIN diff --git a/app/version b/app/version index 3df41da..9d3bd29 100644 --- a/app/version +++ b/app/version @@ -1,4 +1,4 @@ { - "version": "0.0.1", + "version": "0.0.0", "rebuild_date": "2025-02-01" } \ No newline at end of file From 010586e94c943861dd39ee935141de3598f0c0e6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Feb 2025 17:39:46 +0000 Subject: [PATCH 07/10] [DOCS] Updated version badge to 0.0.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f519b7a..689038d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Version](https://img.shields.io/badge/version-0.0.1-blue) +![Version](https://img.shields.io/badge/version-0.0.0-blue)

🧠 ACE Prototype 🧠

From 1e7da29ace6f6d08f6de7676708cff8ffaa9220c Mon Sep 17 00:00:00 2001 From: Jason Esterhuizen Date: Sat, 1 Feb 2025 19:42:47 +0200 Subject: [PATCH 08/10] [BUG] trying to fix --- .github/workflows/run_tests.yaml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml index 7a4918e..aaaeed0 100644 --- a/.github/workflows/run_tests.yaml +++ b/.github/workflows/run_tests.yaml @@ -17,7 +17,10 @@ jobs: - name: Run tests id: run_tests - run: ./ace --test + run: | + set -e # Exit immediately if a command exits with a non-zero status + ./ace --test + continue-on-error: false - name: Upload test results if: always() # Run even if tests fail @@ -30,6 +33,8 @@ jobs: tests/**/test-*.html # Force the workflow to fail if tests failed - - name: Check test results - if: steps.run_tests.outcome != 'success' - run: exit 1 + - name: Fail workflow if tests failed + if: failure() + run: | + echo "Tests failed - failing workflow" + exit 1 From c9f17dc8dd978012af88afb2312365bcf93785fb Mon Sep 17 00:00:00 2001 From: Jason Esterhuizen Date: Sat, 1 Feb 2025 19:48:42 +0200 Subject: [PATCH 09/10] [BUG] Fixed exit code --- ace | 3 ++- tests/unit/conftest.py | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ace b/ace index 1813c9e..1109cc1 100755 --- a/ace +++ b/ace @@ -10,7 +10,6 @@ run_tests() { pip install --upgrade -r tests/requirements python -m pytest tests/unit/ -v - deactivate exit $? } @@ -60,4 +59,6 @@ main() { run_ace "${original_args[@]}" } +trap 'exit $?' ERR + main "$@" \ No newline at end of file diff --git a/tests/unit/conftest.py b/tests/unit/conftest.py index 8209f3a..5ebd280 100644 --- a/tests/unit/conftest.py +++ b/tests/unit/conftest.py @@ -25,3 +25,8 @@ def pytest_sessionfinish(session, exitstatus): print(f"Warning: Could not remove {folder_path} - Permission denied") except Exception as e: print(f"Warning: Could not remove {folder_path} - {str(e)}") + if session.testsfailed > 0: + print("Tests failed!") + # Force exit status to 1 if any tests failed + session.exitstatus = 1 + return session.exitstatus From 685cd65cf45d59b8006367bead774afad0764829 Mon Sep 17 00:00:00 2001 From: Jason Esterhuizen Date: Sat, 1 Feb 2025 19:49:50 +0200 Subject: [PATCH 10/10] fixed test --- tests/unit/logger/test_logger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/logger/test_logger.py b/tests/unit/logger/test_logger.py index 6d9f823..b0766c4 100644 --- a/tests/unit/logger/test_logger.py +++ b/tests/unit/logger/test_logger.py @@ -74,7 +74,7 @@ def test_verbose_mode_handler_config(monkeypatch, cleanup): console_handlers: logging.Handler = [handler for handler in logger.logger.handlers if isinstance(handler, logging.StreamHandler) and handler == logger.console_handler] assert len(file_handlers) == 1, "Should have 1 FileHandler" - assert len(console_handlers) != 0, "Should have 0 ConsoleHandlers in verbose mode" + assert len(console_handlers) == 0, "Should have 0 ConsoleHandlers in verbose mode" def test_non_verbose_mode_handler_config(monkeypatch, cleanup): """Test handler configuration based on verbosity"""