@teambit/mocha 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__preview-1646191436076.js +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/mocha.aspect.d.ts +2 -0
- package/dist/mocha.aspect.js +24 -0
- package/dist/mocha.aspect.js.map +1 -0
- package/dist/mocha.main.runtime.d.ts +13 -0
- package/dist/mocha.main.runtime.js +88 -0
- package/dist/mocha.main.runtime.js.map +1 -0
- package/dist/mocha.tester.d.ts +31 -0
- package/dist/mocha.tester.js +181 -0
- package/dist/mocha.tester.js.map +1 -0
- package/package-tar/teambit-mocha-0.0.1.tgz +0 -0
- package/package.json +89 -0
- package/tsconfig.json +34 -0
- package/types/asset.d.ts +29 -0
- package/types/style.d.ts +42 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "MochaAspect", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _mocha().MochaAspect;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
exports.default = void 0;
|
|
13
|
+
|
|
14
|
+
function _mocha() {
|
|
15
|
+
const data = require("./mocha.aspect");
|
|
16
|
+
|
|
17
|
+
_mocha = function () {
|
|
18
|
+
return data;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
return data;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
var _default = _mocha().MochaAspect;
|
|
25
|
+
|
|
26
|
+
exports.default = _default;
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["MochaAspect"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;eAGeA,oB","sourcesContent":["import { MochaAspect } from './mocha.aspect';\n\nexport type { MochaMain } from './mocha.main.runtime';\nexport default MochaAspect;\nexport { MochaAspect };\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.MochaAspect = void 0;
|
|
7
|
+
|
|
8
|
+
function _harmony() {
|
|
9
|
+
const data = require("@teambit/harmony");
|
|
10
|
+
|
|
11
|
+
_harmony = function () {
|
|
12
|
+
return data;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const MochaAspect = _harmony().Aspect.create({
|
|
19
|
+
id: 'teambit.defender/mocha'
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
exports.MochaAspect = MochaAspect;
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=mocha.aspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["mocha.aspect.ts"],"names":["MochaAspect","Aspect","create","id"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,WAAW,GAAGC,kBAAOC,MAAP,CAAc;AACvCC,EAAAA,EAAE,EAAE;AADmC,CAAd,CAApB","sourcesContent":["import { Aspect } from '@teambit/harmony';\n\nexport const MochaAspect = Aspect.create({\n id: 'teambit.defender/mocha',\n});\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { TransformOptions } from '@babel/core';
|
|
2
|
+
import type Mocha from 'mocha';
|
|
3
|
+
import { Logger, LoggerMain } from '@teambit/logger';
|
|
4
|
+
import { MochaTester } from './mocha.tester';
|
|
5
|
+
export declare class MochaMain {
|
|
6
|
+
private logger;
|
|
7
|
+
constructor(logger: Logger);
|
|
8
|
+
createTester(mochaConfig?: Mocha.MochaOptions, babelConfig?: TransformOptions, mochaModule?: any): MochaTester;
|
|
9
|
+
static slots: never[];
|
|
10
|
+
static dependencies: import("@teambit/harmony").Aspect[];
|
|
11
|
+
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
12
|
+
static provider([loggerMain]: [LoggerMain]): Promise<MochaMain>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
require("core-js/modules/es.array.iterator.js");
|
|
6
|
+
|
|
7
|
+
require("core-js/modules/es.promise.js");
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, "__esModule", {
|
|
10
|
+
value: true
|
|
11
|
+
});
|
|
12
|
+
exports.MochaMain = void 0;
|
|
13
|
+
|
|
14
|
+
function _defineProperty2() {
|
|
15
|
+
const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
|
|
17
|
+
_defineProperty2 = function () {
|
|
18
|
+
return data;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
return data;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function _cli() {
|
|
25
|
+
const data = require("@teambit/cli");
|
|
26
|
+
|
|
27
|
+
_cli = function () {
|
|
28
|
+
return data;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
return data;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function _logger() {
|
|
35
|
+
const data = require("@teambit/logger");
|
|
36
|
+
|
|
37
|
+
_logger = function () {
|
|
38
|
+
return data;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
return data;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function _mocha() {
|
|
45
|
+
const data = require("./mocha.aspect");
|
|
46
|
+
|
|
47
|
+
_mocha = function () {
|
|
48
|
+
return data;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
return data;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function _mocha2() {
|
|
55
|
+
const data = require("./mocha.tester");
|
|
56
|
+
|
|
57
|
+
_mocha2 = function () {
|
|
58
|
+
return data;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
return data;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
class MochaMain {
|
|
65
|
+
constructor(logger) {
|
|
66
|
+
this.logger = logger;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
createTester(mochaConfig = {}, babelConfig = {}, // eslint-disable-next-line global-require
|
|
70
|
+
mochaModule = require('mocha')) {
|
|
71
|
+
return new (_mocha2().MochaTester)(_mocha().MochaAspect.id, this.logger, mochaConfig, babelConfig, mochaModule);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
static async provider([loggerMain]) {
|
|
75
|
+
const logger = loggerMain.createLogger(_mocha().MochaAspect.id);
|
|
76
|
+
return new MochaMain(logger);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
exports.MochaMain = MochaMain;
|
|
82
|
+
(0, _defineProperty2().default)(MochaMain, "slots", []);
|
|
83
|
+
(0, _defineProperty2().default)(MochaMain, "dependencies", [_logger().LoggerAspect]);
|
|
84
|
+
(0, _defineProperty2().default)(MochaMain, "runtime", _cli().MainRuntime);
|
|
85
|
+
|
|
86
|
+
_mocha().MochaAspect.addRuntime(MochaMain);
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=mocha.main.runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["mocha.main.runtime.ts"],"names":["MochaMain","constructor","logger","createTester","mochaConfig","babelConfig","mochaModule","require","MochaTester","MochaAspect","id","provider","loggerMain","createLogger","LoggerAspect","MainRuntime","addRuntime"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,SAAN,CAAgB;AACrBC,EAAAA,WAAW,CAASC,MAAT,EAAyB;AAAA,SAAhBA,MAAgB,GAAhBA,MAAgB;AAAE;;AAEtCC,EAAAA,YAAY,CACVC,WAA+B,GAAG,EADxB,EAEVC,WAA6B,GAAG,EAFtB,EAGV;AACAC,EAAAA,WAAW,GAAGC,OAAO,CAAC,OAAD,CAJX,EAKV;AACA,WAAO,KAAIC,qBAAJ,EAAgBC,qBAAYC,EAA5B,EAAgC,KAAKR,MAArC,EAA6CE,WAA7C,EAA0DC,WAA1D,EAAuEC,WAAvE,CAAP;AACD;;AAKoB,eAARK,QAAQ,CAAC,CAACC,UAAD,CAAD,EAA6B;AAChD,UAAMV,MAAM,GAAGU,UAAU,CAACC,YAAX,CAAwBJ,qBAAYC,EAApC,CAAf;AACA,WAAO,IAAIV,SAAJ,CAAcE,MAAd,CAAP;AACD;;AAlBoB;;;gCAAVF,S,WAYI,E;gCAZJA,S,kBAaW,CAACc,sBAAD,C;gCAbXd,S,aAcMe,kB;;AAOnBN,qBAAYO,UAAZ,CAAuBhB,SAAvB","sourcesContent":["import { MainRuntime } from '@teambit/cli';\nimport type { TransformOptions } from '@babel/core';\nimport type Mocha from 'mocha';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { MochaAspect } from './mocha.aspect';\nimport { MochaTester } from './mocha.tester';\n\nexport class MochaMain {\n constructor(private logger: Logger) {}\n\n createTester(\n mochaConfig: Mocha.MochaOptions = {},\n babelConfig: TransformOptions = {},\n // eslint-disable-next-line global-require\n mochaModule = require('mocha')\n ) {\n return new MochaTester(MochaAspect.id, this.logger, mochaConfig, babelConfig, mochaModule);\n }\n\n static slots = [];\n static dependencies = [LoggerAspect];\n static runtime = MainRuntime;\n static async provider([loggerMain]: [LoggerMain]) {\n const logger = loggerMain.createLogger(MochaAspect.id);\n return new MochaMain(logger);\n }\n}\n\nMochaAspect.addRuntime(MochaMain);\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Logger } from '@teambit/logger';
|
|
2
|
+
import { Tester, CallbackFn, TesterContext, Tests } from '@teambit/tester';
|
|
3
|
+
import Mocha from 'mocha';
|
|
4
|
+
import type { TransformOptions } from '@babel/core';
|
|
5
|
+
export declare class MochaTester implements Tester {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
private logger;
|
|
8
|
+
readonly mochaConfig: Mocha.MochaOptions;
|
|
9
|
+
/**
|
|
10
|
+
* babel config are needed when the spec files are not native javascript and need to be compiled.
|
|
11
|
+
* pass the same config you pass to your babel compiler if you're using one.
|
|
12
|
+
*/
|
|
13
|
+
private babelConfig;
|
|
14
|
+
private MochaModule;
|
|
15
|
+
_callback: CallbackFn | undefined;
|
|
16
|
+
displayName: string;
|
|
17
|
+
constructor(id: string, logger: Logger, mochaConfig: Mocha.MochaOptions,
|
|
18
|
+
/**
|
|
19
|
+
* babel config are needed when the spec files are not native javascript and need to be compiled.
|
|
20
|
+
* pass the same config you pass to your babel compiler if you're using one.
|
|
21
|
+
*/
|
|
22
|
+
babelConfig: TransformOptions, MochaModule: typeof Mocha);
|
|
23
|
+
test(context: TesterContext): Promise<Tests>;
|
|
24
|
+
/**
|
|
25
|
+
* @todo: make this work. currently, it doesn't update the UI upon changes.
|
|
26
|
+
*/
|
|
27
|
+
watch(context: TesterContext): Promise<Tests>;
|
|
28
|
+
onTestRunComplete(callback: CallbackFn): Promise<void>;
|
|
29
|
+
private runMochaOnOneFile;
|
|
30
|
+
version(): string;
|
|
31
|
+
}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
require("core-js/modules/es.array.flat.js");
|
|
6
|
+
|
|
7
|
+
require("core-js/modules/es.array.iterator.js");
|
|
8
|
+
|
|
9
|
+
require("core-js/modules/es.array.unscopables.flat.js");
|
|
10
|
+
|
|
11
|
+
require("core-js/modules/es.promise.js");
|
|
12
|
+
|
|
13
|
+
Object.defineProperty(exports, "__esModule", {
|
|
14
|
+
value: true
|
|
15
|
+
});
|
|
16
|
+
exports.MochaTester = void 0;
|
|
17
|
+
|
|
18
|
+
function _defineProperty2() {
|
|
19
|
+
const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
20
|
+
|
|
21
|
+
_defineProperty2 = function () {
|
|
22
|
+
return data;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
return data;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function _tester() {
|
|
29
|
+
const data = require("@teambit/tester");
|
|
30
|
+
|
|
31
|
+
_tester = function () {
|
|
32
|
+
return data;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
return data;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function _mocha() {
|
|
39
|
+
const data = _interopRequireDefault(require("mocha"));
|
|
40
|
+
|
|
41
|
+
_mocha = function () {
|
|
42
|
+
return data;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function _register() {
|
|
49
|
+
const data = _interopRequireDefault(require("@babel/register"));
|
|
50
|
+
|
|
51
|
+
_register = function () {
|
|
52
|
+
return data;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
return data;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function _testsResults() {
|
|
59
|
+
const data = require("@teambit/tests-results");
|
|
60
|
+
|
|
61
|
+
_testsResults = function () {
|
|
62
|
+
return data;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
return data;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function _pMapSeries() {
|
|
69
|
+
const data = _interopRequireDefault(require("p-map-series"));
|
|
70
|
+
|
|
71
|
+
_pMapSeries = function () {
|
|
72
|
+
return data;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
return data;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function _lodash() {
|
|
79
|
+
const data = require("lodash");
|
|
80
|
+
|
|
81
|
+
_lodash = function () {
|
|
82
|
+
return data;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
return data;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
89
|
+
|
|
90
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2().default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
91
|
+
|
|
92
|
+
class MochaTester {
|
|
93
|
+
constructor(id, logger, mochaConfig,
|
|
94
|
+
/**
|
|
95
|
+
* babel config are needed when the spec files are not native javascript and need to be compiled.
|
|
96
|
+
* pass the same config you pass to your babel compiler if you're using one.
|
|
97
|
+
*/
|
|
98
|
+
babelConfig, MochaModule) {
|
|
99
|
+
this.id = id;
|
|
100
|
+
this.logger = logger;
|
|
101
|
+
this.mochaConfig = mochaConfig;
|
|
102
|
+
this.babelConfig = babelConfig;
|
|
103
|
+
this.MochaModule = MochaModule;
|
|
104
|
+
(0, _defineProperty2().default)(this, "_callback", void 0);
|
|
105
|
+
(0, _defineProperty2().default)(this, "displayName", 'Mocha');
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
async test(context) {
|
|
109
|
+
const specsPerComp = context.specFiles.toArray();
|
|
110
|
+
const allSpecsFiles = specsPerComp.map(([, specFiles]) => specFiles.map(specFile => specFile.path)).flat();
|
|
111
|
+
(0, _register().default)(_objectSpread({
|
|
112
|
+
only: [filePath => allSpecsFiles.includes(filePath)],
|
|
113
|
+
extensions: ['.es6', '.es', '.jsx', '.js', '.mjs', '.ts', '.tsx']
|
|
114
|
+
}, this.babelConfig || {}));
|
|
115
|
+
const componentsResults = await (0, _pMapSeries().default)(specsPerComp, async ([component, files]) => {
|
|
116
|
+
const testsFiles = await (0, _pMapSeries().default)(files, async file => {
|
|
117
|
+
try {
|
|
118
|
+
return await this.runMochaOnOneFile(file);
|
|
119
|
+
} catch (err) {
|
|
120
|
+
const errMsg = `Mocha found an error while working on "${file.path}". ${err.message}`;
|
|
121
|
+
this.logger.error(errMsg, err);
|
|
122
|
+
this.logger.consoleFailure(errMsg);
|
|
123
|
+
return new (_testsResults().TestsFiles)(file.relative, [], 0, 0, 0, undefined, undefined, err);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
const allComponentErrors = testsFiles.map(testFile => testFile.error || testFile.tests.map(test => test.failureErrOrStr)).flat();
|
|
127
|
+
return {
|
|
128
|
+
componentId: component.id,
|
|
129
|
+
results: new (_testsResults().TestsResult)(testsFiles),
|
|
130
|
+
errors: (0, _lodash().compact)(allComponentErrors)
|
|
131
|
+
};
|
|
132
|
+
});
|
|
133
|
+
return new (_tester().Tests)(componentsResults);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* @todo: make this work. currently, it doesn't update the UI upon changes.
|
|
137
|
+
*/
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
async watch(context) {
|
|
141
|
+
const results = await this.test(context);
|
|
142
|
+
|
|
143
|
+
if (this._callback) {
|
|
144
|
+
this._callback(results);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return results;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
async onTestRunComplete(callback) {
|
|
151
|
+
this._callback = callback;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
async runMochaOnOneFile(file) {
|
|
155
|
+
const mocha = new this.MochaModule(this.mochaConfig);
|
|
156
|
+
mocha.addFile(file.path);
|
|
157
|
+
const testResults = [];
|
|
158
|
+
return new Promise(resolve => {
|
|
159
|
+
const runner = mocha.run().on('test end', function (test) {
|
|
160
|
+
const state = test.state;
|
|
161
|
+
if (!state) throw new Error(`the test.state of "${test.title}", file "${file.path}" is neither passed nor failed`);
|
|
162
|
+
testResults.push(new (_testsResults().TestResult)(test.titlePath(), test.title, state, test.duration, undefined, test.err));
|
|
163
|
+
}).on('end', function () {
|
|
164
|
+
const stats = runner.stats;
|
|
165
|
+
if (!stats) throw new Error('stats is missing');
|
|
166
|
+
const testsFile = new (_testsResults().TestsFiles)(file.relative, testResults, stats.passes, stats.failures, stats.pending, stats.duration);
|
|
167
|
+
resolve(testsFile);
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
version() {
|
|
173
|
+
// @ts-ignore
|
|
174
|
+
return _mocha().default.prototype.version || 'N/A';
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
exports.MochaTester = MochaTester;
|
|
180
|
+
|
|
181
|
+
//# sourceMappingURL=mocha.tester.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["mocha.tester.ts"],"names":["MochaTester","constructor","id","logger","mochaConfig","babelConfig","MochaModule","test","context","specsPerComp","specFiles","toArray","allSpecsFiles","map","specFile","path","flat","only","filePath","includes","extensions","componentsResults","component","files","testsFiles","file","runMochaOnOneFile","err","errMsg","message","error","consoleFailure","TestsFiles","relative","undefined","allComponentErrors","testFile","tests","failureErrOrStr","componentId","results","TestsResult","errors","Tests","watch","_callback","onTestRunComplete","callback","mocha","addFile","testResults","Promise","resolve","runner","run","on","state","Error","title","push","TestResult","titlePath","duration","stats","testsFile","passes","failures","pending","version","Mocha","prototype"],"mappings":"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","sourcesContent":["import { Logger } from '@teambit/logger';\nimport { ComponentsResults, Tester, CallbackFn, TesterContext, Tests } from '@teambit/tester';\nimport Mocha from 'mocha';\nimport babelRegister from '@babel/register';\nimport type { TransformOptions } from '@babel/core';\nimport { TestResult, TestsFiles, TestsResult } from '@teambit/tests-results';\nimport pMapSeries from 'p-map-series';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { compact } from 'lodash';\n\nexport class MochaTester implements Tester {\n _callback: CallbackFn | undefined;\n displayName = 'Mocha';\n constructor(\n readonly id: string,\n private logger: Logger,\n readonly mochaConfig: Mocha.MochaOptions,\n /**\n * babel config are needed when the spec files are not native javascript and need to be compiled.\n * pass the same config you pass to your babel compiler if you're using one.\n */\n private babelConfig: TransformOptions,\n private MochaModule: typeof Mocha\n ) {}\n async test(context: TesterContext): Promise<Tests> {\n const specsPerComp = context.specFiles.toArray();\n const allSpecsFiles = specsPerComp.map(([, specFiles]) => specFiles.map((specFile) => specFile.path)).flat();\n babelRegister({\n only: [(filePath: string) => allSpecsFiles.includes(filePath)],\n extensions: ['.es6', '.es', '.jsx', '.js', '.mjs', '.ts', '.tsx'],\n ...(this.babelConfig || {}),\n });\n const componentsResults: ComponentsResults[] = await pMapSeries(specsPerComp, async ([component, files]) => {\n const testsFiles: TestsFiles[] = await pMapSeries(files, async (file) => {\n try {\n return await this.runMochaOnOneFile(file);\n } catch (err: any) {\n const errMsg = `Mocha found an error while working on \"${file.path}\". ${err.message}`;\n this.logger.error(errMsg, err);\n this.logger.consoleFailure(errMsg);\n return new TestsFiles(file.relative, [], 0, 0, 0, undefined, undefined, err);\n }\n });\n const allComponentErrors = testsFiles\n .map((testFile) => testFile.error || testFile.tests.map((test) => test.failureErrOrStr as Error))\n .flat();\n return {\n componentId: component.id,\n results: new TestsResult(testsFiles),\n errors: compact(allComponentErrors),\n };\n });\n return new Tests(componentsResults);\n }\n\n /**\n * @todo: make this work. currently, it doesn't update the UI upon changes.\n */\n async watch(context: TesterContext): Promise<Tests> {\n const results = await this.test(context);\n if (this._callback) {\n this._callback(results);\n }\n return results;\n }\n\n async onTestRunComplete(callback: CallbackFn) {\n this._callback = callback;\n }\n\n private async runMochaOnOneFile(file: AbstractVinyl): Promise<TestsFiles> {\n const mocha = new this.MochaModule(this.mochaConfig);\n mocha.addFile(file.path);\n const testResults: TestResult[] = [];\n return new Promise((resolve) => {\n const runner = mocha\n .run()\n .on('test end', function (test) {\n const state = test.state;\n if (!state)\n throw new Error(`the test.state of \"${test.title}\", file \"${file.path}\" is neither passed nor failed`);\n testResults.push(new TestResult(test.titlePath(), test.title, state, test.duration, undefined, test.err));\n })\n .on('end', function () {\n const stats = runner.stats;\n if (!stats) throw new Error('stats is missing');\n const testsFile = new TestsFiles(\n file.relative,\n testResults,\n stats.passes,\n stats.failures,\n stats.pending,\n stats.duration\n );\n resolve(testsFile);\n });\n });\n }\n\n version(): string {\n // @ts-ignore\n return Mocha.prototype.version || 'N/A';\n }\n}\n"]}
|
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@teambit/mocha",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"componentId": {
|
|
6
|
+
"scope": "teambit.defender",
|
|
7
|
+
"name": "mocha",
|
|
8
|
+
"version": "0.0.1"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"@teambit/harmony": "0.2.11",
|
|
12
|
+
"@babel/core": "7.12.17",
|
|
13
|
+
"mocha": "9.2.0",
|
|
14
|
+
"@babel/register": "7.12.13",
|
|
15
|
+
"lodash": "4.17.21",
|
|
16
|
+
"p-map-series": "2.1.0",
|
|
17
|
+
"@babel/runtime": "7.12.18",
|
|
18
|
+
"core-js": "^3.0.0",
|
|
19
|
+
"@teambit/cli": "0.0.450",
|
|
20
|
+
"@teambit/logger": "0.0.540",
|
|
21
|
+
"@teambit/tester": "0.0.664",
|
|
22
|
+
"@teambit/tests-results": "0.0.97"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/mocha": "9.1.0",
|
|
26
|
+
"@types/lodash": "4.14.165",
|
|
27
|
+
"@types/testing-library__jest-dom": "5.9.5",
|
|
28
|
+
"@types/jest": "^26.0.0",
|
|
29
|
+
"@types/react-dom": "^17.0.5",
|
|
30
|
+
"@types/react": "^17.0.8",
|
|
31
|
+
"@types/node": "12.20.4"
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"@teambit/legacy": "1.0.229",
|
|
35
|
+
"react-dom": "^16.8.0 || ^17.0.0",
|
|
36
|
+
"react": "^16.8.0 || ^17.0.0"
|
|
37
|
+
},
|
|
38
|
+
"license": "Apache-2.0",
|
|
39
|
+
"bit": {
|
|
40
|
+
"bindingPrefix": "@teambit",
|
|
41
|
+
"env": {},
|
|
42
|
+
"overrides": {
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@teambit/legacy": "-",
|
|
45
|
+
"@babel/runtime": "7.12.18",
|
|
46
|
+
"core-js": "^3.0.0",
|
|
47
|
+
"react-dom": "-",
|
|
48
|
+
"react": "-"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@teambit/legacy": "-",
|
|
52
|
+
"@types/mocha": "9.1.0",
|
|
53
|
+
"@types/testing-library__jest-dom": "5.9.5",
|
|
54
|
+
"@types/jest": "^26.0.0",
|
|
55
|
+
"@types/react-dom": "^17.0.5",
|
|
56
|
+
"@types/react": "^17.0.8",
|
|
57
|
+
"@types/node": "12.20.4",
|
|
58
|
+
"react-dom": "-",
|
|
59
|
+
"react": "-"
|
|
60
|
+
},
|
|
61
|
+
"peerDependencies": {
|
|
62
|
+
"@teambit/legacy": "1.0.229",
|
|
63
|
+
"react-dom": "^16.8.0 || ^17.0.0",
|
|
64
|
+
"react": "^16.8.0 || ^17.0.0"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"private": false,
|
|
69
|
+
"engines": {
|
|
70
|
+
"node": ">=12.22.0"
|
|
71
|
+
},
|
|
72
|
+
"repository": {
|
|
73
|
+
"type": "git",
|
|
74
|
+
"url": "https://github.com/teambit/bit"
|
|
75
|
+
},
|
|
76
|
+
"keywords": [
|
|
77
|
+
"bit",
|
|
78
|
+
"bit-aspect",
|
|
79
|
+
"components",
|
|
80
|
+
"collaboration",
|
|
81
|
+
"web",
|
|
82
|
+
"react",
|
|
83
|
+
"react-components",
|
|
84
|
+
"angular",
|
|
85
|
+
"angular-components",
|
|
86
|
+
"vue",
|
|
87
|
+
"vue-components"
|
|
88
|
+
]
|
|
89
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"lib": [
|
|
4
|
+
"es2019",
|
|
5
|
+
"DOM",
|
|
6
|
+
"ES6",
|
|
7
|
+
"DOM.Iterable",
|
|
8
|
+
"ScriptHost"
|
|
9
|
+
],
|
|
10
|
+
"target": "es2015",
|
|
11
|
+
"module": "commonjs",
|
|
12
|
+
"jsx": "react",
|
|
13
|
+
"declaration": true,
|
|
14
|
+
"sourceMap": true,
|
|
15
|
+
"skipLibCheck": true,
|
|
16
|
+
"moduleResolution": "node",
|
|
17
|
+
"esModuleInterop": true,
|
|
18
|
+
"resolveJsonModule": true,
|
|
19
|
+
"composite": true,
|
|
20
|
+
"emitDeclarationOnly": true,
|
|
21
|
+
"outDir": "dist",
|
|
22
|
+
"experimentalDecorators": true,
|
|
23
|
+
"emitDecoratorMetadata": true,
|
|
24
|
+
"allowSyntheticDefaultImports": true,
|
|
25
|
+
"strictPropertyInitialization": false,
|
|
26
|
+
"strict": true,
|
|
27
|
+
"noImplicitAny": false,
|
|
28
|
+
"rootDir": ".",
|
|
29
|
+
"preserveConstEnums": true
|
|
30
|
+
},
|
|
31
|
+
"exclude": [
|
|
32
|
+
"dist"
|
|
33
|
+
]
|
|
34
|
+
}
|
package/types/asset.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
declare module '*.png' {
|
|
2
|
+
const value: any;
|
|
3
|
+
export = value;
|
|
4
|
+
}
|
|
5
|
+
declare module '*.svg' {
|
|
6
|
+
import type { FunctionComponent, SVGProps } from 'react';
|
|
7
|
+
|
|
8
|
+
export const ReactComponent: FunctionComponent<SVGProps<SVGSVGElement> & { title?: string }>;
|
|
9
|
+
const src: string;
|
|
10
|
+
export default src;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// @TODO Gilad
|
|
14
|
+
declare module '*.jpg' {
|
|
15
|
+
const value: any;
|
|
16
|
+
export = value;
|
|
17
|
+
}
|
|
18
|
+
declare module '*.jpeg' {
|
|
19
|
+
const value: any;
|
|
20
|
+
export = value;
|
|
21
|
+
}
|
|
22
|
+
declare module '*.gif' {
|
|
23
|
+
const value: any;
|
|
24
|
+
export = value;
|
|
25
|
+
}
|
|
26
|
+
declare module '*.bmp' {
|
|
27
|
+
const value: any;
|
|
28
|
+
export = value;
|
|
29
|
+
}
|
package/types/style.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
declare module '*.module.css' {
|
|
2
|
+
const classes: { readonly [key: string]: string };
|
|
3
|
+
export default classes;
|
|
4
|
+
}
|
|
5
|
+
declare module '*.module.scss' {
|
|
6
|
+
const classes: { readonly [key: string]: string };
|
|
7
|
+
export default classes;
|
|
8
|
+
}
|
|
9
|
+
declare module '*.module.sass' {
|
|
10
|
+
const classes: { readonly [key: string]: string };
|
|
11
|
+
export default classes;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
declare module '*.module.less' {
|
|
15
|
+
const classes: { readonly [key: string]: string };
|
|
16
|
+
export default classes;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
declare module '*.less' {
|
|
20
|
+
const classes: { readonly [key: string]: string };
|
|
21
|
+
export default classes;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
declare module '*.css' {
|
|
25
|
+
const classes: { readonly [key: string]: string };
|
|
26
|
+
export default classes;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
declare module '*.sass' {
|
|
30
|
+
const classes: { readonly [key: string]: string };
|
|
31
|
+
export default classes;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
declare module '*.scss' {
|
|
35
|
+
const classes: { readonly [key: string]: string };
|
|
36
|
+
export default classes;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
declare module '*.mdx' {
|
|
40
|
+
const component: any;
|
|
41
|
+
export default component;
|
|
42
|
+
}
|