File: test_convert_bool.py

package info (click to toggle)
ansible-core 2.19.0~beta6-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 32,628 kB
  • sloc: python: 180,313; cs: 4,929; sh: 4,601; xml: 34; makefile: 21
file content (40 lines) | stat: -rw-r--r-- 1,064 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
39
40
# -*- coding: utf-8 -*-
# Copyright: (c) 2017 Ansible Project
# License: GNU General Public License v3 or later (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt )

from __future__ import annotations

import pytest

from ansible.module_utils.parsing.convert_bool import boolean


junk_values = ("flibbity", 42, 42.0, object(), None, 2, -1, 0.1)


@pytest.mark.parametrize(("value", "expected"), [
    (True, True),
    (False, False),
    (1, True),
    (0, False),
    (0.0, False),
    ("true", True),
    ("TRUE", True),
    ("t", True),
    ("yes", True),
    ("y", True),
    ("on", True),
])
def test_boolean(value: object, expected: bool) -> None:
    assert boolean(value) is expected


@pytest.mark.parametrize("value", junk_values)
def test_junk_values_non_strict(value: object) -> None:
    assert boolean(value, strict=False) is False


@pytest.mark.parametrize("value", junk_values)
def test_junk_values_strict(value: object) -> None:
    with pytest.raises(TypeError, match=f"^The value '{value}' is not"):
        boolean(value, strict=True)