Skip to content

Commit

Permalink
Merge pull request #157 from Meteor-Community-Packages/fix/coverage-i…
Browse files Browse the repository at this point in the history
…ntegration

Fix/coverage integration
  • Loading branch information
jankapunkt authored Aug 8, 2024
2 parents a7cc068 + 6a69257 commit d7dc4bb
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 48 deletions.
6 changes: 5 additions & 1 deletion .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@
"max-len": 0,
"no-console": 0,
"no-plusplus": 0,
"object-curly-newline": 0
"object-curly-newline": 0,
"template-curly-spacing" : "off",
"indent": ["error", 2, {
"ignoredNodes": ["TemplateLiteral"]
}]
}
}
6 changes: 3 additions & 3 deletions package/package.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Package.describe({
summary: 'Run Meteor package or app tests with Mocha',
git: 'https://github.com/meteortesting/meteor-mocha.git',
documentation: '../README.md',
version: '3.0.0',
version: '3.2.0',
testOnly: true,
});

Expand All @@ -16,10 +16,10 @@ Package.onUse(function onUse(api) {

api.use([
'meteortesting:[email protected]',
'[email protected] || 2.0.0'
'fetch'
], 'server');
api.use('browser-policy', 'server', { weak: true });
api.use('lmieulet:[email protected] || 2.0.1 || 3.0.0 || 4.1.0', 'client', { weak: true });
api.use('lmieulet:[email protected] || 2.0.1 || 3.0.0 || 4.0.0 || 5.0.0', 'client', { weak: true });

api.mainModule('client.js', 'client');
api.mainModule('server.js', 'server');
Expand Down
84 changes: 40 additions & 44 deletions package/server.handleCoverage.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,28 @@
import { HTTP } from 'meteor/http';
import { fetch } from 'meteor/fetch';

/**
* Makes a standardized HTTP GET request to the server.
* @private
* @param url {string} relative path to the server endpoint
* @param message {string} message to be added, in case an error is thrown
* @return {Promise<any>}
*/
const request = async ({ url, message }) => {
let response;
let data;
try {
response = await fetch(Meteor.absoluteUrl(url));
data = await response.json();
} catch (error) {
throw new Error(`${message} ${error.message}`);
}

if (response?.status !== 200) {
throw new Error(`${message} ${response?.status} ${data}`);
}

return data;
};

export default (coverageOptions) => {
let promise = Promise.resolve(true);
Expand All @@ -12,57 +36,29 @@ export default (coverageOptions) => {

cLog('Export code coverage');

const importCoverageDump = () => new Promise((resolve, reject) => {
const importCoverageDump = () => async () => {
cLog('- In coverage');
HTTP.get(Meteor.absoluteUrl('coverage/import'), (error, response) => {
if (error) {
reject(new Error('Failed to import coverage file'));
return;
}

const { statusCode } = response;

if (statusCode !== 200) {
reject(new Error('Failed to import coverage file'));
}
resolve();
return request({
url: 'coverage/import',
message: 'Failed to import coverage file.',
});
});
};

const exportReport = (fileType, reportType) => new Promise((resolve, reject) => {
const exportReport = async (fileType, reportType) => {
cLog(`- Out ${fileType}`);
const url = Meteor.absoluteUrl(`/coverage/export/${fileType}`);
HTTP.get(url, (error, response) => {
if (error) {
reject(new Error(`Failed to save ${fileType} ${reportType}`));
return;
}

const { statusCode } = response;

if (statusCode !== 200) {
reject(new Error(`Failed to save ${fileType} ${reportType}`));
}
resolve();
return request({
url: `/coverage/export/${fileType}`,
message: `Failed to save ${fileType} ${reportType}.`,
});
});
};

const exportRemap = () => new Promise((resolve, reject) => {
const exportRemap = async () => {
cLog('- Out remap');
HTTP.get(Meteor.absoluteUrl('/coverage/export/remap'), (error, response) => {
if (error) {
reject(new Error('Failed to remap your coverage'));
return;
}

const { statusCode } = response;

if (statusCode !== 200) {
reject(new Error('Failed to remap your coverage'));
}
resolve();
return request({
url: '/coverage/export/remap',
message: '`Failed to remap your coverage.',
});
});
};

if (coverageOptions.in.coverage) {
promise = promise.then(() => importCoverageDump());
Expand Down
4 changes: 4 additions & 0 deletions tests/dummy_app/.meteor/versions

0 comments on commit d7dc4bb

Please sign in to comment.