def test_cubelist_no_history_removal(self):
        """Test that the utility does not remove history attribute,
        if they are the same.
        """
        cube1 = self.cube.copy()
        cube2 = self.cube.copy()
        cubelist = iris.cube.CubeList([cube1, cube2])

        equalise_cube_attributes(cubelist)
        self.assertIn("history", cubelist[0].attributes.keys())
        self.assertIn("history", cubelist[1].attributes.keys())
    def test_cubelist_history_removal(self):
        """Test that the utility removes history attribute,
        if they are different.
        """
        cube1 = self.cube.copy()
        cube2 = self.cube.copy()
        cube2.attributes["history"] = "2017-01-19T08:59:53: StaGE Decoupler"

        cubelist = iris.cube.CubeList([cube1, cube2])

        equalise_cube_attributes(cubelist, silent="history")
        self.assertNotIn("history", cubelist[0].attributes.keys())
        self.assertNotIn("history", cubelist[1].attributes.keys())
    def test_unknown_attribute(self, warning_list=None):
        """Test that the utility raises warning when removing a non-silent
        mismatched attribute."""
        cube1 = self.cube.copy()
        cube2 = self.cube.copy()
        cube2.attributes.update({'unknown_attribute': '2'})

        cubelist = iris.cube.CubeList([cube1, cube2])

        equalise_cube_attributes(cubelist)
        self.assertTrue(
            any(item.category == UserWarning for item in warning_list))
        warning_msg = "Deleting unmatched attribute "
        self.assertTrue(any(warning_msg in str(item) for item in warning_list))
        self.assertNotIn("unknown_attribute", cubelist[0].attributes.keys())
        self.assertNotIn("unknown_attribute", cubelist[1].attributes.keys())