1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 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") |