Tests for invalid parameter files

-Tests warnings for missing and empty parameter files.
-Tests warnings when rest_parameter stanza lists
parameter file but no parameters.

Change-Id: Ic2c740a34964b1e23560102cc4e5c7fe0be63d50
This commit is contained in:
Karen Bradshaw 2016-06-02 16:28:53 -04:00
parent 9a7fcb9258
commit 57faf6f9fa
4 changed files with 55 additions and 2 deletions

View File

@ -203,11 +203,11 @@ class RestParametersDirective(Table):
if fpath in YAML_CACHE:
return YAML_CACHE[fpath]
lookup = {}
# self.app.info("Fpath: %s" % fpath)
try:
with open(fpath, 'r') as stream:
lookup = ordered_load(stream)
self._check_yaml_sorting(fpath, lookup)
except IOError:
self.env.warn(
self.env.docname,
@ -217,6 +217,14 @@ class RestParametersDirective(Table):
self.app.warn(exc)
raise
if lookup:
self._check_yaml_sorting(fpath, lookup)
else:
self.env.warn(
self.env.docname,
"Parameters file is empty %s" % fpath)
return
YAML_CACHE[fpath] = lookup
return lookup
@ -272,7 +280,10 @@ class RestParametersDirective(Table):
This allows use to reference an external file for the actual
parameter definitions.
"""
lookup = self._load_param_file(fpath)
if not lookup:
return
content = "\n".join(self.content)
parsed = yaml.load(content)

View File

@ -0,0 +1 @@
# Empty parameter file

View File

@ -14,3 +14,24 @@ I am text, hear me roar!
- name: lookup_key_name
- name: name_1
- invalid_name
No Parameters Specified
-----------------------
.. rest_parameters:: parameters.yaml
Empty File and Parameters Specified
-----------------------------------
.. rest_parameters:: empty_parameters_file.yaml
- name: name
Nonexistent Parameter File
--------------------------
.. rest_parameters:: no_parameters.yaml

View File

@ -52,7 +52,7 @@ class TestWarnings(base.TestCase):
self.warning)
def test_missing_lookup_name(self):
"""Warning when missing lookup key in parameter file."""
"""Warning when missing a lookup key in parameter file."""
self.assertIn(
("WARNING: No field definition for ``lookup_key_name`` found in "),
self.warning)
@ -73,3 +73,23 @@ class TestWarnings(base.TestCase):
("WARNING: Invalid parameter definition ``invalid_name``. "
+ "Expected format: ``name: reference``. "),
self.warning)
def test_empty_parameter_file(self):
"""Warning when parameter file exists but is empty."""
self.assertIn(
("WARNING: Parameters file is empty"),
self.warning)
def test_no_parameters_set(self):
"""Error when parameters are not set in rest_parameters stanza."""
self.assertIn(
("ERROR: No parameters defined\n\n.."
+ " rest_parameters:: parameters.yaml\n"),
self.warning)
def test_parameter_file_not_exist(self):
"""Error when parameter file does not exist"""
self.assertIn(
("ERROR: No parameters defined\n\n.."
+ " rest_parameters:: no_parameters.yaml\n"),
self.warning)