orionis 0.703.0__tar.gz → 0.705.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {orionis-0.703.0/orionis.egg-info → orionis-0.705.0}/PKG-INFO +1 -1
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/commands/test.py +31 -1
- {orionis-0.703.0 → orionis-0.705.0}/orionis/metadata/framework.py +1 -1
- orionis-0.705.0/orionis/test/cases/asynchronous.py +8 -0
- orionis-0.705.0/orionis/test/cases/synchronous.py +8 -0
- orionis-0.705.0/orionis/test/contracts/kernel.py +34 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/contracts/unit_test.py +28 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/core/unit_test.py +68 -31
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/kernel.py +9 -1
- {orionis-0.703.0 → orionis-0.705.0/orionis.egg-info}/PKG-INFO +1 -1
- orionis-0.703.0/orionis/test/cases/asynchronous.py +0 -70
- orionis-0.703.0/orionis/test/cases/synchronous.py +0 -70
- orionis-0.703.0/orionis/test/contracts/kernel.py +0 -22
- {orionis-0.703.0 → orionis-0.705.0}/LICENCE +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/MANIFEST.in +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/README.md +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/app.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/args/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/args/argument.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/base/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/base/command.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/base/scheduler.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/base/scheduler_event_listener.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/commands/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/commands/__publisher__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/commands/cache_clear.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/commands/help.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/commands/log_clear.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/commands/make_command.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/commands/scheduler_list.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/commands/scheduler_work.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/commands/version.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/contracts/base_command.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/contracts/base_scheduler.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/contracts/cli_request.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/contracts/command.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/contracts/console.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/contracts/dumper.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/contracts/event.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/contracts/executor.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/contracts/kernel.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/contracts/progress_bar.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/contracts/reactor.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/contracts/schedule.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/contracts/schedule_event_listener.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/core/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/core/reactor.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/debug/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/debug/dumper.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/dynamic/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/dynamic/progress_bar.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/entities/command.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/entities/event.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/entities/event_job.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/entities/scheduler_error.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/entities/scheduler_event_data.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/entities/scheduler_paused.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/entities/scheduler_resumed.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/entities/scheduler_shutdown.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/entities/scheduler_started.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/enums/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/enums/actions.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/enums/listener.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/enums/styles.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/exceptions/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/exceptions/cli_exceptions.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/fluent/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/fluent/command.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/fluent/event.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/kernel.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/output/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/output/console.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/output/executor.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/request/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/request/cli_request.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/stubs/command.stub +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/stubs/listener.stub +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/tasks/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/console/tasks/schedule.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/container.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/context/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/context/manager.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/context/scope.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/contracts/container.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/contracts/service_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/entities/binding.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/enums/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/enums/lifetimes.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/exceptions/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/exceptions/container.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/facades/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/facades/facade.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/providers/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/container/providers/service_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/failure/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/failure/base/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/failure/base/handler.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/failure/catch.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/failure/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/failure/contracts/catch.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/failure/contracts/handler.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/failure/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/failure/entities/throwable.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/application.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/app/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/app/entities/app.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/app/enums/environments.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/auth/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/cache/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/cache/entities/file.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/cors/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/entities/connections.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/entities/database.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/logging/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/logging/validators/level.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/logging/validators/path.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/mail/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/mail/entities/file.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/queue/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/queue/entities/database.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/roots/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/roots/paths.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/session/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/session/entities/session.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/startup.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/testing/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/contracts/application.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/exceptions/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/exceptions/application.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/providers/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/providers/catch_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/providers/cli_request_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/providers/console_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/providers/directory_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/providers/dumper_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/providers/executor_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/providers/inspirational_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/providers/logger_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/providers/performance_counter_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/providers/reactor_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/providers/scheduler_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/providers/testing_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/foundation/providers/workers_provider.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/metadata/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/metadata/package.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/asynchrony/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/asynchrony/coroutines.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/asynchrony/exceptions/asynchrony.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/encrypter/encrypter.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/contracts/caster.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/contracts/env.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/core/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/core/dot_env.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/dynamic/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/dynamic/caster.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/enums/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/enums/value_type.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/env.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/exceptions/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/exceptions/environment.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/helpers/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/helpers/functions.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/key/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/key/key_generator.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/validators/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/validators/key_name.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/environment/validators/types.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/file/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/file/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/file/contracts/directory.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/file/directory.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/inspirational/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/inspirational/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/inspirational/inspire.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/inspirational/quotes.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/abstract/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/abstract/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/abstract/reflection.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/callables/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/callables/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/callables/reflection.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/concretes/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/concretes/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/concretes/reflection.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/dependencies/entities/argument.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/dependencies/entities/resolve_argument.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/exceptions/introspection.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/instances/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/instances/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/instances/reflection.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/modules/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/modules/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/modules/reflection.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/objects/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/objects/types.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/introspection/reflection.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/log/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/log/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/log/contracts/log_service.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/log/exceptions/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/log/exceptions/log.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/log/handlers/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/log/handlers/filename.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/log/handlers/size_rotating.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/log/log_service.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/system/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/system/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/system/contracts/imports.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/system/contracts/workers.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/system/imports.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/system/runtime/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/system/runtime/imports.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/services/system/workers.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/entities/base.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/application.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/application.pyi +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/console.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/console.pyi +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/directory.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/directory.pyi +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/dumper.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/dumper.pyi +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/executor.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/executor.pyi +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/inspire.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/inspire.pyi +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/logger.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/logger.pyi +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/performance_counter.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/performance_counter.pyi +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/progress_bar.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/progress_bar.pyi +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/reactor.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/reactor.pyi +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/testing.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/testing.pyi +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/workers.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/facades/workers.pyi +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/formatter/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/formatter/exceptions/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/formatter/exceptions/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/formatter/exceptions/parser.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/formatter/serializer.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/patterns/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/patterns/singleton/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/patterns/singleton/meta.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/performance/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/performance/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/performance/contracts/counter.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/performance/counter.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/standard/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/standard/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/standard/contracts/std.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/standard/exceptions/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/standard/exceptions/standard.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/standard/std.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/wrapper/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/wrapper/dataclass.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/support/wrapper/dot_dict.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/cases/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/contracts/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/contracts/dumper.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/contracts/logs.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/contracts/printer.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/contracts/render.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/contracts/test_result.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/core/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/entities/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/entities/result.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/enums/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/enums/status.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/exceptions/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/exceptions/config.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/exceptions/failure.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/exceptions/persistence.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/exceptions/runtime.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/exceptions/value.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/output/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/output/dumper.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/output/printer.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/records/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/records/logs.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/validators/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/validators/base_path.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/validators/execution_mode.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/validators/fail_fast.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/validators/folder_path.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/validators/module_name.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/validators/name_pattern.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/validators/pattern.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/validators/persistent.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/validators/persistent_driver.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/validators/throw_exception.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/validators/verbosity.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/validators/web_report.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/validators/workers.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/view/__init__.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/view/render.py +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis/test/view/report.stub +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis.egg-info/SOURCES.txt +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis.egg-info/dependency_links.txt +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis.egg-info/not-zip-safe +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis.egg-info/requires.txt +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/orionis.egg-info/top_level.txt +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/setup.cfg +0 -0
- {orionis-0.703.0 → orionis-0.705.0}/setup.py +0 -0
@@ -1,3 +1,5 @@
|
|
1
|
+
from typing import List
|
2
|
+
from orionis.console.args.argument import CLIArgument
|
1
3
|
from orionis.console.base.command import BaseCommand
|
2
4
|
from orionis.console.exceptions import CLIOrionisRuntimeError
|
3
5
|
from orionis.foundation.contracts.application import IApplication
|
@@ -26,6 +28,32 @@ class TestCommand(BaseCommand):
|
|
26
28
|
# Command description
|
27
29
|
description: str = "Executes all automated tests using the configured test kernel for the Orionis application."
|
28
30
|
|
31
|
+
def options(self) -> List[CLIArgument]:
|
32
|
+
"""
|
33
|
+
Returns the list of command-line options available for the test command.
|
34
|
+
|
35
|
+
This method defines the supported CLI arguments for the test command,
|
36
|
+
allowing users to specify additional options such as the modules to test.
|
37
|
+
|
38
|
+
Returns
|
39
|
+
-------
|
40
|
+
List[CLIArgument]
|
41
|
+
A list containing CLIArgument instances that describe the available
|
42
|
+
command-line options for the test command.
|
43
|
+
"""
|
44
|
+
|
45
|
+
# Define the available command-line options for the test command
|
46
|
+
return [
|
47
|
+
CLIArgument(
|
48
|
+
flags=["--module", "-m"],
|
49
|
+
type=str,
|
50
|
+
default=[],
|
51
|
+
help="Specify one or more test modules to execute (can be used multiple times).",
|
52
|
+
action="append",
|
53
|
+
dest="modules"
|
54
|
+
)
|
55
|
+
]
|
56
|
+
|
29
57
|
def handle(self, app: IApplication) -> dict:
|
30
58
|
"""
|
31
59
|
Executes all automated tests using the configured test kernel.
|
@@ -59,7 +87,9 @@ class TestCommand(BaseCommand):
|
|
59
87
|
kernel: ITestKernel = app.make(ITestKernel)
|
60
88
|
|
61
89
|
# Run the test suite using the kernel's handle method
|
62
|
-
return kernel.handle(
|
90
|
+
return kernel.handle(
|
91
|
+
modules=self.argument("modules")
|
92
|
+
)
|
63
93
|
|
64
94
|
except Exception as e:
|
65
95
|
|
@@ -0,0 +1,34 @@
|
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
from orionis.test.contracts.unit_test import IUnitTest
|
3
|
+
|
4
|
+
class ITestKernel(ABC):
|
5
|
+
"""
|
6
|
+
Interface for test kernel implementations in the Orionis testing framework.
|
7
|
+
|
8
|
+
The test kernel manages the application context, validates and handles test configuration,
|
9
|
+
orchestrates test discovery and execution, and provides a unified interface for test operations.
|
10
|
+
"""
|
11
|
+
|
12
|
+
@abstractmethod
|
13
|
+
def handle(
|
14
|
+
self,
|
15
|
+
modules: list = []
|
16
|
+
) -> IUnitTest:
|
17
|
+
"""
|
18
|
+
Configures and executes unit tests based on the current test kernel configuration.
|
19
|
+
|
20
|
+
This method sets up the test environment, loads the specified modules, and orchestrates
|
21
|
+
the execution of unit tests. It returns an instance of `IUnitTest` representing the
|
22
|
+
results and state of the executed tests.
|
23
|
+
|
24
|
+
Parameters
|
25
|
+
----------
|
26
|
+
modules : list, optional
|
27
|
+
A list of modules to be included in the test execution. Defaults to an empty list.
|
28
|
+
|
29
|
+
Returns
|
30
|
+
-------
|
31
|
+
IUnitTest
|
32
|
+
An instance representing the configured and executed unit test.
|
33
|
+
"""
|
34
|
+
pass
|
@@ -4,6 +4,34 @@ from typing import Any, Dict, List
|
|
4
4
|
|
5
5
|
class IUnitTest(ABC):
|
6
6
|
|
7
|
+
@abstractmethod
|
8
|
+
def setModule(
|
9
|
+
self,
|
10
|
+
module: str
|
11
|
+
) -> None:
|
12
|
+
"""
|
13
|
+
Add a specific module name to the list of modules for test discovery.
|
14
|
+
|
15
|
+
This method appends the provided module name to the internal list of specific modules
|
16
|
+
(`__specific_modules`). These modules will be considered during test discovery and loading.
|
17
|
+
|
18
|
+
Parameters
|
19
|
+
----------
|
20
|
+
module : str
|
21
|
+
The name of the module to add for test discovery.
|
22
|
+
|
23
|
+
Returns
|
24
|
+
-------
|
25
|
+
None
|
26
|
+
This method does not return any value. It updates the internal module list.
|
27
|
+
|
28
|
+
Notes
|
29
|
+
-----
|
30
|
+
- The module name should be a string representing the fully qualified module path.
|
31
|
+
- This method is useful for targeting specific modules for test execution.
|
32
|
+
"""
|
33
|
+
pass
|
34
|
+
|
7
35
|
@abstractmethod
|
8
36
|
def run(self) -> Dict[str, Any]:
|
9
37
|
"""
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import asyncio
|
1
2
|
import io
|
2
3
|
import json
|
3
4
|
import logging
|
@@ -19,6 +20,7 @@ from orionis.foundation.contracts.application import IApplication
|
|
19
20
|
from orionis.services.introspection.concretes.reflection import ReflectionConcrete
|
20
21
|
from orionis.services.introspection.instances.reflection import ReflectionInstance
|
21
22
|
from orionis.support.performance.contracts.counter import IPerformanceCounter
|
23
|
+
from orionis.test.cases.asynchronous import AsyncTestCase
|
22
24
|
from orionis.test.contracts.test_result import IOrionisTestResult
|
23
25
|
from orionis.test.contracts.unit_test import IUnitTest
|
24
26
|
from orionis.test.entities.result import TestResult
|
@@ -32,7 +34,6 @@ from orionis.test.validators import (
|
|
32
34
|
ValidPersistent, ValidThrowException, ValidVerbosity, ValidWebReport, ValidWorkers,
|
33
35
|
)
|
34
36
|
from orionis.test.view.render import TestingResultRender
|
35
|
-
import asyncio
|
36
37
|
|
37
38
|
class UnitTest(IUnitTest):
|
38
39
|
"""
|
@@ -91,10 +92,10 @@ class UnitTest(IUnitTest):
|
|
91
92
|
logging.getLogger("asyncio").setLevel(logging.ERROR)
|
92
93
|
|
93
94
|
# List of common setup/teardown methods to inspect for debug calls
|
94
|
-
self.__commonMethods =
|
95
|
-
'
|
96
|
-
'
|
97
|
-
|
95
|
+
self.__commonMethods = {
|
96
|
+
'sync': ['setUp', 'tearDown'],
|
97
|
+
'async': ['asyncSetUp', 'asyncTearDown']
|
98
|
+
}
|
98
99
|
|
99
100
|
# Store the application instance for dependency injection and configuration access
|
100
101
|
self.__app: IApplication = app
|
@@ -107,6 +108,7 @@ class UnitTest(IUnitTest):
|
|
107
108
|
self.__flatten_test_suite: Optional[List[unittest.TestCase]] = None
|
108
109
|
|
109
110
|
# List to store imported test modules
|
111
|
+
self.__specific_modules: List[str] = []
|
110
112
|
self.__imported_modules: List = []
|
111
113
|
|
112
114
|
# Sets to track discovered test cases, modules, and IDs
|
@@ -278,7 +280,8 @@ class UnitTest(IUnitTest):
|
|
278
280
|
)
|
279
281
|
|
280
282
|
def __loadModules(
|
281
|
-
self
|
283
|
+
self,
|
284
|
+
modules: List[str] = None
|
282
285
|
) -> None:
|
283
286
|
"""
|
284
287
|
Loads and validates Python modules for test discovery based on the configured folder paths and file patterns.
|
@@ -311,14 +314,23 @@ class UnitTest(IUnitTest):
|
|
311
314
|
"""
|
312
315
|
|
313
316
|
# Use a set to avoid duplicate module imports
|
314
|
-
|
317
|
+
discover_modules = set()
|
318
|
+
|
319
|
+
# If specific modules are provided, validate and import them directly
|
320
|
+
if modules:
|
321
|
+
for module in modules:
|
322
|
+
if not isinstance(module, str) or not module.strip():
|
323
|
+
raise OrionisTestValueError(
|
324
|
+
f"Invalid module name: expected a non-empty string, got {repr(module)}."
|
325
|
+
)
|
326
|
+
discover_modules.add(import_module(ValidModuleName(module.strip())))
|
315
327
|
|
316
328
|
# If folder_path is '*', discover all modules matching the pattern in the test directory
|
317
|
-
|
329
|
+
elif self.__folder_path == '*':
|
318
330
|
list_modules = self.__listMatchingModules(
|
319
331
|
self.__root_path, self.__test_path, '', self.__pattern
|
320
332
|
)
|
321
|
-
|
333
|
+
discover_modules.update(list_modules)
|
322
334
|
|
323
335
|
# If folder_path is a list, discover modules in each specified subdirectory
|
324
336
|
elif isinstance(self.__folder_path, list):
|
@@ -326,10 +338,10 @@ class UnitTest(IUnitTest):
|
|
326
338
|
list_modules = self.__listMatchingModules(
|
327
339
|
self.__root_path, self.__test_path, custom_path, self.__pattern
|
328
340
|
)
|
329
|
-
|
341
|
+
discover_modules.update(list_modules)
|
330
342
|
|
331
343
|
# Extend the internal module list with the sorted discovered modules
|
332
|
-
self.__imported_modules.extend(
|
344
|
+
self.__imported_modules.extend(discover_modules)
|
333
345
|
|
334
346
|
def __listMatchingModules(
|
335
347
|
self,
|
@@ -656,7 +668,7 @@ class UnitTest(IUnitTest):
|
|
656
668
|
rf_instance = ReflectionInstance(test_case)
|
657
669
|
method_name = rf_instance.getAttribute("_testMethodName")
|
658
670
|
method_names_to_check = [method_name] if method_name else []
|
659
|
-
method_names_to_check += [m for m in self.__commonMethods if rf_instance.hasMethod(m)]
|
671
|
+
method_names_to_check += [m for m in self.__commonMethods['sync'] + self.__commonMethods['async'] if rf_instance.hasMethod(m)]
|
660
672
|
|
661
673
|
# Inspect each method's source code for debug keywords
|
662
674
|
for mname in method_names_to_check:
|
@@ -701,6 +713,35 @@ class UnitTest(IUnitTest):
|
|
701
713
|
# No debug keywords found in any inspected method
|
702
714
|
return False
|
703
715
|
|
716
|
+
def setModule(
|
717
|
+
self,
|
718
|
+
module: str
|
719
|
+
) -> None:
|
720
|
+
"""
|
721
|
+
Add a specific module name to the list of modules for test discovery.
|
722
|
+
|
723
|
+
This method appends the provided module name to the internal list of specific modules
|
724
|
+
(`__specific_modules`). These modules will be considered during test discovery and loading.
|
725
|
+
|
726
|
+
Parameters
|
727
|
+
----------
|
728
|
+
module : str
|
729
|
+
The name of the module to add for test discovery.
|
730
|
+
|
731
|
+
Returns
|
732
|
+
-------
|
733
|
+
None
|
734
|
+
This method does not return any value. It updates the internal module list.
|
735
|
+
|
736
|
+
Notes
|
737
|
+
-----
|
738
|
+
- The module name should be a string representing the fully qualified module path.
|
739
|
+
- This method is useful for targeting specific modules for test execution.
|
740
|
+
"""
|
741
|
+
|
742
|
+
# Append the provided module name to the list of specific modules for discovery
|
743
|
+
self.__specific_modules.append(module)
|
744
|
+
|
704
745
|
def run(
|
705
746
|
self,
|
706
747
|
performance_counter: IPerformanceCounter
|
@@ -729,7 +770,7 @@ class UnitTest(IUnitTest):
|
|
729
770
|
self.__loadConfig()
|
730
771
|
|
731
772
|
# Discover and import test modules based on the configuration
|
732
|
-
self.__loadModules()
|
773
|
+
self.__loadModules(self.__specific_modules)
|
733
774
|
|
734
775
|
# Discover and load all test cases from the imported modules into the suite
|
735
776
|
self.__loadTests()
|
@@ -923,10 +964,17 @@ class UnitTest(IUnitTest):
|
|
923
964
|
if not rf_instance.hasAttribute("_testMethodName"):
|
924
965
|
return test_case
|
925
966
|
|
967
|
+
# Determine if the test case uses async or sync common methods
|
968
|
+
common_methods = []
|
969
|
+
if AsyncTestCase in rf_instance.getBaseClasses():
|
970
|
+
common_methods = self.__commonMethods['async']
|
971
|
+
else:
|
972
|
+
common_methods = self.__commonMethods['sync']
|
973
|
+
|
926
974
|
# Iterate over the main test method and common setup/teardown methods
|
927
975
|
for method_name in [
|
928
976
|
rf_instance.getAttribute("_testMethodName"),
|
929
|
-
*
|
977
|
+
*common_methods
|
930
978
|
]:
|
931
979
|
|
932
980
|
# Skip if the method does not exist on the class
|
@@ -958,26 +1006,15 @@ class UnitTest(IUnitTest):
|
|
958
1006
|
dependencies
|
959
1007
|
)
|
960
1008
|
|
961
|
-
# If the test method is asynchronous, wrap it to
|
1009
|
+
# If the test method is asynchronous, wrap it to preserve async nature
|
962
1010
|
if asyncio.iscoroutinefunction(original_method):
|
963
1011
|
|
964
|
-
# Define an async wrapper to inject dependencies
|
1012
|
+
# Define an async wrapper to inject dependencies and preserve async nature
|
965
1013
|
async def async_wrapper(self_instance):
|
966
|
-
return await original_method(self_instance, **resolved_args)
|
967
|
-
|
968
|
-
# Wrap with a sync function for unittest compatibility
|
969
|
-
def sync_wrapper(self_instance):
|
970
|
-
try:
|
971
|
-
loop = asyncio.get_running_loop()
|
972
|
-
except RuntimeError:
|
973
|
-
loop = None
|
974
|
-
if loop and loop.is_running():
|
975
|
-
return loop.create_task(async_wrapper(self_instance)) # NOSONAR
|
976
|
-
else:
|
977
|
-
return asyncio.run(async_wrapper(self_instance))
|
1014
|
+
return await original_method(self_instance, **resolved_args) # NOSONAR
|
978
1015
|
|
979
|
-
# Bind the wrapped method to the test case instance
|
980
|
-
bound_method =
|
1016
|
+
# Bind the async wrapped method to the test case instance
|
1017
|
+
bound_method = async_wrapper.__get__(test_case, test_cls)
|
981
1018
|
|
982
1019
|
else:
|
983
1020
|
|
@@ -1045,7 +1082,7 @@ class UnitTest(IUnitTest):
|
|
1045
1082
|
)
|
1046
1083
|
|
1047
1084
|
# Run the current test case and obtain the result
|
1048
|
-
single_result:
|
1085
|
+
single_result: unittest.TestResult = runner.run(unittest.TestSuite([case]))
|
1049
1086
|
|
1050
1087
|
# Print the result of the current test case using the printer
|
1051
1088
|
self.__printer.unittestResult(single_result.test_results[0])
|
@@ -47,7 +47,10 @@ class TestKernel(ITestKernel):
|
|
47
47
|
# Retrieve the unit test service from the application container
|
48
48
|
self.__unit_test: IUnitTest = app.make(IUnitTest)
|
49
49
|
|
50
|
-
def handle(
|
50
|
+
def handle(
|
51
|
+
self,
|
52
|
+
modules: list = []
|
53
|
+
) -> dict:
|
51
54
|
"""
|
52
55
|
Executes the unit test suite and logs a summary of the results.
|
53
56
|
|
@@ -68,6 +71,11 @@ class TestKernel(ITestKernel):
|
|
68
71
|
'success_rate', and 'timestamp'. If no tests are run, returns None.
|
69
72
|
"""
|
70
73
|
|
74
|
+
# If specific modules are provided, set them in the unit test service
|
75
|
+
if modules and isinstance(modules, list) and len(modules) > 0:
|
76
|
+
for module in modules:
|
77
|
+
self.__unit_test.setModule(module)
|
78
|
+
|
71
79
|
# Run the unit test suite and collect the output summary
|
72
80
|
output = self.__app.call(self.__unit_test, 'run')
|
73
81
|
|
@@ -1,70 +0,0 @@
|
|
1
|
-
import unittest
|
2
|
-
from orionis.test.output.dumper import TestDumper
|
3
|
-
|
4
|
-
class AsyncTestCase(unittest.IsolatedAsyncioTestCase, TestDumper):
|
5
|
-
"""
|
6
|
-
Base class for asynchronous unit tests in the Orionis framework.
|
7
|
-
|
8
|
-
Inherits from `unittest.IsolatedAsyncioTestCase` and `TestDumper`, providing
|
9
|
-
a structure for writing asynchronous tests with isolated event loops and
|
10
|
-
enhanced output capabilities. Subclasses can override `onAsyncSetup` and
|
11
|
-
`onAsyncTeardown` for custom asynchronous setup and teardown logic.
|
12
|
-
|
13
|
-
Attributes
|
14
|
-
----------
|
15
|
-
None
|
16
|
-
"""
|
17
|
-
|
18
|
-
async def asyncSetUp(self):
|
19
|
-
"""
|
20
|
-
Asynchronous setup executed before each test method.
|
21
|
-
|
22
|
-
Calls the parent class's asyncSetUp and then invokes the
|
23
|
-
`onAsyncSetup` hook for additional subclass-specific setup.
|
24
|
-
|
25
|
-
Returns
|
26
|
-
-------
|
27
|
-
None
|
28
|
-
"""
|
29
|
-
await super().asyncSetUp()
|
30
|
-
await self.onAsyncSetup()
|
31
|
-
|
32
|
-
async def asyncTearDown(self):
|
33
|
-
"""
|
34
|
-
Asynchronous teardown executed after each test method.
|
35
|
-
|
36
|
-
Invokes the `onAsyncTeardown` hook for subclass-specific cleanup,
|
37
|
-
then calls the parent class's asyncTearDown.
|
38
|
-
|
39
|
-
Returns
|
40
|
-
-------
|
41
|
-
None
|
42
|
-
"""
|
43
|
-
await self.onAsyncTeardown()
|
44
|
-
await super().asyncTearDown()
|
45
|
-
|
46
|
-
async def onAsyncSetup(self):
|
47
|
-
"""
|
48
|
-
Hook for subclass-specific asynchronous setup logic.
|
49
|
-
|
50
|
-
Intended to be overridden by subclasses to perform custom
|
51
|
-
asynchronous initialization before each test.
|
52
|
-
|
53
|
-
Returns
|
54
|
-
-------
|
55
|
-
None
|
56
|
-
"""
|
57
|
-
pass
|
58
|
-
|
59
|
-
async def onAsyncTeardown(self):
|
60
|
-
"""
|
61
|
-
Hook for subclass-specific asynchronous teardown logic.
|
62
|
-
|
63
|
-
Intended to be overridden by subclasses to perform custom
|
64
|
-
asynchronous cleanup after each test.
|
65
|
-
|
66
|
-
Returns
|
67
|
-
-------
|
68
|
-
None
|
69
|
-
"""
|
70
|
-
pass
|
@@ -1,70 +0,0 @@
|
|
1
|
-
import unittest
|
2
|
-
from orionis.test.output.dumper import TestDumper
|
3
|
-
|
4
|
-
class SyncTestCase(unittest.TestCase, TestDumper):
|
5
|
-
"""
|
6
|
-
Base class for synchronous unit tests in the Orionis framework.
|
7
|
-
|
8
|
-
Inherits from `unittest.TestCase` and `TestDumper`, providing
|
9
|
-
hooks for custom setup and teardown logic via `onSetup()` and
|
10
|
-
`onTeardown()` methods. Subclasses should override these hooks
|
11
|
-
to implement test-specific initialization and cleanup.
|
12
|
-
|
13
|
-
Attributes
|
14
|
-
----------
|
15
|
-
None
|
16
|
-
"""
|
17
|
-
|
18
|
-
def setUp(self):
|
19
|
-
"""
|
20
|
-
Set up the test environment before each test method.
|
21
|
-
|
22
|
-
Calls the superclass `setUp()` and then invokes the
|
23
|
-
`onSetup()` hook for additional initialization.
|
24
|
-
|
25
|
-
Returns
|
26
|
-
-------
|
27
|
-
None
|
28
|
-
"""
|
29
|
-
super().setUp()
|
30
|
-
self.onSetup()
|
31
|
-
|
32
|
-
def tearDown(self):
|
33
|
-
"""
|
34
|
-
Clean up the test environment after each test method.
|
35
|
-
|
36
|
-
Invokes the `onTeardown()` hook for custom cleanup and
|
37
|
-
then calls the superclass `tearDown()`.
|
38
|
-
|
39
|
-
Returns
|
40
|
-
-------
|
41
|
-
None
|
42
|
-
"""
|
43
|
-
self.onTeardown()
|
44
|
-
super().tearDown()
|
45
|
-
|
46
|
-
def onSetup(self):
|
47
|
-
"""
|
48
|
-
Hook for subclass-specific setup logic.
|
49
|
-
|
50
|
-
Intended to be overridden by subclasses to perform
|
51
|
-
custom initialization before each test.
|
52
|
-
|
53
|
-
Returns
|
54
|
-
-------
|
55
|
-
None
|
56
|
-
"""
|
57
|
-
pass
|
58
|
-
|
59
|
-
def onTeardown(self):
|
60
|
-
"""
|
61
|
-
Hook for subclass-specific teardown logic.
|
62
|
-
|
63
|
-
Intended to be overridden by subclasses to perform
|
64
|
-
custom cleanup after each test.
|
65
|
-
|
66
|
-
Returns
|
67
|
-
-------
|
68
|
-
None
|
69
|
-
"""
|
70
|
-
pass
|
@@ -1,22 +0,0 @@
|
|
1
|
-
from abc import ABC, abstractmethod
|
2
|
-
from orionis.test.contracts.unit_test import IUnitTest
|
3
|
-
|
4
|
-
class ITestKernel(ABC):
|
5
|
-
"""
|
6
|
-
Interface for test kernel implementations in the Orionis testing framework.
|
7
|
-
|
8
|
-
The test kernel manages the application context, validates and handles test configuration,
|
9
|
-
orchestrates test discovery and execution, and provides a unified interface for test operations.
|
10
|
-
"""
|
11
|
-
|
12
|
-
@abstractmethod
|
13
|
-
def handle(self) -> IUnitTest:
|
14
|
-
"""
|
15
|
-
Configure and execute unit tests according to the current configuration.
|
16
|
-
|
17
|
-
Returns
|
18
|
-
-------
|
19
|
-
IUnitTest
|
20
|
-
An instance representing the configured and executed unit test.
|
21
|
-
"""
|
22
|
-
pass
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|