Introspect logging testing more

This adds some fixtures to ensure the log output is what we expect,
along with ensuring we test the operation of the debug environment
variables.

Change-Id: I01c36299539b15a633b9307da5a348a5ae4e2563
This commit is contained in:
Ian Wienand 2016-06-10 14:32:07 +10:00
parent 6ca6057981
commit 8661dd1a31

View File

@ -12,6 +12,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
import fixtures
import logging import logging
import testtools import testtools
@ -21,9 +22,28 @@ from diskimage_builder import logging_config
class TestLoggingConfig(testtools.TestCase): class TestLoggingConfig(testtools.TestCase):
def test_defaults(self): def test_defaults(self):
self.out = self.useFixture(fixtures.StringStream('stdout'))
self.useFixture(
fixtures.MonkeyPatch('sys.stdout', self.out.stream))
self.err = self.useFixture(fixtures.StringStream('stderr'))
self.useFixture(
fixtures.MonkeyPatch('sys.stderr', self.err.stream))
self.useFixture(fixtures.EnvironmentVariable('DIB_DEBUG_TRACE', '1'))
logging_config.setup() logging_config.setup()
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
log.debug("Debug Message") log.debug("Debug Message")
self.assertIn("Debug Message", self.err._details["stderr"].as_text())
# The follow two are looking for the function name / file name
# suffix we log only for debug messages
self.assertIn("test_defaults", self.err._details["stderr"].as_text())
self.assertIn("test_loggingconfig.py",
self.err._details["stderr"].as_text())
log.info("Info Message") log.info("Info Message")
self.assertIn("Info Message", self.err._details["stderr"].as_text())
log.warning("Warning Message") log.warning("Warning Message")
self.assertIn("Warning Message", self.err._details["stderr"].as_text())
log.error("Error Message") log.error("Error Message")
self.assertIn("Error Message", self.err._details["stderr"].as_text())