mirror of
https://github.com/ansible-collections/community.docker.git
synced 2026-07-29 11:55:04 +00:00
Make all doc fragments, module utils, and plugin utils private (#1144)
* Make all doc fragments, module utils, and plugin utils private. * Remove some unused and no longer needed imports. This hopefully also fixes the CI issues, which do not happen locally for me... * Fix formatting. * Try to make CI happy, again. * Fix imports. * Lint.
This commit is contained in:
@@ -0,0 +1,453 @@
|
||||
# Copyright (c) Ansible Project
|
||||
# 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
|
||||
|
||||
import pytest
|
||||
from ansible_collections.community.docker.plugins.module_utils._util import (
|
||||
compare_dict_allow_more_present,
|
||||
compare_generic,
|
||||
convert_duration_to_nanosecond,
|
||||
parse_healthcheck,
|
||||
)
|
||||
|
||||
|
||||
DICT_ALLOW_MORE_PRESENT = (
|
||||
{"av": {}, "bv": {"a": 1}, "result": True},
|
||||
{"av": {"a": 1}, "bv": {"a": 1, "b": 2}, "result": True},
|
||||
{"av": {"a": 1}, "bv": {"b": 2}, "result": False},
|
||||
{"av": {"a": 1}, "bv": {"a": None, "b": 1}, "result": False},
|
||||
{"av": {"a": None}, "bv": {"b": 1}, "result": False},
|
||||
)
|
||||
|
||||
COMPARE_GENERIC = [
|
||||
########################################################################################
|
||||
# value
|
||||
{"a": 1, "b": 2, "method": "strict", "type": "value", "result": False},
|
||||
{"a": "hello", "b": "hello", "method": "strict", "type": "value", "result": True},
|
||||
{"a": None, "b": "hello", "method": "strict", "type": "value", "result": False},
|
||||
{"a": None, "b": None, "method": "strict", "type": "value", "result": True},
|
||||
{"a": 1, "b": 2, "method": "ignore", "type": "value", "result": True},
|
||||
{"a": None, "b": 2, "method": "ignore", "type": "value", "result": True},
|
||||
########################################################################################
|
||||
# list
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
],
|
||||
"b": [
|
||||
"y",
|
||||
],
|
||||
"method": "strict",
|
||||
"type": "list",
|
||||
"result": False,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
],
|
||||
"b": [
|
||||
"x",
|
||||
"x",
|
||||
],
|
||||
"method": "strict",
|
||||
"type": "list",
|
||||
"result": False,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
"y",
|
||||
],
|
||||
"b": [
|
||||
"x",
|
||||
"y",
|
||||
],
|
||||
"method": "strict",
|
||||
"type": "list",
|
||||
"result": True,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
"y",
|
||||
],
|
||||
"b": [
|
||||
"y",
|
||||
"x",
|
||||
],
|
||||
"method": "strict",
|
||||
"type": "list",
|
||||
"result": False,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
"y",
|
||||
],
|
||||
"b": [
|
||||
"x",
|
||||
],
|
||||
"method": "allow_more_present",
|
||||
"type": "list",
|
||||
"result": False,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
],
|
||||
"b": [
|
||||
"x",
|
||||
"y",
|
||||
],
|
||||
"method": "allow_more_present",
|
||||
"type": "list",
|
||||
"result": True,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
"x",
|
||||
"y",
|
||||
],
|
||||
"b": [
|
||||
"x",
|
||||
"y",
|
||||
],
|
||||
"method": "allow_more_present",
|
||||
"type": "list",
|
||||
"result": False,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
"z",
|
||||
],
|
||||
"b": [
|
||||
"x",
|
||||
"y",
|
||||
"x",
|
||||
"z",
|
||||
],
|
||||
"method": "allow_more_present",
|
||||
"type": "list",
|
||||
"result": True,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
"y",
|
||||
],
|
||||
"b": [
|
||||
"y",
|
||||
"x",
|
||||
],
|
||||
"method": "ignore",
|
||||
"type": "list",
|
||||
"result": True,
|
||||
},
|
||||
########################################################################################
|
||||
# set
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
],
|
||||
"b": [
|
||||
"y",
|
||||
],
|
||||
"method": "strict",
|
||||
"type": "set",
|
||||
"result": False,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
],
|
||||
"b": [
|
||||
"x",
|
||||
"x",
|
||||
],
|
||||
"method": "strict",
|
||||
"type": "set",
|
||||
"result": True,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
"y",
|
||||
],
|
||||
"b": [
|
||||
"x",
|
||||
"y",
|
||||
],
|
||||
"method": "strict",
|
||||
"type": "set",
|
||||
"result": True,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
"y",
|
||||
],
|
||||
"b": [
|
||||
"y",
|
||||
"x",
|
||||
],
|
||||
"method": "strict",
|
||||
"type": "set",
|
||||
"result": True,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
"y",
|
||||
],
|
||||
"b": [
|
||||
"x",
|
||||
],
|
||||
"method": "allow_more_present",
|
||||
"type": "set",
|
||||
"result": False,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
],
|
||||
"b": [
|
||||
"x",
|
||||
"y",
|
||||
],
|
||||
"method": "allow_more_present",
|
||||
"type": "set",
|
||||
"result": True,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
"x",
|
||||
"y",
|
||||
],
|
||||
"b": [
|
||||
"x",
|
||||
"y",
|
||||
],
|
||||
"method": "allow_more_present",
|
||||
"type": "set",
|
||||
"result": True,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
"z",
|
||||
],
|
||||
"b": [
|
||||
"x",
|
||||
"y",
|
||||
"x",
|
||||
"z",
|
||||
],
|
||||
"method": "allow_more_present",
|
||||
"type": "set",
|
||||
"result": True,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
"x",
|
||||
"a",
|
||||
],
|
||||
"b": [
|
||||
"y",
|
||||
"z",
|
||||
],
|
||||
"method": "ignore",
|
||||
"type": "set",
|
||||
"result": True,
|
||||
},
|
||||
########################################################################################
|
||||
# set(dict)
|
||||
{
|
||||
"a": [
|
||||
{"x": 1},
|
||||
],
|
||||
"b": [
|
||||
{"y": 1},
|
||||
],
|
||||
"method": "strict",
|
||||
"type": "set(dict)",
|
||||
"result": False,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
{"x": 1},
|
||||
],
|
||||
"b": [
|
||||
{"x": 1},
|
||||
],
|
||||
"method": "strict",
|
||||
"type": "set(dict)",
|
||||
"result": True,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
{"x": 1},
|
||||
],
|
||||
"b": [
|
||||
{"x": 1, "y": 2},
|
||||
],
|
||||
"method": "strict",
|
||||
"type": "set(dict)",
|
||||
"result": True,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
{"x": 1},
|
||||
{"x": 2, "y": 3},
|
||||
],
|
||||
"b": [
|
||||
{"x": 1},
|
||||
{"x": 2, "y": 3},
|
||||
],
|
||||
"method": "strict",
|
||||
"type": "set(dict)",
|
||||
"result": True,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
{"x": 1},
|
||||
],
|
||||
"b": [
|
||||
{"x": 1, "z": 2},
|
||||
{"x": 2, "y": 3},
|
||||
],
|
||||
"method": "allow_more_present",
|
||||
"type": "set(dict)",
|
||||
"result": True,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
{"x": 1, "y": 2},
|
||||
],
|
||||
"b": [
|
||||
{"x": 1},
|
||||
{"x": 2, "y": 3},
|
||||
],
|
||||
"method": "allow_more_present",
|
||||
"type": "set(dict)",
|
||||
"result": False,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
{"x": 1, "y": 3},
|
||||
],
|
||||
"b": [
|
||||
{"x": 1},
|
||||
{"x": 1, "y": 3, "z": 4},
|
||||
],
|
||||
"method": "allow_more_present",
|
||||
"type": "set(dict)",
|
||||
"result": True,
|
||||
},
|
||||
{
|
||||
"a": [
|
||||
{"x": 1},
|
||||
{"x": 2, "y": 3},
|
||||
],
|
||||
"b": [
|
||||
{"x": 1},
|
||||
],
|
||||
"method": "ignore",
|
||||
"type": "set(dict)",
|
||||
"result": True,
|
||||
},
|
||||
########################################################################################
|
||||
# dict
|
||||
{"a": {"x": 1}, "b": {"y": 1}, "method": "strict", "type": "dict", "result": False},
|
||||
{
|
||||
"a": {"x": 1},
|
||||
"b": {"x": 1, "y": 2},
|
||||
"method": "strict",
|
||||
"type": "dict",
|
||||
"result": False,
|
||||
},
|
||||
{"a": {"x": 1}, "b": {"x": 1}, "method": "strict", "type": "dict", "result": True},
|
||||
{
|
||||
"a": {"x": 1, "z": 2},
|
||||
"b": {"x": 1, "y": 2},
|
||||
"method": "strict",
|
||||
"type": "dict",
|
||||
"result": False,
|
||||
},
|
||||
{
|
||||
"a": {"x": 1, "z": 2},
|
||||
"b": {"x": 1, "y": 2},
|
||||
"method": "ignore",
|
||||
"type": "dict",
|
||||
"result": True,
|
||||
},
|
||||
] + [
|
||||
{
|
||||
"a": entry["av"],
|
||||
"b": entry["bv"],
|
||||
"method": "allow_more_present",
|
||||
"type": "dict",
|
||||
"result": entry["result"],
|
||||
}
|
||||
for entry in DICT_ALLOW_MORE_PRESENT
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("entry", DICT_ALLOW_MORE_PRESENT)
|
||||
def test_dict_allow_more_present(entry):
|
||||
assert compare_dict_allow_more_present(entry["av"], entry["bv"]) == entry["result"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("entry", COMPARE_GENERIC)
|
||||
def test_compare_generic(entry):
|
||||
assert (
|
||||
compare_generic(entry["a"], entry["b"], entry["method"], entry["type"])
|
||||
== entry["result"]
|
||||
)
|
||||
|
||||
|
||||
def test_convert_duration_to_nanosecond():
|
||||
nanoseconds = convert_duration_to_nanosecond("5s")
|
||||
assert nanoseconds == 5000000000
|
||||
nanoseconds = convert_duration_to_nanosecond("1m5s")
|
||||
assert nanoseconds == 65000000000
|
||||
with pytest.raises(ValueError):
|
||||
convert_duration_to_nanosecond([1, 2, 3])
|
||||
with pytest.raises(ValueError):
|
||||
convert_duration_to_nanosecond("10x")
|
||||
|
||||
|
||||
def test_parse_healthcheck():
|
||||
result, disabled = parse_healthcheck(
|
||||
{
|
||||
"test": "sleep 1",
|
||||
"interval": "1s",
|
||||
}
|
||||
)
|
||||
assert disabled is False
|
||||
assert result == {"test": ["CMD-SHELL", "sleep 1"], "interval": 1000000000}
|
||||
|
||||
result, disabled = parse_healthcheck(
|
||||
{
|
||||
"test": ["NONE"],
|
||||
}
|
||||
)
|
||||
assert result is None
|
||||
assert disabled
|
||||
|
||||
result, disabled = parse_healthcheck({"test": "sleep 1", "interval": "1s423ms"})
|
||||
assert result == {"test": ["CMD-SHELL", "sleep 1"], "interval": 1423000000}
|
||||
assert disabled is False
|
||||
|
||||
result, disabled = parse_healthcheck(
|
||||
{"test": "sleep 1", "interval": "1h1m2s3ms4us"}
|
||||
)
|
||||
assert result == {"test": ["CMD-SHELL", "sleep 1"], "interval": 3662003004000}
|
||||
assert disabled is False
|
||||
Reference in New Issue
Block a user