Skip to content

Commit

Permalink
#388 fixed empty element in the list if there is no script output
Browse files Browse the repository at this point in the history
  • Loading branch information
bugy committed Jan 24, 2021
1 parent 37169b8 commit 289a0ee
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/config/script/list_values.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class ScriptValuesProvider(ValuesProvider):
def __init__(self, script) -> None:
script_output = process_utils.invoke(script)
script_output = script_output.rstrip('\n')
self._values = script_output.split('\n')
self._values = [line for line in script_output.split('\n') if not is_empty(line)]

def get_values(self, parameter_values):
return self._values
Expand Down Expand Up @@ -99,7 +99,7 @@ def get_values(self, parameter_values):
return []

script_output = script_output.rstrip('\n')
return script_output.split('\n')
return [line for line in script_output.split('\n') if not is_empty(line)]


class FilesProvider(ValuesProvider):
Expand Down
29 changes: 28 additions & 1 deletion src/tests/list_values_test.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,33 @@
import os
import unittest

from config.script.list_values import DependantScriptValuesProvider, FilesProvider
from config.script.list_values import DependantScriptValuesProvider, FilesProvider, ScriptValuesProvider
from tests import test_utils
from tests.test_utils import create_parameter_model
from utils import file_utils


class ScriptValuesProviderTest(unittest.TestCase):
def test_ls_3_files(self):
test_utils.create_files(['f1', 'f2', 'f3'])
provider = ScriptValuesProvider('ls "' + test_utils.temp_folder + '"')
self.assertEqual(['f1', 'f2', 'f3'], provider.get_values({}))

def test_ls_no_files(self):
provider = ScriptValuesProvider('ls "' + test_utils.temp_folder + '"')
self.assertEqual([], provider.get_values({}))

def setUp(self) -> None:
super().setUp()

test_utils.setup()

def tearDown(self) -> None:
super().tearDown()

test_utils.cleanup()


class DependantScriptValuesProviderTest(unittest.TestCase):
def test_get_required_parameters_when_single_dependency(self):
values_provider = DependantScriptValuesProvider('ls ${param1}', self.create_parameters_supplier('param1'))
Expand Down Expand Up @@ -59,6 +80,12 @@ def test_get_values_when_numeric_parameter(self):
self.create_parameters_supplier('param1'))
self.assertEqual(['_123_'], values_provider.get_values({'param1': 123}))

def test_get_values_when_newline_response(self):
values_provider = DependantScriptValuesProvider(
"ls '${param1}'",
self.create_parameters_supplier('param1'))
self.assertEqual([], values_provider.get_values({'param1': test_utils.temp_folder}))

def test_no_code_injection(self):
values_provider = DependantScriptValuesProvider(
"echo ${param1}",
Expand Down

0 comments on commit 289a0ee

Please sign in to comment.