tests/tools/run_python_tests.sh
author Andrey Skvortsov <andrej.skvortzov@gmail.com>
Tue, 05 Mar 2019 11:19:36 +0300
changeset 2519 27955f010b23
parent 2436 82bfc75bcd9d
permissions -rwxr-xr-x
Fix crash if LD input contact isn't connected

Traceback (most recent call last):
File "/home/developer/WorkData/PLC/beremiz/beremiz/BeremizIDE.py", line 339, in OnMethod
obj.CTR.CallMethod('_'+meth)
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1996, in CallMethod
getattr(self, method)()
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1134, in _Build
IECGenRes = self._Generate_SoftPLC()
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 746, in _Generate_SoftPLC
if self._Generate_PLC_ST():
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 763, in _Generate_PLC_ST
self._getIECgeneratedcodepath())
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCControler.py", line 456, in GenerateProgram
self.ProgramChunks = GenerateCurrentProgram(self, self.Project, errors, warnings)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1762, in GenerateCurrentProgram
generator.GenerateProgram()
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 478, in GenerateProgram
self.GeneratePouProgram(pou_name)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 260, in GeneratePouProgram
program = pou_program.GenerateProgram(pou)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1718, in GenerateProgram
self.ComputeProgram(pou)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1028, in ComputeProgram
self.GenerateBlock(instance, block_infos, body, None)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1144, in GenerateBlock
expression = self.ComputeExpression(body, connections, executionOrderId > 0)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1373, in ComputeExpression
paths = self.GeneratePaths(connections, body, order, to_inout)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1344, in GeneratePaths
elif isinstance(result[0], list):
IndexError: list index out of range


Close #70
#!/bin/sh



cleanup()
{
    find $PYTEST_DIR -name '*.pyc' -delete
}



print_help()
{
    echo "Usage: run_python_tests.sh [--on-local-xserver]"
    echo ""
    echo "--on-local-xserver"
    echo "                all tests are run on local X-server. "
    echo "                User can see test in action."
    echo "                Any interaction (mouse, keyboard) should be avoided"
    echo "                By default without arguments script runs pytest on virtual X serverf."
    echo ""

    exit 1
}

main()
{
    LC_ALL=ru_RU.utf-8
    PYTEST_DIR=./tests/tools

    if [ ! -d $PYTEST_DIR ]; then
	echo "Script should be run from top directory in repository"
	exit 1;
    fi

    use_xvfb=0
    if [ "$1" != "--on-local-xserver" ]; then
	export DISPLAY=:42
	use_xvfb=1
	Xvfb $DISPLAY -screen 0 1280x1024x24 &
	sleep 1
    fi


    cleanup

    ret=0
    DELAY=400
    KILL_DELAY=$(($DELAY + 30))
    timeout -k $KILL_DELAY $DELAY pytest --timeout=10 ./tests/tools
    ret=$?

    cleanup

    [ $use_xvfb = 1 ] && pkill -9 Xvfb
    exit $ret
}


[ "$1" = "--help" -o "$1" = "-h" ] && print_help
main $@