Override filteredEnvs with CUSTOM_KITCHEN_ENVS parameter

Change-Id: I89d6c27ed46d3829c3bf27542f0dd3c4f0f5c678
diff --git a/test-salt-formulas-pipeline.groovy b/test-salt-formulas-pipeline.groovy
index 6d76367..a019db4 100644
--- a/test-salt-formulas-pipeline.groovy
+++ b/test-salt-formulas-pipeline.groovy
@@ -106,13 +106,18 @@
           }
           common.infoMsg("Running kitchen testing, parallel mode: " + KITCHEN_TESTS_PARALLEL.toBoolean())
           wrap([$class: 'AnsiColorBuildWrapper']) {
-            filteredEnvs = ruby.filterKitchenEnvs(kitchenEnvs).unique()
-            if(kitchenEnvs && !kitchenEnvs.isEmpty() && !filteredEnvs.isEmpty()){
-              for(int i=0; i<filteredEnvs.size(); i++){
-                common.infoMsg("Found " + filteredEnvs.size() + " environment, kitchen running with env: " + filteredEnvs[i])
-                ruby.runKitchenTests(filteredEnvs[i], KITCHEN_TESTS_PARALLEL.toBoolean())
+            if(CUSTOM_KITCHEN_ENVS != null && CUSTOM_KITCHEN_ENVS != ''){
+                filteredEnvs = CUSTOM_KITCHEN_ENVS.tokenize('\n')
+              } else {
+                filteredEnvs = ruby.filterKitchenEnvs(kitchenEnvs).unique()
               }
-            }else{
+              // Allow custom filteredEnvs in case of empty kitchenEnvs
+            if((kitchenEnvs && !kitchenEnvs.isEmpty() && !filteredEnvs.isEmpty()) || ((kitchenEnvs==null || kitchenEnvs=='') && !filteredEnvs.isEmpty())){
+              for(int i=0; i<filteredEnvs.size(); i++){
+                common.infoMsg("Found " + filteredEnvs.size() + " environment, kitchen running with env: " + filteredEnvs[i].trim())
+                ruby.runKitchenTests(filteredEnvs[i].trim(), KITCHEN_TESTS_PARALLEL.toBoolean())
+              }
+            } else {
               ruby.runKitchenTests("", KITCHEN_TESTS_PARALLEL.toBoolean())
             }
           }