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:
		@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
# Empty parameter 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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user