Skip to content

Add configuration to define the entry point of the app #2634

@timrid

Description

@timrid

What is the problem or limitation you are having?

If you want to use tests via the --test option, according to the docs you currently need to have a module such as tests.myapp to startup the tests.

The module name myapp is derived from the app name, but the package tests in which the module must be located is fixed. test_sources allows you to include any folder, but currently there must be at least one folder called tests that contains the main test module.

In Python, it is often common for the tests to be located in a tests folder, but this folder can also have a different name. Therefore, it would be good to have a configuration option for the main test package.

Describe the solution you'd like

There should be a configuration option test_main_package that allows you to configure the name of the main test package.

Describe alternatives you've considered

Leave everything as it is. The main package must always be called tests. However, the documentation for test_sources should make it clearer that it must contain a folder called tests.

Additional context

My current problem is that I want to run the integration tests of the BLE library Bleak on Android and iOS. Currently, these run on macOS/Linux/Window normally via pytest in a venv. However, in order to test these platforms on Android and iOS, I need a sample app in which the tests are integrated. For this purpose, I want to create a briefcase application, which should be located under /examples/briefcase. My desired project structure is as follows:

- bleak (already existing library source code)
  - __init__.py
  - ... 
- tests (already existing library tests)
  - integration
    - test_scanner.py
    - test_client.py
    - ...
  - ... 
- examples
  - briefcase
    - src
    - tests_startup
      - bleak_example.py
    - pyproject.toml

My examples/briefcase/pyproject.toml should look like this:

[tool.briefcase.app.bleak_example]
...
test_main_package = "tests_startup"
test_sources = [
	"tests_startup",
	"../../tests"
]

I could, of course, simply move the file examples/briefcase/tests_startup/bleak_example.py to tests/bleak_example.py and remove the tests_startup folder entirely, but I don't want to modify the existing tests folder at all.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew features, or improvements to existing features.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions