--- a +++ b/codesys-ide/scripts/runtest.py @@ -0,0 +1,79 @@ +import sys, os +import helper + +def runtest(): + devId = device_repository.create_device_identification(4096, '0000 0001', '3.5.15.0') + proj = projects.primary + + # delete existing testdev device + existing = proj.find('testdev') + if len(existing) > 0: + existing[0].remove() + + # add device + proj.add('testdev', devId) + apps = proj.find('Application', True) + if len(apps) > 0: + app = apps[0] + tc = app.create_task_configuration() + + # add task to call PRG_RUNTEST + task = tc.create_task('Task') + task.pous.add('PRG_RUNTEST') + + # set device to simulation mode + devs = proj.find('testdev') + if len(devs) > 0: + devs[0].set_simulation_mode(True) + + # login + onlineapp = online.create_online_application(app) + print(OnlineChangeOption) + onlineapp.login(OnlineChangeOption.Try, True) + + # run program + onlineapp.start() + + # wait until project finishes + for timeout in range(30): + system.delay(1000) + xready = onlineapp.read_value("PRG_RUNTEST.xReady") + if str(xready) == "TRUE": + break + # check for error + xerror = onlineapp.read_value("PRG_RUNTEST.xError") + + if not (str(xready) == "TRUE" and str(xerror) == "FALSE"): + sys.exit("Test failed") + + # display value in message view or command line + print("*** State Results of Test: xError: %s, xReady: %s\n" % (xerror, xready)) + try: + szMessage = onlineapp.read_value("PRG_RUNTEST.szMessage") + print("*** Test Results:\n") + print(szMessage) + print("*** end") + except: + print("*** No Test Results\n") + + # log out + onlineapp.logout() + +class SearchBuildDo(helper.SearchBuild): + # Test rules for: + # - *.library + def doit(self, filename): + artifacts = list() + + if filename.endswith(".library"): + proj = projects.open(filename) + runtest() + proj.close() + + return artifacts + +scriptpath = os.path.abspath(os.path.dirname(sys.argv[0])) + +sb = SearchBuildDo() +sb.search(".library", ".") +sb.save(".", ".drone-artifacts")