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.

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'))