# -*- coding: utf-8 -*- # Copyright (c) 2020 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) from __future__ import annotations from ansible.module_utils.facts.virtual import linux def mock_os_path_is_file_docker(filename): if filename in ('/.dockerenv', '/.dockerinit'): return True return False def test_get_virtual_facts_docker(mocker): mocker.patch('os.path.exists', mock_os_path_is_file_docker) module = mocker.Mock() module.run_command.return_value = (0, '', '') inst = linux.LinuxVirtual(module) facts = inst.get_virtual_facts() expected = { 'virtualization_role': 'guest', 'virtualization_tech_host': set(), 'virtualization_type': 'docker', 'virtualization_tech_guest': set(['docker', 'container']), } assert facts == expected def test_get_virtual_facts_bhyve(mocker): mocker.patch('os.path.exists', return_value=False) mocker.patch('ansible.module_utils.facts.virtual.linux.get_file_content', return_value='') mocker.patch('ansible.module_utils.facts.virtual.linux.get_file_lines', return_value=[]) module = mocker.Mock() module.run_command.return_value = (0, 'BHYVE\n', '') inst = linux.LinuxVirtual(module) facts = inst.get_virtual_facts() expected = { 'virtualization_role': 'guest', 'virtualization_tech_host': set(), 'virtualization_type': 'bhyve', 'virtualization_tech_guest': set(['bhyve']), } assert facts == expected