You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
calculate-utils-4-lib/tests/commands/test_commands.py

106 lines
4.4 KiB

import os
import shutil
import pytest
from calculate.commands.commands import Command
from calculate.parameters.parameters import Description
from calculate.variables.loader import Datavars
from calculate.utils.io_module import IOModule
from .parameters import MyShinyParameter, OneMoreParameter, AnotherParameter
from .scripts import test_script
TESTFILES_PATH = os.path.join(os.getcwd(), 'tests/commands/testfiles')
@pytest.mark.commands
class TestCommands:
def test_to_make_testfiles(self):
shutil.copytree(os.path.join(TESTFILES_PATH, 'gentoo.backup'),
os.path.join(TESTFILES_PATH, 'gentoo'),
symlinks=True)
def test_commands_first(self):
datavars = Datavars(variables_path=os.path.join(TESTFILES_PATH,
'variables'))
command = Command(command_id='test',
category='Test Category',
title='Test',
script=test_script,
namespace='os',
rights=['group'],
parameters=[
MyShinyParameter
(
'my-shiny', 'The Shiniest ones',
Description(
short='The shiny parameter',
full='The shiniest thing known to science.',
usage='-S COUNT, --my-shiny COUNT'),
shortname='S'
).bind('os.linux.test_5'),
AnotherParameter
(
'my-other', 'The Others',
Description(
short='Not from this world.'),
shortname='o'
),
OneMoreParameter
(
'one-more', 'The Others',
Description(full='Plan 9 from outer space.')
)])
command_runner = command.make_runner(datavars, IOModule())
command_runner.run_command()
assert datavars.scripts.test_script.task.result ==\
'os.calculate = test1 test2'
def test_commands_with_setvar(self):
datavars = Datavars(variables_path=os.path.join(TESTFILES_PATH,
'variables'))
test_parameters = [
MyShinyParameter('my-shiny', 'The Shiniest ones',
Description(
short='The shiny parameter',
full='The shiniest thing known to science.',
usage='-S COUNT, --my-shiny COUNT'),
shortname='S').bind('os.linux.test_5'),
AnotherParameter('my-other', 'The Others',
Description(short='Not from this world.'),
shortname='o'),
OneMoreParameter('one-more', 'The Others',
Description(full='Plan 9 from outer space.'))]
command = Command(command_id='test',
category='Test Category',
title='Test',
script=test_script,
parameters=test_parameters,
namespace='os',
gui=True,
icon=['icon_1', 'icon_2'],
setvars={'os.hashvar_0':
{'value1': 'new_1',
'value2': 'new_2'},
'.linux.test_5': 1349},
rights=['install'])
command_runner = command.make_runner(datavars, IOModule())
command_runner.run_command()
assert datavars.os.hashvar_0.get_hash() == {'value1': 'new_1',
'value2': 'new_2'}
assert datavars.os.linux.test_5 == 1349
assert datavars.os.calculate == 'new_1 new_2'
assert datavars.scripts.test_script.task.result ==\
'os.calculate = new_1 new_2'
def test_for_removing_testfiles(self):
shutil.rmtree(os.path.join(TESTFILES_PATH, 'gentoo'))