Merge "[ui] Fix docker build for UI container"
[validation.git] / bluval / bluval.py
index 4a01a92..7855816 100644 (file)
@@ -20,6 +20,7 @@ testcase
 """
 
 import subprocess
 """
 
 import subprocess
+from pathlib import Path
 import click
 import yaml
 
 import click
 import yaml
 
@@ -28,19 +29,29 @@ def run_testcase(testcase):
     """
     show_stopper = testcase.get('show_stopper', False)
     what = testcase.get('what')
     """
     show_stopper = testcase.get('show_stopper', False)
     what = testcase.get('what')
-    results = "results/"+what
-    command = '{} {} {} {}'.format("robot", "-d", results, what)
+    mypath = Path(__file__).absolute()
+    results_path = mypath.parents[2].joinpath("results/"+testcase.get('layer')+"/"+what)
+    test_path = mypath.parents[1].joinpath("tests/"+testcase.get('layer')+"/"+what)
+
+    # add to the variables file the path to where to sotre the logs
+    variables_file = mypath.parents[1].joinpath("tests/variables.yaml")
+    variables_dict = yaml.safe_load(variables_file.open())
+    variables_dict['log_path'] = str(results_path)
+    variables_file.write_text(str(variables_dict))
+
+    # run the test
+    args = ["robot", "-V", str(variables_file), "-d", str(results_path), str(test_path)]
 
     print('Executing testcase {}'.format(testcase['name']))
     print('          show_stopper {}'.format(show_stopper))
 
     print('Executing testcase {}'.format(testcase['name']))
     print('          show_stopper {}'.format(show_stopper))
-    print('Invoking {}'.format(command))
+    print('Invoking {}'.format(args))
     try:
     try:
-        status = subprocess.call(command, shell=True)
+        status = subprocess.call(args, shell=False)
         if status != 0 and show_stopper:
             print('Show stopper testcase failed')
             return status
     except OSError:
         if status != 0 and show_stopper:
             print('Show stopper testcase failed')
             return status
     except OSError:
-        print('Error while executing {}'.format(command))
+        print('Error while executing {}'.format(args))
         return -1
     return status
 
         return -1
     return status
 
@@ -50,6 +61,7 @@ def validate_layer(blueprint, layer):
     """
     print('## Layer {}'.format(layer))
     for testcase in blueprint[layer]:
     """
     print('## Layer {}'.format(layer))
     for testcase in blueprint[layer]:
+        testcase['layer'] = layer
         run_testcase(testcase)
 
 
         run_testcase(testcase)
 
 
@@ -74,8 +86,10 @@ def main(blueprint, layer):
     """Takes blueprint name and optional layer. Validates inputs and derives
     yaml location from blueprint name. Invokes validate on blue print.
     """
     """Takes blueprint name and optional layer. Validates inputs and derives
     yaml location from blueprint name. Invokes validate on blue print.
     """
-    yaml_loc = 'bluval/bluval-{}.yaml'.format(blueprint)
-    layer = layer.lower()
+    mypath = Path(__file__).absolute()
+    yaml_loc = mypath.parents[0].joinpath('bluval-{}.yaml'.format(blueprint))
+    if layer is not None:
+        layer = layer.lower()
     validate_blueprint(yaml_loc, layer)
 
 
     validate_blueprint(yaml_loc, layer)