mirror of
https://github.com/pi-hole/pi-hole
synced 2024-12-22 14:58:08 +00:00
move test globals & mock commands to conftest
Signed-off-by: bcambl <blayne@blaynecampbell.com>
This commit is contained in:
parent
40537e1522
commit
5ca2ad6148
@ -1,10 +1,23 @@
|
|||||||
import pytest
|
import pytest
|
||||||
import testinfra
|
import testinfra
|
||||||
|
from textwrap import dedent
|
||||||
|
|
||||||
check_output = testinfra.get_backend(
|
check_output = testinfra.get_backend(
|
||||||
"local://"
|
"local://"
|
||||||
).get_module("Command").check_output
|
).get_module("Command").check_output
|
||||||
|
|
||||||
|
SETUPVARS = {
|
||||||
|
'PIHOLE_INTERFACE': 'eth99',
|
||||||
|
'IPV4_ADDRESS': '1.1.1.1',
|
||||||
|
'IPV6_ADDRESS': 'FE80::240:D0FF:FE48:4672',
|
||||||
|
'PIHOLE_DNS_1': '4.2.2.1',
|
||||||
|
'PIHOLE_DNS_2': '4.2.2.2'
|
||||||
|
}
|
||||||
|
|
||||||
|
tick_box = "[\x1b[1;32m\xe2\x9c\x93\x1b[0m]".decode("utf-8")
|
||||||
|
cross_box = "[\x1b[1;31m\xe2\x9c\x97\x1b[0m]".decode("utf-8")
|
||||||
|
info_box = "[i]".decode("utf-8")
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def Pihole(Docker):
|
def Pihole(Docker):
|
||||||
@ -80,3 +93,64 @@ def cmd(request):
|
|||||||
default to doing nothing by tailing null, but don't exit
|
default to doing nothing by tailing null, but don't exit
|
||||||
'''
|
'''
|
||||||
return 'tail -f /dev/null'
|
return 'tail -f /dev/null'
|
||||||
|
|
||||||
|
|
||||||
|
# Helper functions
|
||||||
|
def mock_command(script, args, container):
|
||||||
|
'''
|
||||||
|
Allows for setup of commands we don't really want to have to run for real
|
||||||
|
in unit tests
|
||||||
|
'''
|
||||||
|
full_script_path = '/usr/local/bin/{}'.format(script)
|
||||||
|
mock_script = dedent('''\
|
||||||
|
#!/bin/bash -e
|
||||||
|
echo "\$0 \$@" >> /var/log/{script}
|
||||||
|
case "\$1" in'''.format(script=script))
|
||||||
|
for k, v in args.iteritems():
|
||||||
|
case = dedent('''
|
||||||
|
{arg})
|
||||||
|
echo {res}
|
||||||
|
exit {retcode}
|
||||||
|
;;'''.format(arg=k, res=v[0], retcode=v[1]))
|
||||||
|
mock_script += case
|
||||||
|
mock_script += dedent('''
|
||||||
|
esac''')
|
||||||
|
container.run('''
|
||||||
|
cat <<EOF> {script}\n{content}\nEOF
|
||||||
|
chmod +x {script}
|
||||||
|
rm -f /var/log/{scriptlog}'''.format(script=full_script_path,
|
||||||
|
content=mock_script,
|
||||||
|
scriptlog=script))
|
||||||
|
|
||||||
|
|
||||||
|
def mock_command_2(script, args, container):
|
||||||
|
'''
|
||||||
|
Allows for setup of commands we don't really want to have to run for real
|
||||||
|
in unit tests
|
||||||
|
'''
|
||||||
|
full_script_path = '/usr/local/bin/{}'.format(script)
|
||||||
|
mock_script = dedent('''\
|
||||||
|
#!/bin/bash -e
|
||||||
|
echo "\$0 \$@" >> /var/log/{script}
|
||||||
|
case "\$1 \$2" in'''.format(script=script))
|
||||||
|
for k, v in args.iteritems():
|
||||||
|
case = dedent('''
|
||||||
|
\"{arg}\")
|
||||||
|
echo \"{res}\"
|
||||||
|
exit {retcode}
|
||||||
|
;;'''.format(arg=k, res=v[0], retcode=v[1]))
|
||||||
|
mock_script += case
|
||||||
|
mock_script += dedent('''
|
||||||
|
esac''')
|
||||||
|
container.run('''
|
||||||
|
cat <<EOF> {script}\n{content}\nEOF
|
||||||
|
chmod +x {script}
|
||||||
|
rm -f /var/log/{scriptlog}'''.format(script=full_script_path,
|
||||||
|
content=mock_script,
|
||||||
|
scriptlog=script))
|
||||||
|
|
||||||
|
|
||||||
|
def run_script(Pihole, script):
|
||||||
|
result = Pihole.run(script)
|
||||||
|
assert result.rc == 0
|
||||||
|
return result
|
||||||
|
@ -1,16 +1,13 @@
|
|||||||
from textwrap import dedent
|
from textwrap import dedent
|
||||||
|
from conftest import (
|
||||||
SETUPVARS = {
|
SETUPVARS,
|
||||||
'PIHOLE_INTERFACE': 'eth99',
|
tick_box,
|
||||||
'IPV4_ADDRESS': '1.1.1.1',
|
info_box,
|
||||||
'IPV6_ADDRESS': 'FE80::240:D0FF:FE48:4672',
|
cross_box,
|
||||||
'PIHOLE_DNS_1': '4.2.2.1',
|
mock_command,
|
||||||
'PIHOLE_DNS_2': '4.2.2.2'
|
mock_command_2,
|
||||||
}
|
run_script
|
||||||
|
)
|
||||||
tick_box = "[\x1b[1;32m\xe2\x9c\x93\x1b[0m]".decode("utf-8")
|
|
||||||
cross_box = "[\x1b[1;31m\xe2\x9c\x97\x1b[0m]".decode("utf-8")
|
|
||||||
info_box = "[i]".decode("utf-8")
|
|
||||||
|
|
||||||
|
|
||||||
def test_setupVars_are_sourced_to_global_scope(Pihole):
|
def test_setupVars_are_sourced_to_global_scope(Pihole):
|
||||||
@ -632,64 +629,3 @@ def test_IPv6_ULA_GUA_test(Pihole):
|
|||||||
''')
|
''')
|
||||||
expected_stdout = 'Found IPv6 ULA address, using it for blocking IPv6 ads'
|
expected_stdout = 'Found IPv6 ULA address, using it for blocking IPv6 ads'
|
||||||
assert expected_stdout in detectPlatform.stdout
|
assert expected_stdout in detectPlatform.stdout
|
||||||
|
|
||||||
|
|
||||||
# Helper functions
|
|
||||||
def mock_command(script, args, container):
|
|
||||||
'''
|
|
||||||
Allows for setup of commands we don't really want to have to run for real
|
|
||||||
in unit tests
|
|
||||||
'''
|
|
||||||
full_script_path = '/usr/local/bin/{}'.format(script)
|
|
||||||
mock_script = dedent('''\
|
|
||||||
#!/bin/bash -e
|
|
||||||
echo "\$0 \$@" >> /var/log/{script}
|
|
||||||
case "\$1" in'''.format(script=script))
|
|
||||||
for k, v in args.iteritems():
|
|
||||||
case = dedent('''
|
|
||||||
{arg})
|
|
||||||
echo {res}
|
|
||||||
exit {retcode}
|
|
||||||
;;'''.format(arg=k, res=v[0], retcode=v[1]))
|
|
||||||
mock_script += case
|
|
||||||
mock_script += dedent('''
|
|
||||||
esac''')
|
|
||||||
container.run('''
|
|
||||||
cat <<EOF> {script}\n{content}\nEOF
|
|
||||||
chmod +x {script}
|
|
||||||
rm -f /var/log/{scriptlog}'''.format(script=full_script_path,
|
|
||||||
content=mock_script,
|
|
||||||
scriptlog=script))
|
|
||||||
|
|
||||||
|
|
||||||
def mock_command_2(script, args, container):
|
|
||||||
'''
|
|
||||||
Allows for setup of commands we don't really want to have to run for real
|
|
||||||
in unit tests
|
|
||||||
'''
|
|
||||||
full_script_path = '/usr/local/bin/{}'.format(script)
|
|
||||||
mock_script = dedent('''\
|
|
||||||
#!/bin/bash -e
|
|
||||||
echo "\$0 \$@" >> /var/log/{script}
|
|
||||||
case "\$1 \$2" in'''.format(script=script))
|
|
||||||
for k, v in args.iteritems():
|
|
||||||
case = dedent('''
|
|
||||||
\"{arg}\")
|
|
||||||
echo \"{res}\"
|
|
||||||
exit {retcode}
|
|
||||||
;;'''.format(arg=k, res=v[0], retcode=v[1]))
|
|
||||||
mock_script += case
|
|
||||||
mock_script += dedent('''
|
|
||||||
esac''')
|
|
||||||
container.run('''
|
|
||||||
cat <<EOF> {script}\n{content}\nEOF
|
|
||||||
chmod +x {script}
|
|
||||||
rm -f /var/log/{scriptlog}'''.format(script=full_script_path,
|
|
||||||
content=mock_script,
|
|
||||||
scriptlog=script))
|
|
||||||
|
|
||||||
|
|
||||||
def run_script(Pihole, script):
|
|
||||||
result = Pihole.run(script)
|
|
||||||
assert result.rc == 0
|
|
||||||
return result
|
|
||||||
|
Loading…
Reference in New Issue
Block a user