diff -r 000000000000 -r 5d03bc08d59c graphicsdeviceinterface/directgdi/test/scripts/htmlreport.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicsdeviceinterface/directgdi/test/scripts/htmlreport.py Tue Feb 02 01:47:50 2010 +0200 @@ -0,0 +1,270 @@ +# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# + +""" +Html Report Tools + +Tools for generating the HTML reports. + +""" + +import os +import os.path +from string import * + +# HTML file name for failed images +KPageForFailedImages = "failed.html" +# HTML file name for passed images +KPageForPassedImages = "passed.html" +KPageForFailedAtImages = "failedAt.html" +# HTML file name for a summary page where passed and failed image information is summarised +KPageForSummary = "summary.html" + +# HTML file name for an error message page of the test results +KErrorMessagePageName = "error.html" + +# Prefix of the diff image name when the test image passes +KNoDiffPrefix = "NoDiff_" + +# Prefix of the diff image name when the test image fails +DiffPrefix = "RGBDiff_diffImg_" + +# Write html header +# @param file The file object to be accessed +def writeTitle(file): + file.write("\n") + file.write(" Graphics DirectGdi / BitGdi Test Report\n") + file.write("\n") + +# Write html footer +# @param file The file object to be accessed +def writeHtmlFooter(file): + file.write('
Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).\n') + file.write("\n") + +# Write overall test results +# @param file The file object to be accessed +# @param aNumFailed The number of failed images +# @param aNumPassed The number of passed images +def writeHtmlHeader(file, aNumFailed, aNumPassed, aNumFailedAt, aFailedAtThreshold): + writeTitle(file) + file.write("\n") + file.write("

Graphics DirectGdi / BitGdi Test Report


\n") + writeLink(file, "All Cases", KPageForSummary, aNumFailed + aNumPassed) + file.write('Note: Some Asynchronous Interleaving images may be missing due to nature of that test.

') + writeLink(file, "Failed Cases", KPageForFailedImages, aNumFailed) + writeLink(file, "Passed Cases", KPageForPassedImages, aNumPassed) + failureNotice = 'Failed At Threshold %d Cases'%aFailedAtThreshold + writeLink(file, failureNotice, KPageForFailedAtImages, aNumFailedAt) + file.write("

") + file.write('' + "Error Messages" + '') + file.write(" from the tests


") + + +# Write simple overall test results for the Overnight Build +# @param file The file object to be accessed +# @param aNumFailed The number of failed images +# @param aNumPassed The number of passed images +def writeHtmlONB(file, aNumFailed, aNumPassed, aNumFailedAt, aFailedAtThreshold, linkFile): + file.write("SUMMARY:
\n") + total = aNumPassed + aNumFailed + file.write('ALL = %d
\n' % total) + file.write('PASS = %d
\n' % aNumPassed) + file.write('FAIL = %d
\n' % aNumFailed) + file.write('FAIL AT THRESHOLD %d' % aFailedAtThreshold) + file.write(' = %d
\n' % aNumFailedAt) + file.write("ABORT = 0
\n") + file.write("PANIC = 0
\n") + file.write("INCONCLUSIVE = 0
\n") + file.write("UNKNOWN = 0
\n") + file.write("UNEXECUTED = 0
\n") + file.write("COMMENTED OUT COMMAND'S = 0
\n") + file.write('Test Results
\n') + +# Write overall test results +# @param file The file object to be accessed +def writeSimpleHtmlHeader(file): + writeTitle(file) + file.write("\n") + +# Write link pages for test results +# @param file The file object to be accessed +# @param aTitle The text to appear on the page +# @param aPage A URL that the page links to +# @param aNum A number in brackets on the page +def writeLink(file, aTitle, aPage, aNum): + file.write("

") + file.write('') + file.write('' + aTitle + '') + file.write(' (%d) ' % aNum) + file.write("

") + +# Create a html page for all failed images index +# @param file The file object to be accessed +# @param aFailedTestImgs The test images that failed the tests +# @param aFailedRefImgs The reference images referred by the test images +# @param aTestDir The directory of the test images +# @param aRefDir The directory of the reference images +# @param aDiffDir The directory of the diff images +# @param aLogDir The directory of the log files +def writeFailedDetails(file, aFailedTestImgs, aFailedRefImgs, aTestDir, aRefDir, aDiffDir, aLogDir): + writeTitle(file) + file.write("\n") + file.write("

") + file.write("Failed test images:") + file.write("

\n") + writeSingleFileDetail(file, aFailedTestImgs, aFailedRefImgs, False, aTestDir, aRefDir, aDiffDir, aLogDir) + file.write("\n") + +# Create a html page for all failed images index +# @param file The file object to be accessed +# @param aFailedTestImgs The test images that failed the tests +# @param aFailedRefImgs The reference images referred by the test images +# @param aTestDir The directory of the test images +# @param aRefDir The directory of the reference images +# @param aDiffDir The directory of the diff images +# @param aLogDir The directory of the log files +def writeFailedAtDetails(file, aFailedAtTestImgs, aFailedAtRefImgs, aTestDir, aRefDir, aDiffDir, aLogDir, aThreshold): + writeTitle(file) + file.write("\n") + file.write("

