CTest: Add Javascript coverage parser
Add a coverage parser for the Blanket.js library using the JSON output of the mocha.js test runner. Add a test for the new parser.
This commit is contained in:
parent
a2456e1572
commit
220e81345b
|
@ -522,6 +522,7 @@ set(CTEST_SRCS cmCTest.cxx
|
||||||
CTest/cmParseCacheCoverage.cxx
|
CTest/cmParseCacheCoverage.cxx
|
||||||
CTest/cmParseGTMCoverage.cxx
|
CTest/cmParseGTMCoverage.cxx
|
||||||
CTest/cmParseJacocoCoverage.cxx
|
CTest/cmParseJacocoCoverage.cxx
|
||||||
|
CTest/cmParseBlanketJSCoverage.cxx
|
||||||
CTest/cmParsePHPCoverage.cxx
|
CTest/cmParsePHPCoverage.cxx
|
||||||
CTest/cmParseCoberturaCoverage.cxx
|
CTest/cmParseCoberturaCoverage.cxx
|
||||||
CTest/cmParseDelphiCoverage.cxx
|
CTest/cmParseDelphiCoverage.cxx
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include "cmParseCacheCoverage.h"
|
#include "cmParseCacheCoverage.h"
|
||||||
#include "cmParseJacocoCoverage.h"
|
#include "cmParseJacocoCoverage.h"
|
||||||
#include "cmParseDelphiCoverage.h"
|
#include "cmParseDelphiCoverage.h"
|
||||||
|
#include "cmParseBlanketJSCoverage.h"
|
||||||
#include "cmCTest.h"
|
#include "cmCTest.h"
|
||||||
#include "cmake.h"
|
#include "cmake.h"
|
||||||
#include "cmMakefile.h"
|
#include "cmMakefile.h"
|
||||||
|
@ -419,6 +420,13 @@ int cmCTestCoverageHandler::ProcessHandler()
|
||||||
|
|
||||||
file_count += this->HandleJacocoCoverage(&cont);
|
file_count += this->HandleJacocoCoverage(&cont);
|
||||||
error = cont.Error;
|
error = cont.Error;
|
||||||
|
if ( file_count < 0 )
|
||||||
|
{
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
file_count += this->HandleBlanketJSCoverage(&cont);
|
||||||
|
error = cont.Error;
|
||||||
if ( file_count < 0 )
|
if ( file_count < 0 )
|
||||||
{
|
{
|
||||||
return error;
|
return error;
|
||||||
|
@ -927,10 +935,12 @@ int cmCTestCoverageHandler::HandleDelphiCoverage(
|
||||||
std::vector<std::string> files;
|
std::vector<std::string> files;
|
||||||
g.SetRecurse(true);
|
g.SetRecurse(true);
|
||||||
|
|
||||||
|
|
||||||
std::string BinDir
|
std::string BinDir
|
||||||
= this->CTest->GetBinaryDir();
|
= this->CTest->GetBinaryDir();
|
||||||
std::string coverageFile = BinDir+ "/*.html";
|
std::string coverageFile = BinDir+ "/*.html";
|
||||||
|
|
||||||
|
|
||||||
g.FindFiles(coverageFile);
|
g.FindFiles(coverageFile);
|
||||||
files=g.GetFiles();
|
files=g.GetFiles();
|
||||||
if (files.size() > 0)
|
if (files.size() > 0)
|
||||||
|
@ -947,6 +957,36 @@ int cmCTestCoverageHandler::HandleDelphiCoverage(
|
||||||
}
|
}
|
||||||
return static_cast<int>(cont->TotalCoverage.size());
|
return static_cast<int>(cont->TotalCoverage.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int cmCTestCoverageHandler::HandleBlanketJSCoverage(
|
||||||
|
cmCTestCoverageHandlerContainer* cont)
|
||||||
|
{
|
||||||
|
cmParseBlanketJSCoverage cov =
|
||||||
|
cmParseBlanketJSCoverage(*cont, this->CTest);
|
||||||
|
std::string SourceDir
|
||||||
|
= this->CTest->GetCTestConfiguration("SourceDirectory");
|
||||||
|
|
||||||
|
//Look for something other than output.json, still JSON extension.
|
||||||
|
std::string coverageFile = SourceDir+ "/*.json";
|
||||||
|
cmsys::Glob g;
|
||||||
|
std::vector<std::string> files;
|
||||||
|
g.FindFiles(coverageFile);
|
||||||
|
files=g.GetFiles();
|
||||||
|
if (files.size() > 0)
|
||||||
|
{
|
||||||
|
cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
|
||||||
|
"Found BlanketJS output JSON, Performing Coverage" << std::endl);
|
||||||
|
cov.LoadCoverageData(files);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
|
||||||
|
" Cannot find BlanketJS coverage files: " << coverageFile
|
||||||
|
<< std::endl);
|
||||||
|
}
|
||||||
|
return static_cast<int>(cont->TotalCoverage.size());
|
||||||
|
}
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
int cmCTestCoverageHandler::HandleGCovCoverage(
|
int cmCTestCoverageHandler::HandleGCovCoverage(
|
||||||
cmCTestCoverageHandlerContainer* cont)
|
cmCTestCoverageHandlerContainer* cont)
|
||||||
|
|
|
@ -87,6 +87,9 @@ private:
|
||||||
//! Handle coverage for Delphi (Pascal)
|
//! Handle coverage for Delphi (Pascal)
|
||||||
int HandleDelphiCoverage(cmCTestCoverageHandlerContainer* cont);
|
int HandleDelphiCoverage(cmCTestCoverageHandlerContainer* cont);
|
||||||
|
|
||||||
|
//! Handle coverage for Jacoco
|
||||||
|
int HandleBlanketJSCoverage(cmCTestCoverageHandlerContainer* cont);
|
||||||
|
|
||||||
//! Handle coverage using Bullseye
|
//! Handle coverage using Bullseye
|
||||||
int HandleBullseyeCoverage(cmCTestCoverageHandlerContainer* cont);
|
int HandleBullseyeCoverage(cmCTestCoverageHandlerContainer* cont);
|
||||||
int RunBullseyeSourceSummary(cmCTestCoverageHandlerContainer* cont);
|
int RunBullseyeSourceSummary(cmCTestCoverageHandlerContainer* cont);
|
||||||
|
|
|
@ -0,0 +1,166 @@
|
||||||
|
/*============================================================================
|
||||||
|
CMake - Cross Platform Makefile Generator
|
||||||
|
Copyright 2000-2009 Kitware, Inc.
|
||||||
|
|
||||||
|
Distributed under the OSI-approved BSD License (the "License");
|
||||||
|
see accompanying file Copyright.txt for details.
|
||||||
|
|
||||||
|
This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||||
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
See the License for more information.
|
||||||
|
============================================================================*/
|
||||||
|
#include "cmStandardIncludes.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "cmSystemTools.h"
|
||||||
|
#include "cmParseBlanketJSCoverage.h"
|
||||||
|
#include <cmsys/Directory.hxx>
|
||||||
|
#include <cmsys/Glob.hxx>
|
||||||
|
#include <cmsys/FStream.hxx>
|
||||||
|
|
||||||
|
|
||||||
|
class cmParseBlanketJSCoverage::JSONParser
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef cmCTestCoverageHandlerContainer::
|
||||||
|
SingleFileCoverageVector FileLinesType;
|
||||||
|
JSONParser(cmCTestCoverageHandlerContainer& cont)
|
||||||
|
: Coverage(cont)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual ~JSONParser()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string getValue(std::string line, int type)
|
||||||
|
{
|
||||||
|
size_t begIndex;
|
||||||
|
size_t endIndex;
|
||||||
|
endIndex = line.rfind(',');
|
||||||
|
begIndex = line.find_first_of(':');
|
||||||
|
if(type == 0)
|
||||||
|
{
|
||||||
|
// A unique substring to remove the extra characters
|
||||||
|
// around the files name in the JSON (extra " and ,)
|
||||||
|
std::string foundFileName =
|
||||||
|
line.substr(begIndex+3,endIndex-(begIndex+4));
|
||||||
|
return foundFileName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return line.substr(begIndex,line.npos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bool ParseFile(std::string file)
|
||||||
|
{
|
||||||
|
FileLinesType localCoverageVector;
|
||||||
|
std::string filename;
|
||||||
|
bool foundFile = false;
|
||||||
|
bool inSource = false;
|
||||||
|
std::string covResult;
|
||||||
|
std::string line;
|
||||||
|
|
||||||
|
cmsys::ifstream in(file.c_str());
|
||||||
|
if(!in)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
while( cmSystemTools::GetLineFromStream(in, line))
|
||||||
|
{
|
||||||
|
if(line.find("filename") != line.npos)
|
||||||
|
{
|
||||||
|
if(foundFile)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Upon finding a second file name, generate a
|
||||||
|
* vector within the total coverage to capture the
|
||||||
|
* information in the local vector
|
||||||
|
*/
|
||||||
|
FileLinesType& CoverageVector =
|
||||||
|
this->Coverage.TotalCoverage[filename.c_str()];
|
||||||
|
CoverageVector = localCoverageVector;
|
||||||
|
localCoverageVector.clear();
|
||||||
|
foundFile=false;
|
||||||
|
}
|
||||||
|
foundFile= true;
|
||||||
|
inSource = false;
|
||||||
|
filename = getValue(line,0).c_str();
|
||||||
|
}
|
||||||
|
else if((line.find("coverage") != line.npos) && foundFile && inSource )
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* two types of "coverage" in the JSON structure
|
||||||
|
*
|
||||||
|
* The coverage result over the file or set of files
|
||||||
|
* and the coverage for each individual line
|
||||||
|
*
|
||||||
|
* FoundFile and foundSource ensure that
|
||||||
|
* only the value of the line coverage is captured
|
||||||
|
*/
|
||||||
|
std::string result = getValue(line,1).c_str();
|
||||||
|
result = result.substr(2,result.npos);
|
||||||
|
if(result == "\"\"")
|
||||||
|
{
|
||||||
|
// Empty quotation marks indicate that the
|
||||||
|
// line is not executable
|
||||||
|
localCoverageVector.push_back(-1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Else, it contains the number of time executed
|
||||||
|
localCoverageVector.push_back(atoi(result.c_str()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(line.find("source") != line.npos)
|
||||||
|
{
|
||||||
|
inSource=true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// On exit, capture end of last file covered.
|
||||||
|
FileLinesType& CoverageVector =
|
||||||
|
this->Coverage.TotalCoverage[filename.c_str()];
|
||||||
|
CoverageVector = localCoverageVector;
|
||||||
|
foundFile=false;
|
||||||
|
localCoverageVector.clear();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
cmCTestCoverageHandlerContainer& Coverage;
|
||||||
|
};
|
||||||
|
|
||||||
|
cmParseBlanketJSCoverage::cmParseBlanketJSCoverage(
|
||||||
|
cmCTestCoverageHandlerContainer& cont, cmCTest* ctest)
|
||||||
|
:Coverage(cont), CTest(ctest)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cmParseBlanketJSCoverage::LoadCoverageData(std::vector<std::string> files)
|
||||||
|
{
|
||||||
|
size_t i=0;
|
||||||
|
std::string path;
|
||||||
|
cmCTestLog(this->CTest,HANDLER_VERBOSE_OUTPUT,
|
||||||
|
"Found " << files.size() <<" Files" << std::endl);
|
||||||
|
for(i=0;i<files.size();i++)
|
||||||
|
{
|
||||||
|
cmCTestLog(this->CTest,HANDLER_VERBOSE_OUTPUT,
|
||||||
|
"Reading JSON File " << files[i] << std::endl);
|
||||||
|
|
||||||
|
if(!this->ReadJSONFile(files[i]))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cmParseBlanketJSCoverage::ReadJSONFile(std::string file)
|
||||||
|
{
|
||||||
|
cmParseBlanketJSCoverage::JSONParser parser
|
||||||
|
(this->Coverage);
|
||||||
|
cmCTestLog(this->CTest,HANDLER_VERBOSE_OUTPUT,
|
||||||
|
"Parsing " << file << std::endl);
|
||||||
|
parser.ParseFile(file);
|
||||||
|
return true;
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
/*============================================================================
|
||||||
|
CMake - Cross Platform Makefile Generator
|
||||||
|
Copyright 2000-2009 Kitware, Inc.
|
||||||
|
|
||||||
|
Distributed under the OSI-approved BSD License (the "License");
|
||||||
|
see accompanying file Copyright.txt for details.
|
||||||
|
|
||||||
|
This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||||
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
See the License for more information.
|
||||||
|
============================================================================*/
|
||||||
|
|
||||||
|
#ifndef cmParseBlanketJSCoverage_h
|
||||||
|
#define cmParseBlanketJSCoverage_h
|
||||||
|
|
||||||
|
#include "cmStandardIncludes.h"
|
||||||
|
#include "cmCTestCoverageHandler.h"
|
||||||
|
|
||||||
|
|
||||||
|
/** \class cmParseBlanketJSCoverage
|
||||||
|
* \brief Parse BlanketJS coverage information
|
||||||
|
*
|
||||||
|
* This class is used to parse BlanketJS(Pascal) coverage information
|
||||||
|
* generated by the Blanket.js library when used in conjunction with the
|
||||||
|
* test runner mocha.js, which is used to write out the JSON format.
|
||||||
|
*
|
||||||
|
* Blanket.js:
|
||||||
|
* http://blanketjs.org/
|
||||||
|
*
|
||||||
|
* Mocha.js
|
||||||
|
* http://visionmedia.github.io/mocha/
|
||||||
|
*/
|
||||||
|
class cmParseBlanketJSCoverage
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
cmParseBlanketJSCoverage(cmCTestCoverageHandlerContainer& cont,
|
||||||
|
cmCTest* ctest);
|
||||||
|
bool LoadCoverageData(std::vector<std::string> files);
|
||||||
|
// Read the JSON output
|
||||||
|
bool ReadJSONFile(std::string file);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
class JSONParser;
|
||||||
|
cmCTestCoverageHandlerContainer& Coverage;
|
||||||
|
cmCTest* CTest;
|
||||||
|
};
|
||||||
|
#endif
|
|
@ -2339,6 +2339,25 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
|
||||||
"Process file.*CoverageTest.java.*Total LOC:.*17.*Percentage Coverage: 76.47*"
|
"Process file.*CoverageTest.java.*Total LOC:.*17.*Percentage Coverage: 76.47*"
|
||||||
ENVIRONMENT COVFILE=)
|
ENVIRONMENT COVFILE=)
|
||||||
|
|
||||||
|
# Adding a test case for Javascript Coverage
|
||||||
|
configure_file(
|
||||||
|
"${CMake_SOURCE_DIR}/Tests/JavascriptCoverage/DartConfiguration.tcl.in"
|
||||||
|
"${CMake_BINARY_DIR}/Testing/JavascriptCoverage/DartConfiguration.tcl")
|
||||||
|
configure_file(
|
||||||
|
"${CMake_SOURCE_DIR}/Tests/JavascriptCoverage/output.json.in"
|
||||||
|
"${CMake_BINARY_DIR}/Testing/JavascriptCoverage/output.json")
|
||||||
|
file(COPY "${CMake_SOURCE_DIR}/Tests/JavascriptCoverage/"
|
||||||
|
DESTINATION "${CMake_BINARY_DIR}/Testing/JavascriptCoverage"
|
||||||
|
FILES_MATCHING PATTERN "*.js")
|
||||||
|
add_test(NAME CTestJavascriptCoverage
|
||||||
|
COMMAND cmake -E chdir
|
||||||
|
${CMake_BINARY_DIR}/Testing/JavascriptCoverage
|
||||||
|
$<TARGET_FILE:ctest> -T Coverage --debug)
|
||||||
|
set_tests_properties(CTestJavascriptCoverage PROPERTIES
|
||||||
|
PASS_REGULAR_EXPRESSION
|
||||||
|
"Process file.*test3.js.*Total LOC:.*49.*Percentage Coverage: 79.59*"
|
||||||
|
ENVIRONMENT COVFILE=)
|
||||||
|
|
||||||
# test coverage for Delphi-code-Coverage
|
# test coverage for Delphi-code-Coverage
|
||||||
configure_file(
|
configure_file(
|
||||||
"${CMake_SOURCE_DIR}/Tests/DelphiCoverage/DartConfiguration.tcl.in"
|
"${CMake_SOURCE_DIR}/Tests/DelphiCoverage/DartConfiguration.tcl.in"
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
# This file is configured by CMake automatically as DartConfiguration.tcl
|
||||||
|
# If you choose not to use CMake, this file may be hand configured, by
|
||||||
|
# filling in the required variables.
|
||||||
|
|
||||||
|
|
||||||
|
# Configuration directories and files
|
||||||
|
SourceDirectory: ${CMake_BINARY_DIR}/Testing/JavascriptCoverage
|
||||||
|
BuildDirectory: ${CMake_BINARY_DIR}/Testing/JavascriptCoverage
|
|
@ -0,0 +1,448 @@
|
||||||
|
{
|
||||||
|
"instrumentation": "node-jscoverage",
|
||||||
|
"sloc": 29,
|
||||||
|
"hits": 28,
|
||||||
|
"misses": 1,
|
||||||
|
"coverage": 96.55172413793103,
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"filename": "${CMake_BINARY_DIR}/Testing/JavascriptCoverage/test.js",
|
||||||
|
"coverage": 96.55172413793103,
|
||||||
|
"hits": 28,
|
||||||
|
"misses": 1,
|
||||||
|
"sloc": 29,
|
||||||
|
"source": {
|
||||||
|
"1": {
|
||||||
|
"source": "var assert = require(\"assert\")",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"source": "var test = {",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"source": " version: \"1.0.0\"",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"source": "}",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"source": "function covTest(p1,p2) {",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"source": " if (p1 > 3) {",
|
||||||
|
"coverage": 2
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"source": " return 1;",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"source": " }",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"source": " else {",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"source": " return p1 + p2;",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"source": " }",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"source": "}",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"source": "",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"14": {
|
||||||
|
"source": "function covTest2(p1,p2) {",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"15": {
|
||||||
|
"source": " return 0;",
|
||||||
|
"coverage": 0
|
||||||
|
},
|
||||||
|
"16": {
|
||||||
|
"source": "}",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"17": {
|
||||||
|
"source": "",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"18": {
|
||||||
|
"source": "function covTest3(p1) {",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"19": {
|
||||||
|
"source": " for(i=0;i < p1;i++){",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"20": {
|
||||||
|
"source": " }",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"21": {
|
||||||
|
"source": " return i;",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"22": {
|
||||||
|
"source": "}",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"23": {
|
||||||
|
"source": "function covTest4(p1) {",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"24": {
|
||||||
|
"source": " i=0;",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"25": {
|
||||||
|
"source": " while(i < p1){",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"26": {
|
||||||
|
"source": " i++;",
|
||||||
|
"coverage": 5
|
||||||
|
},
|
||||||
|
"27": {
|
||||||
|
"source": " }",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"28": {
|
||||||
|
"source": " return i;",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"29": {
|
||||||
|
"source": "}",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"30": {
|
||||||
|
"source": "",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"31": {
|
||||||
|
"source": "describe('Array', function(){",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"32": {
|
||||||
|
"source": " describe('CovTest', function(){",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"33": {
|
||||||
|
"source": " it('should return when the value is not present', function(){",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"34": {
|
||||||
|
"source": " assert.equal(4,covTest(2,2));",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"35": {
|
||||||
|
"source": " })",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"36": {
|
||||||
|
"source": " })",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"37": {
|
||||||
|
"source": " ",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"38": {
|
||||||
|
"source": " describe('CovTest>3', function(){",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"39": {
|
||||||
|
"source": " it('should return when the value is not present', function(){",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"40": {
|
||||||
|
"source": " assert.equal(1,covTest(4,2));",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"41": {
|
||||||
|
"source": " })",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"42": {
|
||||||
|
"source": " })",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"43": {
|
||||||
|
"source": " describe('covTest4', function(){",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"44": {
|
||||||
|
"source": " it('should return when the value is not present', function(){",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"45": {
|
||||||
|
"source": " assert.equal(5,covTest4(5));",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"46": {
|
||||||
|
"source": " })",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"47": {
|
||||||
|
"source": " })",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"48": {
|
||||||
|
"source": " describe('covTest3', function(){",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"49": {
|
||||||
|
"source": " it('should return when the value is not present', function(){",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"50": {
|
||||||
|
"source": " assert.equal(5,covTest3(5));",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"51": {
|
||||||
|
"source": " })",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"52": {
|
||||||
|
"source": " })",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"53": {
|
||||||
|
"source": "})",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"54": {
|
||||||
|
"source": "",
|
||||||
|
"coverage": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"filename": "${CMake_BINARY_DIR}/Testing/JavascriptCoverage/test3.js",
|
||||||
|
"coverage": 55.00000000000001,
|
||||||
|
"hits": 11,
|
||||||
|
"misses": 9,
|
||||||
|
"sloc": 20,
|
||||||
|
"source": {
|
||||||
|
"1": {
|
||||||
|
"source": "var assert = require(\"assert\")",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"source": "var test = {",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"source": " version: \"1.0.0\"",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"source": "}",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"source": "function covTest(p1,p2) {",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"source": " if (p1 > 3) {",
|
||||||
|
"coverage": 0
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"source": " return 1;",
|
||||||
|
"coverage": 0
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"source": " }",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"source": " else {",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"source": " return p1 + p2;",
|
||||||
|
"coverage": 0
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"source": " }",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"source": "}",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"source": "",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"14": {
|
||||||
|
"source": "function covTest2(p1,p2) {",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"15": {
|
||||||
|
"source": " return 0;",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"16": {
|
||||||
|
"source": "}",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"17": {
|
||||||
|
"source": "",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"18": {
|
||||||
|
"source": "function covTest3(p1) {",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"19": {
|
||||||
|
"source": " for(i=0;i < p1;i++){",
|
||||||
|
"coverage": 0
|
||||||
|
},
|
||||||
|
"20": {
|
||||||
|
"source": " }",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"21": {
|
||||||
|
"source": " return i;",
|
||||||
|
"coverage": 0
|
||||||
|
},
|
||||||
|
"22": {
|
||||||
|
"source": "}",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"23": {
|
||||||
|
"source": "function covTest4(p1) {",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"24": {
|
||||||
|
"source": " i=0;",
|
||||||
|
"coverage": 0
|
||||||
|
},
|
||||||
|
"25": {
|
||||||
|
"source": " while(i < p1){",
|
||||||
|
"coverage": 0
|
||||||
|
},
|
||||||
|
"26": {
|
||||||
|
"source": " i++;",
|
||||||
|
"coverage": 0
|
||||||
|
},
|
||||||
|
"27": {
|
||||||
|
"source": " }",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"28": {
|
||||||
|
"source": " return i;",
|
||||||
|
"coverage": 0
|
||||||
|
},
|
||||||
|
"29": {
|
||||||
|
"source": "}",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"30": {
|
||||||
|
"source": "",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"31": {
|
||||||
|
"source": "describe('Array', function(){",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"32": {
|
||||||
|
"source": " describe('CovTest2', function(){",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"33": {
|
||||||
|
"source": " it('should return when the value is not present', function(){",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"34": {
|
||||||
|
"source": " assert.equal(0,covTest2(2,2));",
|
||||||
|
"coverage": 1
|
||||||
|
},
|
||||||
|
"35": {
|
||||||
|
"source": " })",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"36": {
|
||||||
|
"source": " })",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"37": {
|
||||||
|
"source": "})",
|
||||||
|
"coverage": ""
|
||||||
|
},
|
||||||
|
"38": {
|
||||||
|
"source": "",
|
||||||
|
"coverage": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"stats": {
|
||||||
|
"suites": 5,
|
||||||
|
"tests": 4,
|
||||||
|
"passes": 4,
|
||||||
|
"pending": 0,
|
||||||
|
"failures": 0,
|
||||||
|
"start": "2014-10-23T17:56:02.339Z",
|
||||||
|
"end": "2014-10-23T17:56:02.344Z",
|
||||||
|
"duration": 5
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"title": "should return when the value is not present",
|
||||||
|
"fullTitle": "Array CovTest should return when the value is not present",
|
||||||
|
"duration": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "should return when the value is not present",
|
||||||
|
"fullTitle": "Array CovTest>3 should return when the value is not present",
|
||||||
|
"duration": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "should return when the value is not present",
|
||||||
|
"fullTitle": "Array covTest4 should return when the value is not present",
|
||||||
|
"duration": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "should return when the value is not present",
|
||||||
|
"fullTitle": "Array covTest3 should return when the value is not present",
|
||||||
|
"duration": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"failures": [],
|
||||||
|
"passes": [
|
||||||
|
{
|
||||||
|
"title": "should return when the value is not present",
|
||||||
|
"fullTitle": "Array CovTest should return when the value is not present",
|
||||||
|
"duration": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "should return when the value is not present",
|
||||||
|
"fullTitle": "Array CovTest>3 should return when the value is not present",
|
||||||
|
"duration": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "should return when the value is not present",
|
||||||
|
"fullTitle": "Array covTest4 should return when the value is not present",
|
||||||
|
"duration": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "should return when the value is not present",
|
||||||
|
"fullTitle": "Array covTest3 should return when the value is not present",
|
||||||
|
"duration": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
var assert = require("assert")
|
||||||
|
var test = {
|
||||||
|
version: "1.0.0"
|
||||||
|
}
|
||||||
|
function covTest(p1,p2) {
|
||||||
|
if (p1 > 3) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return p1 + p2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function covTest2(p1,p2) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function covTest3(p1) {
|
||||||
|
for(i=0;i < p1;i++){
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
function covTest4(p1) {
|
||||||
|
i=0;
|
||||||
|
while(i < p1){
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('Array', function(){
|
||||||
|
describe('CovTest', function(){
|
||||||
|
it('should return when the value is not present', function(){
|
||||||
|
assert.equal(4,covTest(2,2));
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('CovTest>3', function(){
|
||||||
|
it('should return when the value is not present', function(){
|
||||||
|
assert.equal(1,covTest(4,2));
|
||||||
|
})
|
||||||
|
})
|
||||||
|
describe('covTest4', function(){
|
||||||
|
it('should return when the value is not present', function(){
|
||||||
|
assert.equal(5,covTest4(5));
|
||||||
|
})
|
||||||
|
})
|
||||||
|
describe('covTest3', function(){
|
||||||
|
it('should return when the value is not present', function(){
|
||||||
|
assert.equal(5,covTest3(5));
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
|
@ -0,0 +1,37 @@
|
||||||
|
var assert = require("assert")
|
||||||
|
var test = {
|
||||||
|
version: "1.0.0"
|
||||||
|
}
|
||||||
|
function covTest(p1,p2) {
|
||||||
|
if (p1 > 3) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return p1 + p2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function covTest2(p1,p2) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function covTest3(p1) {
|
||||||
|
for(i=0;i < p1;i++){
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
function covTest4(p1) {
|
||||||
|
i=0;
|
||||||
|
while(i < p1){
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('Array', function(){
|
||||||
|
describe('CovTest2', function(){
|
||||||
|
it('should return when the value is not present', function(){
|
||||||
|
assert.equal(0,covTest2(2,2));
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
Loading…
Reference in New Issue