1# -*- coding: utf-8 -*-
2# Copyright (c) 2020 Ansible Project
3# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
4
5from __future__ import absolute_import, division, print_function
6__metaclass__ = type
7
8import pytest
9
10from ansible.utils.display import Display
11
12
13@pytest.fixture
14def warning_message():
15    warning_message = 'bad things will happen'
16    expected_warning_message = '[WARNING]: {0}\n'.format(warning_message)
17    return warning_message, expected_warning_message
18
19
20def test_warning(capsys, mocker, warning_message):
21    warning_message, expected_warning_message = warning_message
22
23    mocker.patch('ansible.utils.color.ANSIBLE_COLOR', True)
24    mocker.patch('ansible.utils.color.parsecolor', return_value=u'1;35')  # value for 'bright purple'
25
26    d = Display()
27    d.warning(warning_message)
28    out, err = capsys.readouterr()
29    assert d._warns == {expected_warning_message: 1}
30    assert err == '\x1b[1;35m{0}\x1b[0m\n'.format(expected_warning_message.rstrip('\n'))
31
32
33def test_warning_no_color(capsys, mocker, warning_message):
34    warning_message, expected_warning_message = warning_message
35
36    mocker.patch('ansible.utils.color.ANSIBLE_COLOR', False)
37
38    d = Display()
39    d.warning(warning_message)
40    out, err = capsys.readouterr()
41    assert d._warns == {expected_warning_message: 1}
42    assert err == expected_warning_message
43