Diff of /codesys-ide/scripts/runtest.py [000000] .. [9052a5]  Maximize  Restore

Switch to side-by-side view

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