From 4d33393f1719b9123e8975df2b46d18abda7a1e6 Mon Sep 17 00:00:00 2001 From: Albin Henriksson <albhe428@student.liu.se> Date: Fri, 19 Feb 2021 09:14:04 +0100 Subject: [PATCH] Issue/7 add test coverage report --- .gitlab-ci.yml | 1 + .gitlab/client.gitlab-ci.yml | 22 ++++++++++++++++++++++ .gitlab/server.gitlab-ci.yml | 23 +++++++++++++++++++++++ client/coverage_report.py | 8 ++++++++ client/package.json | 6 +++++- server/app/api/admin.py | 1 - server/app/api/users.py | 13 +++++++------ server/coverage_report.py | 10 ++++++++++ server/tests/__init__.py | 1 - 9 files changed, 76 insertions(+), 9 deletions(-) create mode 100644 client/coverage_report.py create mode 100644 server/coverage_report.py diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b724e32f..9e21e17a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,7 @@ stages: - setup - test + - report include: - local: .gitlab/server.gitlab-ci.yml diff --git a/.gitlab/client.gitlab-ci.yml b/.gitlab/client.gitlab-ci.yml index 5313078a..61809ae3 100644 --- a/.gitlab/client.gitlab-ci.yml +++ b/.gitlab/client.gitlab-ci.yml @@ -51,3 +51,25 @@ client:test: - cd client - npm run test:coverage coverage: /All files\s*\|\s*([\d\.]+)/ + artifacts: + paths: + - client/output/coverage/jest/cobertura-coverage.xml + expire_in: 5 min + +client:report: + image: python + stage: report + needs: ["client:test"] + only: + refs: + - dev + - merge_requests + changes: + - client/**/* + script: + - cd client + - python coverage_report.py + artifacts: + reports: + cobertura: client/output/coverage/jest/cobertura-coverage.xml + expire_in: 1 week diff --git a/.gitlab/server.gitlab-ci.yml b/.gitlab/server.gitlab-ci.yml index 5139e398..d735816f 100644 --- a/.gitlab/server.gitlab-ci.yml +++ b/.gitlab/server.gitlab-ci.yml @@ -38,3 +38,26 @@ server:test: - cd server - source env/bin/activate - pytest --cov app tests/ + - coverage xml + artifacts: + paths: + - server/coverage.xml + expire_in: 5 min + +server:report: + image: python + stage: report + needs: ["server:test"] + only: + refs: + - dev + - merge_requests + changes: + - server/**/* + script: + - cd server + - python coverage_report.py + artifacts: + reports: + cobertura: server/coverage.xml + expire_in: 1 week diff --git a/client/coverage_report.py b/client/coverage_report.py new file mode 100644 index 00000000..c6cd3763 --- /dev/null +++ b/client/coverage_report.py @@ -0,0 +1,8 @@ +import xml.etree.ElementTree as et + +tree = et.parse('output/coverage/jest/cobertura-coverage.xml') +root = tree.getroot() +for package_class in tree.find('.//packages'): + package_class.set('name', 'client.' + package_class.attrib.get('name')) + package_class.set('filename', 'client/' + package_class.attrib.get('filename')) +tree.write('output/coverage/jest/cobertura-coverage.xml') diff --git a/client/package.json b/client/package.json index deacb7c4..3116f7da 100644 --- a/client/package.json +++ b/client/package.json @@ -38,7 +38,7 @@ "test": "react-scripts test", "eject": "react-scripts eject", "lint": "eslint \"./src/**/*.{js,ts,tsx}\"", - "test:coverage": "react-scripts test --coverage" + "test:coverage": "react-scripts test --coverage --coverageDirectory=output/coverage/jest" }, "browserslist": { "production": [ @@ -57,6 +57,10 @@ "src/**/*.{js,jsx,tsx,ts}", "!src/index.tsx", "!src/reportWebVitals.ts" + ], + "coverageReporters": [ + "text", + "cobertura" ] }, "proxy": "http://localhost:5000/api/" diff --git a/server/app/api/admin.py b/server/app/api/admin.py index ff077923..1d935910 100644 --- a/server/app/api/admin.py +++ b/server/app/api/admin.py @@ -6,5 +6,4 @@ from flask import Blueprint - admin_blueprint = Blueprint("admin", __name__) diff --git a/server/app/api/users.py b/server/app/api/users.py index 430b5407..db7859f2 100644 --- a/server/app/api/users.py +++ b/server/app/api/users.py @@ -1,17 +1,18 @@ import datetime + +from app import db +from app.api import api_blueprint +from app.database.models import Blacklist, User +from app.utils.validator import edit_user_schema, login_schema, register_schema, validateObject from flask import request from flask_jwt_extended import ( - jwt_required, create_access_token, - jwt_refresh_token_required, create_refresh_token, get_jwt_identity, get_raw_jwt, + jwt_refresh_token_required, + jwt_required, ) -from app import db -from app.api import api_blueprint -from app.database.models import User, Blacklist -from app.utils.validator import validateObject, login_schema, register_schema, edit_user_schema def get_current_user(): diff --git a/server/coverage_report.py b/server/coverage_report.py new file mode 100644 index 00000000..209d8d6e --- /dev/null +++ b/server/coverage_report.py @@ -0,0 +1,10 @@ +import xml.etree.ElementTree as et + +tree = et.parse('coverage.xml') +root = tree.getroot() +for package in tree.find('.//packages'): + package.set('name', 'server.' + package.attrib.get('name')) + for package_class in package.find('classes'): + package_class.set('name', 'server.' + package_class.attrib.get('name')) + package_class.set('filename', 'server/' + package_class.attrib.get('filename')) +tree.write('coverage.xml') diff --git a/server/tests/__init__.py b/server/tests/__init__.py index 0d8c1354..20860256 100644 --- a/server/tests/__init__.py +++ b/server/tests/__init__.py @@ -9,7 +9,6 @@ def app(): with app.app_context(): db.drop_all() db.create_all() - return app -- GitLab