File: test_callback.py

package info (click to toggle)
python-pytest-shell-utilities 1.9.7-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 580 kB
  • sloc: python: 2,998; makefile: 18
file content (41 lines) | stat: -rw-r--r-- 1,187 bytes parent folder | download
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
39
40
41
# Copyright 2021-2024 VMware, Inc.
# SPDX-License-Identifier: Apache-2.0
#
from typing import Any
from typing import Dict

import pytest

from pytestshellutils.customtypes import Callback


def func(*args: Any, **kwargs: Any) -> Dict[str, Any]:
    return {"args": args, "kwargs": kwargs}


@pytest.fixture
def callback() -> Callback:
    return Callback(func=func, args=("a1", "a2"), kwargs={"keyword_argument": True})


def test___str__(callback: Callback) -> None:
    assert str(callback) == "func('a1', 'a2', keyword_argument=True)"


def test___call__(callback: Callback) -> None:
    assert callback() == {"args": ("a1", "a2"), "kwargs": {"keyword_argument": True}}


def test___call__extra_args(callback: Callback) -> None:
    assert callback("bar") == {"args": ("bar", "a1", "a2"), "kwargs": {"keyword_argument": True}}


def test___call__extra_kwargs(callback: Callback) -> None:
    assert callback(bar=2) == {"args": ("a1", "a2"), "kwargs": {"keyword_argument": True, "bar": 2}}


def test___call__override_kwarg(callback: Callback) -> None:
    assert callback(keyword_argument=False) == {
        "args": ("a1", "a2"),
        "kwargs": {"keyword_argument": False},
    }