diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b724e32f4695baff22661c3d66095b648360aa6d..9e21e17aa51b26ca34906a068939b4f79ffe9638 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 5313078ae5fa9b28b44f9a19ebf765762c2d8cd3..61809ae3c02a4626ff0312db0df7849064382ac6 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 5139e39813debc0536872cb6e044e0d2a28838f4..d735816fd88fb99f2e071a09459d3b7ca23c3976 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 0000000000000000000000000000000000000000..c6cd37630e0801182235105d68788cf0324be4ac --- /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 deacb7c4abb0b8684a66e58bfe006950819c0e87..3116f7dae71b456ca09f86d4751c8dc11146d83e 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 ff0779237091f39606956678529b4c53b5a53f4c..1d935910fc21a39ca4ac1b91f205bc3f5d5c4d8c 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 430b5407ddb7155fdccfddc58fad72c59de54c10..db7859f264c3af31d346b2b1f42cebd2f8d4574a 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 0000000000000000000000000000000000000000..209d8d6e84a1f5c12f321cbae278b156bbb0b519 --- /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 0d8c1354ffd04237f06f2b2883e86c175bd511d4..20860256b8216ddac13ed51667ee0e3c0cccf051 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