New Module: gio_mime (#7271)

* gio_mime: new module

* multiple changes

- fixed gio_mime module utils handler detection
- add message to test helper assertion
- add unit test

* gio mime output uses unicode smart quotes

* test helper: do not use skip/xfail reason messages - break in old pytest

* Update plugins/modules/gio_mime.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* change exist variables to meet standards

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
Alexei Znamensky 2023-09-21 05:29:05 +12:00 committed by GitHub
parent c3fd14e18f
commit 9489a1ea1c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 239 additions and 3 deletions

View file

@ -51,9 +51,9 @@ class _BaseContext(object):
test_flags = self.test_flags()
if test_flags.get("skip"):
pytest.skip(reason=test_flags["skip"])
pytest.skip()
if test_flags.get("xfail"):
pytest.xfail(reason=test_flags["xfail"])
pytest.xfail()
func()
@ -90,7 +90,7 @@ class _RunCmdContext(_BaseContext):
print("call args list =\n%s" % call_args_list)
print("expected args list =\n%s" % expected_call_args_list)
assert self.mock_run_cmd.call_count == len(self.run_cmd_calls)
assert self.mock_run_cmd.call_count == len(self.run_cmd_calls), "{0} != {1}".format(self.mock_run_cmd.call_count, len(self.run_cmd_calls))
if self.mock_run_cmd.call_count:
assert call_args_list == expected_call_args_list

View file

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alexei Znamensky (russoz@gmail.com)
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
from ansible_collections.community.general.plugins.modules import gio_mime
from .helper import Helper
helper = Helper.from_file(gio_mime.main, "tests/unit/plugins/modules/test_gio_mime.yaml")
patch_bin = helper.cmd_fixture
test_module = helper.test_module

View file

@ -0,0 +1,70 @@
# -*- coding: utf-8 -*-
# Copyright (c) Alexei Znamensky (russoz@gmail.com)
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
---
- id: test_set_handler
input:
handler: google-chrome.desktop
mime_type: x-scheme-handler/http
output:
handler: google-chrome.desktop
changed: true
run_command_calls:
- command: [/testbin/gio, mime, x-scheme-handler/http]
environ: &env-def {environ_update: {LANGUAGE: C, LC_ALL: C}, check_rc: true}
rc: 0
out: ""
err: >
No default applications for “x-scheme-handler/http”
- command: [/testbin/gio, mime, x-scheme-handler/http, google-chrome.desktop]
environ: *env-def
rc: 0
out: "Set google-chrome.desktop as the default for x-scheme-handler/http\n"
err: ""
- id: test_set_handler_check
input:
handler: google-chrome.desktop
mime_type: x-scheme-handler/http
output:
handler: google-chrome.desktop
changed: true
flags:
skip: test helper does not support check mode yet
run_command_calls:
- command: [/testbin/gio, mime, x-scheme-handler/http]
environ: *env-def
rc: 0
out: ""
err: >
No default applications for “x-scheme-handler/http”
- command: [/testbin/gio, mime, x-scheme-handler/http, google-chrome.desktop]
environ: *env-def
rc: 0
out: "Set google-chrome.desktop as the default for x-scheme-handler/http\n"
err: ""
- id: test_set_handler_idempot
input:
handler: google-chrome.desktop
mime_type: x-scheme-handler/http
output:
handler: google-chrome.desktop
changed: false
run_command_calls:
- command: [/testbin/gio, mime, x-scheme-handler/http]
environ: *env-def
rc: 0
out: |
Default application for “x-scheme-handler/https”: google-chrome.desktop
Registered applications:
brave-browser.desktop
firefox.desktop
google-chrome.desktop
firefox_firefox.desktop
Recommended applications:
brave-browser.desktop
firefox.desktop
google-chrome.desktop
firefox_firefox.desktop
err: ""