64 lines
2.5 KiB
Python
64 lines
2.5 KiB
Python
from git import Repo, Head
|
|
from unittest.mock import Mock, patch
|
|
import pytest
|
|
import json
|
|
|
|
from rspec_tools.coverage import update_coverage_for_repo_version, update_coverage_for_repo, update_coverage_for_all_repos
|
|
from rspec_tools.utils import load_json, pushd
|
|
|
|
def test_update_coverage_for_repo_version(tmpdir):
|
|
with pushd(tmpdir):
|
|
VER = '3.3.0.5702'
|
|
REPO = 'SonarJS'
|
|
update_coverage_for_repo_version(REPO, VER)
|
|
coverage = tmpdir.join('covered_rules.json')
|
|
assert coverage.exists()
|
|
cov = load_json(coverage)
|
|
assert 'JAVASCRIPT' in cov
|
|
assert 'S100' in cov['JAVASCRIPT']
|
|
assert cov['JAVASCRIPT']['S100'] == {'since': REPO + ' ' + VER, 'until': REPO + ' ' + VER}
|
|
|
|
# Running it again changes nothing
|
|
update_coverage_for_repo_version(REPO, VER)
|
|
assert cov == load_json(coverage)
|
|
|
|
# Running it for a newer version doesn't change when the rules are first implemented
|
|
VER2 = '5.0.0.6962'
|
|
update_coverage_for_repo_version(REPO, VER2)
|
|
cov_new = load_json(coverage)
|
|
assert set(cov['JAVASCRIPT'].keys()).issubset(set(cov_new['JAVASCRIPT'].keys()))
|
|
assert cov_new['JAVASCRIPT']['S100']['since'] == REPO + ' ' + VER
|
|
assert cov_new['JAVASCRIPT']['S100']['until'] == REPO + ' ' + VER2
|
|
assert cov_new['JAVASCRIPT']['S1192']['since'] == REPO + ' ' + VER2
|
|
assert cov_new['JAVASCRIPT']['S1192']['until'] == REPO + ' ' + VER2
|
|
|
|
# For rules supported on master only the 'since' part is kept
|
|
update_coverage_for_repo_version(REPO, 'master')
|
|
assert load_json(coverage)['JAVASCRIPT']['S100'] == REPO + ' ' + VER
|
|
|
|
def test_update_coverage_for_repo(tmpdir):
|
|
with pushd(tmpdir):
|
|
REPO = 'SonarJS'
|
|
update_coverage_for_repo(REPO)
|
|
coverage = tmpdir.join('covered_rules.json')
|
|
assert coverage.exists()
|
|
cov = load_json(coverage)
|
|
assert 'JAVASCRIPT' in cov
|
|
assert 'TYPESCRIPT' in cov
|
|
assert 'S100' in cov['JAVASCRIPT']
|
|
assert cov['JAVASCRIPT']['S100'] == REPO + ' 3.3.0.5702'
|
|
assert 'S1145' in cov['JAVASCRIPT']
|
|
assert cov['JAVASCRIPT']['S1145'] == {'since': REPO + ' 3.3.0.5702', 'until': REPO + ' 6.7.0.14237'}
|
|
|
|
@patch('rspec_tools.coverage.REPOS', ['SonarJS', 'sonar-xml'])
|
|
def test_update_coverage_for_all_repos(tmpdir):
|
|
with pushd(tmpdir):
|
|
update_coverage_for_all_repos()
|
|
coverage = tmpdir.join('covered_rules.json')
|
|
assert coverage.exists()
|
|
cov = load_json(coverage)
|
|
assert {'JAVASCRIPT', 'TYPESCRIPT', 'XML'} == set(cov.keys())
|
|
assert 'S100' in cov['JAVASCRIPT']
|
|
assert 'S100' not in cov['XML']
|
|
assert 'S103' in cov['XML']
|