aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/sonar-web/src')
-rw-r--r--server/sonar-web/src/main/hbs/coding-rules/facets/coding-rules-characteristic-facet.hbs18
-rw-r--r--server/sonar-web/src/main/hbs/coding-rules/rule/coding-rules-rule-issues.hbs2
-rw-r--r--server/sonar-web/src/main/hbs/source-viewer/source-viewer-coverage-popup.hbs4
-rw-r--r--server/sonar-web/src/main/hbs/source-viewer/source-viewer-duplication-popup.hbs2
-rw-r--r--server/sonar-web/src/main/hbs/source-viewer/source-viewer.hbs19
-rw-r--r--server/sonar-web/src/main/hbs/widgets/_widget-issue-filter-total.hbs11
-rw-r--r--server/sonar-web/src/main/hbs/widgets/widget-issue-filter-action-plans.hbs22
-rw-r--r--server/sonar-web/src/main/hbs/widgets/widget-issue-filter-assignees.hbs22
-rw-r--r--server/sonar-web/src/main/hbs/widgets/widget-issue-filter-resolutions.hbs22
-rw-r--r--server/sonar-web/src/main/hbs/widgets/widget-issue-filter-severities.hbs19
-rw-r--r--server/sonar-web/src/main/hbs/widgets/widget-issue-filter-statuses.hbs19
-rw-r--r--server/sonar-web/src/main/hbs/widgets/widget-issue-filter.hbs18
-rw-r--r--server/sonar-web/src/main/js/application.js33
-rw-r--r--server/sonar-web/src/main/js/coding-rules/facets/characteristic-facet.js37
-rw-r--r--server/sonar-web/src/main/js/coding-rules/models/state.js4
-rw-r--r--server/sonar-web/src/main/js/common/handlebars-extensions.js33
-rw-r--r--server/sonar-web/src/main/js/nav/search-view.js2
-rw-r--r--server/sonar-web/src/main/js/source-viewer/popups/coverage-popup.js11
-rw-r--r--server/sonar-web/src/main/js/source-viewer/source.js15
-rw-r--r--server/sonar-web/src/main/js/source-viewer/viewer.js48
-rw-r--r--server/sonar-web/src/main/js/tests/e2e/views/layouts/main.jade26
-rw-r--r--server/sonar-web/src/main/js/widgets/bubble-chart.js79
-rw-r--r--server/sonar-web/src/main/js/widgets/issue-filter.js296
-rw-r--r--server/sonar-web/src/main/less/init/misc.less16
-rw-r--r--server/sonar-web/src/main/less/init/tables.less3
-rw-r--r--server/sonar-web/src/main/less/pages/dashboard.less16
-rw-r--r--server/sonar-web/src/main/less/style.less3
-rw-r--r--server/sonar-web/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb3
-rw-r--r--server/sonar-web/src/main/webapp/WEB-INF/app/helpers/application_helper.rb4
-rw-r--r--server/sonar-web/src/main/webapp/WEB-INF/app/helpers/properties_helper.rb4
-rw-r--r--server/sonar-web/src/main/webapp/WEB-INF/app/models/project_measure.rb2
-rw-r--r--server/sonar-web/src/main/webapp/WEB-INF/app/models/property_type.rb1
-rw-r--r--server/sonar-web/src/main/webapp/WEB-INF/app/views/profiles/changelog.html.erb8
-rw-r--r--server/sonar-web/src/main/webapp/WEB-INF/app/views/settings/_type_USER_LOGIN.html.erb5
-rw-r--r--server/sonar-web/src/main/webapp/WEB-INF/db/migrate/796_add_uuid_to_analysis_reports.rb32
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-active-severity-facet.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-active-severity-facet.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-available-since.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-available-since.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-inheritance-facet.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-no-available-profiles-for-activation.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-no-available-profiles-for-activation.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-quality-profile-facet.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-quality-profile-facet.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-query-facet.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-query-facet.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-rule-should-have-permalink.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-rule-should-have-permalink.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-should-activate-profile.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-activate-profile.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-should-create-custom-rules.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-should-create-manual-rules.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-manual-rules.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-should-delete-custom-rules.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-custom-rules.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-should-delete-manual-rules.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-manual-rules.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-should-show-custom-rules.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-custom-rules.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-should-show-deprecated-label.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-deprecated-label.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-should-show-details.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-details.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-should-show-empty-list.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-empty-list.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-should-show-facets.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-facets.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-should-show-rule-issues.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule-issues.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-should-show-rule.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule.js)4
-rw-r--r--server/sonar-web/src/test/js/coding-rules-page-should-show-rules.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rules.js)4
-rw-r--r--server/sonar-web/src/test/js/design-spec.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/design-spec.js)4
-rw-r--r--server/sonar-web/src/test/js/global-issue-filter-widget.js853
-rw-r--r--server/sonar-web/src/test/js/issues-page-should-open-issue-permalink.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-page-should-open-issue-permalink.js)4
-rw-r--r--server/sonar-web/src/test/js/issues-page-spec.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-page-spec.js)28
-rw-r--r--server/sonar-web/src/test/js/project-issue-filter-widget.js221
-rw-r--r--server/sonar-web/src/test/js/quality-gates-spec.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/quality-gates-spec.js)4
-rw-r--r--server/sonar-web/src/test/js/source-viewer-coverage.js66
-rw-r--r--server/sonar-web/src/test/js/source-viewer-create-manual-issue.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue.js)4
-rw-r--r--server/sonar-web/src/test/js/source-viewer-duplications.js70
-rw-r--r--server/sonar-web/src/test/js/source-viewer-favorite-spec.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-favorite-spec.js)8
-rw-r--r--server/sonar-web/src/test/js/source-viewer-link-to-raw-spec.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-link-to-raw-spec.js)4
-rw-r--r--server/sonar-web/src/test/js/source-viewer-scm.js71
-rw-r--r--server/sonar-web/src/test/js/source-viewer-should-not-show-source-if-no-permission.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-not-show-source-if-no-permission.js)4
-rw-r--r--server/sonar-web/src/test/js/source-viewer-should-open-in-new-window-with-line.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-open-in-new-window-with-line.js)4
-rw-r--r--server/sonar-web/src/test/js/source-viewer-should-open-in-new-window.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-open-in-new-window.js)4
-rw-r--r--server/sonar-web/src/test/js/source-viewer-spec.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec.js)12
-rw-r--r--server/sonar-web/src/test/js/treemap-spec.js (renamed from server/sonar-web/src/main/js/tests/e2e/tests/treemap-spec.js)3
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-active-severity-facet/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-active-severity-facet/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-active-severity-facet/search-BLOCKER.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-active-severity-facet/search-BLOCKER.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-active-severity-facet/search-qprofile.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-active-severity-facet/search-qprofile.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-active-severity-facet/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-active-severity-facet/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-available-since/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-available-since/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-available-since/search-limited.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-available-since/search-limited.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-available-since/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-available-since/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search-inherited.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search-inherited.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search-not-inherited.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search-not-inherited.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search-overriden.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search-overriden.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search-qprofile.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search-qprofile.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search-qprofile2.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search-qprofile2.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-no-available-profiles-for-activation/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-no-available-profiles-for-activation/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-no-available-profiles-for-activation/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-no-available-profiles-for-activation/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-no-available-profiles-for-activation/show.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-no-available-profiles-for-activation/show.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-quality-profile-facet/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-quality-profile-facet/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-quality-profile-facet/search-qprofile-active.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-quality-profile-facet/search-qprofile-active.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-quality-profile-facet/search-qprofile-inactive.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-quality-profile-facet/search-qprofile-inactive.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-quality-profile-facet/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-quality-profile-facet/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-query-facet/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-query-facet/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-query-facet/search-query.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-query-facet/search-query.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-query-facet/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-query-facet/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-rule-permalink/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-rule-permalink/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-rule-permalink/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-rule-permalink/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-rule-permalink/show.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-rule-permalink/show.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-activate-profile/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-activate-profile/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-activate-profile/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-activate-profile/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-activate-profile/show-with-profile.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-activate-profile/show-with-profile.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-activate-profile/show.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-activate-profile/show.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-create-custom-rules/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-create-custom-rules/search-custom-rules.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules/search-custom-rules.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-create-custom-rules/search-custom-rules2.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules/search-custom-rules2.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-create-custom-rules/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-create-custom-rules/show.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules/show.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-create-manual-rules/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-manual-rules/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-create-manual-rules/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-manual-rules/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-create-manual-rules/show.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-manual-rules/show.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-delete-custom-rules/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-custom-rules/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-delete-custom-rules/search-custom-rules.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-custom-rules/search-custom-rules.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-delete-custom-rules/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-custom-rules/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-delete-custom-rules/show.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-custom-rules/show.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-delete-manual-rules/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-manual-rules/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-delete-manual-rules/search-after.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-manual-rules/search-after.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-delete-manual-rules/search-before.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-manual-rules/search-before.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-delete-manual-rules/show.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-manual-rules/show.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-show-custom-rules/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-custom-rules/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-show-custom-rules/search-custom-rules.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-custom-rules/search-custom-rules.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-show-custom-rules/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-custom-rules/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-show-custom-rules/show.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-custom-rules/show.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-show-deprecated-label/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-deprecated-label/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-show-deprecated-label/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-deprecated-label/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-show-details/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-details/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-show-details/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-details/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-show-details/show.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-details/show.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-show-empty-list/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-empty-list/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-show-empty-list/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-empty-list/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-show-rule-issues/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule-issues/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-show-rule-issues/issues-search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule-issues/issues-search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-show-rule-issues/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule-issues/search.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules-page-should-show-rule-issues/show.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule-issues/show.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules/app.json)0
-rw-r--r--server/sonar-web/src/test/json/coding-rules/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/coding-rules/search.json)0
-rw-r--r--server/sonar-web/src/test/json/design-spec/dependencies.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/design-spec/dependencies.json)0
-rw-r--r--server/sonar-web/src/test/json/design-spec/resources.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/design-spec/resources.json)0
-rw-r--r--server/sonar-web/src/test/json/global-issues-filter-widget/all-issues-by-resolution.json32
-rw-r--r--server/sonar-web/src/test/json/global-issues-filter-widget/all-issues-by-status.json32
-rw-r--r--server/sonar-web/src/test/json/global-issues-filter-widget/red-issues-by-severity.json32
-rw-r--r--server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-action-plan.json63
-rw-r--r--server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-assignee.json48
-rw-r--r--server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-date-limited.json24
-rw-r--r--server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-date.json32
-rw-r--r--server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-language.json46
-rw-r--r--server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-project.json62
-rw-r--r--server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-resolution.json32
-rw-r--r--server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-rule.json186
-rw-r--r--server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-severity.json32
-rw-r--r--server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-unassigned-issues-by-assignee.json48
-rw-r--r--server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-unplanned-issues-by-action-plan.json63
-rw-r--r--server/sonar-web/src/test/json/issues-page-should-open-issue-permalink/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-page-should-open-issue-permalink/app.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-page-should-open-issue-permalink/components-app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-page-should-open-issue-permalink/components-app.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-page-should-open-issue-permalink/lines.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-page-should-open-issue-permalink/lines.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-page-should-open-issue-permalink/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-page-should-open-issue-permalink/search.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-spec/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/app.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-spec/file-level/components-app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/file-level/components-app.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-spec/file-level/lines.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/file-level/lines.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-spec/file-level/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/file-level/search.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-spec/search-reopened.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/search-reopened.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-spec/search-with-tags.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/search-with-tags.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-spec/search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/search.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-spec/show-open.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/show-open.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-spec/show-resolved.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/show-resolved.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-spec/show-with-tags.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/show-with-tags.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-spec/show.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/show.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-spec/tags-modified.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/tags-modified.json)0
-rw-r--r--server/sonar-web/src/test/json/issues-spec/tags.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/tags.json)0
-rw-r--r--server/sonar-web/src/test/json/project-issues-filter-widget/unresolved-issues-by-date.json32
-rw-r--r--server/sonar-web/src/test/json/project-issues-filter-widget/unresolved-issues-by-severity-with-differential-period.json32
-rw-r--r--server/sonar-web/src/test/json/project-issues-filter-widget/unresolved-issues-by-severity.json32
-rw-r--r--server/sonar-web/src/test/json/quality-gates-spec/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/quality-gates-spec/app.json)0
-rw-r--r--server/sonar-web/src/test/json/quality-gates-spec/list.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/quality-gates-spec/list.json)0
-rw-r--r--server/sonar-web/src/test/json/quality-gates-spec/show.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/quality-gates-spec/show.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-coverage/app.json19
-rw-r--r--server/sonar-web/src/test/json/source-viewer-coverage/issues.json14
-rw-r--r--server/sonar-web/src/test/json/source-viewer-coverage/lines.json18
-rw-r--r--server/sonar-web/src/test/json/source-viewer-coverage/test-cases.json17
-rw-r--r--server/sonar-web/src/test/json/source-viewer-create-manual-issue/api-rules-search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue/api-rules-search.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-create-manual-issue/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue/app.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-create-manual-issue/create-issue.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue/create-issue.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-create-manual-issue/issues.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue/issues.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-create-manual-issue/lines.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue/lines.json)420
-rw-r--r--server/sonar-web/src/test/json/source-viewer-duplications/app.json19
-rw-r--r--server/sonar-web/src/test/json/source-viewer-duplications/duplications.json41
-rw-r--r--server/sonar-web/src/test/json/source-viewer-duplications/issues.json14
-rw-r--r--server/sonar-web/src/test/json/source-viewer-duplications/lines.json22
-rw-r--r--server/sonar-web/src/test/json/source-viewer-scm/app.json19
-rw-r--r--server/sonar-web/src/test/json/source-viewer-scm/issues.json14
-rw-r--r--server/sonar-web/src/test/json/source-viewer-scm/lines.json11
-rw-r--r--server/sonar-web/src/test/json/source-viewer-should-not-show-source-if-no-permission/api-components-app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-not-show-source-if-no-permission/api-components-app.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-should-not-show-source-if-no-permission/api-issues-search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-not-show-source-if-no-permission/api-issues-search.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-should-open-in-new-window/api-components-app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-open-in-new-window/api-components-app.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-should-open-in-new-window/api-issues-search.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-open-in-new-window/api-issues-search.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-should-open-in-new-window/api-sources-lines.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-open-in-new-window/api-sources-lines.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/app-not-logged-in.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/app-not-logged-in.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/app.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/coverage.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/coverage.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/cross-project-duplications.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/cross-project-duplications.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/duplications-in-deleted-files.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/duplications-in-deleted-files.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/duplications.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/duplications.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/issues.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/issues.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/lines.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/lines.json)420
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/resources-without-ncloc-data.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/resources-without-ncloc-data.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/resources.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/resources.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/scm.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/scm.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/source.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/source.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/test-cases.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/test-cases.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/tests/app.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/tests/app.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/tests/lines.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/tests/lines.json)0
-rw-r--r--server/sonar-web/src/test/json/source-viewer-spec/tests/tests.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/tests/tests.json)0
-rw-r--r--server/sonar-web/src/test/json/treemap-spec/treemap-resources.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/treemap-spec/treemap-resources.json)0
-rw-r--r--server/sonar-web/src/test/json/treemap-spec/treemap.json (renamed from server/sonar-web/src/main/js/tests/e2e/tests/treemap-spec/treemap.json)0
-rw-r--r--server/sonar-web/src/test/lib.js (renamed from server/sonar-web/src/main/js/tests/e2e/lib.js)23
-rw-r--r--server/sonar-web/src/test/server-coverage.js30
-rw-r--r--server/sonar-web/src/test/server.js (renamed from server/sonar-web/src/main/js/tests/e2e/server.js)10
-rw-r--r--server/sonar-web/src/test/views/coding-rules.jade (renamed from server/sonar-web/src/main/js/tests/e2e/views/coding-rules.jade)2
-rw-r--r--server/sonar-web/src/test/views/design.jade (renamed from server/sonar-web/src/main/js/tests/e2e/views/design.jade)2
-rw-r--r--server/sonar-web/src/test/views/issue-filter-widget.jade9
-rw-r--r--server/sonar-web/src/test/views/issues.jade (renamed from server/sonar-web/src/main/js/tests/e2e/views/issues.jade)2
-rw-r--r--server/sonar-web/src/test/views/layouts/main.jade67
-rw-r--r--server/sonar-web/src/test/views/quality-gates.jade (renamed from server/sonar-web/src/main/js/tests/e2e/views/quality-gates.jade)2
-rw-r--r--server/sonar-web/src/test/views/source-viewer.jade (renamed from server/sonar-web/src/main/js/tests/e2e/views/source-viewer.jade)2
-rw-r--r--server/sonar-web/src/test/views/treemap.jade (renamed from server/sonar-web/src/main/js/tests/e2e/views/treemap.jade)2
225 files changed, 3737 insertions, 593 deletions
diff --git a/server/sonar-web/src/main/hbs/coding-rules/facets/coding-rules-characteristic-facet.hbs b/server/sonar-web/src/main/hbs/coding-rules/facets/coding-rules-characteristic-facet.hbs
index 1742660c33a..645205b0c5c 100644
--- a/server/sonar-web/src/main/hbs/coding-rules/facets/coding-rules-characteristic-facet.hbs
+++ b/server/sonar-web/src/main/hbs/coding-rules/facets/coding-rules-characteristic-facet.hbs
@@ -2,10 +2,18 @@
<div class="search-navigator-facet-list">
{{#each values}}
- <a class="facet search-navigator-facet {{#if parent}}search-navigator-facet-indent{{/if}} js-facet"
- data-value="{{val}}" title="{{default label val}}">
- <span class="facet-name">{{default label val}}</span>
- <span class="facet-stat">{{numberShort count}}</span>
- </a>
+ {{#eq val 'NONE'}}
+ <a class="facet search-navigator-facet js-facet" data-empty-characteristic
+ title="{{t 'coding_rules.noncharacterized'}}">
+ <span class="facet-name">{{t 'coding_rules.noncharacterized'}}</span>
+ <span class="facet-stat">{{numberShort count}}</span>
+ </a>
+ {{else}}
+ <a class="facet search-navigator-facet {{#if parent}}search-navigator-facet-indent{{/if}} js-facet"
+ data-value="{{val}}" title="{{default label val}}">
+ <span class="facet-name">{{default label val}}</span>
+ <span class="facet-stat">{{numberShort count}}</span>
+ </a>
+ {{/eq}}
{{/each}}
</div>
diff --git a/server/sonar-web/src/main/hbs/coding-rules/rule/coding-rules-rule-issues.hbs b/server/sonar-web/src/main/hbs/coding-rules/rule/coding-rules-rule-issues.hbs
index e60656f4dd0..da9a5336d36 100644
--- a/server/sonar-web/src/main/hbs/coding-rules/rule/coding-rules-rule-issues.hbs
+++ b/server/sonar-web/src/main/hbs/coding-rules/rule/coding-rules-rule-issues.hbs
@@ -1,7 +1,7 @@
<div class="coding-rule-section-separator"></div>
<h3 class="coding-rules-detail-title">
- {{t 'coding_rules.issues'}} (<a class="js-rule-issues" href="{{baseSearchUrl}}" target="_blank">{{total}}</a>)
+ {{t 'coding_rules.issues'}} (<a class="js-rule-issues" href="{{baseSearchUrl}}">{{total}}</a>)
</h3>
{{#notEmpty projects}}
diff --git a/server/sonar-web/src/main/hbs/source-viewer/source-viewer-coverage-popup.hbs b/server/sonar-web/src/main/hbs/source-viewer/source-viewer-coverage-popup.hbs
index 1512a7e0b10..c30e1f500a9 100644
--- a/server/sonar-web/src/main/hbs/source-viewer/source-viewer-coverage-popup.hbs
+++ b/server/sonar-web/src/main/hbs/source-viewer/source-viewer-coverage-popup.hbs
@@ -1,12 +1,12 @@
<div class="bubble-popup-container">
<div class="bubble-popup-title">
{{#if row.lineHits}}
- {{t 'source_viewer.covered'}}
+ {{t 'source_viewer' tests 'covered'}}
{{#if row.conditions}}
({{default row.coveredConditions 0}} of {{row.conditions}} {{t 'source_viewer.conditions'}})
{{/if}}
{{else}}
- {{t 'source_viewer.not_covered'}}
+ {{t 'source_viewer' tests 'not_covered'}}
{{#if row.conditions}}
({{row.conditions}} {{t 'source_viewer.conditions'}})
{{/if}}
diff --git a/server/sonar-web/src/main/hbs/source-viewer/source-viewer-duplication-popup.hbs b/server/sonar-web/src/main/hbs/source-viewer/source-viewer-duplication-popup.hbs
index 673fabdc7d2..d3553ed3e58 100644
--- a/server/sonar-web/src/main/hbs/source-viewer/source-viewer-duplication-popup.hbs
+++ b/server/sonar-web/src/main/hbs/source-viewer/source-viewer-duplication-popup.hbs
@@ -28,7 +28,7 @@
Lines:
{{#joinEach blocks ','}}
<a class="link-action" data-uuid="{{../file.uuid}}" data-line="{{from}}">
- {{from}} – {{sum from size}}
+ {{from}} – {{sum from size -1}}
</a>
{{/joinEach}}
</div>
diff --git a/server/sonar-web/src/main/hbs/source-viewer/source-viewer.hbs b/server/sonar-web/src/main/hbs/source-viewer/source-viewer.hbs
index 0f239f255df..843f5d004c2 100644
--- a/server/sonar-web/src/main/hbs/source-viewer/source-viewer.hbs
+++ b/server/sonar-web/src/main/hbs/source-viewer/source-viewer.hbs
@@ -17,10 +17,21 @@
{{/ifSCMChanged2}}
</td>
- <td class="source-meta source-line-coverage {{#notNull coverageStatus}}source-line-{{coverageStatus}}{{/notNull}}"
- data-line-number="{{line}}" {{#notNull coverageStatus}}title="{{t 'source_viewer.tooltip' coverageStatus}}" data-placement="right" data-toggle="tooltip"{{/notNull}}>
- <div class="source-line-bar"></div>
- </td>
+ {{#if ../hasUTCoverage}}
+ <td class="source-meta source-line-coverage {{#notNull utCoverageStatus}}source-line-{{utCoverageStatus}}{{/notNull}}"
+ data-tests="ut"
+ data-line-number="{{line}}" {{#notNull utCoverageStatus}}title="{{t 'source_viewer.tooltip.ut' utCoverageStatus}}" data-placement="right" data-toggle="tooltip"{{/notNull}}>
+ <div class="source-line-bar"></div>
+ </td>
+ {{/if}}
+
+ {{#if ../hasITCoverage}}
+ <td class="source-meta source-line-coverage {{#notNull itCoverageStatus}}source-line-{{itCoverageStatus}}{{/notNull}}"
+ data-tests="it"
+ data-line-number="{{line}}" {{#notNull itCoverageStatus}}title="{{t 'source_viewer.tooltip.it' itCoverageStatus}}" data-placement="right" data-toggle="tooltip"{{/notNull}}>
+ <div class="source-line-bar"></div>
+ </td>
+ {{/if}}
{{#if ../hasDuplications}}
<td class="source-meta source-line-duplications {{#if duplicated}}source-line-duplicated{{/if}}"
diff --git a/server/sonar-web/src/main/hbs/widgets/_widget-issue-filter-total.hbs b/server/sonar-web/src/main/hbs/widgets/_widget-issue-filter-total.hbs
new file mode 100644
index 00000000000..1619ed5ab8c
--- /dev/null
+++ b/server/sonar-web/src/main/hbs/widgets/_widget-issue-filter-total.hbs
@@ -0,0 +1,11 @@
+<tr>
+ <td>
+ <a href="{{issueFilterTotalLink parsedQuery}}"><strong>{{t 'total'}}</strong></a>
+ </td>
+ <td class="text-right"><strong>{{#notNull periodDate}}+{{/notNull}}{{total}}</strong></td>
+ <td class="barchart">
+ <div class="barchart" style="width: 100%;">
+ <div style="width: 100%;"></div>
+ </div>
+ </td>
+</tr>
diff --git a/server/sonar-web/src/main/hbs/widgets/widget-issue-filter-action-plans.hbs b/server/sonar-web/src/main/hbs/widgets/widget-issue-filter-action-plans.hbs
new file mode 100644
index 00000000000..cec1a9a6748
--- /dev/null
+++ b/server/sonar-web/src/main/hbs/widgets/widget-issue-filter-action-plans.hbs
@@ -0,0 +1,22 @@
+<table class="data zebra">
+ {{> '_widget-issue-filter-total'}}
+ {{#each items}}
+ <tr>
+ <td>
+ {{#eq val ''}}
+ <a href="{{issueFilterItemLink ../../parsedQuery 'planned' 'false'}}">{{t 'issue.unplanned'}}</a>
+ {{else}}
+ <a href="{{issueFilterItemLink ../../parsedQuery 'actionPlans' val}}">{{default label val}}</a>
+ {{/eq}}
+ </td>
+ <td class="text-right nowrap">
+ {{#notNull ../periodDate}}+{{/notNull}}{{numberShort count}}
+ </td>
+ <td class="barchart">
+ <div class="barchart" style="width: 100%;">
+ <div style="width: {{percent count ../total}};"></div>
+ </div>
+ </td>
+ </tr>
+ {{/each}}
+</table>
diff --git a/server/sonar-web/src/main/hbs/widgets/widget-issue-filter-assignees.hbs b/server/sonar-web/src/main/hbs/widgets/widget-issue-filter-assignees.hbs
new file mode 100644
index 00000000000..3e1add4abd2
--- /dev/null
+++ b/server/sonar-web/src/main/hbs/widgets/widget-issue-filter-assignees.hbs
@@ -0,0 +1,22 @@
+<table class="data zebra">
+ {{> '_widget-issue-filter-total'}}
+ {{#each items}}
+ <tr>
+ <td>
+ {{#eq val ''}}
+ <a href="{{issueFilterItemLink ../../parsedQuery 'assigned' 'false'}}">{{t 'unassigned'}}</a>
+ {{else}}
+ <a href="{{issueFilterItemLink ../../parsedQuery 'assignees' val}}">{{default label val}}</a>
+ {{/eq}}
+ </td>
+ <td class="text-right nowrap">
+ {{#notNull ../periodDate}}+{{/notNull}}{{numberShort count}}
+ </td>
+ <td class="barchart">
+ <div class="barchart" style="width: 100%;">
+ <div style="width: {{percent count ../total}};"></div>
+ </div>
+ </td>
+ </tr>
+ {{/each}}
+</table>
diff --git a/server/sonar-web/src/main/hbs/widgets/widget-issue-filter-resolutions.hbs b/server/sonar-web/src/main/hbs/widgets/widget-issue-filter-resolutions.hbs
new file mode 100644
index 00000000000..8c03461b619
--- /dev/null
+++ b/server/sonar-web/src/main/hbs/widgets/widget-issue-filter-resolutions.hbs
@@ -0,0 +1,22 @@
+<table class="data zebra">
+ {{> '_widget-issue-filter-total'}}
+ {{#each items}}
+ <tr>
+ <td>
+ {{#eq val ''}}
+ <a href="{{issueFilterItemLink ../../parsedQuery 'resolved' 'false'}}">{{t 'unresolved'}}</a>
+ {{else}}
+ <a href="{{issueFilterItemLink ../../parsedQuery 'resolutions' val}}">{{t 'issue.resolution' val}}</a>
+ {{/eq}}
+ </td>
+ <td class="text-right nowrap">
+ {{#notNull ../periodDate}}+{{/notNull}}{{numberShort count}}
+ </td>
+ <td class="barchart">
+ <div class="barchart" style="width: 100%;">
+ <div style="width: {{percent count ../total}};"></div>
+ </div>
+ </td>
+ </tr>
+ {{/each}}
+</table>
diff --git a/server/sonar-web/src/main/hbs/widgets/widget-issue-filter-severities.hbs b/server/sonar-web/src/main/hbs/widgets/widget-issue-filter-severities.hbs
new file mode 100644
index 00000000000..98b255ce640
--- /dev/null
+++ b/server/sonar-web/src/main/hbs/widgets/widget-issue-filter-severities.hbs
@@ -0,0 +1,19 @@
+<table class="data zebra">
+ <tr>
+ <td>
+ <a href="{{issueFilterTotalLink parsedQuery}}"><strong>{{t 'total'}}</strong></a>
+ </td>
+ <td class="text-right"><strong>{{#notNull periodDate}}+{{/notNull}}{{total}}</strong></td>
+ </tr>
+ {{#each items}}
+ <tr>
+ <td>
+ {{severityIcon val}}
+ <a href="{{issueFilterItemLink ../parsedQuery ../property val}}">{{t 'severity' val}}</a>
+ </td>
+ <td class="text-right nowrap">
+ {{#notNull ../periodDate}}+{{/notNull}}{{numberShort count}}
+ </td>
+ </tr>
+ {{/each}}
+</table>
diff --git a/server/sonar-web/src/main/hbs/widgets/widget-issue-filter-statuses.hbs b/server/sonar-web/src/main/hbs/widgets/widget-issue-filter-statuses.hbs
new file mode 100644
index 00000000000..b27fc32964f
--- /dev/null
+++ b/server/sonar-web/src/main/hbs/widgets/widget-issue-filter-statuses.hbs
@@ -0,0 +1,19 @@
+<table class="data zebra">
+ {{> '_widget-issue-filter-total'}}
+ {{#each items}}
+ <tr>
+ <td>
+ {{statusIcon val}}
+ <a href="{{issueFilterItemLink ../parsedQuery ../property val}}">{{t 'issue.status' val}}</a>
+ </td>
+ <td class="text-right nowrap">
+ {{#notNull ../periodDate}}+{{/notNull}}{{numberShort count}}
+ </td>
+ <td class="barchart">
+ <div class="barchart" style="width: 100%;">
+ <div style="width: {{percent count ../total}};"></div>
+ </div>
+ </td>
+ </tr>
+ {{/each}}
+</table>
diff --git a/server/sonar-web/src/main/hbs/widgets/widget-issue-filter.hbs b/server/sonar-web/src/main/hbs/widgets/widget-issue-filter.hbs
new file mode 100644
index 00000000000..ffb3e072557
--- /dev/null
+++ b/server/sonar-web/src/main/hbs/widgets/widget-issue-filter.hbs
@@ -0,0 +1,18 @@
+<table class="data zebra">
+ {{> '_widget-issue-filter-total'}}
+ {{#each items}}
+ <tr>
+ <td>
+ <a href="{{searchLink}}">{{default label val}}</a>
+ </td>
+ <td class="text-right nowrap">
+ {{#notNull ../periodDate}}+{{/notNull}}{{numberShort count}}
+ </td>
+ <td class="barchart">
+ <div class="barchart" style="width: 100%;">
+ <div style="width: {{percent count ../total}};"></div>
+ </div>
+ </td>
+ </tr>
+ {{/each}}
+</table>
diff --git a/server/sonar-web/src/main/js/application.js b/server/sonar-web/src/main/js/application.js
index 9362987d90b..de273f721dd 100644
--- a/server/sonar-web/src/main/js/application.js
+++ b/server/sonar-web/src/main/js/application.js
@@ -333,6 +333,39 @@ function openPopup(url, popupId) {
}
+function collapsedDirFromPath (path) {
+ var limit = 30;
+ if (typeof path === 'string') {
+ var tokens = _.initial(path.split('/'));
+ if (tokens.length > 2) {
+ var head = _.first(tokens),
+ tail = _.last(tokens),
+ middle = _.initial(_.rest(tokens)),
+ cut = false;
+ while (middle.join().length > limit && middle.length > 0) {
+ middle.shift();
+ cut = true;
+ }
+ var body = [].concat(head, cut ? ['...'] : [], middle, tail);
+ return body.join('/') + '/';
+ } else {
+ return tokens.join('/') + '/';
+ }
+ } else {
+ return null;
+ }
+}
+
+function fileFromPath (path) {
+ if (typeof path === 'string') {
+ var tokens = path.split('/');
+ return _.last(tokens);
+ } else {
+ return null;
+ }
+}
+
+
jQuery(function () {
// Process login link in order to add the anchor
diff --git a/server/sonar-web/src/main/js/coding-rules/facets/characteristic-facet.js b/server/sonar-web/src/main/js/coding-rules/facets/characteristic-facet.js
index 94a954abc7a..5275d260317 100644
--- a/server/sonar-web/src/main/js/coding-rules/facets/characteristic-facet.js
+++ b/server/sonar-web/src/main/js/coding-rules/facets/characteristic-facet.js
@@ -22,9 +22,44 @@ define([
'templates/coding-rules'
], function (BaseFacet) {
+ var $ = jQuery;
+
return BaseFacet.extend({
template: Templates['coding-rules-characteristic-facet'],
+ onRender: function () {
+ BaseFacet.prototype.onRender.apply(this, arguments);
+ var value = this.options.app.state.get('query').has_debt_characteristic;
+ if (value != null && ('' + value === 'false')) {
+ this.$('.js-facet').filter('[data-empty-characteristic]').addClass('active');
+ }
+ },
+
+ toggleFacet: function (e) {
+ var noneCharacteristic = $(e.currentTarget).is('[data-empty-characteristic]'),
+ property = this.model.get('property'),
+ obj = {};
+ $(e.currentTarget).toggleClass('active');
+ if (noneCharacteristic) {
+ var checked = $(e.currentTarget).is('.active');
+ obj.has_debt_characteristic = checked ? 'false' : null;
+ obj[property] = null;
+ } else {
+ obj.has_debt_characteristic = null;
+ obj[property] = this.getValue();
+ }
+ console.log(obj);
+ this.options.app.state.updateFilter(obj);
+ },
+
+ disable: function () {
+ var property = this.model.get('property'),
+ obj = {};
+ obj.has_debt_characteristic = null;
+ obj[property] = null;
+ this.options.app.state.updateFilter(obj);
+ },
+
getValues: function () {
var values = this.model.getValues(),
characteristics = this.options.app.characteristics;
@@ -32,8 +67,6 @@ define([
var ch = _.findWhere(characteristics, { key: value.val });
if (ch != null) {
_.extend(value, ch, { label: ch.name });
- } else {
- _.extend(value, { label: t('coding_rules.noncharacterized') });
}
return value;
});
diff --git a/server/sonar-web/src/main/js/coding-rules/models/state.js b/server/sonar-web/src/main/js/coding-rules/models/state.js
index 050a7ff58b3..97720d9d5de 100644
--- a/server/sonar-web/src/main/js/coding-rules/models/state.js
+++ b/server/sonar-web/src/main/js/coding-rules/models/state.js
@@ -30,7 +30,9 @@ define([
allFacets: ['q', 'rule_key', 'languages', 'tags', 'repositories', 'debt_characteristics', 'severities',
'statuses', 'available_since', 'is_template', 'qprofile', 'inheritance', 'active_severities'],
facetsFromServer: ['languages', 'repositories', 'tags', 'severities', 'statuses', 'debt_characteristics'],
- transform: {}
+ transform: {
+ 'has_debt_characteristic': 'debt_characteristics'
+ }
}
});
diff --git a/server/sonar-web/src/main/js/common/handlebars-extensions.js b/server/sonar-web/src/main/js/common/handlebars-extensions.js
index 36f89fd0214..260396cc73e 100644
--- a/server/sonar-web/src/main/js/common/handlebars-extensions.js
+++ b/server/sonar-web/src/main/js/common/handlebars-extensions.js
@@ -259,7 +259,10 @@
});
Handlebars.registerHelper('sum', function(a, b) {
- return a + b;
+ var args = Array.prototype.slice.call(arguments, 0, -1);
+ return args.reduce(function (p, c) {
+ return p + +c;
+ }, 0);
});
Handlebars.registerHelper('dashboardUrl', function(componentKey, componentQualifier) {
@@ -473,35 +476,11 @@
});
Handlebars.registerHelper('collapsedDirFromPath', function (path) {
- var limit = 30;
- if (typeof path === 'string') {
- var tokens = _.initial(path.split('/'));
- if (tokens.length > 2) {
- var head = _.first(tokens),
- tail = _.last(tokens),
- middle = _.initial(_.rest(tokens)),
- cut = false;
- while (middle.join().length > limit && middle.length > 0) {
- middle.shift();
- cut = true;
- }
- var body = [].concat(head, cut ? ['...'] : [], middle, tail);
- return body.join('/') + '/';
- } else {
- return tokens.join('/') + '/';
- }
- } else {
- return null;
- }
+ return collapsedDirFromPath(path);
});
Handlebars.registerHelper('fileFromPath', function (path) {
- if (typeof path === 'string') {
- var tokens = path.split('/');
- return _.last(tokens);
- } else {
- return null;
- }
+ return fileFromPath(path);
});
Handlebars.registerHelper('repeat', function (number, options) {
diff --git a/server/sonar-web/src/main/js/nav/search-view.js b/server/sonar-web/src/main/js/nav/search-view.js
index 9c74292b56f..d89942bdbcf 100644
--- a/server/sonar-web/src/main/js/nav/search-view.js
+++ b/server/sonar-web/src/main/js/nav/search-view.js
@@ -129,7 +129,7 @@ define([
url: baseUrl + '/dashboard/index?id=' + encodeURIComponent(historyItem.key) + dashboardParameters(true),
name: historyItem.name,
q: historyItem.icon,
- extra: index === 0 ? t('recent_history') : null
+ extra: index === 0 ? t('browsed_recently') : null
};
}),
qualifiers = this.model.get('qualifiers').map(function (q, index) {
diff --git a/server/sonar-web/src/main/js/source-viewer/popups/coverage-popup.js b/server/sonar-web/src/main/js/source-viewer/popups/coverage-popup.js
index cbc57a1eb0c..34f080e9655 100644
--- a/server/sonar-web/src/main/js/source-viewer/popups/coverage-popup.js
+++ b/server/sonar-web/src/main/js/source-viewer/popups/coverage-popup.js
@@ -46,7 +46,8 @@ define([
},
serializeData: function () {
- var files = this.model.get('files'),
+ var row = this.options.row || {},
+ files = this.model.get('files'),
tests = _.groupBy(this.model.get('tests'), '_ref'),
testFiles = _.map(tests, function (testSet, fileRef) {
return {
@@ -54,9 +55,15 @@ define([
tests: testSet
};
});
+ _.extend(row, {
+ lineHits: row[this.options.tests + 'LineHits'],
+ conditions: row[this.options.tests + 'Conditions'],
+ coveredConditions: row[this.options.tests + 'CoveredConditions']
+ });
return {
testFiles: testFiles,
- row: this.options.row
+ tests: this.options.tests,
+ row: row
};
}
});
diff --git a/server/sonar-web/src/main/js/source-viewer/source.js b/server/sonar-web/src/main/js/source-viewer/source.js
index 3db24bc9fb8..168a86bb9c2 100644
--- a/server/sonar-web/src/main/js/source-viewer/source.js
+++ b/server/sonar-web/src/main/js/source-viewer/source.js
@@ -26,6 +26,7 @@ define(function () {
return {
hasSource: false,
hasCoverage: false,
+ hasITCoverage: false,
hasDuplications: false,
hasSCM: false,
@@ -63,7 +64,7 @@ define(function () {
d.blocks.forEach(function (b) {
if (b._ref === '1') {
var lineFrom = b.from,
- lineTo = b.from + b.size;
+ lineTo = b.from + b.size - 1;
if (line.line >= lineFrom && line.line <= lineTo) {
duplicated = true;
}
@@ -88,6 +89,18 @@ define(function () {
});
}
this.set({ hasDuplications: hasDuplications });
+ },
+
+ hasUTCoverage: function (source) {
+ return _.some(source, function (line) {
+ return line.utCoverageStatus != null;
+ });
+ },
+
+ hasITCoverage: function (source) {
+ return _.some(source, function (line) {
+ return line.itCoverageStatus != null;
+ });
}
});
diff --git a/server/sonar-web/src/main/js/source-viewer/viewer.js b/server/sonar-web/src/main/js/source-viewer/viewer.js
index afa3169941b..d177c92d9a3 100644
--- a/server/sonar-web/src/main/js/source-viewer/viewer.js
+++ b/server/sonar-web/src/main/js/source-viewer/viewer.js
@@ -168,15 +168,29 @@ define([
};
},
- getCoverageStatus: function (row) {
+ getUTCoverageStatus: function (row) {
var status = null;
- if (row.lineHits > 0) {
+ if (row.utLineHits > 0) {
status = 'partially-covered';
}
- if (row.lineHits > 0 && row.conditions === row.coveredConditions) {
+ if (row.utLineHits > 0 && row.utConditions === row.utCoveredConditions) {
status = 'covered';
}
- if (row.lineHits === 0 || row.coveredConditions === 0) {
+ if (row.utLineHits === 0 || row.utCoveredConditions === 0) {
+ status = 'uncovered';
+ }
+ return status;
+ },
+
+ getItCoverageStatus: function (row) {
+ var status = null;
+ if (row.itLineHits > 0) {
+ status = 'partially-covered';
+ }
+ if (row.itLineHits > 0 && row.itConditions === row.itCoveredConditions) {
+ status = 'covered';
+ }
+ if (row.itLineHits === 0 || row.itCoveredConditions === 0) {
status = 'uncovered';
}
return status;
@@ -192,12 +206,17 @@ define([
source.unshift({line: 0});
}
source = source.map(function (row) {
- return _.extend(row, { coverageStatus: that.getCoverageStatus(row) });
+ return _.extend(row, {
+ utCoverageStatus: that.getUTCoverageStatus(row),
+ itCoverageStatus: that.getItCoverageStatus(row)
+ });
});
var firstLine = _.first(source).line,
linesRequested = options.to - options.from + 1;
that.model.set({
source: source,
+ hasUTCoverage: that.model.hasUTCoverage(source),
+ hasITCoverage: that.model.hasITCoverage(source),
hasSourceBefore: firstLine > 1,
hasSourceAfter: data.sources.length === linesRequested
});
@@ -227,7 +246,7 @@ define([
d.blocks.forEach(function (b) {
if (b._ref === '1') {
var lineFrom = b.from,
- lineTo = b.from + b.size;
+ lineTo = b.from + b.size - 1;
for (var j = lineFrom; j <= lineTo; j++) {
duplications[j] = true;
}
@@ -372,7 +391,7 @@ define([
$('body').click();
this.clearTooltips();
var line = $(e.currentTarget).data('line-number'),
- row = _.findWhere(this.model.get('source'), {line: line}),
+ row = _.findWhere(this.model.get('source'), { line: line }),
url = baseUrl + '/api/tests/test_cases',
options = {
uuid: this.model.id,
@@ -382,6 +401,7 @@ define([
var popup = new CoveragePopupView({
model: new Backbone.Model(data),
row: row,
+ tests: $(e.currentTarget).data('tests'),
triggerEl: $(e.currentTarget)
});
popup.render();
@@ -566,10 +586,15 @@ define([
source.unshift({line: 0});
}
source = source.map(function (row) {
- return _.extend(row, { coverageStatus: that.getCoverageStatus(row) });
+ return _.extend(row, {
+ utCoverageStatus: that.getUTCoverageStatus(row),
+ itCoverageStatus: that.getItCoverageStatus(row)
+ });
});
that.model.set({
source: source,
+ hasUTCoverage: that.model.hasUTCoverage(source),
+ hasITCoverage: that.model.hasITCoverage(source),
hasSourceBefore: (data.sources.length === that.LINES_AROUND) && (_.first(source).line > 0)
});
that.addIssuesPerLineMeta(that.issues);
@@ -604,10 +629,15 @@ define([
that.model.set({ hasSourceBefore: true });
}
source = source.map(function (row) {
- return _.extend(row, { coverageStatus: that.getCoverageStatus(row) });
+ return _.extend(row, {
+ utCoverageStatus: that.getUTCoverageStatus(row),
+ itCoverageStatus: that.getItCoverageStatus(row)
+ });
});
that.model.set({
source: source,
+ hasUTCoverage: that.model.hasUTCoverage(source),
+ hasITCoverage: that.model.hasITCoverage(source),
hasSourceAfter: data.sources.length === that.LINES_AROUND
});
that.addIssuesPerLineMeta(that.issues);
diff --git a/server/sonar-web/src/main/js/tests/e2e/views/layouts/main.jade b/server/sonar-web/src/main/js/tests/e2e/views/layouts/main.jade
deleted file mode 100644
index 37b905874c7..00000000000
--- a/server/sonar-web/src/main/js/tests/e2e/views/layouts/main.jade
+++ /dev/null
@@ -1,26 +0,0 @@
-html
- head
- meta(http-equiv='Content-Type', content='text/html; charset=UTF-8')
- link(href='/css/sonar.css', rel='stylesheet', media='all')
- script(src='/js/sonar.js')
- script(src='/js/third-party/jquery.mockjax.js')
- script.
- var baseUrl = '';
- var $j = jQuery.noConflict();
- window.suppressTranslationWarnings = true;
- jQuery.mockjaxSettings.contentType = 'text/json';
- jQuery.mockjaxSettings.responseTime = 50;
- jQuery.mockjaxSettings.throwUnmocked = true;
- $j(document).ready(function () { $j('.open-modal').modal(); });
- window.waitForMocks = function (app) {
- var x = setInterval(function () {
- jQuery.get('/api/l10n/index').done(function () {
- clearInterval(x);
- require([app]);
- });
- }, 500);
- }
- block header
- body
- #body
- block body
diff --git a/server/sonar-web/src/main/js/widgets/bubble-chart.js b/server/sonar-web/src/main/js/widgets/bubble-chart.js
index 1e5860a4f9f..d8f3377dbd6 100644
--- a/server/sonar-web/src/main/js/widgets/bubble-chart.js
+++ b/server/sonar-web/src/main/js/widgets/bubble-chart.js
@@ -208,7 +208,27 @@ window.SonarWidgets = window.SonarWidgets == null ? {} : window.SonarWidgets;
.style('stroke', function () {
return widget.bubbleColor();
})
- .style('transition', 'all 0.2s ease');
+ .style('transition', 'all 0.2s ease')
+
+ .attr('title', function (d) {
+ var xMetricName = widget.metrics()[widget.xMetric].name,
+ yMetricName = widget.metrics()[widget.yMetric].name,
+ sizeMetricName = widget.metrics()[widget.sizeMetric].name,
+
+ xMetricValue = d.measures[widget.xMetric].fval,
+ yMetricValue = d.measures[widget.yMetric].fval,
+ sizeMetricValue = d.measures[widget.sizeMetric].fval;
+
+ return '<div class="text-left">' +
+ collapsedDirFromPath(d.longName) + '<br>' +
+ fileFromPath(d.longName) + '<br>' + '<br>' +
+ xMetricName + ': ' + xMetricValue + '<br>' +
+ yMetricName + ': ' + yMetricValue + '<br>' +
+ sizeMetricName + ': ' + sizeMetricValue +
+ '</div>';
+ })
+ .attr('data-placement', 'bottom')
+ .attr('data-toggle', 'tooltip');
this.items.exit().remove();
@@ -224,43 +244,13 @@ window.SonarWidgets = window.SonarWidgets == null ? {} : window.SonarWidgets;
.on('click', function (d) {
window.location = widget.options().baseUrl + '?id=' + encodeURIComponent(d.key);
})
- .on('mouseenter', function (d) {
+ .on('mouseenter', function () {
d3.select(this).select('circle')
.style('fill-opacity', 0.8);
-
- widget.infoDate.text(d.longName);
-
- var metricLineList = [
- {
- metric: widget.metrics()[widget.xMetric].name,
- value: d.measures[widget.xMetric].fval
- },
- {
- metric: widget.metrics()[widget.yMetric].name,
- value: d.measures[widget.yMetric].fval
- },
- {
- metric: widget.metrics()[widget.sizeMetric].name,
- value: (!!d.measures[widget.sizeMetric] ? d.measures[widget.sizeMetric].fval : '–')
- }
- ];
-
- var lastX = 0;
- widget.infoMetrics
- .data(metricLineList)
- .text(function(m) { return m.metric + ': ' + m.value; })
- .attr('transform', function(d2, i) {
- var posX = lastX;
- lastX += widget.infoMetricWidth[i];
- return trans(posX, 20);
- });
})
.on('mouseleave', function () {
d3.select(this).select('circle')
.style('fill-opacity', 0.2);
-
- widget.infoDate.text('');
- widget.infoMetrics.text('');
});
};
@@ -302,26 +292,6 @@ window.SonarWidgets = window.SonarWidgets == null ? {} : window.SonarWidgets;
this.gGrid.selectAll('line')
.style('stroke', '#000')
.style('stroke-opacity', 0.25);
-
-
- // Configure info placeholders
- this.infoWrap
- .attr('transform', trans(-this.margin().left, -this.margin().top + 20));
-
- this.infoDate
- .style('text-anchor', 'start')
- .style('font-weight', 'bold');
-
- var metricLines = [this.metrics().x, this.metrics().y, this.metrics().size];
- this.infoMetrics = this.infoWrap.selectAll('.metric')
- .data(metricLines);
- this.infoMetrics.enter().append('text').attr('class', 'metric info-text-small')
- .text(function(d) { return d; });
- this.infoMetricWidth = [];
- this.infoMetrics.each(function() {
- widget.infoMetricWidth.push(this.getComputedTextLength() + 140);
- });
- this.infoMetrics.text('');
};
@@ -342,9 +312,10 @@ window.SonarWidgets = window.SonarWidgets == null ? {} : window.SonarWidgets;
this.initBubbleEvents();
this.initAxes();
this.initGrid();
-
this.update(containerS);
+ jQuery('[data-toggle="tooltip"]').tooltip({ container: 'body', html: true });
+
return this;
};
@@ -542,7 +513,7 @@ window.SonarWidgets = window.SonarWidgets == null ? {} : window.SonarWidgets;
window.SonarWidgets.BubbleChart.defaults = {
width: 350,
height: 150,
- margin: { top: 60, right: 10, bottom: 50, left: 70 },
+ margin: { top: 10, right: 10, bottom: 50, left: 70 },
xLog: false,
yLog: false,
bubbleColor: '#4b9fd5',
diff --git a/server/sonar-web/src/main/js/widgets/issue-filter.js b/server/sonar-web/src/main/js/widgets/issue-filter.js
new file mode 100644
index 00000000000..c8d27bf5196
--- /dev/null
+++ b/server/sonar-web/src/main/js/widgets/issue-filter.js
@@ -0,0 +1,296 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+define(['templates/widgets'], function () {
+
+ var $ = jQuery,
+ defaultComparator = function (item) {
+ return -item.count;
+ },
+ defaultFilter = function (item) {
+ var items = this.query[this.property];
+ return items == null ||
+ (items != null && items.split(',').indexOf(item.val) !== -1);
+ },
+ defaultLabel = function (item) {
+ return item.val;
+ },
+ defaultLink = function (item, property, query) {
+ var criterion = {};
+ criterion[property] = item.val;
+ var r = _.extend({}, query, criterion);
+ if (r.componentKey != null) {
+ return baseUrl + '/component_issues/index?id=' + encodeURIComponent(r.componentKey) +
+ '#' + getQuery(_.omit(r, 'componentKey'));
+ } else {
+ return baseUrl + '/issues/search#' + getQuery(r);
+ }
+ },
+ byDistributionConf = {
+ 'severities': {
+ template: 'widget-issue-filter-severities',
+ comparator: function (item) {
+ var order = ['BLOCKER', 'CRITICAL', 'MAJOR', 'MINOR', 'INFO'];
+ return order.indexOf(item.val);
+ }
+ },
+ 'statuses': {
+ template: 'widget-issue-filter-statuses',
+ comparator: function (item) {
+ var order = ['OPEN', 'REOPENED', 'CONFIRMED', 'RESOLVED', 'CLOSED'];
+ return order.indexOf(item.val);
+ }
+ },
+ 'resolutions': {
+ template: 'widget-issue-filter-resolutions',
+ comparator: function (item) {
+ var order = ['', 'FALSE-POSITIVE', 'WONTFIX', 'FIXED', 'REMOVED'];
+ return order.indexOf(item.val);
+ },
+ filter: function (item) {
+ if ('' + this.query.resolved === 'false') {
+ return item.val === '';
+ } else {
+ return defaultFilter.call(this, item);
+ }
+ }
+ },
+ 'rules': {
+ label: function (item, r) {
+ if (_.isArray(r.rules)) {
+ var rule = _.findWhere(r.rules, { key: item.val });
+ if (rule != null) {
+ return rule.name;
+ }
+ }
+ }
+ },
+ 'projectUuids': {
+ label: function (item, r) {
+ if (_.isArray(r.projects)) {
+ var project = _.findWhere(r.projects, { uuid: item.val });
+ if (project != null) {
+ return project.name;
+ }
+ }
+ }
+ },
+ 'assignees': {
+ template: 'widget-issue-filter-assignees',
+ label: function (item, r) {
+ if (_.isArray(r.users)) {
+ var user = _.findWhere(r.users, { login: item.val });
+ if (user != null) {
+ return user.name;
+ }
+ }
+ },
+ filter: function (item) {
+ if ('' + this.query.assigned === 'false') {
+ return item.val === '';
+ } else {
+ return defaultFilter.call(this, item);
+ }
+ }
+ },
+ 'languages': {
+ label: function (item, r) {
+ if (_.isArray(r.languages)) {
+ var lang = _.findWhere(r.languages, { key: item.val });
+ if (lang != null) {
+ return lang.name;
+ }
+ }
+ }
+ },
+ 'actionPlans': {
+ template: 'widget-issue-filter-action-plans',
+ label: function (item, r) {
+ if (_.isArray(r.actionPlans)) {
+ var actionPlan = _.findWhere(r.actionPlans, { key: item.val });
+ if (actionPlan != null) {
+ return actionPlan.name;
+ }
+ }
+ },
+ filter: function (item) {
+ if ('' + this.query.planned === 'false') {
+ return item.val === '';
+ } else {
+ return defaultFilter.call(this, item);
+ }
+ }
+ },
+ 'createdAt': {
+ comparator: function (item) {
+ return moment(item.val).toDate();
+ },
+ label: function (item, r, items, index, query) {
+ var beginning = moment(item.val),
+ endDate = query.createdBefore != null ? moment(query.createdBefore) : moment(),
+ ending = index < items.length - 1 ? moment(items[index + 1].val).subtract(1, 'days') : endDate,
+ isSameDay = ending.diff(beginning, 'days') <= 1;
+ return beginning.format('LL') + (isSameDay ? '' : (' – ' + ending.format('LL')));
+ },
+ link: function (item, property, query, index, items) {
+ var createdAfter = moment(item.val),
+ endDate = query.createdBefore != null ? moment(query.createdBefore) : moment(),
+ createdBefore = index < items.length - 1 ? moment(items[index + 1].val).subtract(1, 'days') : endDate,
+ isSameDay = createdBefore.diff(createdAfter, 'days') <= 1;
+ if (isSameDay) {
+ createdBefore.add(1, 'days');
+ }
+ var r = _.extend({}, query, {
+ createdAfter: createdAfter.format('YYYY-MM-DD'),
+ createdBefore: createdBefore.format('YYYY-MM-DD')
+ });
+ if (r.componentKey != null) {
+ return baseUrl + '/component_issues/index?id=' + encodeURIComponent(r.componentKey) +
+ '#' + getQuery(_.omit(r, 'componentKey'));
+ } else {
+ return baseUrl + '/issues/search#' + getQuery(r);
+ }
+ }
+ }
+ };
+
+ function getQuery (query, separator) {
+ separator = separator || '|';
+ var route = [];
+ _.forEach(query, function (value, property) {
+ route.push('' + property + '=' + encodeURIComponent(value));
+ });
+ return route.join(separator);
+ }
+
+ Handlebars.registerHelper('issueFilterItemLink', function (query, property, value) {
+ var criterion = {};
+ criterion[property] = value;
+ var r = _.extend({}, query, criterion);
+ if (r.componentKey != null) {
+ return baseUrl + '/component_issues/index?id=' + encodeURIComponent(r.componentKey) +
+ '#' + getQuery(_.omit(r, 'componentKey'));
+ } else {
+ return baseUrl + '/issues/search#' + getQuery(r);
+ }
+ });
+
+ Handlebars.registerHelper('issueFilterTotalLink', function (query) {
+ var r = _.extend({}, query);
+ if (r.componentKey != null) {
+ return baseUrl + '/component_issues/index?id=' + encodeURIComponent(r.componentKey) +
+ '#' + getQuery(_.omit(r, 'componentKey'));
+ } else {
+ return baseUrl + '/issues/search#' + getQuery(r);
+ }
+ });
+
+ return Marionette.ItemView.extend({
+
+ getTemplate: function () {
+ var template = this.conf != null && this.conf.template != null ? this.conf.template : 'widget-issue-filter';
+ return Templates[template];
+ },
+
+ initialize: function () {
+ this.model = new Backbone.Model({
+ query: this.options.query,
+ parsedQuery: this.getParsedQuery(),
+ property: this.options.distributionAxis,
+ periodDate: this.options.periodDate
+ });
+ this.listenTo(this.model, 'change', this.render);
+ this.conf = byDistributionConf[this.options.distributionAxis];
+ this.query = this.getParsedQuery();
+ this.requestIssues();
+ },
+
+ getParsedQuery: function () {
+ var queryString = this.options.query || '',
+ query = {};
+ queryString.split('|').forEach(function (criterionString) {
+ var criterion = criterionString.split('=');
+ if (criterion.length === 2) {
+ query[criterion[0]] = criterion[1];
+ }
+ });
+ if (this.options.componentKey != null) {
+ _.extend(query, { componentKey: this.options.componentKey });
+ }
+ if (this.options.periodDate != null) {
+ _.extend(query, { createdAfter: this.options.periodDate });
+ }
+ return query;
+ },
+
+ sortItems: function (items) {
+ var comparator = this.conf != null && this.conf.comparator != null ? this.conf.comparator : defaultComparator;
+ return _.sortBy(items, comparator);
+ },
+
+ filterItems: function (items) {
+ var filter = this.conf != null && this.conf.filter != null ? this.conf.filter : defaultFilter;
+ return _.filter(items, filter, { query: this.query, property: this.options.distributionAxis });
+ },
+
+ withLink: function (items) {
+ var link = this.conf != null && this.conf.link != null ? this.conf.link : defaultLink,
+ property = this.options.distributionAxis,
+ query = this.model.get('parsedQuery');
+ return items.map(function (item, index) {
+ return _.extend(item, { searchLink: link(item, property, query, index, items) });
+ });
+ },
+
+ withLabels: function (items) {
+ var label = this.conf != null && this.conf.label != null ? this.conf.label : defaultLabel,
+ r = this.model.get('rawResponse'),
+ query = this.model.get('parsedQuery');
+ return items.map(function (item, index) {
+ return _.extend(item, { label: label(item, r, items, index, query) });
+ });
+ },
+
+ requestIssues: function () {
+ var that = this,
+ url = baseUrl + '/api/issues/search',
+ options = _.extend({}, this.query, {
+ ps: 1,
+ facets: this.options.distributionAxis
+ });
+ if (this.options.componentUuid != null) {
+ _.extend(options, { componentUuids: this.options.componentUuid });
+ }
+ if (this.options.periodDate != null) {
+ _.extend(options, { createdAfter: this.options.periodDate });
+ }
+ return $.get(url, options).done(function (r) {
+ if (_.isArray(r.facets) && r.facets.length === 1) {
+ // save response object, but do not trigger repaint
+ that.model.set({ rawResponse: r }, { silent: true });
+ that.model.set({
+ items: that.sortItems(that.withLabels(that.withLink(that.filterItems(r.facets[0].values)))),
+ total: r.total
+ });
+ }
+ });
+ }
+ });
+
+});
diff --git a/server/sonar-web/src/main/less/init/misc.less b/server/sonar-web/src/main/less/init/misc.less
index f8b31448f3d..3dc7e5df1ec 100644
--- a/server/sonar-web/src/main/less/init/misc.less
+++ b/server/sonar-web/src/main/less/init/misc.less
@@ -103,3 +103,19 @@ td.spacer-top {
.bordered-top {
border-top: 1px solid @barBorderColor;
}
+
+.zero-font-size {
+ font-size: 0 !important;
+}
+
+.width-100 {
+ width: 100%;
+}
+
+.width-80 {
+ width: 80%;
+}
+
+.width-60 {
+ width: 60%;
+}
diff --git a/server/sonar-web/src/main/less/init/tables.less b/server/sonar-web/src/main/less/init/tables.less
index afca8360a88..aca9725e965 100644
--- a/server/sonar-web/src/main/less/init/tables.less
+++ b/server/sonar-web/src/main/less/init/tables.less
@@ -53,8 +53,9 @@ table.data > tfoot > tr > td {
}
table.data > tbody > tr > td {
- padding: 5px;
+ padding: 4px 5px;
vertical-align: text-top;
+ line-height: 20px;
}
table.data td.small, table.data th.small {
diff --git a/server/sonar-web/src/main/less/pages/dashboard.less b/server/sonar-web/src/main/less/pages/dashboard.less
index 8dc8cfdffe6..84fd6334170 100644
--- a/server/sonar-web/src/main/less/pages/dashboard.less
+++ b/server/sonar-web/src/main/less/pages/dashboard.less
@@ -325,22 +325,6 @@
.widget-span-11 { width: 91.666666666667%; }
.widget-span-12 { width: 100%; }
-@media (max-width: 1279px) {
- .widget-span-1 { width: 50%; }
- .widget-span-2 { width: 50%; }
- .widget-span-3 { width: 50%; }
- .widget-span-3-5 { width: 50%; }
- .widget-span-4 { width: 50%; }
- .widget-span-5 { width: 50%; }
- .widget-span-6 { width: 50%; }
- .widget-span-7 { width: 100%; }
- .widget-span-8 { width: 100%; }
- .widget-span-9 { width: 100%; }
- .widget-span-10 { width: 100%; }
- .widget-span-11 { width: 100%; }
- .widget-span-12 { width: 100%; }
-}
-
.widget-label {
display: block;
font-size: @baseFontSize;
diff --git a/server/sonar-web/src/main/less/style.less b/server/sonar-web/src/main/less/style.less
index 5278454f452..806d57bfc2c 100644
--- a/server/sonar-web/src/main/less/style.less
+++ b/server/sonar-web/src/main/less/style.less
@@ -707,7 +707,8 @@ div.barchart {
}
div.barchart > div {
- background-color: @darkBlue;
+ min-width: 1px;
+ background-color: #c4d6e1;
height: 0.9em;
}
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb b/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb
index 3ac6eba4b8d..79b88b22bb0 100644
--- a/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb
+++ b/server/sonar-web/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb
@@ -268,7 +268,8 @@ class ProfilesController < ApplicationController
require_parameters 'key'
@profile = Internal.qprofile_loader.getByKey(params[:key])
- search = {'profileKeys' => @profile.key().to_s, 'since' => params[:since], 'to' => params[:to], 'p' => params[:p]}
+ not_found('Quality profile does not exist') unless @profile
+ search = {'profileKey' => @profile.key().to_s, 'since' => params[:since], 'to' => params[:to], 'p' => params[:p]}
result = Internal.component(Java::OrgSonarServerActivity::RubyQProfileActivityService.java_class).search(search)
@changes = result.activities
@paging = result.paging
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/helpers/application_helper.rb b/server/sonar-web/src/main/webapp/WEB-INF/app/helpers/application_helper.rb
index 881b85429c9..c1eb79b9028 100644
--- a/server/sonar-web/src/main/webapp/WEB-INF/app/helpers/application_helper.rb
+++ b/server/sonar-web/src/main/webapp/WEB-INF/app/helpers/application_helper.rb
@@ -614,7 +614,7 @@ module ApplicationHelper
def select2_tag(name, ws_url, options={})
width=options[:width]||'250px'
- html_id=options[:html_id]||name
+ html_id=options[:html_id]||sanitize_to_id(name).gsub('.', '_')
html_class=options[:html_class]||''
min_length=options[:min_length]
@@ -764,7 +764,7 @@ module ApplicationHelper
if user
# the login is a string so it have to be surrounded by quote to be taken in account by select2
options[:selected_id]="'" + user.login + "'"
- options[:selected_text]=user.name
+ options[:selected_text]=user.name + ' (' + user.login + ')'
end
select2_tag(name, ws_url, options)
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/helpers/properties_helper.rb b/server/sonar-web/src/main/webapp/WEB-INF/app/helpers/properties_helper.rb
index 34fd3326d7e..55c546244d7 100644
--- a/server/sonar-web/src/main/webapp/WEB-INF/app/helpers/properties_helper.rb
+++ b/server/sonar-web/src/main/webapp/WEB-INF/app/helpers/properties_helper.rb
@@ -104,6 +104,10 @@ module PropertiesHelper
end
select_tag name, select_options, html_options
+ when PropertyType::TYPE_USER_LOGIN
+ user = User.find_active_by_login(value)
+ user_select_tag name, {:size => options[:size] || 50, :selected_user => user, :allow_empty => true, :include_choices => [ ['', message('none')] ] }.update(html_options)
+
else
hidden_field_tag id, html_options
end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/models/project_measure.rb b/server/sonar-web/src/main/webapp/WEB-INF/app/models/project_measure.rb
index d6aad6e798b..ca542e4b687 100644
--- a/server/sonar-web/src/main/webapp/WEB-INF/app/models/project_measure.rb
+++ b/server/sonar-web/src/main/webapp/WEB-INF/app/models/project_measure.rb
@@ -274,7 +274,7 @@ class ProjectMeasure < ActiveRecord::Base
end
def visible?(period)
- ! (value.nil? && variation(period).nil?)
+ !(text_value.nil? && value.nil? && variation(period).nil?)
end
end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/models/property_type.rb b/server/sonar-web/src/main/webapp/WEB-INF/app/models/property_type.rb
index 332096471b3..9c890604ca5 100644
--- a/server/sonar-web/src/main/webapp/WEB-INF/app/models/property_type.rb
+++ b/server/sonar-web/src/main/webapp/WEB-INF/app/models/property_type.rb
@@ -32,6 +32,7 @@ class PropertyType
TYPE_FILTER = 'FILTER'
# Since 3.7
TYPE_ISSUE_FILTER = 'ISSUE_FILTER'
+ TYPE_USER_LOGIN = 'USER_LOGIN'
def self.text_to_value(text, type)
case type
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/views/profiles/changelog.html.erb b/server/sonar-web/src/main/webapp/WEB-INF/app/views/profiles/changelog.html.erb
index 035bf52d2d5..f807ae791c2 100644
--- a/server/sonar-web/src/main/webapp/WEB-INF/app/views/profiles/changelog.html.erb
+++ b/server/sonar-web/src/main/webapp/WEB-INF/app/views/profiles/changelog.html.erb
@@ -37,19 +37,19 @@
%>
<tr class="<%= cycle('even', 'odd') -%>">
<%
- action = change.action()
+ action = change.getAction()
action_message = message('quality_profiles.changelog.' + action.downcase) if action
if change.authorName() && !change.authorName().empty?()
author = change.authorName()
- elsif change.login() && !change.login().empty?()
- author = change.login()
+ elsif change.login() && !change.getLogin().empty?()
+ author = change.getLogin()
else
author = 'System'
end
rule = change.ruleName() ? change.ruleName() : change.ruleKey()
%>
- <td valign="top" width="1%" nowrap><%= Internal.i18n.formatDateTime(change.time()) -%></td>
+ <td valign="top" width="1%" nowrap><%= Internal.i18n.formatDateTime(change.getCreatedAt()) -%></td>
<td valign="top" width="1%" nowrap><%= author %></td>
<td valign="top" width="1%" nowrap><%= action_message %></td>
<td valign="top"><%= rule %></td>
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/views/settings/_type_USER_LOGIN.html.erb b/server/sonar-web/src/main/webapp/WEB-INF/app/views/settings/_type_USER_LOGIN.html.erb
new file mode 100644
index 00000000000..6f94fa6a651
--- /dev/null
+++ b/server/sonar-web/src/main/webapp/WEB-INF/app/views/settings/_type_USER_LOGIN.html.erb
@@ -0,0 +1,5 @@
+<%
+ options = {:id => id}
+ options[:size] = (defined? size) ? size : nil
+%>
+<%= property_input_field(name, PropertyType::TYPE_USER_LOGIN, value, PropertiesHelper::SCREEN_SETTINGS, options) %>
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/796_add_uuid_to_analysis_reports.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/796_add_uuid_to_analysis_reports.rb
new file mode 100644
index 00000000000..06fba16976d
--- /dev/null
+++ b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/796_add_uuid_to_analysis_reports.rb
@@ -0,0 +1,32 @@
+#
+# SonarQube, open source software quality management tool.
+# Copyright (C) 2008-2014 SonarSource
+# mailto:contact AT sonarsource DOT com
+#
+# SonarQube is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 3 of the License, or (at your option) any later version.
+#
+# SonarQube is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+
+#
+# SonarQube 5.1
+#
+class AddUuidToAnalysisReports < ActiveRecord::Migration
+
+ def self.up
+ add_column 'analysis_reports', 'uuid', :string, :limit => 50, :null => false
+ remove_column 'analysis_reports', 'report_data'
+ remove_column 'analysis_reports', 'snapshot_id'
+ end
+
+end
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-active-severity-facet.js b/server/sonar-web/src/test/js/coding-rules-page-active-severity-facet.js
index bfaebe66cca..a0a1e371875 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-active-severity-facet.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-active-severity-facet.js
@@ -78,6 +78,10 @@ casper.test.begin('coding-rules-page-active-severity-facet', 7, function (test)
test.assertExists('.search-navigator-facet-box-forbidden[data-property="active_severities"]');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-available-since.js b/server/sonar-web/src/test/js/coding-rules-page-available-since.js
index e13424e5cfe..e55b457d214 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-available-since.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-available-since.js
@@ -58,6 +58,10 @@ casper.test.begin('coding-rules-page-available-since', 2, function (test) {
test.assertSelectorContains('#coding-rules-total', '101');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet.js b/server/sonar-web/src/test/js/coding-rules-page-inheritance-facet.js
index 6208f9c7d27..64cb89a71ef 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-inheritance-facet.js
@@ -101,6 +101,10 @@ casper.test.begin('coding-rules-page-inheritance-facet', 11, function (test) {
test.assertExists('.search-navigator-facet-box-forbidden[data-property="inheritance"]');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-no-available-profiles-for-activation.js b/server/sonar-web/src/test/js/coding-rules-page-no-available-profiles-for-activation.js
index 5dc7f305251..a7ad36f86f7 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-no-available-profiles-for-activation.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-no-available-profiles-for-activation.js
@@ -58,6 +58,10 @@ casper.test.begin('coding-rules-page-no-available-profiles-for-activation', 2, f
test.assertExists('.modal .message-notice');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-quality-profile-facet.js b/server/sonar-web/src/test/js/coding-rules-page-quality-profile-facet.js
index 44c30ebd91d..3d2d55ac40d 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-quality-profile-facet.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-quality-profile-facet.js
@@ -73,6 +73,10 @@ casper.test.begin('coding-rules-page-quality-profile-facet', 6, function (test)
test.assertSelectorContains('#coding-rules-total', '609');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-query-facet.js b/server/sonar-web/src/test/js/coding-rules-page-query-facet.js
index f0710781f88..e64cf5db6ef 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-query-facet.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-query-facet.js
@@ -63,6 +63,10 @@ casper.test.begin('coding-rules-page-query-facet', 3, function (test) {
test.assertSelectorContains('#coding-rules-total', '609');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-rule-should-have-permalink.js b/server/sonar-web/src/test/js/coding-rules-page-rule-should-have-permalink.js
index 37b89e68bc6..38da7b7afa2 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-rule-should-have-permalink.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-rule-should-have-permalink.js
@@ -51,6 +51,10 @@ casper.test.begin('coding-rules-page-rule-permalink', 1, function (test) {
test.assertExists('a[href="/coding_rules#rule_key=squid%3AS1181"]');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-activate-profile.js b/server/sonar-web/src/test/js/coding-rules-page-should-activate-profile.js
index d0ac3bd3f29..e354b98f60f 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-activate-profile.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-should-activate-profile.js
@@ -69,6 +69,10 @@ casper.test.begin('coding-rules-page-should-activate-profile', 5, function (test
test.assertExists('.coding-rules-detail-quality-profile-deactivate');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules.js b/server/sonar-web/src/test/js/coding-rules-page-should-create-custom-rules.js
index ab36a367844..fac972fa626 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-should-create-custom-rules.js
@@ -70,6 +70,10 @@ casper.test.begin('coding-rules-page-should-delete-create-rules', 2, function (t
});
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-manual-rules.js b/server/sonar-web/src/test/js/coding-rules-page-should-create-manual-rules.js
index b725c43e104..590304635df 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-manual-rules.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-should-create-manual-rules.js
@@ -65,6 +65,10 @@ casper.test.begin('coding-rules-page-should-delete-manual-rules', 3, function (t
test.assertSelectorContains('.coding-rules-detail-description', 'Manual Rule Description');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-custom-rules.js b/server/sonar-web/src/test/js/coding-rules-page-should-delete-custom-rules.js
index 2c2609c7c7b..623c36e2961 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-custom-rules.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-should-delete-custom-rules.js
@@ -60,6 +60,10 @@ casper.test.begin('coding-rules-page-should-delete-custom-rules', 2, function (t
});
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-manual-rules.js b/server/sonar-web/src/test/js/coding-rules-page-should-delete-manual-rules.js
index c0efd0bb72a..c4b590bec84 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-manual-rules.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-should-delete-manual-rules.js
@@ -65,6 +65,10 @@ casper.test.begin('coding-rules-page-should-delete-manual-rules', 1, function (t
test.assertSelectorContains('#coding-rules-total', 0);
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-custom-rules.js b/server/sonar-web/src/test/js/coding-rules-page-should-show-custom-rules.js
index 6a17b1ed2d7..bcf5d43980a 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-custom-rules.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-should-show-custom-rules.js
@@ -57,6 +57,10 @@ casper.test.begin('coding-rules-page-should-show-custom-rules', 3, function (tes
'Do not use org.h2.util.StringUtils');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-deprecated-label.js b/server/sonar-web/src/test/js/coding-rules-page-should-show-deprecated-label.js
index 51d3be787a2..7c57c1a14dd 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-deprecated-label.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-should-show-deprecated-label.js
@@ -44,6 +44,10 @@ casper.test.begin('coding-rules-page-should-show-deprecated-label', 1, function
test.assertSelectorContains('.coding-rule.selected', 'DEPRECATED');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-details.js b/server/sonar-web/src/test/js/coding-rules-page-should-show-details.js
index b352b52c4d4..49bac8b4d6c 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-details.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-should-show-details.js
@@ -76,6 +76,10 @@ casper.test.begin('coding-rules-page-should-show-details', 20, function (test) {
test.assertSelectorContains('.coding-rules-detail-quality-profile-inheritance', 'Default - Top');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-empty-list.js b/server/sonar-web/src/test/js/coding-rules-page-should-show-empty-list.js
index d0e35952e5a..d918aa6d9d4 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-empty-list.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-should-show-empty-list.js
@@ -46,6 +46,10 @@ casper.test.begin('coding-rules-page-should-show-empty-list', 3, function (test)
test.assertExists('.search-navigator-no-results');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-facets.js b/server/sonar-web/src/test/js/coding-rules-page-should-show-facets.js
index 6f3fc0f889a..5f8b5a782b2 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-facets.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-should-show-facets.js
@@ -44,6 +44,10 @@ casper.test.begin('coding-rules-page-should-show-facets', 1, function (test) {
test.assertElementCount('.search-navigator-facet-box', 13);
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule-issues.js b/server/sonar-web/src/test/js/coding-rules-page-should-show-rule-issues.js
index 70163ae8544..aa6474fd629 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule-issues.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-should-show-rule-issues.js
@@ -56,6 +56,10 @@ casper.test.begin('coding-rules-page-should-show-rule-issues', 5, function (test
test.assertSelectorContains('.coding-rules-most-violated-projects', '1');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule.js b/server/sonar-web/src/test/js/coding-rules-page-should-show-rule.js
index 5fa1cf0f220..1b3ab387566 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-should-show-rule.js
@@ -50,6 +50,10 @@ casper.test.begin('coding-rules-page-should-show-rule', 7, function (test) {
test.assertSelectorContains('.coding-rule.selected', 'custom-tag');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rules.js b/server/sonar-web/src/test/js/coding-rules-page-should-show-rules.js
index 869c03397c1..cde137ac09a 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rules.js
+++ b/server/sonar-web/src/test/js/coding-rules-page-should-show-rules.js
@@ -47,6 +47,10 @@ casper.test.begin('coding-rules-page-should-show-rules', 4, function (test) {
test.assertSelectorContains('#coding-rules-total', '609');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/design-spec.js b/server/sonar-web/src/test/js/design-spec.js
index d9938d4409a..d6989047711 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/design-spec.js
+++ b/server/sonar-web/src/test/js/design-spec.js
@@ -60,6 +60,10 @@ casper.test.begin(testName('Base'), function suite(test) {
test.assertSelectorContains('.dsm-info', 'src/main/java/com/maif/sonar/cobol/metrics/TableMetricsVisitor.java ');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/test/js/global-issue-filter-widget.js b/server/sonar-web/src/test/js/global-issue-filter-widget.js
new file mode 100644
index 00000000000..ac2f5f78acf
--- /dev/null
+++ b/server/sonar-web/src/test/js/global-issue-filter-widget.js
@@ -0,0 +1,853 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+/* globals casper: false */
+
+var lib = require('../lib'),
+ testName = lib.testName('Global Issue Filter Widget');
+
+
+lib.initMessages();
+lib.changeWorkingDirectory('global-issues-filter-widget');
+lib.configureCasper();
+
+
+casper.test.begin(testName('Unresolved Issues By Severity'), 13, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'unresolved-issues-by-severity.json',
+ { data: { resolved: 'false' } });
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: 'resolved=false',
+ distributionAxis: 'severities'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 6);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '6851');
+ test.assertSelectorContains('tr:nth-child(2)', '1');
+ test.assertSelectorContains('tr:nth-child(3)', '105');
+ test.assertSelectorContains('tr:nth-child(4)', '5027');
+ test.assertSelectorContains('tr:nth-child(5)', '540');
+ test.assertSelectorContains('tr:nth-child(6)', '1178');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/issues/search#resolved=false"]');
+ test.assertExists('tr:nth-child(2) a[href="/issues/search#resolved=false|severities=BLOCKER"]');
+ test.assertExists('tr:nth-child(3) a[href="/issues/search#resolved=false|severities=CRITICAL"]');
+ test.assertExists('tr:nth-child(4) a[href="/issues/search#resolved=false|severities=MAJOR"]');
+ test.assertExists('tr:nth-child(5) a[href="/issues/search#resolved=false|severities=MINOR"]');
+ test.assertExists('tr:nth-child(6) a[href="/issues/search#resolved=false|severities=INFO"]');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Red Issues By Severity'), 9, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'red-issues-by-severity.json',
+ { data: { resolved: 'false', severities: 'BLOCKER,CRITICAL,MAJOR' } });
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: 'resolved=false|severities=BLOCKER,CRITICAL,MAJOR',
+ distributionAxis: 'severities'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 4);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '6851');
+ test.assertSelectorContains('tr:nth-child(2)', '1');
+ test.assertSelectorContains('tr:nth-child(3)', '105');
+ test.assertSelectorContains('tr:nth-child(4)', '5027');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/issues/search#resolved=false|severities=BLOCKER%2CCRITICAL%2CMAJOR"]');
+ test.assertExists('tr:nth-child(2) a[href="/issues/search#resolved=false|severities=BLOCKER"]');
+ test.assertExists('tr:nth-child(3) a[href="/issues/search#resolved=false|severities=CRITICAL"]');
+ test.assertExists('tr:nth-child(4) a[href="/issues/search#resolved=false|severities=MAJOR"]');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('All Issues By Status'), 9, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'all-issues-by-status.json');
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: '',
+ distributionAxis: 'statuses'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 6);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '71571');
+ test.assertSelectorContains('tr:nth-child(2)', '238');
+ test.assertSelectorContains('tr:nth-child(3)', '4');
+ test.assertSelectorContains('tr:nth-child(4)', '6609');
+ test.assertSelectorContains('tr:nth-child(5)', '1307');
+ test.assertSelectorContains('tr:nth-child(6)', '63.4k');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/issues/search#"]');
+ test.assertExists('tr:nth-child(2) a[href="/issues/search#statuses=OPEN"]');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('All Issues By Resolution'), 10, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'all-issues-by-resolution.json');
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: '',
+ distributionAxis: 'resolutions'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 6);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '71571');
+ test.assertSelectorContains('tr:nth-child(2)', '6851');
+ test.assertSelectorContains('tr:nth-child(3)', '752');
+ test.assertSelectorContains('tr:nth-child(4)', '550');
+ test.assertSelectorContains('tr:nth-child(5)', '47.1k');
+ test.assertSelectorContains('tr:nth-child(6)', '16.3k');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/issues/search#"]');
+ test.assertExists('tr:nth-child(2) a[href="/issues/search#resolved=false"]');
+ test.assertExists('tr:nth-child(3) a[href="/issues/search#resolutions=FALSE-POSITIVE"]');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Unresolved Issues By Resolution'), 5, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'unresolved-issues-by-resolution.json',
+ { data: { resolved: 'false' } });
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: 'resolved=false',
+ distributionAxis: 'resolutions'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 2);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '6851');
+ test.assertSelectorContains('tr:nth-child(2)', '6851');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/issues/search#resolved=false"]');
+ test.assertExists('tr:nth-child(2) a[href="/issues/search#resolved=false"]');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Unresolved Issues By Rule'), 15, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'unresolved-issues-by-rule.json',
+ { data: { resolved: 'false' } });
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: 'resolved=false',
+ distributionAxis: 'rules'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 16);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '6851');
+ test.assertSelectorContains('tr:nth-child(2)', '879');
+ test.assertSelectorContains('tr:nth-child(3)', '571');
+ test.assertSelectorContains('tr:nth-child(15)', '113');
+ test.assertSelectorContains('tr:nth-child(16)', '111');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/issues/search#resolved=false"]');
+ test.assertExists('tr:nth-child(2) a[href="/issues/search#resolved=false|rules=squid%3AS1161"]');
+ test.assertExists('tr:nth-child(3) a[href="/issues/search#resolved=false|rules=squid%3AS1135"]');
+ test.assertExists('tr:nth-child(15) a[href="/issues/search#resolved=false|rules=squid%3AS1134"]');
+ test.assertExists('tr:nth-child(16) a[href="/issues/search#resolved=false|rules=squid%3AS1192"]');
+
+ // check labels
+ test.assertSelectorContains('tr:nth-child(2)', '@Override" annotation should be used');
+ test.assertSelectorContains('tr:nth-child(3)', 'TODO tags should be handled');
+ test.assertSelectorContains('tr:nth-child(15)', 'FIXME tags should be handled');
+ test.assertSelectorContains('tr:nth-child(16)', 'String literals should not be duplicated');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Unresolved Issues By Project'), 15, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'unresolved-issues-by-project.json',
+ { data: { resolved: 'false' } });
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: 'resolved=false',
+ distributionAxis: 'projectUuids'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 5);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '2598');
+ test.assertSelectorContains('tr:nth-child(2)', '1766');
+ test.assertSelectorContains('tr:nth-child(3)', '442');
+ test.assertSelectorContains('tr:nth-child(4)', '283');
+ test.assertSelectorContains('tr:nth-child(5)', '107');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/issues/search#resolved=false"]');
+ test.assertExists('tr:nth-child(2) a[href="/issues/search#resolved=false|projectUuids=69e57151-be0d-4157-adff-c06741d88879"]');
+ test.assertExists('tr:nth-child(3) a[href="/issues/search#resolved=false|projectUuids=dd7c3556-ce3f-42d0-a348-914a582dc944"]');
+ test.assertExists('tr:nth-child(4) a[href="/issues/search#resolved=false|projectUuids=5eab015a-1f76-4ba4-bd89-bf547132d673"]');
+ test.assertExists('tr:nth-child(5) a[href="/issues/search#resolved=false|projectUuids=c156940b-e3ec-43f6-9589-e3b75aa9ca32"]');
+
+ // check labels
+ test.assertSelectorContains('tr:nth-child(2)', 'SonarQube');
+ test.assertSelectorContains('tr:nth-child(3)', 'SonarQube Java');
+ test.assertSelectorContains('tr:nth-child(4)', 'JavaScript');
+ test.assertSelectorContains('tr:nth-child(5)', 'Python');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Unresolved Issues By Assignee'), 15, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'unresolved-issues-by-assignee.json',
+ { data: { resolved: 'false' } });
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: 'resolved=false',
+ distributionAxis: 'assignees'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 5);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '6851');
+ test.assertSelectorContains('tr:nth-child(2)', '4134');
+ test.assertSelectorContains('tr:nth-child(3)', '698');
+ test.assertSelectorContains('tr:nth-child(4)', '504');
+ test.assertSelectorContains('tr:nth-child(5)', '426');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/issues/search#resolved=false"]');
+ test.assertExists('tr:nth-child(2) a[href="/issues/search#resolved=false|assigned=false"]');
+ test.assertExists('tr:nth-child(3) a[href="/issues/search#resolved=false|assignees=first.user"]');
+ test.assertExists('tr:nth-child(4) a[href="/issues/search#resolved=false|assignees=second.user"]');
+ test.assertExists('tr:nth-child(5) a[href="/issues/search#resolved=false|assignees=third.user"]');
+
+ // check labels
+ test.assertSelectorContains('tr:nth-child(2)', 'unassigned');
+ test.assertSelectorContains('tr:nth-child(3)', 'First User');
+ test.assertSelectorContains('tr:nth-child(4)', 'Second User');
+ test.assertSelectorContains('tr:nth-child(5)', 'Third User');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Unresolved Unassigned Issues By Assignee'), 6, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'unresolved-unassigned-issues-by-assignee.json',
+ { data: { resolved: 'false', assigned: 'false' } });
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: 'resolved=false|assigned=false',
+ distributionAxis: 'assignees'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 2);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '4134');
+ test.assertSelectorContains('tr:nth-child(2)', '4134');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/issues/search#resolved=false|assigned=false"]');
+ test.assertExists('tr:nth-child(2) a[href="/issues/search#resolved=false|assigned=false"]');
+
+ // check labels
+ test.assertSelectorContains('tr:nth-child(2)', 'unassigned');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Unresolved Issues By Language'), 15, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'unresolved-issues-by-language.json',
+ { data: { resolved: 'false' } });
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: 'resolved=false',
+ distributionAxis: 'languages'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 5);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '6851');
+ test.assertSelectorContains('tr:nth-child(2)', '6336');
+ test.assertSelectorContains('tr:nth-child(3)', '444');
+ test.assertSelectorContains('tr:nth-child(4)', '22');
+ test.assertSelectorContains('tr:nth-child(5)', '15');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/issues/search#resolved=false"]');
+ test.assertExists('tr:nth-child(2) a[href="/issues/search#resolved=false|languages=java"]');
+ test.assertExists('tr:nth-child(3) a[href="/issues/search#resolved=false|languages=py"]');
+ test.assertExists('tr:nth-child(4) a[href="/issues/search#resolved=false|languages=php"]');
+ test.assertExists('tr:nth-child(5) a[href="/issues/search#resolved=false|languages=js"]');
+
+ // check labels
+ test.assertSelectorContains('tr:nth-child(2)', 'Java');
+ test.assertSelectorContains('tr:nth-child(3)', 'Python');
+ test.assertSelectorContains('tr:nth-child(4)', 'PHP');
+ test.assertSelectorContains('tr:nth-child(5)', 'JavaScript');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Unresolved Issues By Action Plan'), 15, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'unresolved-issues-by-action-plan.json',
+ { data: { resolved: 'false' } });
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: 'resolved=false',
+ distributionAxis: 'actionPlans'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 5);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '6851');
+ test.assertSelectorContains('tr:nth-child(2)', '5877');
+ test.assertSelectorContains('tr:nth-child(3)', '532');
+ test.assertSelectorContains('tr:nth-child(4)', '56');
+ test.assertSelectorContains('tr:nth-child(5)', '52');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/issues/search#resolved=false"]');
+ test.assertExists('tr:nth-child(2) a[href="/issues/search#resolved=false|planned=false"]');
+ test.assertExists('tr:nth-child(3) a[href="/issues/search#resolved=false|actionPlans=0cf48508-2fcd-4cb8-a50b-c5cd7c3decc0"]');
+ test.assertExists('tr:nth-child(4) a[href="/issues/search#resolved=false|actionPlans=1b9e7e52-ff58-40c1-80bf-f68429a3275e"]');
+ test.assertExists('tr:nth-child(5) a[href="/issues/search#resolved=false|actionPlans=8c1d5d01-948e-4670-a0d9-17c512979486"]');
+
+ // check labels
+ test.assertSelectorContains('tr:nth-child(2)', 'unplanned');
+ test.assertSelectorContains('tr:nth-child(3)', 'First Action Plan');
+ test.assertSelectorContains('tr:nth-child(4)', 'Second Action Plan');
+ test.assertSelectorContains('tr:nth-child(5)', 'Third Action Plan');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Unresolved Unplanned Issues By Action Plan'), 6, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'unresolved-unplanned-issues-by-action-plan.json',
+ { data: { resolved: 'false', planned: 'false' } });
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: 'resolved=false|planned=false',
+ distributionAxis: 'actionPlans'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 2);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '5877');
+ test.assertSelectorContains('tr:nth-child(2)', '5877');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/issues/search#resolved=false|planned=false"]');
+ test.assertExists('tr:nth-child(2) a[href="/issues/search#resolved=false|planned=false"]');
+
+ // check labels
+ test.assertSelectorContains('tr:nth-child(2)', 'unplanned');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Unresolved Issues By Date'), 18, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'unresolved-issues-by-date.json',
+ { data: { resolved: 'false' } });
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: 'resolved=false',
+ distributionAxis: 'createdAt'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 6);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '6851');
+ test.assertSelectorContains('tr:nth-child(2)', '72');
+ test.assertSelectorContains('tr:nth-child(3)', '64');
+ test.assertSelectorContains('tr:nth-child(4)', '1262');
+ test.assertSelectorContains('tr:nth-child(5)', '3729');
+ test.assertSelectorContains('tr:nth-child(6)', '1724');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/issues/search#resolved=false"]');
+ test.assertExists('tr:nth-child(2) a[href="/issues/search#resolved=false|createdAfter=2011-01-01|createdBefore=2011-12-31"]');
+ test.assertExists('tr:nth-child(3) a[href="/issues/search#resolved=false|createdAfter=2012-01-01|createdBefore=2012-12-31"]');
+ test.assertExists('tr:nth-child(4) a[href="/issues/search#resolved=false|createdAfter=2013-01-01|createdBefore=2013-12-31"]');
+ test.assertExists('tr:nth-child(5) a[href="/issues/search#resolved=false|createdAfter=2014-01-01|createdBefore=2014-12-31"]');
+ // do not check createdBefore value, because it is set dynamically to *now*
+ test.assertExists('tr:nth-child(6) a[href^="/issues/search#resolved=false|createdAfter=2015-01-01|createdBefore="]');
+
+ // check labels
+ test.assertSelectorContains('tr:nth-child(2)', 'January 1 2011 – December 31 2011');
+ test.assertSelectorContains('tr:nth-child(3)', 'January 1 2012 – December 31 2012');
+ test.assertSelectorContains('tr:nth-child(4)', 'January 1 2013 – December 31 2013');
+ test.assertSelectorContains('tr:nth-child(5)', 'January 1 2014 – December 31 2014');
+ // do not check label fully, because it is set dynamically using *now*
+ test.assertSelectorContains('tr:nth-child(6)', 'January 1 2015 – ');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Unresolved Issues on a Limited Period By Date'), 12, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'unresolved-issues-by-date-limited.json',
+ { data: { resolved: 'false', createdAfter: '2015-02-16', createdBefore: '2015-02-18' } });
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: 'resolved=false|createdAfter=2015-02-16|createdBefore=2015-02-18',
+ distributionAxis: 'createdAt'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 4);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '6851');
+ test.assertSelectorContains('tr:nth-child(2)', '49');
+ test.assertSelectorContains('tr:nth-child(3)', '48');
+ test.assertSelectorContains('tr:nth-child(4)', '47');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/issues/search#resolved=false|createdAfter=2015-02-16|createdBefore=2015-02-18"]');
+ test.assertExists('tr:nth-child(2) a[href="/issues/search#resolved=false|createdAfter=2015-02-16|createdBefore=2015-02-17"]');
+ test.assertExists('tr:nth-child(3) a[href="/issues/search#resolved=false|createdAfter=2015-02-17|createdBefore=2015-02-18"]');
+ test.assertExists('tr:nth-child(4) a[href="/issues/search#resolved=false|createdAfter=2015-02-18|createdBefore=2015-02-19"]');
+
+ // check labels
+ test.assertSelectorContains('tr:nth-child(2)', 'February 16 2015');
+ test.assertSelectorContains('tr:nth-child(3)', 'February 17 2015');
+ test.assertSelectorContains('tr:nth-child(4)', 'February 18 2015');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-page-should-open-issue-permalink.js b/server/sonar-web/src/test/js/issues-page-should-open-issue-permalink.js
index 0eb6587f442..64b10e69251 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-page-should-open-issue-permalink.js
+++ b/server/sonar-web/src/test/js/issues-page-should-open-issue-permalink.js
@@ -51,6 +51,10 @@ casper.test.begin('issues-page-should-open-issue-permalink', 3, function (test)
});
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-page-spec.js b/server/sonar-web/src/test/js/issues-page-spec.js
index 5abab8e9f94..7dfb1916039 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-page-spec.js
+++ b/server/sonar-web/src/test/js/issues-page-spec.js
@@ -77,6 +77,10 @@ casper.test.begin(testName('Base'), function (test) {
});
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
@@ -115,6 +119,10 @@ casper.test.begin(testName('Issue Box', 'Check Elements'), function (test) {
test.assertExists('.issue.selected .js-issue-show-changelog');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
@@ -156,6 +164,10 @@ casper.test.begin(testName('Issue Box', 'Tags'), function (test) {
test.assertSelectorContains('.issue.selected .js-issue-tags', 'security, design');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
@@ -189,6 +201,10 @@ casper.test.begin(testName('Issue Box', 'Transitions'), function (test) {
test.assertExists('.issue-action-option[data-value=falsepositive]');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
@@ -222,6 +238,10 @@ casper.test.begin(testName('File-Level Issues'), function (test) {
});
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
@@ -251,6 +271,10 @@ casper.test.begin(testName('Severity Facet'), function (test) {
});
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
@@ -282,6 +306,10 @@ casper.test.begin(testName('Bulk Change'), function (test) {
});
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/test/js/project-issue-filter-widget.js b/server/sonar-web/src/test/js/project-issue-filter-widget.js
new file mode 100644
index 00000000000..25e69cdeff8
--- /dev/null
+++ b/server/sonar-web/src/test/js/project-issue-filter-widget.js
@@ -0,0 +1,221 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+/* globals casper: false */
+
+var lib = require('../lib'),
+ testName = lib.testName('Project Issue Filter Widget');
+
+
+lib.initMessages();
+lib.changeWorkingDirectory('project-issues-filter-widget');
+lib.configureCasper();
+
+
+casper.test.begin(testName('Unresolved Issues By Severity'), 13, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'unresolved-issues-by-severity.json',
+ { data: { resolved: 'false' } });
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: 'resolved=false',
+ distributionAxis: 'severities',
+ componentUuid: '69e57151-be0d-4157-adff-c06741d88879',
+ componentKey: 'org.codehaus.sonar:sonar'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 6);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '6851');
+ test.assertSelectorContains('tr:nth-child(2)', '1');
+ test.assertSelectorContains('tr:nth-child(3)', '105');
+ test.assertSelectorContains('tr:nth-child(4)', '5027');
+ test.assertSelectorContains('tr:nth-child(5)', '540');
+ test.assertSelectorContains('tr:nth-child(6)', '1178');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false"]');
+ test.assertExists('tr:nth-child(2) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|severities=BLOCKER"]');
+ test.assertExists('tr:nth-child(3) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|severities=CRITICAL"]');
+ test.assertExists('tr:nth-child(4) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|severities=MAJOR"]');
+ test.assertExists('tr:nth-child(5) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|severities=MINOR"]');
+ test.assertExists('tr:nth-child(6) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|severities=INFO"]');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Unresolved Issues By Date'), 18, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'unresolved-issues-by-date.json',
+ { data: { resolved: 'false' } });
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: 'resolved=false',
+ distributionAxis: 'createdAt',
+ componentUuid: '69e57151-be0d-4157-adff-c06741d88879',
+ componentKey: 'org.codehaus.sonar:sonar'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 6);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '6851');
+ test.assertSelectorContains('tr:nth-child(2)', '72');
+ test.assertSelectorContains('tr:nth-child(3)', '64');
+ test.assertSelectorContains('tr:nth-child(4)', '1262');
+ test.assertSelectorContains('tr:nth-child(5)', '3729');
+ test.assertSelectorContains('tr:nth-child(6)', '1724');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false"]');
+ test.assertExists('tr:nth-child(2) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|createdAfter=2011-01-01|createdBefore=2011-12-31"]');
+ test.assertExists('tr:nth-child(3) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|createdAfter=2012-01-01|createdBefore=2012-12-31"]');
+ test.assertExists('tr:nth-child(4) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|createdAfter=2013-01-01|createdBefore=2013-12-31"]');
+ test.assertExists('tr:nth-child(5) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|createdAfter=2014-01-01|createdBefore=2014-12-31"]');
+ // do not check createdBefore value, because it is set dynamically to *now*
+ test.assertExists('tr:nth-child(6) a[href^="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|createdAfter=2015-01-01|createdBefore="]');
+
+ // check labels
+ test.assertSelectorContains('tr:nth-child(2)', 'January 1 2011 – December 31 2011');
+ test.assertSelectorContains('tr:nth-child(3)', 'January 1 2012 – December 31 2012');
+ test.assertSelectorContains('tr:nth-child(4)', 'January 1 2013 – December 31 2013');
+ test.assertSelectorContains('tr:nth-child(5)', 'January 1 2014 – December 31 2014');
+ // do not check label fully, because it is set dynamically using *now*
+ test.assertSelectorContains('tr:nth-child(6)', 'January 1 2015 – ');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Unresolved Issues By Severity With Differential Period'), 13, function (test) {
+ casper
+ .start(lib.buildUrl('issue-filter-widget'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/issues/search', 'unresolved-issues-by-severity-with-differential-period.json',
+ { data: { resolved: 'false', createdAfter: '2014-12-09T17:12:38+0100' } });
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ require(['/js/widgets/issue-filter.js'], function (IssueFilter) {
+ window.requestMessages().done(function () {
+ new IssueFilter({
+ el: '#issue-filter-widget',
+ query: 'resolved=false',
+ distributionAxis: 'severities',
+ periodDate: '2014-12-09T17:12:38+0100',
+ componentUuid: '69e57151-be0d-4157-adff-c06741d88879',
+ componentKey: 'org.codehaus.sonar:sonar'
+ });
+ });
+ });
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('#issue-filter-widget > table');
+ })
+
+ .then(function () {
+ // check count
+ test.assertElementCount('tr', 6);
+
+ // check order and values
+ test.assertSelectorContains('tr:nth-child(1)', '+549');
+ test.assertSelectorContains('tr:nth-child(2)', '+0');
+ test.assertSelectorContains('tr:nth-child(3)', '+59');
+ test.assertSelectorContains('tr:nth-child(4)', '+306');
+ test.assertSelectorContains('tr:nth-child(5)', '+135');
+ test.assertSelectorContains('tr:nth-child(6)', '+49');
+
+ // check links
+ test.assertExists('tr:nth-child(1) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|createdAfter=2014-12-09T17%3A12%3A38%2B0100"]');
+ test.assertExists('tr:nth-child(2) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|createdAfter=2014-12-09T17%3A12%3A38%2B0100|severities=BLOCKER"]');
+ test.assertExists('tr:nth-child(3) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|createdAfter=2014-12-09T17%3A12%3A38%2B0100|severities=CRITICAL"]');
+ test.assertExists('tr:nth-child(4) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|createdAfter=2014-12-09T17%3A12%3A38%2B0100|severities=MAJOR"]');
+ test.assertExists('tr:nth-child(5) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|createdAfter=2014-12-09T17%3A12%3A38%2B0100|severities=MINOR"]');
+ test.assertExists('tr:nth-child(6) a[href="/component_issues/index?id=org.codehaus.sonar%3Asonar#resolved=false|createdAfter=2014-12-09T17%3A12%3A38%2B0100|severities=INFO"]');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/quality-gates-spec.js b/server/sonar-web/src/test/js/quality-gates-spec.js
index 8de770ca65f..2b2c7ef8ac2 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/quality-gates-spec.js
+++ b/server/sonar-web/src/test/js/quality-gates-spec.js
@@ -56,6 +56,10 @@ casper.test.begin('Quality Gates', function suite (test) {
});
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/test/js/source-viewer-coverage.js b/server/sonar-web/src/test/js/source-viewer-coverage.js
new file mode 100644
index 00000000000..434300129f3
--- /dev/null
+++ b/server/sonar-web/src/test/js/source-viewer-coverage.js
@@ -0,0 +1,66 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+/* global casper:false */
+
+
+var lib = require('../lib'),
+ testName = lib.testName('Source Viewer');
+
+lib.initMessages();
+lib.changeWorkingDirectory('source-viewer-coverage');
+lib.configureCasper();
+
+
+casper.test.begin(testName('Coverage'), 4, function (test) {
+ casper
+ .start(lib.buildUrl('source-viewer'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/components/app', 'app.json');
+ lib.mockRequestFromFile('/api/sources/lines', 'lines.json');
+ lib.mockRequestFromFile('/api/issues/search', 'issues.json');
+ lib.mockRequestFromFile('/api/tests/test_cases', 'test-cases.json');
+ })
+
+ .then(function () {
+ casper.waitForSelector('.source-line');
+ })
+
+ .then(function () {
+ test.assertElementCount('.source-line-covered', 1);
+ casper.click('.source-line-covered');
+ casper.waitForSelector('.bubble-popup');
+ })
+
+ .then(function () {
+ test.assertSelectorContains('.bubble-popup', 'SampleTest');
+ test.assertSelectorContains('.bubble-popup', '2ms');
+ test.assertExists('.bubble-popup .icon-test-status-ok');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue.js b/server/sonar-web/src/test/js/source-viewer-create-manual-issue.js
index 794947f744f..2cc0a798b83 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue.js
+++ b/server/sonar-web/src/test/js/source-viewer-create-manual-issue.js
@@ -68,6 +68,10 @@ casper.test.begin(testName('source-viewer-create-manual-issue'), function (test)
});
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/test/js/source-viewer-duplications.js b/server/sonar-web/src/test/js/source-viewer-duplications.js
new file mode 100644
index 00000000000..bff158991b5
--- /dev/null
+++ b/server/sonar-web/src/test/js/source-viewer-duplications.js
@@ -0,0 +1,70 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+/* global casper:false */
+
+
+var lib = require('../lib'),
+ testName = lib.testName('Source Viewer');
+
+lib.initMessages();
+lib.changeWorkingDirectory('source-viewer-duplications');
+lib.configureCasper();
+
+
+casper.test.begin(testName('Duplications'), 4, function (test) {
+ casper
+ .start(lib.buildUrl('source-viewer'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/components/app', 'app.json');
+ lib.mockRequestFromFile('/api/sources/lines', 'lines.json');
+ lib.mockRequestFromFile('/api/issues/search', 'issues.json');
+ lib.mockRequestFromFile('/api/duplications/show', 'duplications.json');
+ })
+
+ .then(function () {
+ casper.waitForSelector('.source-line');
+ })
+
+ .then(function () {
+ test.assertElementCount('.source-line-duplications.source-line-duplicated', 5);
+ casper.click('.source-line-duplicated');
+ lib.waitForElementCount('.source-line-duplications-extra.source-line-duplicated', 5);
+ })
+
+ .then(function () {
+ casper.waitForSelector('.bubble-popup');
+ })
+
+ .then(function () {
+ test.assertSelectorContains('.bubble-popup', 'Duplicated');
+ test.assertSelectorContains('.bubble-popup', '12');
+ test.assertSelectorContains('.bubble-popup', '16');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-favorite-spec.js b/server/sonar-web/src/test/js/source-viewer-favorite-spec.js
index 6a4398704bb..91eeedc5952 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-favorite-spec.js
+++ b/server/sonar-web/src/test/js/source-viewer-favorite-spec.js
@@ -56,6 +56,10 @@ casper.test.begin(testName('Mark as Favorite'), function (test) {
});
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
@@ -82,6 +86,10 @@ casper.test.begin(testName('Don\'t Show Favorite If Not Logged In'), function (t
test.assertDoesntExist('.icon-not-favorite');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-link-to-raw-spec.js b/server/sonar-web/src/test/js/source-viewer-link-to-raw-spec.js
index 3c9f83f5ed1..8942a7cffc5 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-link-to-raw-spec.js
+++ b/server/sonar-web/src/test/js/source-viewer-link-to-raw-spec.js
@@ -54,6 +54,10 @@ casper.test.begin(testName('Link to Raw'), function (test) {
});
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/test/js/source-viewer-scm.js b/server/sonar-web/src/test/js/source-viewer-scm.js
new file mode 100644
index 00000000000..abf5102cf46
--- /dev/null
+++ b/server/sonar-web/src/test/js/source-viewer-scm.js
@@ -0,0 +1,71 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+/* global casper:false */
+
+
+var lib = require('../lib'),
+ testName = lib.testName('Source Viewer');
+
+lib.initMessages();
+lib.changeWorkingDirectory('source-viewer-scm');
+lib.configureCasper();
+
+
+casper.test.begin(testName('SCM'), 4, function (test) {
+ casper
+ .start(lib.buildUrl('source-viewer'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequest('/api/l10n/index', '{}');
+ lib.mockRequestFromFile('/api/components/app', 'app.json');
+ lib.mockRequestFromFile('/api/sources/lines', 'lines.json');
+ lib.mockRequestFromFile('/api/issues/search', 'issues.json');
+ })
+
+ .then(function () {
+ casper.waitForSelector('.source-line');
+ })
+
+ .then(function () {
+ casper.click('.source-line-scm[data-line-number="1"]');
+ casper.waitForSelector('.bubble-popup');
+ })
+
+ .then(function () {
+ test.assertSelectorContains('.bubble-popup', 'sample-author');
+ test.assertSelectorContains('.bubble-popup', 'January 1 2015 1:00 AM');
+ test.assertSelectorContains('.bubble-popup', 'samplerevision');
+ })
+
+ // do not hide popup on click
+ // to allow selecting text by mouse
+ .then(function () {
+ casper.click('.bubble-popup');
+ test.assertExists('.bubble-popup');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-not-show-source-if-no-permission.js b/server/sonar-web/src/test/js/source-viewer-should-not-show-source-if-no-permission.js
index 51786db106f..ec29cb5af96 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-not-show-source-if-no-permission.js
+++ b/server/sonar-web/src/test/js/source-viewer-should-not-show-source-if-no-permission.js
@@ -44,6 +44,10 @@ casper.test.begin(testName('source-viewer-should-not-show-source-if-no-permissio
});
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-open-in-new-window-with-line.js b/server/sonar-web/src/test/js/source-viewer-should-open-in-new-window-with-line.js
index fd5f81785b2..f1c622890fa 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-open-in-new-window-with-line.js
+++ b/server/sonar-web/src/test/js/source-viewer-should-open-in-new-window-with-line.js
@@ -61,6 +61,10 @@ casper.test.begin(testName('source-viewer-should-open-in-new-window-with-line'),
});
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-open-in-new-window.js b/server/sonar-web/src/test/js/source-viewer-should-open-in-new-window.js
index 35188e28bb8..200932f5f22 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-open-in-new-window.js
+++ b/server/sonar-web/src/test/js/source-viewer-should-open-in-new-window.js
@@ -55,6 +55,10 @@ casper.test.begin(testName('source-viewer-should-open-in-new-window'), function
});
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec.js b/server/sonar-web/src/test/js/source-viewer-spec.js
index d70789490a0..7adcee1a280 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec.js
+++ b/server/sonar-web/src/test/js/source-viewer-spec.js
@@ -65,6 +65,10 @@ casper.test.begin(testName('Base'), function (test) {
});
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
@@ -110,6 +114,10 @@ casper.test.begin(testName('Decoration'), function (test) {
test.assertExists('.source-line-scm-inner[data-author="julien.henry@sonarsource.com"]');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
@@ -135,6 +143,10 @@ casper.test.begin(testName('Test File'), function (test) {
test.assertSelectorContains('.source-viewer-header-measure', '6');
})
+ .then(function () {
+ lib.sendCoverage();
+ })
+
.run(function () {
test.done();
});
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/treemap-spec.js b/server/sonar-web/src/test/js/treemap-spec.js
index 2cf0496144a..43100cf6107 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/treemap-spec.js
+++ b/server/sonar-web/src/test/js/treemap-spec.js
@@ -69,6 +69,9 @@ casper.test.begin('Treemap', function (test) {
test.assertSelectorHasText('.treemap-cell', 'Server');
test.assertElementCount('.treemap-cell', 25);
});
+ })
+ .then(function () {
+ lib.sendCoverage();
});
casper.run(function() {
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-active-severity-facet/app.json b/server/sonar-web/src/test/json/coding-rules-page-active-severity-facet/app.json
index 0eb43bc39f7..0eb43bc39f7 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-active-severity-facet/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-active-severity-facet/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-active-severity-facet/search-BLOCKER.json b/server/sonar-web/src/test/json/coding-rules-page-active-severity-facet/search-BLOCKER.json
index 3dc49f0bca3..3dc49f0bca3 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-active-severity-facet/search-BLOCKER.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-active-severity-facet/search-BLOCKER.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-active-severity-facet/search-qprofile.json b/server/sonar-web/src/test/json/coding-rules-page-active-severity-facet/search-qprofile.json
index cbbb2722ae9..cbbb2722ae9 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-active-severity-facet/search-qprofile.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-active-severity-facet/search-qprofile.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-active-severity-facet/search.json b/server/sonar-web/src/test/json/coding-rules-page-active-severity-facet/search.json
index c17c58d2b42..c17c58d2b42 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-active-severity-facet/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-active-severity-facet/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-available-since/app.json b/server/sonar-web/src/test/json/coding-rules-page-available-since/app.json
index 0eb43bc39f7..0eb43bc39f7 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-available-since/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-available-since/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-available-since/search-limited.json b/server/sonar-web/src/test/json/coding-rules-page-available-since/search-limited.json
index ca5b3316b7c..ca5b3316b7c 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-available-since/search-limited.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-available-since/search-limited.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-available-since/search.json b/server/sonar-web/src/test/json/coding-rules-page-available-since/search.json
index c17c58d2b42..c17c58d2b42 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-available-since/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-available-since/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/app.json b/server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/app.json
index 0eb43bc39f7..0eb43bc39f7 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search-inherited.json b/server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search-inherited.json
index ca5b3316b7c..ca5b3316b7c 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search-inherited.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search-inherited.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search-not-inherited.json b/server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search-not-inherited.json
index c49bff75f1c..c49bff75f1c 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search-not-inherited.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search-not-inherited.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search-overriden.json b/server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search-overriden.json
index 60bb4a7796e..60bb4a7796e 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search-overriden.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search-overriden.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search-qprofile.json b/server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search-qprofile.json
index cbbb2722ae9..cbbb2722ae9 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search-qprofile.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search-qprofile.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search-qprofile2.json b/server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search-qprofile2.json
index 63dd5c45733..63dd5c45733 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search-qprofile2.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search-qprofile2.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search.json b/server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search.json
index c17c58d2b42..c17c58d2b42 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-inheritance-facet/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-inheritance-facet/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-no-available-profiles-for-activation/app.json b/server/sonar-web/src/test/json/coding-rules-page-no-available-profiles-for-activation/app.json
index 4e69bdee31a..4e69bdee31a 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-no-available-profiles-for-activation/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-no-available-profiles-for-activation/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-no-available-profiles-for-activation/search.json b/server/sonar-web/src/test/json/coding-rules-page-no-available-profiles-for-activation/search.json
index b5a6bc269b9..b5a6bc269b9 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-no-available-profiles-for-activation/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-no-available-profiles-for-activation/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-no-available-profiles-for-activation/show.json b/server/sonar-web/src/test/json/coding-rules-page-no-available-profiles-for-activation/show.json
index 1fddeb6a632..1fddeb6a632 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-no-available-profiles-for-activation/show.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-no-available-profiles-for-activation/show.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-quality-profile-facet/app.json b/server/sonar-web/src/test/json/coding-rules-page-quality-profile-facet/app.json
index 0eb43bc39f7..0eb43bc39f7 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-quality-profile-facet/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-quality-profile-facet/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-quality-profile-facet/search-qprofile-active.json b/server/sonar-web/src/test/json/coding-rules-page-quality-profile-facet/search-qprofile-active.json
index cbbb2722ae9..cbbb2722ae9 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-quality-profile-facet/search-qprofile-active.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-quality-profile-facet/search-qprofile-active.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-quality-profile-facet/search-qprofile-inactive.json b/server/sonar-web/src/test/json/coding-rules-page-quality-profile-facet/search-qprofile-inactive.json
index 63dd5c45733..63dd5c45733 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-quality-profile-facet/search-qprofile-inactive.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-quality-profile-facet/search-qprofile-inactive.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-quality-profile-facet/search.json b/server/sonar-web/src/test/json/coding-rules-page-quality-profile-facet/search.json
index c17c58d2b42..c17c58d2b42 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-quality-profile-facet/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-quality-profile-facet/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-query-facet/app.json b/server/sonar-web/src/test/json/coding-rules-page-query-facet/app.json
index 0eb43bc39f7..0eb43bc39f7 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-query-facet/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-query-facet/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-query-facet/search-query.json b/server/sonar-web/src/test/json/coding-rules-page-query-facet/search-query.json
index 3dc49f0bca3..3dc49f0bca3 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-query-facet/search-query.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-query-facet/search-query.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-query-facet/search.json b/server/sonar-web/src/test/json/coding-rules-page-query-facet/search.json
index c17c58d2b42..c17c58d2b42 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-query-facet/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-query-facet/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-rule-permalink/app.json b/server/sonar-web/src/test/json/coding-rules-page-rule-permalink/app.json
index 0eb43bc39f7..0eb43bc39f7 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-rule-permalink/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-rule-permalink/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-rule-permalink/search.json b/server/sonar-web/src/test/json/coding-rules-page-rule-permalink/search.json
index b5a6bc269b9..b5a6bc269b9 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-rule-permalink/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-rule-permalink/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-rule-permalink/show.json b/server/sonar-web/src/test/json/coding-rules-page-rule-permalink/show.json
index 274b587bfb2..274b587bfb2 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-rule-permalink/show.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-rule-permalink/show.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-activate-profile/app.json b/server/sonar-web/src/test/json/coding-rules-page-should-activate-profile/app.json
index 50148bb1b6e..50148bb1b6e 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-activate-profile/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-activate-profile/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-activate-profile/search.json b/server/sonar-web/src/test/json/coding-rules-page-should-activate-profile/search.json
index b5a6bc269b9..b5a6bc269b9 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-activate-profile/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-activate-profile/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-activate-profile/show-with-profile.json b/server/sonar-web/src/test/json/coding-rules-page-should-activate-profile/show-with-profile.json
index 1fddeb6a632..1fddeb6a632 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-activate-profile/show-with-profile.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-activate-profile/show-with-profile.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-activate-profile/show.json b/server/sonar-web/src/test/json/coding-rules-page-should-activate-profile/show.json
index cf4b206221e..cf4b206221e 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-activate-profile/show.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-activate-profile/show.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules/app.json b/server/sonar-web/src/test/json/coding-rules-page-should-create-custom-rules/app.json
index 50148bb1b6e..50148bb1b6e 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-create-custom-rules/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules/search-custom-rules.json b/server/sonar-web/src/test/json/coding-rules-page-should-create-custom-rules/search-custom-rules.json
index db83a85fbd6..db83a85fbd6 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules/search-custom-rules.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-create-custom-rules/search-custom-rules.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules/search-custom-rules2.json b/server/sonar-web/src/test/json/coding-rules-page-should-create-custom-rules/search-custom-rules2.json
index 0e4184e48a9..0e4184e48a9 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules/search-custom-rules2.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-create-custom-rules/search-custom-rules2.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules/search.json b/server/sonar-web/src/test/json/coding-rules-page-should-create-custom-rules/search.json
index 40ab6ae953a..40ab6ae953a 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-create-custom-rules/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules/show.json b/server/sonar-web/src/test/json/coding-rules-page-should-create-custom-rules/show.json
index 517c5f6e754..517c5f6e754 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-custom-rules/show.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-create-custom-rules/show.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-manual-rules/app.json b/server/sonar-web/src/test/json/coding-rules-page-should-create-manual-rules/app.json
index 50148bb1b6e..50148bb1b6e 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-manual-rules/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-create-manual-rules/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-manual-rules/search.json b/server/sonar-web/src/test/json/coding-rules-page-should-create-manual-rules/search.json
index f43d117c569..f43d117c569 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-manual-rules/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-create-manual-rules/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-manual-rules/show.json b/server/sonar-web/src/test/json/coding-rules-page-should-create-manual-rules/show.json
index 38190c28abb..38190c28abb 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-create-manual-rules/show.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-create-manual-rules/show.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-custom-rules/app.json b/server/sonar-web/src/test/json/coding-rules-page-should-delete-custom-rules/app.json
index 50148bb1b6e..50148bb1b6e 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-custom-rules/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-delete-custom-rules/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-custom-rules/search-custom-rules.json b/server/sonar-web/src/test/json/coding-rules-page-should-delete-custom-rules/search-custom-rules.json
index 0e4184e48a9..0e4184e48a9 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-custom-rules/search-custom-rules.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-delete-custom-rules/search-custom-rules.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-custom-rules/search.json b/server/sonar-web/src/test/json/coding-rules-page-should-delete-custom-rules/search.json
index 40ab6ae953a..40ab6ae953a 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-custom-rules/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-delete-custom-rules/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-custom-rules/show.json b/server/sonar-web/src/test/json/coding-rules-page-should-delete-custom-rules/show.json
index 517c5f6e754..517c5f6e754 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-custom-rules/show.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-delete-custom-rules/show.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-manual-rules/app.json b/server/sonar-web/src/test/json/coding-rules-page-should-delete-manual-rules/app.json
index 50148bb1b6e..50148bb1b6e 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-manual-rules/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-delete-manual-rules/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-manual-rules/search-after.json b/server/sonar-web/src/test/json/coding-rules-page-should-delete-manual-rules/search-after.json
index f43d117c569..f43d117c569 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-manual-rules/search-after.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-delete-manual-rules/search-after.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-manual-rules/search-before.json b/server/sonar-web/src/test/json/coding-rules-page-should-delete-manual-rules/search-before.json
index 1f19e1d27c2..1f19e1d27c2 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-manual-rules/search-before.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-delete-manual-rules/search-before.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-manual-rules/show.json b/server/sonar-web/src/test/json/coding-rules-page-should-delete-manual-rules/show.json
index 38190c28abb..38190c28abb 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-delete-manual-rules/show.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-delete-manual-rules/show.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-custom-rules/app.json b/server/sonar-web/src/test/json/coding-rules-page-should-show-custom-rules/app.json
index 0eb43bc39f7..0eb43bc39f7 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-custom-rules/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-show-custom-rules/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-custom-rules/search-custom-rules.json b/server/sonar-web/src/test/json/coding-rules-page-should-show-custom-rules/search-custom-rules.json
index 0e4184e48a9..0e4184e48a9 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-custom-rules/search-custom-rules.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-show-custom-rules/search-custom-rules.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-custom-rules/search.json b/server/sonar-web/src/test/json/coding-rules-page-should-show-custom-rules/search.json
index 40ab6ae953a..40ab6ae953a 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-custom-rules/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-show-custom-rules/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-custom-rules/show.json b/server/sonar-web/src/test/json/coding-rules-page-should-show-custom-rules/show.json
index 517c5f6e754..517c5f6e754 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-custom-rules/show.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-show-custom-rules/show.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-deprecated-label/app.json b/server/sonar-web/src/test/json/coding-rules-page-should-show-deprecated-label/app.json
index 0eb43bc39f7..0eb43bc39f7 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-deprecated-label/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-show-deprecated-label/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-deprecated-label/search.json b/server/sonar-web/src/test/json/coding-rules-page-should-show-deprecated-label/search.json
index ddeb1cb7984..ddeb1cb7984 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-deprecated-label/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-show-deprecated-label/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-details/app.json b/server/sonar-web/src/test/json/coding-rules-page-should-show-details/app.json
index 0eb43bc39f7..0eb43bc39f7 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-details/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-show-details/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-details/search.json b/server/sonar-web/src/test/json/coding-rules-page-should-show-details/search.json
index b5a6bc269b9..b5a6bc269b9 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-details/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-show-details/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-details/show.json b/server/sonar-web/src/test/json/coding-rules-page-should-show-details/show.json
index 274b587bfb2..274b587bfb2 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-details/show.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-show-details/show.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-empty-list/app.json b/server/sonar-web/src/test/json/coding-rules-page-should-show-empty-list/app.json
index 0eb43bc39f7..0eb43bc39f7 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-empty-list/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-show-empty-list/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-empty-list/search.json b/server/sonar-web/src/test/json/coding-rules-page-should-show-empty-list/search.json
index f43d117c569..f43d117c569 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-empty-list/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-show-empty-list/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule-issues/app.json b/server/sonar-web/src/test/json/coding-rules-page-should-show-rule-issues/app.json
index 0eb43bc39f7..0eb43bc39f7 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule-issues/app.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-show-rule-issues/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule-issues/issues-search.json b/server/sonar-web/src/test/json/coding-rules-page-should-show-rule-issues/issues-search.json
index 511b9288285..511b9288285 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule-issues/issues-search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-show-rule-issues/issues-search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule-issues/search.json b/server/sonar-web/src/test/json/coding-rules-page-should-show-rule-issues/search.json
index 558be10513e..558be10513e 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule-issues/search.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-show-rule-issues/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule-issues/show.json b/server/sonar-web/src/test/json/coding-rules-page-should-show-rule-issues/show.json
index 274b587bfb2..274b587bfb2 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules-page-should-show-rule-issues/show.json
+++ b/server/sonar-web/src/test/json/coding-rules-page-should-show-rule-issues/show.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules/app.json b/server/sonar-web/src/test/json/coding-rules/app.json
index 0eb43bc39f7..0eb43bc39f7 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules/app.json
+++ b/server/sonar-web/src/test/json/coding-rules/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules/search.json b/server/sonar-web/src/test/json/coding-rules/search.json
index c17c58d2b42..c17c58d2b42 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/coding-rules/search.json
+++ b/server/sonar-web/src/test/json/coding-rules/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/design-spec/dependencies.json b/server/sonar-web/src/test/json/design-spec/dependencies.json
index 7f23c19b8d5..7f23c19b8d5 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/design-spec/dependencies.json
+++ b/server/sonar-web/src/test/json/design-spec/dependencies.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/design-spec/resources.json b/server/sonar-web/src/test/json/design-spec/resources.json
index 3d06975ac57..3d06975ac57 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/design-spec/resources.json
+++ b/server/sonar-web/src/test/json/design-spec/resources.json
diff --git a/server/sonar-web/src/test/json/global-issues-filter-widget/all-issues-by-resolution.json b/server/sonar-web/src/test/json/global-issues-filter-widget/all-issues-by-resolution.json
new file mode 100644
index 00000000000..6751605092f
--- /dev/null
+++ b/server/sonar-web/src/test/json/global-issues-filter-widget/all-issues-by-resolution.json
@@ -0,0 +1,32 @@
+{
+ "total": 71571,
+ "p": 1,
+ "ps": 1,
+ "facets": [
+ {
+ "property": "resolutions",
+ "values": [
+ {
+ "val": "",
+ "count": 6851
+ },
+ {
+ "val": "FIXED",
+ "count": 47092
+ },
+ {
+ "val": "REMOVED",
+ "count": 16326
+ },
+ {
+ "val": "FALSE-POSITIVE",
+ "count": 752
+ },
+ {
+ "val": "WONTFIX",
+ "count": 550
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/test/json/global-issues-filter-widget/all-issues-by-status.json b/server/sonar-web/src/test/json/global-issues-filter-widget/all-issues-by-status.json
new file mode 100644
index 00000000000..99fe9461067
--- /dev/null
+++ b/server/sonar-web/src/test/json/global-issues-filter-widget/all-issues-by-status.json
@@ -0,0 +1,32 @@
+{
+ "total": 71571,
+ "p": 1,
+ "ps": 1,
+ "facets": [
+ {
+ "property": "statuses",
+ "values": [
+ {
+ "val": "CLOSED",
+ "count": 63413
+ },
+ {
+ "val": "CONFIRMED",
+ "count": 6609
+ },
+ {
+ "val": "RESOLVED",
+ "count": 1307
+ },
+ {
+ "val": "OPEN",
+ "count": 238
+ },
+ {
+ "val": "REOPENED",
+ "count": 4
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/test/json/global-issues-filter-widget/red-issues-by-severity.json b/server/sonar-web/src/test/json/global-issues-filter-widget/red-issues-by-severity.json
new file mode 100644
index 00000000000..f261766748c
--- /dev/null
+++ b/server/sonar-web/src/test/json/global-issues-filter-widget/red-issues-by-severity.json
@@ -0,0 +1,32 @@
+{
+ "total": 6851,
+ "p": 1,
+ "ps": 1,
+ "facets": [
+ {
+ "property": "severities",
+ "values": [
+ {
+ "val": "MAJOR",
+ "count": 5027
+ },
+ {
+ "val": "INFO",
+ "count": 1178
+ },
+ {
+ "val": "MINOR",
+ "count": 540
+ },
+ {
+ "val": "CRITICAL",
+ "count": 105
+ },
+ {
+ "val": "BLOCKER",
+ "count": 1
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-action-plan.json b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-action-plan.json
new file mode 100644
index 00000000000..7589fe0737c
--- /dev/null
+++ b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-action-plan.json
@@ -0,0 +1,63 @@
+{
+ "total": 6851,
+ "p": 1,
+ "ps": 1,
+ "actionPlans": [
+ {
+ "key": "0cf48508-2fcd-4cb8-a50b-c5cd7c3decc0",
+ "name": "First Action Plan",
+ "status": "OPEN",
+ "project": "example:project",
+ "userLogin": "example.login",
+ "createdAt": "2014-04-03T12:28:05+0200",
+ "fCreatedAt": "Apr 3, 2014 12:28 PM",
+ "updatedAt": "2014-04-03T12:28:05+0200",
+ "fUpdatedAt": "Apr 3, 2014 12:28 PM"
+ },
+ {
+ "key": "1b9e7e52-ff58-40c1-80bf-f68429a3275e",
+ "name": "Second Action Plan",
+ "status": "OPEN",
+ "project": "example:project",
+ "userLogin": "example.login",
+ "createdAt": "2014-04-03T12:28:05+0200",
+ "fCreatedAt": "Apr 3, 2014 12:28 PM",
+ "updatedAt": "2014-04-03T12:28:05+0200",
+ "fUpdatedAt": "Apr 3, 2014 12:28 PM"
+ },
+ {
+ "key": "8c1d5d01-948e-4670-a0d9-17c512979486",
+ "name": "Third Action Plan",
+ "status": "OPEN",
+ "project": "example:project",
+ "userLogin": "example.login",
+ "createdAt": "2014-04-03T12:28:05+0200",
+ "fCreatedAt": "Apr 3, 2014 12:28 PM",
+ "updatedAt": "2014-04-03T12:28:05+0200",
+ "fUpdatedAt": "Apr 3, 2014 12:28 PM"
+ }
+ ],
+ "facets": [
+ {
+ "property": "actionPlans",
+ "values": [
+ {
+ "val": "",
+ "count": 5877
+ },
+ {
+ "val": "0cf48508-2fcd-4cb8-a50b-c5cd7c3decc0",
+ "count": 532
+ },
+ {
+ "val": "1b9e7e52-ff58-40c1-80bf-f68429a3275e",
+ "count": 56
+ },
+ {
+ "val": "8c1d5d01-948e-4670-a0d9-17c512979486",
+ "count": 52
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-assignee.json b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-assignee.json
new file mode 100644
index 00000000000..350327879fc
--- /dev/null
+++ b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-assignee.json
@@ -0,0 +1,48 @@
+{
+ "total": 6851,
+ "p": 1,
+ "ps": 1,
+ "users": [
+ {
+ "login": "second.user",
+ "name": "Second User",
+ "active": true,
+ "email": "second.user@example.com"
+ },
+ {
+ "login": "third.user",
+ "name": "Third User",
+ "active": true,
+ "email": "third.user@example .com"
+ },
+ {
+ "login": "first.user",
+ "name": "First User",
+ "active": true,
+ "email": "first.user@example.com"
+ }
+ ],
+ "facets": [
+ {
+ "property": "assignees",
+ "values": [
+ {
+ "val": "",
+ "count": 4134
+ },
+ {
+ "val": "first.user",
+ "count": 698
+ },
+ {
+ "val": "second.user",
+ "count": 504
+ },
+ {
+ "val": "third.user",
+ "count": 426
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-date-limited.json b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-date-limited.json
new file mode 100644
index 00000000000..5c2f0182f9a
--- /dev/null
+++ b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-date-limited.json
@@ -0,0 +1,24 @@
+{
+ "total": 6851,
+ "p": 1,
+ "ps": 1,
+ "facets": [
+ {
+ "property": "createdAt",
+ "values": [
+ {
+ "val": "2015-02-16T01:00:00+0000",
+ "count": 49
+ },
+ {
+ "val": "2015-02-17T01:00:00+0000",
+ "count": 48
+ },
+ {
+ "val": "2015-02-18T01:00:00+0000",
+ "count": 47
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-date.json b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-date.json
new file mode 100644
index 00000000000..54153d9897b
--- /dev/null
+++ b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-date.json
@@ -0,0 +1,32 @@
+{
+ "total": 6851,
+ "p": 1,
+ "ps": 1,
+ "facets": [
+ {
+ "property": "createdAt",
+ "values": [
+ {
+ "val": "2011-01-01T01:00:00+0000",
+ "count": 72
+ },
+ {
+ "val": "2012-01-01T01:00:00+0000",
+ "count": 64
+ },
+ {
+ "val": "2013-01-01T01:00:00+0000",
+ "count": 1262
+ },
+ {
+ "val": "2014-01-01T01:00:00+0000",
+ "count": 3729
+ },
+ {
+ "val": "2015-01-01T01:00:00+0000",
+ "count": 1724
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-language.json b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-language.json
new file mode 100644
index 00000000000..de5e4c9be3a
--- /dev/null
+++ b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-language.json
@@ -0,0 +1,46 @@
+{
+ "total": 6851,
+ "p": 1,
+ "ps": 1,
+ "languages": [
+ {
+ "key": "py",
+ "name": "Python"
+ },
+ {
+ "key": "js",
+ "name": "JavaScript"
+ },
+ {
+ "key": "php",
+ "name": "PHP"
+ },
+ {
+ "key": "java",
+ "name": "Java"
+ }
+ ],
+ "facets": [
+ {
+ "property": "languages",
+ "values": [
+ {
+ "val": "java",
+ "count": 6336
+ },
+ {
+ "val": "py",
+ "count": 444
+ },
+ {
+ "val": "php",
+ "count": 22
+ },
+ {
+ "val": "js",
+ "count": 15
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-project.json b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-project.json
new file mode 100644
index 00000000000..e53991f61ab
--- /dev/null
+++ b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-project.json
@@ -0,0 +1,62 @@
+{
+ "total": 2598,
+ "p": 1,
+ "ps": 1,
+ "projects": [
+ {
+ "uuid": "5eab015a-1f76-4ba4-bd89-bf547132d673",
+ "key": "org.codehaus.sonar-plugins.javascript:javascript",
+ "id": 10159,
+ "qualifier": "TRK",
+ "name": "JavaScript",
+ "longName": "JavaScript"
+ },
+ {
+ "uuid": "c156940b-e3ec-43f6-9589-e3b75aa9ca32",
+ "key": "org.codehaus.sonar-plugins.python:python",
+ "id": 11752,
+ "qualifier": "TRK",
+ "name": "Python",
+ "longName": "Python"
+ },
+ {
+ "uuid": "dd7c3556-ce3f-42d0-a348-914a582dc944",
+ "key": "org.codehaus.sonar-plugins.java:java",
+ "id": 13265,
+ "qualifier": "TRK",
+ "name": "SonarQube Java",
+ "longName": "SonarQube Java"
+ },
+ {
+ "uuid": "69e57151-be0d-4157-adff-c06741d88879",
+ "key": "org.codehaus.sonar:sonar",
+ "id": 2865,
+ "qualifier": "TRK",
+ "name": "SonarQube",
+ "longName": "SonarQube"
+ }
+ ],
+ "facets": [
+ {
+ "property": "projectUuids",
+ "values": [
+ {
+ "val": "69e57151-be0d-4157-adff-c06741d88879",
+ "count": 1766
+ },
+ {
+ "val": "dd7c3556-ce3f-42d0-a348-914a582dc944",
+ "count": 442
+ },
+ {
+ "val": "5eab015a-1f76-4ba4-bd89-bf547132d673",
+ "count": 283
+ },
+ {
+ "val": "c156940b-e3ec-43f6-9589-e3b75aa9ca32",
+ "count": 107
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-resolution.json b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-resolution.json
new file mode 100644
index 00000000000..146920688ff
--- /dev/null
+++ b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-resolution.json
@@ -0,0 +1,32 @@
+{
+ "total": 6851,
+ "p": 1,
+ "ps": 1,
+ "facets": [
+ {
+ "property": "resolutions",
+ "values": [
+ {
+ "val": "",
+ "count": 6851
+ },
+ {
+ "val": "FIXED",
+ "count": 47092
+ },
+ {
+ "val": "REMOVED",
+ "count": 16326
+ },
+ {
+ "val": "FALSE-POSITIVE",
+ "count": 752
+ },
+ {
+ "val": "WONTFIX",
+ "count": 550
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-rule.json b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-rule.json
new file mode 100644
index 00000000000..aa70a9bfc71
--- /dev/null
+++ b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-rule.json
@@ -0,0 +1,186 @@
+{
+ "total": 6851,
+ "p": 1,
+ "ps": 1,
+ "rules": [
+ {
+ "key": "squid:S1698",
+ "name": "Objects should be compared with \"equals()\"",
+ "lang": "java",
+ "desc": "<p>Using the equality (<code>==</code>) and inequality (<code>!=</code>) operators to compare two objects does not check to see if they have the same values. Rather it checks to see if both object references point to exactly the same object in memory. The vast majority of the time, this is not what you want to do. Use the .equals() method to compare the values of two objects or to compare a string object to a string literal.</p>\n\n<h2>Noncompliant Code Sample</h2>\n<pre>\nString str1 = \"blue\";\nString str2 = \"blue\";\nString str3 = str1;\n\nif (str1 == str2)\n{\n System.out.println(\"they're both 'blue'\"); // this doesn't print because the objects are different\n}\n\nif (str1 == \"blue\")\n{\n System.out.println(\"they're both 'blue'\"); // this doesn't print because the objects are different\n}\n\nif (str1 == str3)\n{\n System.out.println(\"they're the same object\"); // this prints\n}\n</pre>\n\n<h2>Compliant Solution</h2>\n<pre>\nString str1 = \"blue\";\nString str2 = \"blue\";\nString str3 = str1;\n\nif (str1.equals(str2))\n{\n System.out.println(\"they're both 'blue'\"); // this prints\n}\n\nif (str1.equals(\"blue\"))\n{\n System.out.println(\"they're both 'blue'\"); // this prints\n}\n\nif (str1 == str3)\n{\n System.out.println(\"they're the same object\"); // this still prints, but it's probably not what you meant to do\n}\n</pre>\n\n<h2>Exception</h2>\nComparing two instances of the <code>Class</code> object will not raise an issue.\n<pre>\nClass c;\nif(c == Integer.class) { //No issue raised\n}\n</pre>\n\n<h2>See</h2>\n <ul>\n <li><a href=\"http://cwe.mitre.org/data/definitions/595.html\">MITRE, CWE-595</a> - Comparison of Object References Instead of Object Contents</li>\n </ul>",
+ "status": "READY",
+ "langName": "Java"
+ },
+ {
+ "key": "squid:AstNode_SSLR_class_should_not_be_used",
+ "name": "AstNode SSLR class should not be used",
+ "lang": "java",
+ "desc": "Once strongly typed AST is in place on a language plugin, the AstNode class should not be used anymore. ",
+ "status": "READY",
+ "langName": "Java"
+ },
+ {
+ "key": "squid:IndentationCheck",
+ "name": "Source code should be correctly indented",
+ "lang": "java",
+ "desc": "<p>\nProper indentation is a simple and effective way to improve the code's readability.\nConsistent indentation among developers also reduces the differences that are committed to source control systems, making code reviews easier.\n</p>\n\n<p>The following code illustrates this rule with an indentation level of 2:</p>\n\n<pre>\nclass Foo {\n public int a; // Compliant\npublic int b; // Non-Compliant\n}\n</pre>",
+ "status": "READY",
+ "langName": "Java"
+ },
+ {
+ "key": "squid:S1161",
+ "name": "\"@Override\" annotation should be used on any method overriding (since Java 5) or implementing (since Java 6) another one",
+ "lang": "java",
+ "desc": "<p>Using the <code>@Override</code> annotation is useful for two reasons :</p>\n<ul>\n <li>It elicits a warning from the compiler if the annotated method doesn't actually override anything, as in the case of a misspelling.</li>\n <li>It improves the readability of the source code by making it obvious that methods are overridden.</li>\n</ul>\n<h2>Noncompliant Code Example</h2>\n<pre>\nclass ParentClass {\n public boolean doSomething(){...}\n}\nclass FirstChildClass extends ParentClass {\n public boolean doSomething(){...} //Non-Compliant\n}\n</pre>\n\n<h2>Compliant Solution</h2>\n<pre>\nclass ParentClass {\n public boolean doSomething(){...}\n}\nclass FirstChildClass extends ParentClass {\n @Override\n public boolean doSomething(){...} //Compliant\n}\n</pre>",
+ "status": "READY",
+ "langName": "Java"
+ },
+ {
+ "key": "common-java:DuplicatedBlocks",
+ "name": "Duplicated blocks",
+ "lang": "java",
+ "desc": "<p>An issue is created on a file as soon as there is a block of duplicated code on this file. It gives the number of blocks in the file.</p>",
+ "status": "READY",
+ "langName": "Java"
+ },
+ {
+ "key": "squid:S1192",
+ "name": "String literals should not be duplicated",
+ "lang": "java",
+ "desc": "<p>\n Duplicated string literals make the process of refactoring error-prone, since you must be sure to update all occurrences.\n On the other hand, constants can be referenced from many places, but only need to be updated in a single place.\n</p>\n\n<h2>Non Compliant Code Example</h2>\n\n<pre>\npublic void run() {\n prepare(\"action1\"); // Non-Compliant - \"action1\" is duplicated 3 times\n execute(\"action1\");\n release(\"action1\");\n}\n\n@SuppressWarning(\"all\") // Compliant - annotations are excluded\nprivate void method1() { /* ... */ }\n@SuppressWarning(\"all\")\nprivate void method2() { /* ... */ }\n\npublic String method3(String a) {\n System.out.println(\"'\" + a + \"'\"); // Compliant - literal \"'\" has less than 5 characters and is excluded\n return \"\"; // Compliant - literal \"\" has less than 5 characters and is excluded\n}\n</pre>\n\n<h2>Compliant Code Example</h2>\n\n<pre>\nprivate static final String ACTION_1 = \"action1\"; // Compliant\n\npublic void run() {\n prepare(ACTION_1); // Compliant\n execute(ACTION_1);\n release(ACTION_1);\n}\n</pre>\n\n<h2>Exceptions</h2>\n<p>To prevent generating some false-positives, literals having less than 5 characters are excluded.</p>",
+ "status": "READY",
+ "langName": "Java"
+ },
+ {
+ "key": "squid:MethodCyclomaticComplexity",
+ "name": "Methods should not be too complex",
+ "lang": "java",
+ "desc": "<p>The Cyclomatic Complexity is measured by the number of\n\t(&amp;&amp;, ||) operators and (if, while, do, for, ?:, catch, switch,\n\tcase, return, throw) statements in the body of a class plus one for\n\teach constructor, method (but not getter/setter), static initializer,\n\tor instance initializer in the class. The last return statement in\n\tmethod, if exists, is not taken into account.</p>\n<p>\n\tEven when the Cyclomatic Complexity of a class is very high, this\n\tcomplexity might be well distributed among all methods. Nevertheless,\n\tmost of the time, a very complex class is a class which breaks the <a\n\t\thref=\"http://en.wikipedia.org/wiki/Single_responsibility_principle\">Single\n\t\tResponsibility Principle</a> and which should be re-factored to be split\n\tin several classes.\n</p>",
+ "status": "READY",
+ "langName": "Java"
+ },
+ {
+ "key": "squid:S1135",
+ "name": "TODO tags should be handled",
+ "lang": "java",
+ "desc": "<p>\n<code>TODO</code> tags are commonly used to mark places where some more code is required, but which the developer wants to implement later.\nSometimes the developer will not have the time or will simply forget to get back to that tag.\nThis rule is meant to track those tags, and ensure that they do not go unnoticed.\n</p>\n\n<p>The following code illustrates this rule:</p>\n\n<pre>\nvoid doSomething() {\n // TODO\n}\n</pre>",
+ "status": "READY",
+ "langName": "Java"
+ },
+ {
+ "key": "common-java:InsufficientBranchCoverage",
+ "name": "Insufficient branch coverage by unit tests",
+ "lang": "java",
+ "desc": "<p>An issue is created on a file as soon as the branch coverage on this file is less than the required threshold.It gives the number of branches to be covered in order to reach the required threshold.</p>",
+ "status": "READY",
+ "langName": "Java"
+ },
+ {
+ "key": "squid:S00115",
+ "name": "Constant names should comply with a naming convention",
+ "lang": "java",
+ "desc": "<p>\nSharing some naming conventions is a key point to make it possible for a team to efficiently collaborate. This rule allows to check that all constant names match a provided regular expression.\n</p>\n\n<p>\nThe following code snippet illustrates this rule when the regular expression value is \"^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$\":\n</p>\n<pre>\npublic class MyClass {\n public static final int first = 1; // Non-Compliant\n public static final int SECOND = 2; // Compliant\n}\n\npublic enum MyEnum {\n first, // Non-Compliant\n SECOND; // Compliant\n}\n</pre>",
+ "status": "READY",
+ "langName": "Java"
+ },
+ {
+ "key": "squid:S1134",
+ "name": "FIXME tags should be handled",
+ "lang": "java",
+ "desc": "<p>\n<code>FIXME</code> tags are commonly used to mark places where a bug is suspected, but which the developer wants to deal with later.\nSometimes the developer will not have the time or will simply forget to get back to that tag.\nThis rule is meant to track those tags, and ensure that they do not go unnoticed.\n</p>\n\n<p>The following code illustrates this rule:</p>\n\n<pre>\nint divide(int numerator, int denominator) {\n return numerator / denominator; // FIXME denominator = 0, Non-Compliant\n}\n</pre>",
+ "status": "READY",
+ "langName": "Java"
+ },
+ {
+ "key": "squid:S1133",
+ "name": "Deprecated code should be removed eventually",
+ "lang": "java",
+ "desc": "<p>\nThis rule is meant to be used as a way to track code which is marked as being deprecated.\nDeprecated code should eventually be removed.\n</p>\n\n<p>\nThe following code illustrates this rule:\n</p>\n\n<pre>\nclass Foo {\n /**\n * @deprecated\n */\n public void foo() { // Non-Compliant\n }\n\n @Deprecated // Non-Compliant\n public void bar() {\n }\n\n public void baz() { // Compliant\n }\n}\n</pre>",
+ "status": "READY",
+ "langName": "Java"
+ },
+ {
+ "key": "squid:CallToDeprecatedMethod",
+ "name": "Avoid use of deprecated method",
+ "lang": "java",
+ "desc": "<p>Once deprecated, a method should no longer be used as it means\n\tthat the method might be removed sooner or later.</p>",
+ "status": "READY",
+ "langName": "Java"
+ },
+ {
+ "key": "squid:S1228",
+ "name": "Packages should have a javadoc file 'package-info.java'",
+ "lang": "java",
+ "desc": "<p>Each package in a Java project should include a <code>package-info.java</code> file. The purpose of this file is to document the Java package using javadoc and declare package annotations.</p>\n\n<h2>Compliant Solution</h2>\n<pre>\n/**\n* This package has non null parameters and is documented.\n**/\n@ParametersAreNonnullByDefault\npackage org.foo.bar;\n</pre>",
+ "status": "READY",
+ "langName": "Java"
+ }
+ ],
+ "facets": [
+ {
+ "property": "rules",
+ "values": [
+ {
+ "val": "squid:S1161",
+ "count": 879
+ },
+ {
+ "val": "squid:S1135",
+ "count": 571
+ },
+ {
+ "val": "squid:S1133",
+ "count": 558
+ },
+ {
+ "val": "common-java:InsufficientBranchCoverage",
+ "count": 550
+ },
+ {
+ "val": "common-java:DuplicatedBlocks",
+ "count": 408
+ },
+ {
+ "val": "squid:AstNode_SSLR_class_should_not_be_used",
+ "count": 265
+ },
+ {
+ "val": "squid:IndentationCheck",
+ "count": 264
+ },
+ {
+ "val": "squid:CallToDeprecatedMethod",
+ "count": 237
+ },
+ {
+ "val": "squid:MethodCyclomaticComplexity",
+ "count": 233
+ },
+ {
+ "val": "squid:S00115",
+ "count": 212
+ },
+ {
+ "val": "resharper-cs:RedundantUsingDirective",
+ "count": 175
+ },
+ {
+ "val": "squid:S1228",
+ "count": 174
+ },
+ {
+ "val": "squid:S1698",
+ "count": 139
+ },
+ {
+ "val": "squid:S1134",
+ "count": 113
+ },
+ {
+ "val": "squid:S1192",
+ "count": 111
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-severity.json b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-severity.json
new file mode 100644
index 00000000000..f261766748c
--- /dev/null
+++ b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-issues-by-severity.json
@@ -0,0 +1,32 @@
+{
+ "total": 6851,
+ "p": 1,
+ "ps": 1,
+ "facets": [
+ {
+ "property": "severities",
+ "values": [
+ {
+ "val": "MAJOR",
+ "count": 5027
+ },
+ {
+ "val": "INFO",
+ "count": 1178
+ },
+ {
+ "val": "MINOR",
+ "count": 540
+ },
+ {
+ "val": "CRITICAL",
+ "count": 105
+ },
+ {
+ "val": "BLOCKER",
+ "count": 1
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-unassigned-issues-by-assignee.json b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-unassigned-issues-by-assignee.json
new file mode 100644
index 00000000000..eec6932ed8c
--- /dev/null
+++ b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-unassigned-issues-by-assignee.json
@@ -0,0 +1,48 @@
+{
+ "total": 4134,
+ "p": 1,
+ "ps": 1,
+ "users": [
+ {
+ "login": "second.user",
+ "name": "Second User",
+ "active": true,
+ "email": "second.user@example.com"
+ },
+ {
+ "login": "third.user",
+ "name": "Third User",
+ "active": true,
+ "email": "third.user@example .com"
+ },
+ {
+ "login": "first.user",
+ "name": "First User",
+ "active": true,
+ "email": "first.user@example.com"
+ }
+ ],
+ "facets": [
+ {
+ "property": "assignees",
+ "values": [
+ {
+ "val": "",
+ "count": 4134
+ },
+ {
+ "val": "first.user",
+ "count": 698
+ },
+ {
+ "val": "second.user",
+ "count": 504
+ },
+ {
+ "val": "third.user",
+ "count": 426
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-unplanned-issues-by-action-plan.json b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-unplanned-issues-by-action-plan.json
new file mode 100644
index 00000000000..94eba943db2
--- /dev/null
+++ b/server/sonar-web/src/test/json/global-issues-filter-widget/unresolved-unplanned-issues-by-action-plan.json
@@ -0,0 +1,63 @@
+{
+ "total": 5877,
+ "p": 1,
+ "ps": 1,
+ "actionPlans": [
+ {
+ "key": "0cf48508-2fcd-4cb8-a50b-c5cd7c3decc0",
+ "name": "First Action Plan",
+ "status": "OPEN",
+ "project": "example:project",
+ "userLogin": "example.login",
+ "createdAt": "2014-04-03T12:28:05+0200",
+ "fCreatedAt": "Apr 3, 2014 12:28 PM",
+ "updatedAt": "2014-04-03T12:28:05+0200",
+ "fUpdatedAt": "Apr 3, 2014 12:28 PM"
+ },
+ {
+ "key": "1b9e7e52-ff58-40c1-80bf-f68429a3275e",
+ "name": "Second Action Plan",
+ "status": "OPEN",
+ "project": "example:project",
+ "userLogin": "example.login",
+ "createdAt": "2014-04-03T12:28:05+0200",
+ "fCreatedAt": "Apr 3, 2014 12:28 PM",
+ "updatedAt": "2014-04-03T12:28:05+0200",
+ "fUpdatedAt": "Apr 3, 2014 12:28 PM"
+ },
+ {
+ "key": "8c1d5d01-948e-4670-a0d9-17c512979486",
+ "name": "Third Action Plan",
+ "status": "OPEN",
+ "project": "example:project",
+ "userLogin": "example.login",
+ "createdAt": "2014-04-03T12:28:05+0200",
+ "fCreatedAt": "Apr 3, 2014 12:28 PM",
+ "updatedAt": "2014-04-03T12:28:05+0200",
+ "fUpdatedAt": "Apr 3, 2014 12:28 PM"
+ }
+ ],
+ "facets": [
+ {
+ "property": "actionPlans",
+ "values": [
+ {
+ "val": "",
+ "count": 5877
+ },
+ {
+ "val": "0cf48508-2fcd-4cb8-a50b-c5cd7c3decc0",
+ "count": 532
+ },
+ {
+ "val": "1b9e7e52-ff58-40c1-80bf-f68429a3275e",
+ "count": 56
+ },
+ {
+ "val": "8c1d5d01-948e-4670-a0d9-17c512979486",
+ "count": 52
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-page-should-open-issue-permalink/app.json b/server/sonar-web/src/test/json/issues-page-should-open-issue-permalink/app.json
index 1006684e0c9..1006684e0c9 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-page-should-open-issue-permalink/app.json
+++ b/server/sonar-web/src/test/json/issues-page-should-open-issue-permalink/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-page-should-open-issue-permalink/components-app.json b/server/sonar-web/src/test/json/issues-page-should-open-issue-permalink/components-app.json
index 61afe8a34c8..61afe8a34c8 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-page-should-open-issue-permalink/components-app.json
+++ b/server/sonar-web/src/test/json/issues-page-should-open-issue-permalink/components-app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-page-should-open-issue-permalink/lines.json b/server/sonar-web/src/test/json/issues-page-should-open-issue-permalink/lines.json
index cd2053d91d6..cd2053d91d6 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-page-should-open-issue-permalink/lines.json
+++ b/server/sonar-web/src/test/json/issues-page-should-open-issue-permalink/lines.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-page-should-open-issue-permalink/search.json b/server/sonar-web/src/test/json/issues-page-should-open-issue-permalink/search.json
index 655e7492bd7..655e7492bd7 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-page-should-open-issue-permalink/search.json
+++ b/server/sonar-web/src/test/json/issues-page-should-open-issue-permalink/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/app.json b/server/sonar-web/src/test/json/issues-spec/app.json
index 604ef7c79f1..604ef7c79f1 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/app.json
+++ b/server/sonar-web/src/test/json/issues-spec/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/file-level/components-app.json b/server/sonar-web/src/test/json/issues-spec/file-level/components-app.json
index 537dd0787a8..537dd0787a8 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/file-level/components-app.json
+++ b/server/sonar-web/src/test/json/issues-spec/file-level/components-app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/file-level/lines.json b/server/sonar-web/src/test/json/issues-spec/file-level/lines.json
index 18a670b8522..18a670b8522 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/file-level/lines.json
+++ b/server/sonar-web/src/test/json/issues-spec/file-level/lines.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/file-level/search.json b/server/sonar-web/src/test/json/issues-spec/file-level/search.json
index 5ea06f0c717..5ea06f0c717 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/file-level/search.json
+++ b/server/sonar-web/src/test/json/issues-spec/file-level/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/search-reopened.json b/server/sonar-web/src/test/json/issues-spec/search-reopened.json
index efd73bce04a..efd73bce04a 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/search-reopened.json
+++ b/server/sonar-web/src/test/json/issues-spec/search-reopened.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/search-with-tags.json b/server/sonar-web/src/test/json/issues-spec/search-with-tags.json
index 442b1de359a..442b1de359a 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/search-with-tags.json
+++ b/server/sonar-web/src/test/json/issues-spec/search-with-tags.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/search.json b/server/sonar-web/src/test/json/issues-spec/search.json
index 3dbc631468b..3dbc631468b 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/search.json
+++ b/server/sonar-web/src/test/json/issues-spec/search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/show-open.json b/server/sonar-web/src/test/json/issues-spec/show-open.json
index 071d6bde7c4..071d6bde7c4 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/show-open.json
+++ b/server/sonar-web/src/test/json/issues-spec/show-open.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/show-resolved.json b/server/sonar-web/src/test/json/issues-spec/show-resolved.json
index f4eab749601..f4eab749601 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/show-resolved.json
+++ b/server/sonar-web/src/test/json/issues-spec/show-resolved.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/show-with-tags.json b/server/sonar-web/src/test/json/issues-spec/show-with-tags.json
index 6eb9475a066..6eb9475a066 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/show-with-tags.json
+++ b/server/sonar-web/src/test/json/issues-spec/show-with-tags.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/show.json b/server/sonar-web/src/test/json/issues-spec/show.json
index c125f5f96c2..c125f5f96c2 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/show.json
+++ b/server/sonar-web/src/test/json/issues-spec/show.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/tags-modified.json b/server/sonar-web/src/test/json/issues-spec/tags-modified.json
index d1b53890ee3..d1b53890ee3 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/tags-modified.json
+++ b/server/sonar-web/src/test/json/issues-spec/tags-modified.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/tags.json b/server/sonar-web/src/test/json/issues-spec/tags.json
index af6bc92e0b4..af6bc92e0b4 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/issues-spec/tags.json
+++ b/server/sonar-web/src/test/json/issues-spec/tags.json
diff --git a/server/sonar-web/src/test/json/project-issues-filter-widget/unresolved-issues-by-date.json b/server/sonar-web/src/test/json/project-issues-filter-widget/unresolved-issues-by-date.json
new file mode 100644
index 00000000000..54153d9897b
--- /dev/null
+++ b/server/sonar-web/src/test/json/project-issues-filter-widget/unresolved-issues-by-date.json
@@ -0,0 +1,32 @@
+{
+ "total": 6851,
+ "p": 1,
+ "ps": 1,
+ "facets": [
+ {
+ "property": "createdAt",
+ "values": [
+ {
+ "val": "2011-01-01T01:00:00+0000",
+ "count": 72
+ },
+ {
+ "val": "2012-01-01T01:00:00+0000",
+ "count": 64
+ },
+ {
+ "val": "2013-01-01T01:00:00+0000",
+ "count": 1262
+ },
+ {
+ "val": "2014-01-01T01:00:00+0000",
+ "count": 3729
+ },
+ {
+ "val": "2015-01-01T01:00:00+0000",
+ "count": 1724
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/test/json/project-issues-filter-widget/unresolved-issues-by-severity-with-differential-period.json b/server/sonar-web/src/test/json/project-issues-filter-widget/unresolved-issues-by-severity-with-differential-period.json
new file mode 100644
index 00000000000..afa5ed4f5cc
--- /dev/null
+++ b/server/sonar-web/src/test/json/project-issues-filter-widget/unresolved-issues-by-severity-with-differential-period.json
@@ -0,0 +1,32 @@
+{
+ "total": 549,
+ "p": 1,
+ "ps": 1,
+ "facets": [
+ {
+ "property": "severities",
+ "values": [
+ {
+ "val": "MAJOR",
+ "count": 306
+ },
+ {
+ "val": "MINOR",
+ "count": 135
+ },
+ {
+ "val": "CRITICAL",
+ "count": 59
+ },
+ {
+ "val": "INFO",
+ "count": 49
+ },
+ {
+ "val": "BLOCKER",
+ "count": 0
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/test/json/project-issues-filter-widget/unresolved-issues-by-severity.json b/server/sonar-web/src/test/json/project-issues-filter-widget/unresolved-issues-by-severity.json
new file mode 100644
index 00000000000..f261766748c
--- /dev/null
+++ b/server/sonar-web/src/test/json/project-issues-filter-widget/unresolved-issues-by-severity.json
@@ -0,0 +1,32 @@
+{
+ "total": 6851,
+ "p": 1,
+ "ps": 1,
+ "facets": [
+ {
+ "property": "severities",
+ "values": [
+ {
+ "val": "MAJOR",
+ "count": 5027
+ },
+ {
+ "val": "INFO",
+ "count": 1178
+ },
+ {
+ "val": "MINOR",
+ "count": 540
+ },
+ {
+ "val": "CRITICAL",
+ "count": 105
+ },
+ {
+ "val": "BLOCKER",
+ "count": 1
+ }
+ ]
+ }
+ ]
+}
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/quality-gates-spec/app.json b/server/sonar-web/src/test/json/quality-gates-spec/app.json
index 6a38a3ed8b5..6a38a3ed8b5 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/quality-gates-spec/app.json
+++ b/server/sonar-web/src/test/json/quality-gates-spec/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/quality-gates-spec/list.json b/server/sonar-web/src/test/json/quality-gates-spec/list.json
index 9d7ac911b05..9d7ac911b05 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/quality-gates-spec/list.json
+++ b/server/sonar-web/src/test/json/quality-gates-spec/list.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/quality-gates-spec/show.json b/server/sonar-web/src/test/json/quality-gates-spec/show.json
index bc36acb897e..bc36acb897e 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/quality-gates-spec/show.json
+++ b/server/sonar-web/src/test/json/quality-gates-spec/show.json
diff --git a/server/sonar-web/src/test/json/source-viewer-coverage/app.json b/server/sonar-web/src/test/json/source-viewer-coverage/app.json
new file mode 100644
index 00000000000..bfee785a15c
--- /dev/null
+++ b/server/sonar-web/src/test/json/source-viewer-coverage/app.json
@@ -0,0 +1,19 @@
+{
+ "uuid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaaa",
+ "key": "sample:sample",
+ "path": "sample/path",
+ "name": "Sample",
+ "longName": "Sample",
+ "q": "FIL",
+ "subProject": "sample:subproject",
+ "subProjectName": "Sample Sub-Project",
+ "project": "sample:project",
+ "projectName": "Sample Project",
+ "fav": false,
+ "canMarkAsFavourite": true,
+ "canCreateManualIssue": true,
+ "measures": {
+ "lines": "20",
+ "duplicationDensity": "25%"
+ }
+}
diff --git a/server/sonar-web/src/test/json/source-viewer-coverage/issues.json b/server/sonar-web/src/test/json/source-viewer-coverage/issues.json
new file mode 100644
index 00000000000..40edd884b11
--- /dev/null
+++ b/server/sonar-web/src/test/json/source-viewer-coverage/issues.json
@@ -0,0 +1,14 @@
+{
+ "total": 0,
+ "p": 1,
+ "ps": 100,
+ "issues": [],
+ "maxResultsReached": false,
+ "paging": {
+ "pageIndex": 1,
+ "pageSize": 100,
+ "total": 0,
+ "fTotal": "0",
+ "pages": 1
+ }
+}
diff --git a/server/sonar-web/src/test/json/source-viewer-coverage/lines.json b/server/sonar-web/src/test/json/source-viewer-coverage/lines.json
new file mode 100644
index 00000000000..3b0947ab08b
--- /dev/null
+++ b/server/sonar-web/src/test/json/source-viewer-coverage/lines.json
@@ -0,0 +1,18 @@
+{"sources": [
+ { "line": 1, "code": "line 1" },
+ { "line": 2, "code": "line 2" },
+ { "line": 3, "code": "line 3" },
+ { "line": 4, "code": "line 4" },
+ { "line": 5, "code": "line 5" },
+ { "line": 6, "code": "line 6" },
+ { "line": 7, "code": "line 7" },
+ { "line": 8, "code": "line 8" },
+ { "line": 9, "code": "line 9" },
+ { "line": 10, "code": "line 10" },
+ { "line": 11, "code": "line 11", "utLineHits": 3 },
+ { "line": 16, "code": "line 16" },
+ { "line": 17, "code": "line 17" },
+ { "line": 18, "code": "line 18" },
+ { "line": 19, "code": "line 19" },
+ { "line": 20, "code": "line 20" }
+]}
diff --git a/server/sonar-web/src/test/json/source-viewer-coverage/test-cases.json b/server/sonar-web/src/test/json/source-viewer-coverage/test-cases.json
new file mode 100644
index 00000000000..db0ef3fb827
--- /dev/null
+++ b/server/sonar-web/src/test/json/source-viewer-coverage/test-cases.json
@@ -0,0 +1,17 @@
+{
+ "tests": [
+ {
+ "name": "sampleTest",
+ "status": "OK",
+ "durationInMs": 2,
+ "_ref": "1"
+ }
+ ],
+ "files": {
+ "1": {
+ "uuid": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbbb",
+ "key": "test:sample",
+ "longName": "SampleTest"
+ }
+ }
+}
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue/api-rules-search.json b/server/sonar-web/src/test/json/source-viewer-create-manual-issue/api-rules-search.json
index 9a176d3e06a..9a176d3e06a 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue/api-rules-search.json
+++ b/server/sonar-web/src/test/json/source-viewer-create-manual-issue/api-rules-search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue/app.json b/server/sonar-web/src/test/json/source-viewer-create-manual-issue/app.json
index dd6a3fb900f..dd6a3fb900f 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue/app.json
+++ b/server/sonar-web/src/test/json/source-viewer-create-manual-issue/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue/create-issue.json b/server/sonar-web/src/test/json/source-viewer-create-manual-issue/create-issue.json
index db69ef34a93..db69ef34a93 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue/create-issue.json
+++ b/server/sonar-web/src/test/json/source-viewer-create-manual-issue/create-issue.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue/issues.json b/server/sonar-web/src/test/json/source-viewer-create-manual-issue/issues.json
index 0b1601191ef..0b1601191ef 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue/issues.json
+++ b/server/sonar-web/src/test/json/source-viewer-create-manual-issue/issues.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue/lines.json b/server/sonar-web/src/test/json/source-viewer-create-manual-issue/lines.json
index e33d02b2465..2983d8e4728 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-create-manual-issue/lines.json
+++ b/server/sonar-web/src/test/json/source-viewer-create-manual-issue/lines.json
@@ -313,7 +313,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 46,
@@ -321,7 +321,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 47,
@@ -329,7 +329,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 48,
@@ -337,7 +337,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 49,
@@ -359,7 +359,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 52,
@@ -367,7 +367,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 53,
@@ -396,7 +396,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 57,
@@ -404,7 +404,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 58,
@@ -433,7 +433,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 62,
@@ -441,7 +441,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 63,
@@ -470,7 +470,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 67,
@@ -478,7 +478,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 68,
@@ -514,7 +514,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 73,
@@ -522,7 +522,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 74,
@@ -530,7 +530,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 75,
@@ -538,7 +538,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 76,
@@ -546,7 +546,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 77,
@@ -603,7 +603,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 85,
@@ -611,7 +611,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 86,
@@ -668,7 +668,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 94,
@@ -676,7 +676,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 95,
@@ -733,7 +733,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 103,
@@ -741,7 +741,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 104,
@@ -798,7 +798,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 112,
@@ -806,7 +806,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 113,
@@ -856,7 +856,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 120,
@@ -864,9 +864,9 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1,
- "conditions": 2,
- "coveredConditions": 2
+ "utLineHits": 1,
+ "utConditions": 2,
+ "utCoveredConditions": 2
},
{
"line": 121,
@@ -874,7 +874,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 122,
@@ -889,7 +889,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 124,
@@ -897,7 +897,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 125,
@@ -912,7 +912,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 127,
@@ -948,7 +948,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 132,
@@ -956,7 +956,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 133,
@@ -985,7 +985,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 137,
@@ -993,7 +993,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 138,
@@ -1022,7 +1022,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 142,
@@ -1030,7 +1030,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 143,
@@ -1059,7 +1059,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 147,
@@ -1067,7 +1067,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 148,
@@ -1103,7 +1103,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e108f5de333cf36aff978aa03940590f9caca9fc",
"scmDate": "2013-10-10T12:18:02+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 153,
@@ -1111,7 +1111,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e108f5de333cf36aff978aa03940590f9caca9fc",
"scmDate": "2013-10-10T12:18:02+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 154,
@@ -1119,7 +1119,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e108f5de333cf36aff978aa03940590f9caca9fc",
"scmDate": "2013-10-10T12:18:02+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 155,
@@ -1134,7 +1134,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e108f5de333cf36aff978aa03940590f9caca9fc",
"scmDate": "2013-10-10T12:18:02+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 157,
@@ -1170,7 +1170,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 162,
@@ -1178,7 +1178,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 163,
@@ -1207,7 +1207,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 167,
@@ -1215,7 +1215,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 168,
@@ -1244,7 +1244,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 172,
@@ -1252,7 +1252,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 173,
@@ -1281,7 +1281,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 177,
@@ -1289,7 +1289,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 178,
@@ -1325,7 +1325,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "6f1161efb92298ace498df544e38f6f97216ec36",
"scmDate": "2013-04-26T15:19:16+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 183,
@@ -1333,7 +1333,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 184,
@@ -1348,7 +1348,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 186,
@@ -1419,7 +1419,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 196,
@@ -1427,7 +1427,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 197,
@@ -1456,7 +1456,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 201,
@@ -1464,7 +1464,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 202,
@@ -1493,7 +1493,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 206,
@@ -1501,7 +1501,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 207,
@@ -1530,7 +1530,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 211,
@@ -1538,7 +1538,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 212,
@@ -1574,7 +1574,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 217,
@@ -1582,7 +1582,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 218,
@@ -1590,7 +1590,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 219,
@@ -1598,7 +1598,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 220,
@@ -1606,7 +1606,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 221,
@@ -1614,7 +1614,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 222,
@@ -1678,7 +1678,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 231,
@@ -1686,7 +1686,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 232,
@@ -1694,7 +1694,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 233,
@@ -1702,7 +1702,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 234,
@@ -1710,7 +1710,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 235,
@@ -1718,7 +1718,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 236,
@@ -1803,7 +1803,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 248,
@@ -1811,7 +1811,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 249,
@@ -1819,7 +1819,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 250,
@@ -1827,7 +1827,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 251,
@@ -1835,7 +1835,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 252,
@@ -1843,9 +1843,9 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1,
- "conditions": 2,
- "coveredConditions": 2
+ "utLineHits": 1,
+ "utConditions": 2,
+ "utCoveredConditions": 2
},
{
"line": 253,
@@ -1853,7 +1853,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 254,
@@ -1868,7 +1868,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 256,
@@ -1876,7 +1876,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 257,
@@ -1884,7 +1884,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 258,
@@ -1934,7 +1934,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 265,
@@ -1942,7 +1942,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 266,
@@ -1950,7 +1950,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 267,
@@ -1958,7 +1958,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 268,
@@ -1966,7 +1966,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 269,
@@ -1974,7 +1974,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 270,
@@ -1982,9 +1982,9 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1,
- "conditions": 2,
- "coveredConditions": 2
+ "utLineHits": 1,
+ "utConditions": 2,
+ "utCoveredConditions": 2
},
{
"line": 271,
@@ -1992,7 +1992,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 272,
@@ -2007,7 +2007,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 274,
@@ -2015,7 +2015,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 275,
@@ -2023,7 +2023,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 276,
@@ -2101,7 +2101,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 287,
@@ -2109,7 +2109,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 288,
@@ -2117,7 +2117,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 289,
@@ -2125,7 +2125,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 290,
@@ -2133,9 +2133,9 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1,
- "conditions": 2,
- "coveredConditions": 2
+ "utLineHits": 1,
+ "utConditions": 2,
+ "utCoveredConditions": 2
},
{
"line": 291,
@@ -2143,7 +2143,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 292,
@@ -2158,7 +2158,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 294,
@@ -2166,7 +2166,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 295,
@@ -2174,7 +2174,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 296,
@@ -2238,7 +2238,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "171cd79c0b5152461434951ed5d6e5e58849a7b7",
"scmDate": "2014-04-23T14:41:32+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 305,
@@ -2246,7 +2246,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "171cd79c0b5152461434951ed5d6e5e58849a7b7",
"scmDate": "2014-04-23T14:41:32+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 306,
@@ -2254,7 +2254,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "171cd79c0b5152461434951ed5d6e5e58849a7b7",
"scmDate": "2014-04-23T14:41:32+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 307,
@@ -2262,7 +2262,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 308,
@@ -2270,7 +2270,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 309,
@@ -2278,7 +2278,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "171cd79c0b5152461434951ed5d6e5e58849a7b7",
"scmDate": "2014-04-23T14:41:32+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 310,
@@ -2286,7 +2286,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "904b462c56317b1fb5a616534bd58aa9c9097d0b",
"scmDate": "2014-06-20T14:13:01+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 311,
@@ -2322,7 +2322,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "904b462c56317b1fb5a616534bd58aa9c9097d0b",
"scmDate": "2014-06-20T14:13:01+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 316,
@@ -2379,7 +2379,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 324,
@@ -2387,7 +2387,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 325,
@@ -2395,7 +2395,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 326,
@@ -2403,7 +2403,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 327,
@@ -2411,7 +2411,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 328,
@@ -2419,7 +2419,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "46395126b184c343df5471a147cdb48133f59f6f",
"scmDate": "2014-04-23T14:41:32+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 329,
@@ -2427,7 +2427,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "904b462c56317b1fb5a616534bd58aa9c9097d0b",
"scmDate": "2014-06-20T14:13:01+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 330,
@@ -2491,7 +2491,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 339,
@@ -2499,7 +2499,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 340,
@@ -2507,7 +2507,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 341,
@@ -2515,7 +2515,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 342,
@@ -2523,7 +2523,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 343,
@@ -2531,7 +2531,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "904b462c56317b1fb5a616534bd58aa9c9097d0b",
"scmDate": "2014-06-20T14:13:01+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 344,
@@ -2567,7 +2567,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 349,
@@ -2575,7 +2575,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 350,
@@ -2583,7 +2583,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 351,
@@ -2612,7 +2612,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 355,
@@ -2620,7 +2620,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 356,
@@ -2628,7 +2628,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 357,
@@ -2657,7 +2657,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 361,
@@ -2665,7 +2665,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 362,
@@ -2673,7 +2673,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 363,
@@ -2695,7 +2695,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 366,
@@ -2703,7 +2703,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 367,
@@ -2711,7 +2711,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 368,
@@ -2733,7 +2733,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 371,
@@ -2741,7 +2741,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 372,
@@ -2749,7 +2749,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 373,
@@ -2771,7 +2771,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 376,
@@ -2779,9 +2779,9 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0,
- "conditions": 2,
- "coveredConditions": 0
+ "utLineHits": 0,
+ "utConditions": 2,
+ "utCoveredConditions": 0
},
{
"line": 377,
@@ -2789,7 +2789,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 378,
@@ -2804,7 +2804,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 380,
@@ -2868,7 +2868,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 389,
@@ -2876,7 +2876,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 390,
@@ -2884,7 +2884,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 391,
@@ -2913,7 +2913,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 395,
@@ -2970,7 +2970,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 403,
@@ -2978,7 +2978,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -2987,7 +2987,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -2996,7 +2996,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -3037,7 +3037,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -3046,7 +3046,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 0,
+ "utLineHits": 0,
"duplicated": true
},
{
@@ -3055,7 +3055,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 0,
+ "utLineHits": 0,
"duplicated": true
},
{
@@ -3118,7 +3118,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 421,
@@ -3126,7 +3126,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 422,
@@ -3134,7 +3134,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 423,
@@ -3142,7 +3142,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 424,
@@ -3150,9 +3150,9 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 1,
- "conditions": 2,
- "coveredConditions": 1
+ "utLineHits": 1,
+ "utConditions": 2,
+ "utCoveredConditions": 1
},
{
"line": 425,
@@ -3160,7 +3160,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 426,
@@ -3175,7 +3175,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 428,
@@ -3211,7 +3211,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "34cce8e330192c56a159a856ebd8072d38299087",
"scmDate": "2014-02-24T14:21:50+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 433,
@@ -3261,7 +3261,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 440,
@@ -3269,7 +3269,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 441,
@@ -3277,7 +3277,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 442,
@@ -3306,7 +3306,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 446,
@@ -3363,7 +3363,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 454,
@@ -3371,7 +3371,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -3380,7 +3380,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -3389,7 +3389,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -3430,7 +3430,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -3439,7 +3439,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 0,
+ "utLineHits": 0,
"duplicated": true
},
{
@@ -3448,7 +3448,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 0,
+ "utLineHits": 0,
"duplicated": true
},
{
@@ -3511,7 +3511,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 472,
@@ -3519,7 +3519,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 473,
@@ -3527,7 +3527,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 474,
@@ -3535,7 +3535,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 475,
@@ -3543,9 +3543,9 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1,
- "conditions": 2,
- "coveredConditions": 1
+ "utLineHits": 1,
+ "utConditions": 2,
+ "utCoveredConditions": 1
},
{
"line": 476,
@@ -3553,7 +3553,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 477,
@@ -3561,7 +3561,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 478,
@@ -3569,7 +3569,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 479,
@@ -3577,9 +3577,9 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1,
- "conditions": 2,
- "coveredConditions": 2
+ "utLineHits": 1,
+ "utConditions": 2,
+ "utCoveredConditions": 2
},
{
"line": 480,
@@ -3587,7 +3587,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 481,
@@ -3602,7 +3602,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 483,
@@ -3617,7 +3617,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 485,
@@ -3653,7 +3653,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "34cce8e330192c56a159a856ebd8072d38299087",
"scmDate": "2014-02-24T14:21:50+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 490,
@@ -3710,7 +3710,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 498,
@@ -3718,7 +3718,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 499,
@@ -3726,7 +3726,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 500,
@@ -3734,7 +3734,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 501,
@@ -3756,7 +3756,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 504,
@@ -3792,7 +3792,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 509,
@@ -3828,7 +3828,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 514,
diff --git a/server/sonar-web/src/test/json/source-viewer-duplications/app.json b/server/sonar-web/src/test/json/source-viewer-duplications/app.json
new file mode 100644
index 00000000000..bfee785a15c
--- /dev/null
+++ b/server/sonar-web/src/test/json/source-viewer-duplications/app.json
@@ -0,0 +1,19 @@
+{
+ "uuid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaaa",
+ "key": "sample:sample",
+ "path": "sample/path",
+ "name": "Sample",
+ "longName": "Sample",
+ "q": "FIL",
+ "subProject": "sample:subproject",
+ "subProjectName": "Sample Sub-Project",
+ "project": "sample:project",
+ "projectName": "Sample Project",
+ "fav": false,
+ "canMarkAsFavourite": true,
+ "canCreateManualIssue": true,
+ "measures": {
+ "lines": "20",
+ "duplicationDensity": "25%"
+ }
+}
diff --git a/server/sonar-web/src/test/json/source-viewer-duplications/duplications.json b/server/sonar-web/src/test/json/source-viewer-duplications/duplications.json
new file mode 100644
index 00000000000..7da4385b3a5
--- /dev/null
+++ b/server/sonar-web/src/test/json/source-viewer-duplications/duplications.json
@@ -0,0 +1,41 @@
+{
+ "duplications": [
+ {
+ "blocks": [
+ {
+ "from": 11,
+ "size": 5,
+ "_ref": "1"
+ },
+ {
+ "from": 12,
+ "size": 5,
+ "_ref": "2"
+ }
+ ]
+ }
+ ],
+ "files": {
+ "2": {
+ "uuid": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbbb",
+ "key": "duplicated:duplicated",
+ "name": "Duplicated",
+ "q": "FIL",
+ "subProject": "duplicated:subproject",
+ "subProjectName": "Duplicated Sub-Project",
+ "project": "duplicated:project",
+ "projectName": "Duplicated Project"
+ },
+ "1": {
+ "uuid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaaa",
+ "key": "sample:sample",
+ "name": "Sample",
+ "longName": "Sample",
+ "q": "FIL",
+ "subProject": "sample:subproject",
+ "subProjectName": "Sample Sub-Project",
+ "project": "sample:project",
+ "projectName": "Sample Project"
+ }
+ }
+}
diff --git a/server/sonar-web/src/test/json/source-viewer-duplications/issues.json b/server/sonar-web/src/test/json/source-viewer-duplications/issues.json
new file mode 100644
index 00000000000..40edd884b11
--- /dev/null
+++ b/server/sonar-web/src/test/json/source-viewer-duplications/issues.json
@@ -0,0 +1,14 @@
+{
+ "total": 0,
+ "p": 1,
+ "ps": 100,
+ "issues": [],
+ "maxResultsReached": false,
+ "paging": {
+ "pageIndex": 1,
+ "pageSize": 100,
+ "total": 0,
+ "fTotal": "0",
+ "pages": 1
+ }
+}
diff --git a/server/sonar-web/src/test/json/source-viewer-duplications/lines.json b/server/sonar-web/src/test/json/source-viewer-duplications/lines.json
new file mode 100644
index 00000000000..5fc7b0cb4de
--- /dev/null
+++ b/server/sonar-web/src/test/json/source-viewer-duplications/lines.json
@@ -0,0 +1,22 @@
+{"sources": [
+ { "line": 1, "code": "line 1" },
+ { "line": 2, "code": "line 2" },
+ { "line": 3, "code": "line 3" },
+ { "line": 4, "code": "line 4" },
+ { "line": 5, "code": "line 5" },
+ { "line": 6, "code": "line 6" },
+ { "line": 7, "code": "line 7" },
+ { "line": 8, "code": "line 8" },
+ { "line": 9, "code": "line 9" },
+ { "line": 10, "code": "line 10" },
+ { "line": 11, "code": "line 11", "duplicated": true },
+ { "line": 12, "code": "line 12", "duplicated": true },
+ { "line": 13, "code": "line 13", "duplicated": true },
+ { "line": 14, "code": "line 14", "duplicated": true },
+ { "line": 15, "code": "line 15", "duplicated": true },
+ { "line": 16, "code": "line 16" },
+ { "line": 17, "code": "line 17" },
+ { "line": 18, "code": "line 18" },
+ { "line": 19, "code": "line 19" },
+ { "line": 20, "code": "line 20" }
+]}
diff --git a/server/sonar-web/src/test/json/source-viewer-scm/app.json b/server/sonar-web/src/test/json/source-viewer-scm/app.json
new file mode 100644
index 00000000000..bfee785a15c
--- /dev/null
+++ b/server/sonar-web/src/test/json/source-viewer-scm/app.json
@@ -0,0 +1,19 @@
+{
+ "uuid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaaa",
+ "key": "sample:sample",
+ "path": "sample/path",
+ "name": "Sample",
+ "longName": "Sample",
+ "q": "FIL",
+ "subProject": "sample:subproject",
+ "subProjectName": "Sample Sub-Project",
+ "project": "sample:project",
+ "projectName": "Sample Project",
+ "fav": false,
+ "canMarkAsFavourite": true,
+ "canCreateManualIssue": true,
+ "measures": {
+ "lines": "20",
+ "duplicationDensity": "25%"
+ }
+}
diff --git a/server/sonar-web/src/test/json/source-viewer-scm/issues.json b/server/sonar-web/src/test/json/source-viewer-scm/issues.json
new file mode 100644
index 00000000000..40edd884b11
--- /dev/null
+++ b/server/sonar-web/src/test/json/source-viewer-scm/issues.json
@@ -0,0 +1,14 @@
+{
+ "total": 0,
+ "p": 1,
+ "ps": 100,
+ "issues": [],
+ "maxResultsReached": false,
+ "paging": {
+ "pageIndex": 1,
+ "pageSize": 100,
+ "total": 0,
+ "fTotal": "0",
+ "pages": 1
+ }
+}
diff --git a/server/sonar-web/src/test/json/source-viewer-scm/lines.json b/server/sonar-web/src/test/json/source-viewer-scm/lines.json
new file mode 100644
index 00000000000..c934ddd0e0a
--- /dev/null
+++ b/server/sonar-web/src/test/json/source-viewer-scm/lines.json
@@ -0,0 +1,11 @@
+{
+ "sources": [
+ {
+ "line": 1,
+ "code": "line 1",
+ "scmAuthor": "sample-author",
+ "scmDate": "2015-01-01T00:00:00+0000",
+ "scmRevision": "samplerevision"
+ }
+ ]
+}
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-not-show-source-if-no-permission/api-components-app.json b/server/sonar-web/src/test/json/source-viewer-should-not-show-source-if-no-permission/api-components-app.json
index db4620fbc23..db4620fbc23 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-not-show-source-if-no-permission/api-components-app.json
+++ b/server/sonar-web/src/test/json/source-viewer-should-not-show-source-if-no-permission/api-components-app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-not-show-source-if-no-permission/api-issues-search.json b/server/sonar-web/src/test/json/source-viewer-should-not-show-source-if-no-permission/api-issues-search.json
index 73d6a9fcf3d..73d6a9fcf3d 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-not-show-source-if-no-permission/api-issues-search.json
+++ b/server/sonar-web/src/test/json/source-viewer-should-not-show-source-if-no-permission/api-issues-search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-open-in-new-window/api-components-app.json b/server/sonar-web/src/test/json/source-viewer-should-open-in-new-window/api-components-app.json
index 5af670f2d91..5af670f2d91 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-open-in-new-window/api-components-app.json
+++ b/server/sonar-web/src/test/json/source-viewer-should-open-in-new-window/api-components-app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-open-in-new-window/api-issues-search.json b/server/sonar-web/src/test/json/source-viewer-should-open-in-new-window/api-issues-search.json
index 73d6a9fcf3d..73d6a9fcf3d 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-open-in-new-window/api-issues-search.json
+++ b/server/sonar-web/src/test/json/source-viewer-should-open-in-new-window/api-issues-search.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-open-in-new-window/api-sources-lines.json b/server/sonar-web/src/test/json/source-viewer-should-open-in-new-window/api-sources-lines.json
index b095d82408f..b095d82408f 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-should-open-in-new-window/api-sources-lines.json
+++ b/server/sonar-web/src/test/json/source-viewer-should-open-in-new-window/api-sources-lines.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/app-not-logged-in.json b/server/sonar-web/src/test/json/source-viewer-spec/app-not-logged-in.json
index e8b7516ee3c..e8b7516ee3c 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/app-not-logged-in.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/app-not-logged-in.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/app.json b/server/sonar-web/src/test/json/source-viewer-spec/app.json
index dd6a3fb900f..dd6a3fb900f 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/app.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/coverage.json b/server/sonar-web/src/test/json/source-viewer-spec/coverage.json
index ace41da645e..ace41da645e 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/coverage.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/coverage.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/cross-project-duplications.json b/server/sonar-web/src/test/json/source-viewer-spec/cross-project-duplications.json
index cd445d5f5b2..cd445d5f5b2 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/cross-project-duplications.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/cross-project-duplications.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/duplications-in-deleted-files.json b/server/sonar-web/src/test/json/source-viewer-spec/duplications-in-deleted-files.json
index 9de23d1ce7d..9de23d1ce7d 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/duplications-in-deleted-files.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/duplications-in-deleted-files.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/duplications.json b/server/sonar-web/src/test/json/source-viewer-spec/duplications.json
index f77e92bef26..f77e92bef26 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/duplications.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/duplications.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/issues.json b/server/sonar-web/src/test/json/source-viewer-spec/issues.json
index 0b1601191ef..0b1601191ef 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/issues.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/issues.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/lines.json b/server/sonar-web/src/test/json/source-viewer-spec/lines.json
index e33d02b2465..2983d8e4728 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/lines.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/lines.json
@@ -313,7 +313,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 46,
@@ -321,7 +321,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 47,
@@ -329,7 +329,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 48,
@@ -337,7 +337,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 49,
@@ -359,7 +359,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 52,
@@ -367,7 +367,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 53,
@@ -396,7 +396,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 57,
@@ -404,7 +404,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 58,
@@ -433,7 +433,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 62,
@@ -441,7 +441,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 63,
@@ -470,7 +470,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 67,
@@ -478,7 +478,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 68,
@@ -514,7 +514,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 73,
@@ -522,7 +522,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 74,
@@ -530,7 +530,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 75,
@@ -538,7 +538,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 76,
@@ -546,7 +546,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 77,
@@ -603,7 +603,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 85,
@@ -611,7 +611,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 86,
@@ -668,7 +668,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 94,
@@ -676,7 +676,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 95,
@@ -733,7 +733,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 103,
@@ -741,7 +741,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 104,
@@ -798,7 +798,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 112,
@@ -806,7 +806,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 113,
@@ -856,7 +856,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 120,
@@ -864,9 +864,9 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1,
- "conditions": 2,
- "coveredConditions": 2
+ "utLineHits": 1,
+ "utConditions": 2,
+ "utCoveredConditions": 2
},
{
"line": 121,
@@ -874,7 +874,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 122,
@@ -889,7 +889,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 124,
@@ -897,7 +897,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 125,
@@ -912,7 +912,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 127,
@@ -948,7 +948,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 132,
@@ -956,7 +956,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 133,
@@ -985,7 +985,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 137,
@@ -993,7 +993,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 138,
@@ -1022,7 +1022,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 142,
@@ -1030,7 +1030,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 143,
@@ -1059,7 +1059,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 147,
@@ -1067,7 +1067,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 148,
@@ -1103,7 +1103,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e108f5de333cf36aff978aa03940590f9caca9fc",
"scmDate": "2013-10-10T12:18:02+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 153,
@@ -1111,7 +1111,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e108f5de333cf36aff978aa03940590f9caca9fc",
"scmDate": "2013-10-10T12:18:02+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 154,
@@ -1119,7 +1119,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e108f5de333cf36aff978aa03940590f9caca9fc",
"scmDate": "2013-10-10T12:18:02+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 155,
@@ -1134,7 +1134,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e108f5de333cf36aff978aa03940590f9caca9fc",
"scmDate": "2013-10-10T12:18:02+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 157,
@@ -1170,7 +1170,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 162,
@@ -1178,7 +1178,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 163,
@@ -1207,7 +1207,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 167,
@@ -1215,7 +1215,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 168,
@@ -1244,7 +1244,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 172,
@@ -1252,7 +1252,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 173,
@@ -1281,7 +1281,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 177,
@@ -1289,7 +1289,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 178,
@@ -1325,7 +1325,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "6f1161efb92298ace498df544e38f6f97216ec36",
"scmDate": "2013-04-26T15:19:16+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 183,
@@ -1333,7 +1333,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 184,
@@ -1348,7 +1348,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 186,
@@ -1419,7 +1419,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 196,
@@ -1427,7 +1427,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 197,
@@ -1456,7 +1456,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 201,
@@ -1464,7 +1464,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 202,
@@ -1493,7 +1493,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 206,
@@ -1501,7 +1501,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 207,
@@ -1530,7 +1530,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 211,
@@ -1538,7 +1538,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 212,
@@ -1574,7 +1574,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 217,
@@ -1582,7 +1582,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 218,
@@ -1590,7 +1590,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 219,
@@ -1598,7 +1598,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 220,
@@ -1606,7 +1606,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 221,
@@ -1614,7 +1614,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 222,
@@ -1678,7 +1678,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 231,
@@ -1686,7 +1686,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 232,
@@ -1694,7 +1694,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 233,
@@ -1702,7 +1702,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 234,
@@ -1710,7 +1710,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 235,
@@ -1718,7 +1718,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 236,
@@ -1803,7 +1803,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 248,
@@ -1811,7 +1811,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 249,
@@ -1819,7 +1819,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 250,
@@ -1827,7 +1827,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 251,
@@ -1835,7 +1835,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 252,
@@ -1843,9 +1843,9 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1,
- "conditions": 2,
- "coveredConditions": 2
+ "utLineHits": 1,
+ "utConditions": 2,
+ "utCoveredConditions": 2
},
{
"line": 253,
@@ -1853,7 +1853,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 254,
@@ -1868,7 +1868,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 256,
@@ -1876,7 +1876,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 257,
@@ -1884,7 +1884,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 258,
@@ -1934,7 +1934,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 265,
@@ -1942,7 +1942,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 266,
@@ -1950,7 +1950,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 267,
@@ -1958,7 +1958,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 268,
@@ -1966,7 +1966,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 269,
@@ -1974,7 +1974,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 270,
@@ -1982,9 +1982,9 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1,
- "conditions": 2,
- "coveredConditions": 2
+ "utLineHits": 1,
+ "utConditions": 2,
+ "utCoveredConditions": 2
},
{
"line": 271,
@@ -1992,7 +1992,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 272,
@@ -2007,7 +2007,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 274,
@@ -2015,7 +2015,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 275,
@@ -2023,7 +2023,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 276,
@@ -2101,7 +2101,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 287,
@@ -2109,7 +2109,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 288,
@@ -2117,7 +2117,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 289,
@@ -2125,7 +2125,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 290,
@@ -2133,9 +2133,9 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1,
- "conditions": 2,
- "coveredConditions": 2
+ "utLineHits": 1,
+ "utConditions": 2,
+ "utCoveredConditions": 2
},
{
"line": 291,
@@ -2143,7 +2143,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 292,
@@ -2158,7 +2158,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 294,
@@ -2166,7 +2166,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 295,
@@ -2174,7 +2174,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 296,
@@ -2238,7 +2238,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "171cd79c0b5152461434951ed5d6e5e58849a7b7",
"scmDate": "2014-04-23T14:41:32+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 305,
@@ -2246,7 +2246,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "171cd79c0b5152461434951ed5d6e5e58849a7b7",
"scmDate": "2014-04-23T14:41:32+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 306,
@@ -2254,7 +2254,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "171cd79c0b5152461434951ed5d6e5e58849a7b7",
"scmDate": "2014-04-23T14:41:32+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 307,
@@ -2262,7 +2262,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 308,
@@ -2270,7 +2270,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 309,
@@ -2278,7 +2278,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "171cd79c0b5152461434951ed5d6e5e58849a7b7",
"scmDate": "2014-04-23T14:41:32+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 310,
@@ -2286,7 +2286,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "904b462c56317b1fb5a616534bd58aa9c9097d0b",
"scmDate": "2014-06-20T14:13:01+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 311,
@@ -2322,7 +2322,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "904b462c56317b1fb5a616534bd58aa9c9097d0b",
"scmDate": "2014-06-20T14:13:01+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 316,
@@ -2379,7 +2379,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 324,
@@ -2387,7 +2387,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 325,
@@ -2395,7 +2395,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 326,
@@ -2403,7 +2403,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 327,
@@ -2411,7 +2411,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 328,
@@ -2419,7 +2419,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "46395126b184c343df5471a147cdb48133f59f6f",
"scmDate": "2014-04-23T14:41:32+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 329,
@@ -2427,7 +2427,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "904b462c56317b1fb5a616534bd58aa9c9097d0b",
"scmDate": "2014-06-20T14:13:01+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 330,
@@ -2491,7 +2491,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 339,
@@ -2499,7 +2499,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 340,
@@ -2507,7 +2507,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 341,
@@ -2515,7 +2515,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 342,
@@ -2523,7 +2523,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
"scmDate": "2013-04-16T17:26:34+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 343,
@@ -2531,7 +2531,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "904b462c56317b1fb5a616534bd58aa9c9097d0b",
"scmDate": "2014-06-20T14:13:01+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 344,
@@ -2567,7 +2567,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 349,
@@ -2575,7 +2575,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 350,
@@ -2583,7 +2583,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 351,
@@ -2612,7 +2612,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 355,
@@ -2620,7 +2620,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 356,
@@ -2628,7 +2628,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 357,
@@ -2657,7 +2657,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 361,
@@ -2665,7 +2665,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 362,
@@ -2673,7 +2673,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 363,
@@ -2695,7 +2695,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 366,
@@ -2703,7 +2703,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 367,
@@ -2711,7 +2711,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 368,
@@ -2733,7 +2733,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 371,
@@ -2741,7 +2741,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 372,
@@ -2749,7 +2749,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 373,
@@ -2771,7 +2771,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 376,
@@ -2779,9 +2779,9 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0,
- "conditions": 2,
- "coveredConditions": 0
+ "utLineHits": 0,
+ "utConditions": 2,
+ "utCoveredConditions": 0
},
{
"line": 377,
@@ -2789,7 +2789,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 378,
@@ -2804,7 +2804,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 380,
@@ -2868,7 +2868,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 389,
@@ -2876,7 +2876,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 390,
@@ -2884,7 +2884,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 391,
@@ -2913,7 +2913,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 395,
@@ -2970,7 +2970,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 403,
@@ -2978,7 +2978,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -2987,7 +2987,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -2996,7 +2996,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -3037,7 +3037,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -3046,7 +3046,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 0,
+ "utLineHits": 0,
"duplicated": true
},
{
@@ -3055,7 +3055,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 0,
+ "utLineHits": 0,
"duplicated": true
},
{
@@ -3118,7 +3118,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 421,
@@ -3126,7 +3126,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 422,
@@ -3134,7 +3134,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 423,
@@ -3142,7 +3142,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 424,
@@ -3150,9 +3150,9 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "babb50a4f143c312df1ba45955d3d589ecb2845f",
"scmDate": "2013-05-29T14:27:38+0200",
- "lineHits": 1,
- "conditions": 2,
- "coveredConditions": 1
+ "utLineHits": 1,
+ "utConditions": 2,
+ "utCoveredConditions": 1
},
{
"line": 425,
@@ -3160,7 +3160,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 426,
@@ -3175,7 +3175,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 428,
@@ -3211,7 +3211,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "34cce8e330192c56a159a856ebd8072d38299087",
"scmDate": "2014-02-24T14:21:50+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 433,
@@ -3261,7 +3261,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 440,
@@ -3269,7 +3269,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 441,
@@ -3277,7 +3277,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 442,
@@ -3306,7 +3306,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 446,
@@ -3363,7 +3363,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 454,
@@ -3371,7 +3371,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -3380,7 +3380,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -3389,7 +3389,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -3430,7 +3430,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1,
+ "utLineHits": 1,
"duplicated": true
},
{
@@ -3439,7 +3439,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 0,
+ "utLineHits": 0,
"duplicated": true
},
{
@@ -3448,7 +3448,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 0,
+ "utLineHits": 0,
"duplicated": true
},
{
@@ -3511,7 +3511,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 472,
@@ -3519,7 +3519,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 473,
@@ -3527,7 +3527,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 474,
@@ -3535,7 +3535,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 475,
@@ -3543,9 +3543,9 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1,
- "conditions": 2,
- "coveredConditions": 1
+ "utLineHits": 1,
+ "utConditions": 2,
+ "utCoveredConditions": 1
},
{
"line": 476,
@@ -3553,7 +3553,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 477,
@@ -3561,7 +3561,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 478,
@@ -3569,7 +3569,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 479,
@@ -3577,9 +3577,9 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1,
- "conditions": 2,
- "coveredConditions": 2
+ "utLineHits": 1,
+ "utConditions": 2,
+ "utCoveredConditions": 2
},
{
"line": 480,
@@ -3587,7 +3587,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 481,
@@ -3602,7 +3602,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 483,
@@ -3617,7 +3617,7 @@
"scmAuthor": "julien.henry@sonarsource.com",
"scmRevision": "cc071cc29e8c4d4592282313a3ca2ec376fd7f71",
"scmDate": "2014-05-01T00:00:12+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 485,
@@ -3653,7 +3653,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "34cce8e330192c56a159a856ebd8072d38299087",
"scmDate": "2014-02-24T14:21:50+0100",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 490,
@@ -3710,7 +3710,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "e486fe02a0a38d3d9fb70690f7870c77e2265254",
"scmDate": "2014-02-20T07:23:08+0100",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 498,
@@ -3718,7 +3718,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 499,
@@ -3726,7 +3726,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 500,
@@ -3734,7 +3734,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 501,
@@ -3756,7 +3756,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 504,
@@ -3792,7 +3792,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 1
+ "utLineHits": 1
},
{
"line": 509,
@@ -3828,7 +3828,7 @@
"scmAuthor": "simon.brandhof@gmail.com",
"scmRevision": "b5eb47872b34aa9d017dca62abfe49b2fd7af61b",
"scmDate": "2013-04-17T10:35:23+0200",
- "lineHits": 0
+ "utLineHits": 0
},
{
"line": 514,
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/resources-without-ncloc-data.json b/server/sonar-web/src/test/json/source-viewer-spec/resources-without-ncloc-data.json
index dfbacdf7b28..dfbacdf7b28 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/resources-without-ncloc-data.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/resources-without-ncloc-data.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/resources.json b/server/sonar-web/src/test/json/source-viewer-spec/resources.json
index 415718c7cd5..415718c7cd5 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/resources.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/resources.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/scm.json b/server/sonar-web/src/test/json/source-viewer-spec/scm.json
index ff89c9856ca..ff89c9856ca 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/scm.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/scm.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/source.json b/server/sonar-web/src/test/json/source-viewer-spec/source.json
index 1b32224e6a7..1b32224e6a7 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/source.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/source.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/test-cases.json b/server/sonar-web/src/test/json/source-viewer-spec/test-cases.json
index 233229a803b..233229a803b 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/test-cases.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/test-cases.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/tests/app.json b/server/sonar-web/src/test/json/source-viewer-spec/tests/app.json
index 873632ffd3b..873632ffd3b 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/tests/app.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/tests/app.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/tests/lines.json b/server/sonar-web/src/test/json/source-viewer-spec/tests/lines.json
index becc8c92f69..becc8c92f69 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/tests/lines.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/tests/lines.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/tests/tests.json b/server/sonar-web/src/test/json/source-viewer-spec/tests/tests.json
index 421cbb391b1..421cbb391b1 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/source-viewer-spec/tests/tests.json
+++ b/server/sonar-web/src/test/json/source-viewer-spec/tests/tests.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/treemap-spec/treemap-resources.json b/server/sonar-web/src/test/json/treemap-spec/treemap-resources.json
index bc1c20845fa..bc1c20845fa 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/treemap-spec/treemap-resources.json
+++ b/server/sonar-web/src/test/json/treemap-spec/treemap-resources.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/tests/treemap-spec/treemap.json b/server/sonar-web/src/test/json/treemap-spec/treemap.json
index 1125b3a7cf4..1125b3a7cf4 100644
--- a/server/sonar-web/src/main/js/tests/e2e/tests/treemap-spec/treemap.json
+++ b/server/sonar-web/src/test/json/treemap-spec/treemap.json
diff --git a/server/sonar-web/src/main/js/tests/e2e/lib.js b/server/sonar-web/src/test/lib.js
index 2c66e0e618a..82204cdacfe 100644
--- a/server/sonar-web/src/main/js/tests/e2e/lib.js
+++ b/server/sonar-web/src/test/lib.js
@@ -26,6 +26,7 @@ var getPort = function () {
};
var BASE_URL = 'http://localhost:' + getPort() + '/pages/',
+ BASE_ROOT_URL = 'http://localhost:' + getPort(),
WINDOW_WIDTH = 1200,
WINDOW_HEIGHT = 800;
@@ -54,7 +55,9 @@ exports.changeWorkingDirectory = function (dir) {
var currentFile = commandLineArgs[4];
var curFilePath = fs.absolute(currentFile).split(fs.separator);
if (curFilePath.length > 1) {
- curFilePath.pop(); // PhantomJS does not have an equivalent path.baseName()-like method
+ curFilePath.pop(); // test name
+ curFilePath.pop(); // "js" dir
+ curFilePath.push('json');
curFilePath.push(dir);
fs.changeWorkingDirectory(curFilePath.join(fs.separator));
}
@@ -118,6 +121,11 @@ exports.buildUrl = function (urlTail) {
};
+exports.buildRootUrl = function (urlTail) {
+ return patchWithTimestamp(BASE_ROOT_URL + urlTail);
+};
+
+
exports.setDefaultViewport = function () {
casper.viewport(WINDOW_WIDTH, WINDOW_HEIGHT);
};
@@ -156,3 +164,16 @@ exports.assertLinkHref = function assertElementCount(selector, href, message) {
}
});
};
+
+
+exports.sendCoverage = function () {
+ return casper.evaluate(function () {
+ jQuery.ajax({
+ type: 'POST',
+ url: '/coverage/client',
+ data: JSON.stringify(window.__coverage__),
+ processData: false,
+ contentType: 'application/json; charset=UTF-8'
+ });
+ });
+};
diff --git a/server/sonar-web/src/test/server-coverage.js b/server/sonar-web/src/test/server-coverage.js
new file mode 100644
index 00000000000..99394a28421
--- /dev/null
+++ b/server/sonar-web/src/test/server-coverage.js
@@ -0,0 +1,30 @@
+var express = require('express'),
+ path = require('path'),
+ errorhandler = require('errorhandler'),
+ serveStatic = require('serve-static'),
+ im = require('istanbul-middleware');
+
+var staticPath = path.join(__dirname, '../main/webapp');
+im.hookLoader(staticPath);
+
+var app = express();
+
+app.set('views', __dirname + '/views');
+app.set('view engine', 'jade');
+
+app.use(errorhandler({ dumpExceptions: true, showStack: true }));
+
+app.use(im.createClientHandler(staticPath));
+app.use('/coverage', im.createHandler());
+app.use('/', serveStatic(staticPath));
+
+app.get('/pages/:page', function (req, res) {
+ res.render(req.param('page'));
+});
+
+// Get the port from environment variables
+var port = process.env.PORT || 8000;
+
+app.listen(port);
+
+console.log('Server running on port %d', port);
diff --git a/server/sonar-web/src/main/js/tests/e2e/server.js b/server/sonar-web/src/test/server.js
index 14acf2fc602..fc0caa73758 100644
--- a/server/sonar-web/src/main/js/tests/e2e/server.js
+++ b/server/sonar-web/src/test/server.js
@@ -20,16 +20,18 @@
var express = require('express'),
path = require('path'),
errorhandler = require('errorhandler'),
- serveStatic = require('serve-static'),
- app = express();
+ serveStatic = require('serve-static');
+
+var staticPath = path.join(__dirname, '../main/webapp');
+
+var app = express();
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(errorhandler({ dumpExceptions: true, showStack: true }));
-// Serve static files
-app.use('/', serveStatic(path.join(__dirname, '../../../webapp')));
+app.use('/', serveStatic(staticPath));
app.get('/pages/:page', function (req, res) {
res.render(req.param('page'));
diff --git a/server/sonar-web/src/main/js/tests/e2e/views/coding-rules.jade b/server/sonar-web/src/test/views/coding-rules.jade
index a56d076e719..f5c7ef3adb8 100644
--- a/server/sonar-web/src/main/js/tests/e2e/views/coding-rules.jade
+++ b/server/sonar-web/src/test/views/coding-rules.jade
@@ -1,4 +1,4 @@
-extends ./layouts/main
+extends layouts/main
block header
script(src='../js/require.js')
diff --git a/server/sonar-web/src/main/js/tests/e2e/views/design.jade b/server/sonar-web/src/test/views/design.jade
index 9132d07e7e4..ab71d7af887 100644
--- a/server/sonar-web/src/main/js/tests/e2e/views/design.jade
+++ b/server/sonar-web/src/test/views/design.jade
@@ -1,4 +1,4 @@
-extends ./layouts/main
+extends layouts/main
block header
script(src='../js/require.js')
diff --git a/server/sonar-web/src/test/views/issue-filter-widget.jade b/server/sonar-web/src/test/views/issue-filter-widget.jade
new file mode 100644
index 00000000000..97a22c3de73
--- /dev/null
+++ b/server/sonar-web/src/test/views/issue-filter-widget.jade
@@ -0,0 +1,9 @@
+extends layouts/main
+
+block header
+ script(src='../js/require.js')
+ script.
+ requirejs.config({ baseUrl: '/js' });
+
+block body
+ #issue-filter-widget
diff --git a/server/sonar-web/src/main/js/tests/e2e/views/issues.jade b/server/sonar-web/src/test/views/issues.jade
index c23c98a54f9..4a9ba14f681 100644
--- a/server/sonar-web/src/main/js/tests/e2e/views/issues.jade
+++ b/server/sonar-web/src/test/views/issues.jade
@@ -1,4 +1,4 @@
-extends ./layouts/main
+extends layouts/main
block header
script(src='../js/require.js')
diff --git a/server/sonar-web/src/test/views/layouts/main.jade b/server/sonar-web/src/test/views/layouts/main.jade
new file mode 100644
index 00000000000..59aafece770
--- /dev/null
+++ b/server/sonar-web/src/test/views/layouts/main.jade
@@ -0,0 +1,67 @@
+html
+ head
+ meta(http-equiv='Content-Type', content='text/html; charset=UTF-8')
+ link(href='/css/sonar.css', rel='stylesheet', media='all')
+
+ script(src='/js/translate.js')
+ script(src='/js/third-party/jquery.js')
+ script(src='/js/third-party/jquery-ui.js')
+ script(src='/js/third-party/d3.js')
+ script(src='/js/third-party/latinize.js')
+ script(src='/js/third-party/underscore.js')
+ script(src='/js/third-party/backbone.js')
+ script(src='/js/third-party/backbone.marionette.js')
+ script(src='/js/third-party/handlebars.js')
+ script(src='/js/third-party/underscore.js')
+ script(src='/js/third-party/select2.js')
+ script(src='/js/third-party/keymaster.js')
+ script(src='/js/third-party/moment.js')
+ script(src='/js/third-party/numeral.js')
+ script(src='/js/third-party/numeral-languages.js')
+ script(src='/js/third-party/bootstrap/tooltip.js')
+ script(src='/js/third-party/bootstrap/dropdown.js')
+ script(src='/js/select2-jquery-ui-fix.js')
+ script(src='/js/widgets/base.js')
+ script(src='/js/widgets/widget.js')
+ script(src='/js/widgets/bubble-chart.js')
+ script(src='/js/widgets/timeline.js')
+ script(src='/js/widgets/stack-area.js')
+ script(src='/js/widgets/pie-chart.js')
+ script(src='/js/widgets/histogram.js')
+ script(src='/js/widgets/word-cloud.js')
+ script(src='/js/widgets/tag-cloud.js')
+ script(src='/js/widgets/treemap.js')
+ script(src='/js/graphics/pie-chart.js')
+ script(src='/js/graphics/timeline.js')
+ script(src='/js/graphics/barchart.js')
+ script(src='/js/sortable.js')
+ script(src='/js/common/inputs.js')
+ script(src='/js/common/dialogs.js')
+ script(src='/js/common/processes.js')
+ script(src='/js/common/jquery-isolated-scroll.js')
+ script(src='/js/common/handlebars-extensions.js')
+ script(src='/js/application.js')
+ script(src='/js/csv.js')
+ script(src='/js/dashboard.js')
+ script(src='/js/recent-history.js')
+
+ script(src='/js/third-party/jquery.mockjax.js')
+ script.
+ var baseUrl = '';
+ var $j = jQuery.noConflict();
+ window.suppressTranslationWarnings = true;
+ jQuery.mockjaxSettings.contentType = 'text/json';
+ jQuery.mockjaxSettings.responseTime = 50;
+ $j(document).ready(function () { $j('.open-modal').modal(); });
+ window.waitForMocks = function (app) {
+ var x = setInterval(function () {
+ jQuery.get('/api/l10n/index').done(function () {
+ clearInterval(x);
+ require([app]);
+ });
+ }, 500);
+ }
+ block header
+ body
+ #body
+ block body
diff --git a/server/sonar-web/src/main/js/tests/e2e/views/quality-gates.jade b/server/sonar-web/src/test/views/quality-gates.jade
index ac1a4871c1b..ccee40be0d0 100644
--- a/server/sonar-web/src/main/js/tests/e2e/views/quality-gates.jade
+++ b/server/sonar-web/src/test/views/quality-gates.jade
@@ -1,4 +1,4 @@
-extends ./layouts/main
+extends layouts/main
block header
script(src='../js/require.js')
diff --git a/server/sonar-web/src/main/js/tests/e2e/views/source-viewer.jade b/server/sonar-web/src/test/views/source-viewer.jade
index 03903d8f854..9e2c62c3a1d 100644
--- a/server/sonar-web/src/main/js/tests/e2e/views/source-viewer.jade
+++ b/server/sonar-web/src/test/views/source-viewer.jade
@@ -1,4 +1,4 @@
-extends ./layouts/main
+extends layouts/main
block header
script(src='../js/require.js')
diff --git a/server/sonar-web/src/main/js/tests/e2e/views/treemap.jade b/server/sonar-web/src/test/views/treemap.jade
index 3f6fbac8ae9..09dc4fb950b 100644
--- a/server/sonar-web/src/main/js/tests/e2e/views/treemap.jade
+++ b/server/sonar-web/src/test/views/treemap.jade
@@ -1,4 +1,4 @@
-extends ./layouts/main
+extends layouts/main
block body
#container