-
-
Notifications
You must be signed in to change notification settings - Fork 29
refactor: ovoscope #691
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor: ovoscope #691
Conversation
|
Warning Rate limit exceeded@JarbasAl has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 19 minutes and 17 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (80)
WalkthroughThis change removes all end-to-end and integration test workflows, associated test skills, and their supporting files from the repository. It also updates the unit test workflow to run both unit and end-to-end tests, modifies test dependencies, and introduces a minimal new end-to-end test to verify system behavior when no skills are loaded. Changes
Sequence Diagram(s)sequenceDiagram
participant Tester
participant End2EndTest
participant CoreSystem
Tester->>End2EndTest: Start test (no skills loaded)
End2EndTest->>CoreSystem: Send utterance message ("hello world")
CoreSystem-->>End2EndTest: Emit error sound message
CoreSystem-->>End2EndTest: Emit complete intent failure message
CoreSystem-->>End2EndTest: Emit utterance handled message
End2EndTest->>Tester: Assert expected message sequence received
Possibly related PRs
Suggested labels
Poem
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## dev #691 +/- ##
===========================================
- Coverage 75.33% 56.33% -19.01%
===========================================
Files 15 15
Lines 3094 1752 -1342
===========================================
- Hits 2331 987 -1344
- Misses 763 765 +2
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (74)
.github/workflows/end2end_tests.yml(0 hunks).github/workflows/integration_tests.yml(0 hunks).github/workflows/unit_tests.yml(4 hunks)requirements/tests.txt(1 hunks)test/end2end/metadata-test-plugin/metadata_test/__init__.py(0 hunks)test/end2end/metadata-test-plugin/setup.py(0 hunks)test/end2end/minicroft.py(0 hunks)test/end2end/routing/test_sched.py(0 hunks)test/end2end/routing/test_session.py(0 hunks)test/end2end/session/test_blacklist.py(0 hunks)test/end2end/session/test_complete_failure.py(0 hunks)test/end2end/session/test_converse.py(0 hunks)test/end2end/session/test_fallback.py(0 hunks)test/end2end/session/test_get_response.py(0 hunks)test/end2end/session/test_ocp.py(0 hunks)test/end2end/session/test_sched.py(0 hunks)test/end2end/session/test_session.py(0 hunks)test/end2end/session/test_stop.py(0 hunks)test/end2end/session/test_transformers.py(0 hunks)test/end2end/skill-converse_test/__init__.py(0 hunks)test/end2end/skill-converse_test/locale/en-us/converse_off.intent(0 hunks)test/end2end/skill-converse_test/locale/en-us/converse_on.intent(0 hunks)test/end2end/skill-converse_test/locale/en-us/deactivate.intent(0 hunks)test/end2end/skill-converse_test/locale/en-us/get.dialog(0 hunks)test/end2end/skill-converse_test/locale/en-us/question.dialog(0 hunks)test/end2end/skill-converse_test/locale/en-us/test.intent(0 hunks)test/end2end/skill-converse_test/locale/en-us/test2.intent(0 hunks)test/end2end/skill-converse_test/locale/en-us/test3.intent(0 hunks)test/end2end/skill-converse_test/locale/en-us/test_get_response.intent(0 hunks)test/end2end/skill-converse_test/locale/en-us/test_get_response3.intent(0 hunks)test/end2end/skill-converse_test/locale/en-us/test_get_response_cascade.intent(0 hunks)test/end2end/skill-converse_test/setup.py(0 hunks)test/end2end/skill-fake-fm/__init__.py(0 hunks)test/end2end/skill-fake-fm/setup.py(0 hunks)test/end2end/skill-new-stop/__init__.py(0 hunks)test/end2end/skill-new-stop/locale/en-us/vocab/HelloWorldKeyword.voc(0 hunks)test/end2end/skill-new-stop/setup.py(0 hunks)test/end2end/skill-old-stop/__init__.py(0 hunks)test/end2end/skill-old-stop/locale/en-us/vocab/HelloWorldKeyword.voc(0 hunks)test/end2end/skill-old-stop/setup.py(0 hunks)test/end2end/skill-ovos-fakewiki/__init__.py(0 hunks)test/end2end/skill-ovos-fakewiki/setup.py(0 hunks)test/end2end/skill-ovos-fallback-unknown/__init__.py(0 hunks)test/end2end/skill-ovos-fallback-unknown/locale/en-us/unknown.dialog(0 hunks)test/end2end/skill-ovos-fallback-unknown/setup.py(0 hunks)test/end2end/skill-ovos-hello-world/MANIFEST.in(0 hunks)test/end2end/skill-ovos-hello-world/__init__.py(0 hunks)test/end2end/skill-ovos-hello-world/locale/en-us/dialog/hello.world.dialog(0 hunks)test/end2end/skill-ovos-hello-world/locale/en-us/vocab/HelloWorldKeyword.voc(0 hunks)test/end2end/skill-ovos-hello-world/setup.py(0 hunks)test/end2end/skill-ovos-schedule/MANIFEST.in(0 hunks)test/end2end/skill-ovos-schedule/__init__.py(0 hunks)test/end2end/skill-ovos-schedule/locale/en-us/dialog/done.dialog(0 hunks)test/end2end/skill-ovos-schedule/locale/en-us/dialog/trigger.dialog(0 hunks)test/end2end/skill-ovos-schedule/locale/en-us/vocab/Schedule.voc(0 hunks)test/end2end/skill-ovos-schedule/setup.py(0 hunks)test/end2end/skill-ovos-slow-fallback/__init__.py(0 hunks)test/end2end/skill-ovos-slow-fallback/setup.py(0 hunks)test/end2end/test_no_skills.py(1 hunks)test/integrationtests/common_query/ovos_tskill_fakewiki/__init__.py(0 hunks)test/integrationtests/common_query/ovos_tskill_fakewiki/locale/en-us/More.voc(0 hunks)test/integrationtests/common_query/ovos_tskill_fakewiki/locale/en-us/no_answer.dialog(0 hunks)test/integrationtests/common_query/ovos_tskill_fakewiki/locale/en-us/search_fakewiki.intent(0 hunks)test/integrationtests/common_query/ovos_tskill_fakewiki/setup.py(0 hunks)test/integrationtests/common_query/test_continuous_dialog.py(0 hunks)test/integrationtests/common_query/test_skill.py(0 hunks)test/integrationtests/ovos_tskill_abort/__init__.py(0 hunks)test/integrationtests/ovos_tskill_abort/locale/en-us/question.dialog(0 hunks)test/integrationtests/ovos_tskill_abort/locale/en-us/test.intent(0 hunks)test/integrationtests/ovos_tskill_abort/locale/en-us/test2.intent(0 hunks)test/integrationtests/ovos_tskill_abort/locale/en-us/test3.intent(0 hunks)test/integrationtests/ovos_tskill_abort/readme.md(0 hunks)test/integrationtests/ovos_tskill_abort/setup.py(0 hunks)test/integrationtests/test_workshop.py(0 hunks)
💤 Files with no reviewable changes (71)
- test/end2end/skill-converse_test/locale/en-us/test_get_response3.intent
- test/end2end/skill-converse_test/locale/en-us/get.dialog
- test/end2end/skill-converse_test/locale/en-us/test3.intent
- test/integrationtests/ovos_tskill_abort/locale/en-us/test3.intent
- test/integrationtests/ovos_tskill_abort/locale/en-us/test.intent
- test/end2end/skill-converse_test/locale/en-us/test2.intent
- test/integrationtests/common_query/ovos_tskill_fakewiki/locale/en-us/no_answer.dialog
- test/end2end/skill-converse_test/locale/en-us/test_get_response.intent
- test/end2end/skill-ovos-schedule/locale/en-us/dialog/trigger.dialog
- test/end2end/skill-converse_test/locale/en-us/question.dialog
- test/integrationtests/ovos_tskill_abort/locale/en-us/question.dialog
- test/end2end/skill-old-stop/locale/en-us/vocab/HelloWorldKeyword.voc
- test/end2end/skill-converse_test/locale/en-us/test.intent
- test/end2end/skill-converse_test/locale/en-us/deactivate.intent
- test/end2end/skill-ovos-hello-world/locale/en-us/dialog/hello.world.dialog
- test/end2end/skill-converse_test/locale/en-us/test_get_response_cascade.intent
- test/integrationtests/ovos_tskill_abort/locale/en-us/test2.intent
- test/end2end/skill-ovos-schedule/locale/en-us/vocab/Schedule.voc
- test/end2end/skill-ovos-schedule/locale/en-us/dialog/done.dialog
- test/end2end/skill-new-stop/locale/en-us/vocab/HelloWorldKeyword.voc
- test/integrationtests/common_query/ovos_tskill_fakewiki/locale/en-us/search_fakewiki.intent
- test/end2end/skill-ovos-hello-world/locale/en-us/vocab/HelloWorldKeyword.voc
- test/end2end/skill-converse_test/locale/en-us/converse_off.intent
- test/integrationtests/common_query/ovos_tskill_fakewiki/setup.py
- test/end2end/skill-ovos-schedule/setup.py
- test/end2end/skill-ovos-schedule/MANIFEST.in
- test/integrationtests/common_query/ovos_tskill_fakewiki/locale/en-us/More.voc
- test/end2end/skill-ovos-hello-world/MANIFEST.in
- test/end2end/skill-converse_test/locale/en-us/converse_on.intent
- test/end2end/skill-old-stop/setup.py
- test/integrationtests/ovos_tskill_abort/readme.md
- test/integrationtests/ovos_tskill_abort/setup.py
- test/end2end/skill-converse_test/setup.py
- test/end2end/skill-ovos-hello-world/setup.py
- test/end2end/skill-fake-fm/setup.py
- test/end2end/skill-new-stop/setup.py
- test/end2end/skill-ovos-fallback-unknown/locale/en-us/unknown.dialog
- test/end2end/skill-old-stop/init.py
- test/end2end/minicroft.py
- test/end2end/skill-ovos-hello-world/init.py
- test/end2end/skill-ovos-slow-fallback/setup.py
- test/end2end/skill-ovos-fakewiki/init.py
- test/end2end/metadata-test-plugin/metadata_test/init.py
- test/end2end/skill-ovos-fakewiki/setup.py
- test/integrationtests/test_workshop.py
- .github/workflows/integration_tests.yml
- test/end2end/skill-ovos-fallback-unknown/setup.py
- test/end2end/skill-new-stop/init.py
- test/integrationtests/common_query/test_continuous_dialog.py
- test/end2end/skill-ovos-slow-fallback/init.py
- test/integrationtests/common_query/test_skill.py
- test/end2end/routing/test_session.py
- test/end2end/session/test_session.py
- test/end2end/metadata-test-plugin/setup.py
- test/end2end/routing/test_sched.py
- .github/workflows/end2end_tests.yml
- test/end2end/skill-fake-fm/init.py
- test/end2end/skill-ovos-fallback-unknown/init.py
- test/end2end/session/test_transformers.py
- test/integrationtests/ovos_tskill_abort/init.py
- test/end2end/skill-ovos-schedule/init.py
- test/end2end/session/test_sched.py
- test/end2end/session/test_complete_failure.py
- test/end2end/session/test_blacklist.py
- test/end2end/session/test_get_response.py
- test/end2end/session/test_stop.py
- test/end2end/session/test_fallback.py
- test/end2end/session/test_ocp.py
- test/end2end/session/test_converse.py
- test/integrationtests/common_query/ovos_tskill_fakewiki/init.py
- test/end2end/skill-converse_test/init.py
🔇 Additional comments (8)
.github/workflows/unit_tests.yml (6)
1-1: LGTM: Workflow name change reflects expanded scope.The rename from "Run UnitTests" to "Run Tests" accurately reflects that this workflow now runs both unit and end-to-end tests.
37-37: LGTM: Updated Python versions are appropriate.Using Python 3.11 and 3.12 aligns with modern Python version support.
51-53: LGTM: Installation approach with expanded extras.The use of
uvfor faster package installation and the expanded extras[mycroft,plugins,skills-essential,lgpl]appears appropriate for comprehensive testing coverage.
60-62: LGTM: Integration of end-to-end tests.Adding end-to-end test execution with coverage continuation (
--cov-append) properly integrates the new testing framework while maintaining coverage reporting.
72-73: LGTM: Updated codecov configuration for ovoscope.The flags and name changes to use "ovoscope" are consistent with the framework migration.
49-49:Details
✅ Verification successful
Verify the necessity of libfann-dev dependency.
The addition of
libfann-devas a system dependency suggests new requirements for the ovoscope framework. Please ensure this dependency is actually required for the test execution.
🏁 Script executed:
#!/bin/bash # Description: Check if libfann-dev is referenced in the codebase or dependencies # Expected: Find references to FANN library usage # Search for FANN-related imports or usage rg -i "fann|neural" --type pyLength of output: 31
🏁 Script executed:
#!/bin/bash # Description: Broad search for any FANN references across the codebase # 1. Search for “fann” in all files and show line numbers rg -i "fann" -n . # 2. Look for C/C++ includes of fann headers rg -n "#include.*fann" . # 3. Check common Python dependency files rg -i "fann" -n requirements*.txt setup.py # 4. Search for mentions of “pyfann” or other Python wrappers rg -i "pyfann" -n .Length of output: 215
🏁 Script executed:
#!/bin/bash # Locate and display context around the apt install step in the unit_tests workflow # Find the workflow file workflow=$(fd -e yml -p unit_tests .github/workflows) echo "Found workflow: $workflow" # Show the apt install line and surrounding lines rg -n "apt install python3-dev" -n "$workflow" sed -n '40,70p' "$workflow"Length of output: 1592
No change needed: libfann-dev is required for FANN support
The
requirements/lgpl.txtfile declaresfann2>=1.0.7,<1.1.0, and the workflow installs thelgplextra (pip install -e .[lgpl]), which pulls in the Python FANN wrapper. Thelibfann-devsystem package is needed to build and link the FANN C library used byfann2. Keeping this dependency ensures the tests and builds succeed.test/end2end/test_no_skills.py (2)
1-5: LGTM: Proper imports and framework usage.The imports are clean and correctly use the new ovoscope framework.
10-27: LGTM: Complete failure test logic is sound.The test correctly validates the expected behavior when no skills are loaded - error sound, complete intent failure, and utterance handled events.
4b3cb29 to
b80cc05
Compare
moved to the new end2end test framework https://github.com/TigreGotico/ovoscope drop codecov for self hosted solution
b80cc05 to
9e21392
Compare
moved to the new end2end test framework https://github.com/TigreGotico/ovoscope
Summary by CodeRabbit