File: test_loader.py

package info (click to toggle)
celery 5.5.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 8,008 kB
  • sloc: python: 64,346; sh: 795; makefile: 378
file content (38 lines) | stat: -rw-r--r-- 1,352 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import pytest

from celery import shared_task


@shared_task()
def dummy_task(x, y):
    return x + y


class test_loader:
    def test_autodiscovery__when_packages_exist(self, manager):
        # Arrange
        expected_package_name, _, module_name = __name__.rpartition('.')
        unexpected_package_name = 'datetime.datetime'

        # Act
        manager.app.autodiscover_tasks([expected_package_name, unexpected_package_name], module_name, force=True)

        # Assert
        assert f'{expected_package_name}.{module_name}.dummy_task' in manager.app.tasks
        assert not any(
            task.startswith(unexpected_package_name) for task in manager.app.tasks
        ), 'Expected datetime.datetime to neither have test_loader module nor define a Celery task.'

    def test_autodiscovery__when_packages_do_not_exist(self, manager):
        # Arrange
        existent_package_name, _, module_name = __name__.rpartition('.')
        nonexistent_package_name = 'nonexistent.package.name'

        # Act
        with pytest.raises(ModuleNotFoundError) as exc:
            manager.app.autodiscover_tasks(
                [existent_package_name, nonexistent_package_name], module_name, force=True
            )

        # Assert
        assert nonexistent_package_name.startswith(exc.value.name), 'Expected to fail on importing "nonexistent"'