grunt-karma-sonar
Grunt plugin for integrating karma and protractor reports with sonar.
Currently the following frameworks are supported for both unit and integration testing:
- jasmine / jasmine2 (the default)
- cucumber
To enable integration test result and coverage in Sonar, you need to install the following plugin sonar-javascript-integrationtests
Getting Started
This plugin requires Grunt ~0.4.5
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-karma-sonar --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt;
The "karmaSonar" task
Overview
In your project's Gruntfile, add a section named karmaSonar
to the data object passed into grunt.initConfig()
.
grunt
Options
options.dynamicAnalysis
Type: String
Default: 'reuseReports'
Should be the sonar.property dynamicAnalysis
options.sourceEncoding
Type: String
Default: 'UTF-8'
Should be the sonar.property sourceEncoding
options.language
Type: String
Default: 'js'
Should be the sonar.property language (Starting with SonarQube 4.2, multi-language projects are supported. To enable this, set the value to null)
options.scmDisabled
Type: String
Default: 'true'
Should be the sonar.property scmDisabled
options.defaultOutputDir
Type: String
Default: '.tmp/sonar/'
Should be the location where the karmaSonar plugin will put it's temporary files.
options.excludedProperties
Type: Array
Default: []
Should be the indicator for performing a dry run.
options.dryRun
Type: Boolean
Default: false
options.runnerProperties
Type: Object
Should be the list of key(sonar key
) value pairs.
runnerProperties: 'sonar.links.homepage': 'https://github.com/mdasberg/grunt-karma-sonar' 'sonar.branch': 'master'
Should be a list of sonar properties to exclude
options.instance.hostUrl
Type: String
Default: 'http://localhost:9000'
Should be the sonar.property host.url
options.instance.jdbcUrl
Type: String
Default: 'jdbc:h2:tcp://localhost:9092/sonar'
Should be the sonar.property jdbc.url
options.instance.jdbcUsername
Type: String
Default: 'sonar'
Should be the sonar.property jdbc.username
options.instance.jdbcPassword
Type: String
Default: 'sonar'
Should be the sonar.property jdbc.password
options.instance.login
Type: String
Default: 'admin'
Should be the sonar.property login
options.instance.password
Type: String
Default: 'admin'
Should be the sonar.property password
options.debug
Type: Boolean
Default: 'false'
If true sonar-runner debug logging will be turned on.
project
Type: Object
,
Mandatory: true
Should be the project information for sonar
project.key
Type: String
Mandatory: true`
Should be the project key for sonar
project.name
Type: String
Mandatory: true`
Should be the project name for sonar
project.version
Type: String
Should be the project version for sonar
paths
Type: Array
Should be the paths that contain the code, tests and results
paths[].cwd
Type: String
Default: '.'
Should be the current working directory that contain the source, tests and results folders are located
paths[].src
Type: String
Should be the directory containing the sources within the cwd.
paths[].test
Type: String
Should be the directory containing the tests within the cwd.
paths[].reports
Type: Object
Should be the object containing the reports.
paths[].reports.unit
Type: String
or Object
ie: {src: '...', framework: 'jasmine'} (Supported frameworks are: cucumber, jasmine/jasmine2(default))
Should be the location of the karma-junit-reporter report within the cwd.
paths[].reports.coverage
Type: String
Should be the glob for the lcov.info files within the cwd.
paths[].reports.itUnit
Type: String
or Object
ie: {src: '...', framework: 'jasmine'} (Supported frameworks are: cucumber, jasmine/jasmine2(default))
Should be the location of the protractor report within the cwd.
paths[].reports.itCoverage
Type: String
Should be the glob for the integration test lcov.info files within the cwd.
Usage Examples
Default Options
grunt
Custom Options
In this example, custom options are used to do something else with whatever else. So if the testing
file has the content Testing
and the 123
file had the content 1 2 3
, the generated result in this case would be Testing: 1 2 3 !!!
grunt
Deciding Where To Get Sonar-runner from
By default, this package will download sonar-runner from https://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=org.codehaus.sonar.runner&a=sonar-runner-dist&v=LATEST&p=zip
,
but only when sonar-runner is not available on the path.
Downloading from a custom URL
If for some reason sonatype is down, or the Great Firewall is blocking sonatype, you may need to use
a download mirror url. To set a mirror, set npm config property sonarrunner_cdnurl
.
Default is ``.
npm install grunt-karma-sonar --sonarrunner_cdnurl=http://some-mirror.org/path/to/downloads
Or add property into your .npmrc
file (https://www.npmjs.org/doc/files/npmrc.html)
sonarrunner_cdnurl=http://some-mirror.org/path/to/downloads
Another option is to use PATH variable SONARRUNNER_CDNURL
.
SONARRUNNER_CDNURL=http://some-mirror.org/path/to/downloads npm install grunt-karma-sonar
Note: It will try to find sonar-runner-dist.zip
in the cdn url.
Downloading from a custom Dir
If for some reason sonatype is down, or the Great Firewall is blocking sonatype, you may need to use
a download mirror directory. To set a mirror, set npm config property sonarrunner_cdndir
.
Default is ``.
npm install grunt-karma-sonar --sonarrunner_cdndir=/some/path/downloads
Or add property into your .npmrc
file (https://www.npmjs.org/doc/files/npmrc.html)
sonarrunner_cdndir=/some/path/downloads
Another option is to use PATH variable SONARRUNNER_CDNDIR
.
SONARRUNNER_CDNDIR=/some/path/downloads npm install grunt-karma-sonar
Note: It can be the case that there are multiple versions available at the download mirror. If this is the case the latest version will be used.
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.
Release History
(Nothing yet)