--- a +++ b/codesys-ide/scripts/buildtest.py @@ -0,0 +1,66 @@ +import sys, os +import helper + +# disable prompts, as those are enabled in UI mode by default +system.prompt_handling = PromptHandling.None + +def createtest(filename): + destination = filename + ".app" + devId = None + devices = device_repository.get_all_devices("CODESYS Control for Linux SL") + for device in devices: + devId = device.device_id + proj = projects.primary + + # check if this is a unit test project + prg_runtest = proj.find('PRG_RUNTEST') + if len(prg_runtest) == 0: + proj.close() + return None + + # 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') + + helper.install_missing_libraries(proj, librarymanager) + # proj.save() + print("create bootapp '%s'" % destination) + proj.active_application.create_boot_application(destination) + proj.close() + return destination + + +class SearchBuildDo(helper.SearchBuild): + # Test rules for: + # - *.library + def doit(self, filename): + artifacts = list() + helper.install_requirements(filename, librarymanager) + + if filename.endswith(".library"): + print("\n\n*** Create test application for: %s" % filename) + proj = projects.open(filename) + artifact = createtest(filename) + if artifact != None: + artifacts.append(artifact) + + return artifacts + +scriptpath = os.path.abspath(os.path.dirname(sys.argv[0])) + +sb = SearchBuildDo() +sb.search(".library", ".") +sb.save(".", ".drone-artifacts") +