def testConvertXmlReportToHtmlWithoutLxml( self ): # write a new method implementation def hasXsltSupport_new( self ): return False converter = XmlReportConverter( self._getXmlReport() ) replace_bound_method( converter, converter.hasXsltSupport, hasXsltSupport_new ) # replace method xmlString = converter.convertToHtml() self.assertTrue( xmlString == None, "If no XSLT support is available, converting to HTML should not work" )
def testExceptionIntrospection( self ): build = self.build plugin = CrashMePlugin() build.addPlugin( plugin ) def setup_new( self ): raise MomError( 'Test ' ) replace_bound_method( plugin, plugin.setup, setup_new ) build.buildAndReturn() self.assertTrue( build.getException()[0].getPhase() == Instructions.Phase.Setup )
def testXmlReportOnStepFailure( self ): self._executeBuild() def failed_new( self ): return Step.Result.Failure step = self.project.getStep( 'cleanup' ) replace_bound_method( step, step.getResult, failed_new ) converter = XmlReportConverter( self._getXmlReport() ) logText = converter.convertToFailedStepsLog() self.assertTrue( "cleanup" in logText )
def testXmlReportOnExceptionInXmlReportGeneration( self ): # inject invalid XML template function into plugin def command_new( self ): raise MomError( "Test Error" ) logger = ConsoleLogger() self.build.addPlugin( logger ) replace_bound_method( logger, logger.getObjectStatus, command_new ) self._executeBuild() converter = XmlReportConverter( self._getXmlReport() ) text = converter.convertToText() self.assertTrue( "Exception" in text )
def testXmlReportOnException2( self ): # Covers run phase # inject erroneous method def runExecute_new( self ): raise BuildError( "Test Error" ) replace_bound_method( self.build, self.build.runExecute, runExecute_new ) self._executeBuild() doc = etree.XML( self._getXmlReport().getReport() ) # only minor checks, rest already covered in previous tests e = self.EXCEPTION_LOCATION self._testBasicDocumentAttributes( doc ) self.assertNotEquals( doc.find( e ), None ) self.assertTrue( "self.runExecute()" in doc.find( "{0}/traceback".format( e ) ).text )
def testXmlReportOnException1( self ): # Covers runPreflightChecks phase # inject erroneous method def runPreFlightChecks_new( self ): raise ConfigurationError( "Test Error" ) replace_bound_method( self.build, self.build.runPreFlightChecks, runPreFlightChecks_new ) self._executeBuild() doc = etree.XML( self._getXmlReport().getReport() ) e = self.EXCEPTION_LOCATION self._testBasicDocumentAttributes( doc ) self.assertNotEquals( doc.find( e ), None ) self.assertNotEquals( doc.find( "{0}/description".format( e ) ), None ) self.assertNotEquals( doc.find( "{0}/traceback".format( e ) ), None ) self.assertTrue( "self.runPreFlightChecks()" in doc.find( "{0}/traceback".format( e ) ).text ) if etree.__name__ == "lxml.etree": self.assertNotEquals( doc.find( '{0}[@returncode="{1}"]'.format( e, ConfigurationError.getReturnCode() ) ) , None, "Wrong returncode in exception" )