def setUp(self): with patch.object(metric_source.Sonar, 'version_number') as mock_version_number: mock_version_number.return_value = '6.3' sonar = metric_source.Sonar('unimportant') project = domain.Project(metric_sources={metric_source.Sonar: sonar}) subject = domain.Product(short_name='PR', name='FakeSubject', metric_source_ids={sonar: 'sonar id'}) self._metric = metric.ProductLOC(subject=subject, project=project)
def test_url_without_sonar_id(self): """ Test that the metric has a url when the product has no Sonar id configured. """ with patch.object(metric_source.Sonar, 'version_number') as mock_version_number: mock_version_number.return_value = '6.3' sonar = metric_source.Sonar('http://sonar/') project = domain.Project(metric_sources={metric_source.Sonar: sonar}) product = domain.Product() self.assertEqual(dict(), SonarMetric(product, project).url())
def test_url(self): """ Test the url. """ with patch.object(metric_source.Sonar, 'version_number') as mock_version_number: mock_version_number.return_value = '6.3' sonar = metric_source.Sonar('http://sonar/') project = domain.Project(metric_sources={metric_source.Sonar: sonar}) product = domain.Product(metric_source_ids={sonar: 'sonar id'}) self.assertEqual({sonar.metric_source_name: sonar.url()}, SonarMetric(product, project).url())
def setUp(self): with patch.object(metric_source.Sonar, 'version_number') as mock_version_number: mock_version_number.return_value = '6.3' self.__sonar = metric_source.Sonar('unimportant') project = domain.Project( metric_sources={metric_source.Sonar: self.__sonar, metric_source.History: metric_source.CompactHistory('')}, metric_options={metric.TotalLOC: dict(target=1000000, low_target=2000000)}, metric_source_ids={self.__sonar: 'dummy'}) product1 = domain.Product(short_name='PR1', name='FakeSubject1', metric_source_ids={self.__sonar: 'sonar id1'}) product2 = domain.Product(short_name='PR2', name='FakeSubject2', metric_source_ids={self.__sonar: 'sonar id2'}) product_without_sonar_id = domain.Product(short_name='PW', name='ProductWithoutSonarId') test_product = domain.Product(short_name='TP', is_main=False, metric_source_ids={self.__sonar: 'sonar id'}) project.add_product(product1) project.add_product(product2) # Add products that should be ignored: project.add_product(product_without_sonar_id) project.add_product(test_product) self.__metric = metric.TotalLOC(subject=project, project=project)
""" Project definition for testing a project with all requirements and sources, but no source ids. """ from hqlib import metric_source, requirement from hqlib.domain import Project, Product, Application, Component, Team, Document, Environment, Process # Sources HISTORY = metric_source.History('tests/integrationtests/test_no_source_ids/history.json') GIT = metric_source.Git(url='http://git/repo') SONAR = metric_source.Sonar('http://sonar/') BUG_TRACKER = metric_source.JiraFilter(url='http://jira/', username='******', password='******') WEKAN = metric_source.WekanBoard('http://wekan', username='******', password='******') # The project PROJECT = Project( 'Integrationtest', name='all requirements and sources, but no source ids', metric_sources={ metric_source.History: HISTORY, metric_source.VersionControlSystem: GIT, metric_source.BugTracker: BUG_TRACKER, metric_source.ActionLog: WEKAN, metric_source.UnitTestReport: SONAR, metric_source.Sonar: SONAR}, added_requirements=Project.optional_requirements()) # Documents. DOC = Document(name='Document XYZ', added_requirements=Document.optional_requirements()) PROJECT.add_document(DOC) # Teams of the project. TEAM = Team(name='Team 123', short_name='TE', added_requirements=Team.optional_requirements()) PROJECT.add_team(TEAM)
import pathlib import datetime from hqlib import metric_source, metric, requirement from hqlib.domain import Project, Environment, Application, Team, Document, TechnicalDebtTarget, \ DynamicTechnicalDebtTarget PROJECT_DIR = pathlib.Path(__file__).parent.parent.parent.parent BUILD_SERVER = metric_source.Jenkins('http://jenkins/', username='******', password='******', job_re='-metrics') JENKINS = metric_source.Jenkins(url='http://www.jenkins.proj.org:8080/') SONAR = metric_source.Sonar('https://my.sonarqube.com/') JUNIT = metric_source.JunitTestReport() HISTORY = metric_source.CompactHistory(PROJECT_DIR / 'docs' / 'examples' / 'quality_report' / 'history.json') JACOCO = metric_source.JaCoCo() ZAP_SCAN_REPORT = metric_source.ZAPScanReport() SECURITY_REPORT_PROXY = metric_source.FileWithDate() USER_STORIES_IN_PROGRESS_TRACKER = \ metric_source.JiraFilter('https://jira.myorg.nl/jira', username="******", password="******") USER_STORIES_DURATION_TRACKER = \ metric_source.JiraFilter('https://jira.myorg.nl/jira', username="******", password="******") DURATION_MANUAL_TEST_CASES = \ metric_source.JiraFilter('https://jira.myorg.nl/jira', username="******", password="******", field_name="customfield_11700")
from hqlib import metric_source from hqlib.domain import Project, Application # Metric sources HISTORY = metric_source.CompactHistory("history.json") SONAR = metric_source.Sonar("https://sonarcloud.io/") # The project PROJECT = Project("ICTU", name="HQ", metric_sources={ metric_source.History: HISTORY, metric_source.Sonar: SONAR }) # The product developed by the project APPLICATION = Application(short_name="HQ", name="HQ - Holistic Software Quality Reporting", metric_source_ids={SONAR: 'nl.ictu:hq'}) PROJECT.add_product(APPLICATION) # Dashboard layout # Columns in the dashboard is specified as a list of tuples. Each tuple # contains a column header and the column span. DASHBOARD_COLUMNS = [("Product", 1), ("Meta", 1)] # Rows in the dashboard is a list of row tuples. Each row tuple consists of # tuples that describe a cell in the dashboard. Each cell is a tuple containing # the product or team and the color. Optionally the cell tuple can contain a # third value which is a tuple containing the column and row span for the cell.