") + file.write("Failed At Threshold %d test images:" % aThreshold) + file.write("

\n") + writeSingleFileDetail(file, aFailedAtTestImgs, aFailedAtRefImgs, False, aTestDir, aRefDir, aDiffDir, aLogDir) + file.write("\n") + +# Create a html page for all passed images index +# @param file The file object to be accessed +# @param aPassdTestImgs The images that passed the tests +# @param aPassedRefImgs The reference images referred by the test images +# @param aTestDir The directory of the test images +# @param aRefDir The directory of the reference images +# @param aDiffDir The directory of the diff images +# @param aLogDir The directory of the log files +def writePassedDetails(file, aPassdTestImgs, aPassedRefImgs, aTestDir, aRefDir, aDiffDir, aLogDir): + writeTitle(file) + file.write("\n") + file.write("

") + file.write("Passed test images:") + file.write("

\n") + writeSingleFileDetail(file, aPassdTestImgs, aPassedRefImgs, True, aTestDir, aRefDir, aDiffDir, aLogDir) + file.write("\n") + +# Create a html page for each test image (with its reference image and diff image) +# @param file The file object to be accessed +# @param aTestImgs The test images to be processed +# @param aRefImgs The reference images referred by the test images +# @param aIsPass The boolean value of image test result +# @param aTestDir The directory of the test images +# @param aRefDir The directory of the reference images +# @param aDiffDir The directory of the diff images +# @param aLogDir The directory of the log files +def writeSingleFileDetail(file, aTestImgs, aRefImgs, aIsPass, aTestDir, aRefDir, aDiffDir, aLogDir): + i = 0 + for testImg in aTestImgs: + file.write(' %s Pyramid diff: %d\n'%(testImg[0], testImg[0], testImg[1])) + writeDetailedDiffImg(aLogDir, testImg, aRefImgs[i], aIsPass, aTestDir, aRefDir, aDiffDir) + file.write('
\n') + i = i + 1 + +# Show a test, reference and diff images on a html page +# @param aLogDir The directory of the log files +# @param aTestImgs The test images to be processed +# @param aRefImgs The reference images referred by the test images +# @param aIsPass The boolean value of image test result +# @param aTestDir The directory of the test images +# @param aRefDir The directory of the reference images +# @param aDiffDir The directory of the diff images +def writeDetailedDiffImg(aLogDir, aTestImg, aRefImg, aIsPass, aTestDir, aRefDir, aDiffDir): + + + (alphatestimgname,alphatestimgext) = os.path.splitext(aTestImg[0]) + alphatestimg = alphatestimgname + "-alpha" + alphatestimgext + if os.path.exists(os.path.join(aTestDir,alphatestimg)): + diff = file((aLogDir + aTestImg[0] + ".html"), "wt") + writeTitle(diff) + writeSimpleHtmlHeader(diff) + + diff.write('

') + diff.write("Test " + aTestImg[0]) + diff.write('

\n') + diff.write('

Pyramid diff: %d

\n' % aTestImg[1]) + # show a test image on the diff page + diff.write('

Test Image and alpha channel:

\n') + diff.write(aTestImg[0] + '
') + diff.write('') + diff.write('') + diff.write('') + diff.write('
') + diff.write('
\n') + + # show a reference image on the diff page + diff.write('

Reference Image and alpha channel:

\n') + diff.write(aRefImg[0] + '
') + diff.write('') + diff.write('') + + (alpharefimgname,alpharefimgext) = os.path.splitext(aRefImg[0]) + alpharefimg = alpharefimgname + "-alpha" + alpharefimgext + + diff.write('') + diff.write('
') + diff.write('
\n') + + # show a diff image on the diff page + diff.write('

Diff Image and alpha channel:

\n') + diff.write('') + diff.write('') + diff.write('') + + diff.write('
') + diff.write('
\n') + writeHtmlFooter(diff) + else: + diff = file((aLogDir + aTestImg[0] + ".html"), "wt") + writeTitle(diff) + writeSimpleHtmlHeader(diff) + + diff.write('

') + diff.write("Test " + aTestImg[0]) + diff.write('

\n') + diff.write('

Pyramid diff: %d

\n' % aTestImg[1]) + # show a test image on the diff page + diff.write('

Test Image:

\n') + diff.write(aTestImg[0] + '
') + diff.write('') + diff.write('') + diff.write('
') + diff.write('
\n') + + # show a reference image on the diff page + diff.write('

Reference Image:

\n') + diff.write(aRefImg[0] + '
') + diff.write('') + diff.write('') + diff.write('
') + diff.write('
\n') + + # show a diff image on the diff page + diff.write('

Diff Image:

\n') + diff.write('') + diff.write('') + diff.write('
') + diff.write('
\n') + writeHtmlFooter(diff) + +def writeErroInfo(file, aErroInfo): + file.write(aErroInfo) +