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