vitest 0.0.39 → 0.0.40
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/dist/chunk-LUQHGOPU.js +1 -0
- package/dist/chunk-W4BWZKS2.js +1 -0
- package/dist/chunk-Z2OPSSDM.js +1 -0
- package/dist/global-OOVANJ2U.js +1 -0
- package/dist/index.d.ts +13 -7
- package/dist/index.js +1 -1
- package/dist/node/cli.d.ts +11 -2
- package/dist/node/cli.js +4 -4
- package/dist/node/entry.js +16 -17
- package/dist/{types-91b8a38d.d.ts → types-15d74511.d.ts} +34 -32
- package/package.json +4 -6
- package/dist/chunk-7SGHSD2B.js +0 -1
- package/dist/chunk-SAR64N7W.js +0 -1
- package/dist/chunk-TUQVO6ML.js +0 -1
- package/dist/global-PFX5FMYU.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as r,f as a,g as s,h as l,i as c,j as d,k as p,l as u,m as f,n as g,o as x}from"./chunk-Z2OPSSDM.js";import{d as i,f as e}from"./chunk-XPSQDVUG.js";var R={};i(R,{afterAll:()=>u,afterEach:()=>g,assert:()=>v,beforeAll:()=>p,beforeEach:()=>f,chai:()=>m,clearContext:()=>x,createSuiteHooks:()=>s,defaultSuite:()=>a,describe:()=>c,expect:()=>S,it:()=>d,mock:()=>T,should:()=>C,sinon:()=>t,spy:()=>k,stub:()=>y,suite:()=>r,test:()=>l});e();e();e();import m from"chai";import{assert as v,should as C,expect as S}from"chai";e();import t from"sinon";var{mock:T,spy:k,stub:y}=t;t.fn=t.spy;export{m as a,v as b,C as c,S as d,t as e,T as f,k as g,y as h,R as i};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as t}from"./chunk-XPSQDVUG.js";t();import{resolve as s}from"path";import{fileURLToPath as e}from"url";var i=s(e(import.meta.url),"../../dist"),a=["**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],p=["**/node_modules/**","**/dist/**"],d=["suite","test","describe","it","chai","expect","assert","sinon","spy","mock","stub","beforeAll","afterAll","beforeEach","afterEach"];export{i as a,a as b,p as c,d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as k}from"./chunk-XPSQDVUG.js";k();k();var a={children:[],currentSuite:null};k();var x=new WeakMap,C=new WeakMap;function H(o,e){x.set(o,e)}function q(o){return x.get(o)}function M(o,e){C.set(o,e)}function b(o){return C.get(o)}var A=Q(),y=A("");function c(){return a.currentSuite||y}function G(){return{beforeAll:[],afterAll:[],beforeEach:[],afterEach:[]}}function f(o,e=()=>{},r,l){var T;let u=[],n=[],t;S();let i=W((p,d,s,R)=>{let F={type:"task",name:p,mode:s,computeMode:R??l??"serial",suite:{}};H(F,d),u.push(F)}),g={type:"collector",name:o,mode:r,test:i,children:u,collect:v,clear:w,on:E};function E(p,...d){b(t)[p].push(...d)}function S(){t={type:"suite",computeMode:"serial",name:o,mode:r,children:[]},M(t,G())}function w(){u.length=0,n.length=0,S()}async function v(p){if(n.length=0,e){let s=a.currentSuite;a.currentSuite=g,await e(i),a.currentSuite=s}let d=await Promise.all([...n,...u].map(s=>s.type==="collector"?s.collect(p):s));return t.file=p,t.children=d,d.forEach(s=>{s.type==="task"&&(s.suite=t,p&&(s.file=p))}),t}return(T=a.currentSuite)==null||T.children.push(g),g}function W(o){function e(t,i){o(t,i,"run")}e.concurrent=r,e.skip=l,e.only=u,e.todo=n;function r(t,i){o(t,i,"run","concurrent")}r.skip=(t,i)=>o(t,i,"skip","concurrent"),r.only=(t,i)=>o(t,i,"only","concurrent"),r.todo=n;function l(t,i){o(t,i,"skip")}l.concurrent=r.skip;function u(t,i){o(t,i,"only")}u.concurrent=r.only;function n(t){o(t,()=>{},"todo")}return n.concurrent=n,e}var P=function(){function o(n,t){return c().test(n,t)}function e(n,t){return c().test.concurrent(n,t)}e.skip=(n,t)=>c().test.concurrent.skip(n,t),e.only=(n,t)=>c().test.concurrent.only(n,t),e.todo=n=>c().test.concurrent.todo(n);function r(n,t){return c().test.skip(n,t)}r.concurrent=(n,t)=>c().test.skip.concurrent(n,t);function l(n,t){return c().test.only(n,t)}l.concurrent=(n,t)=>c().test.only.concurrent(n,t);function u(n){return c().test.todo(n)}return u.concurrent=n=>c().test.todo.concurrent(n),o.concurrent=e,o.skip=r,o.only=l,o.todo=u,o}();function Q(){function o(n,t){return f(n,t,"run")}function e(n,t){return f(n,t,"run","concurrent")}e.skip=(n,t)=>f(n,t,"skip","concurrent"),e.only=(n,t)=>f(n,t,"only","concurrent"),e.todo=n=>f(n,void 0,"todo");function r(n,t){return f(n,t,"skip")}r.concurrent=e.skip;function l(n,t){return f(n,t,"only")}l.concurrent=e.only;function u(n){return f(n,void 0,"todo")}return u.concurrent=e.todo,o.concurrent=e,o.skip=r,o.only=l,o.todo=u,o}var I=A,J=P,K=o=>c().on("beforeAll",o),L=o=>c().on("afterAll",o),N=o=>c().on("beforeEach",o),O=o=>c().on("afterEach",o);function U(){a.children.length=0,y.clear(),a.currentSuite=y}export{a,q as b,M as c,b as d,A as e,y as f,G as g,P as h,I as i,J as j,K as k,L as l,N as m,O as n,U as o};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as r}from"./chunk-LUQHGOPU.js";import"./chunk-Z2OPSSDM.js";import{d as l}from"./chunk-W4BWZKS2.js";import{f as i}from"./chunk-XPSQDVUG.js";i();function a(){l.forEach(o=>{globalThis[o]=r[o]})}export{a as registerApiGlobally};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as pretty_format from 'pretty-format';
|
|
2
|
-
import { T as TestFactory, S as SuiteCollector, a as TestFunction, b as
|
|
3
|
-
export { C as ComputeMode, F as File, G as GlobalContext, H as HookListener,
|
|
2
|
+
import { T as TestFactory, S as SuiteCollector, a as TestFunction, b as SuiteHooks, U as UserOptions } from './types-15d74511';
|
|
3
|
+
export { C as ComputeMode, F as File, G as GlobalContext, H as HookListener, l as Reporter, R as ResolvedConfig, c as RunMode, k as RunnerContext, j as Suite, S as SuiteCollector, b as SuiteHooks, e as SuiteState, f as Task, h as TaskOrSuite, g as TaskResult, d as TaskState, i as TestCollector, T as TestFactory, a as TestFunction, U as UserOptions } from './types-15d74511';
|
|
4
4
|
export { assert, default as chai, expect, should } from 'chai';
|
|
5
5
|
import sinon from 'sinon';
|
|
6
6
|
export { default as sinon } from 'sinon';
|
|
@@ -30,6 +30,12 @@ declare const suite: {
|
|
|
30
30
|
};
|
|
31
31
|
};
|
|
32
32
|
declare const defaultSuite: SuiteCollector;
|
|
33
|
+
declare function createSuiteHooks(): {
|
|
34
|
+
beforeAll: never[];
|
|
35
|
+
afterAll: never[];
|
|
36
|
+
beforeEach: never[];
|
|
37
|
+
afterEach: never[];
|
|
38
|
+
};
|
|
33
39
|
declare const test: {
|
|
34
40
|
(name: string, fn: TestFunction): void;
|
|
35
41
|
concurrent: {
|
|
@@ -93,10 +99,10 @@ declare const it: {
|
|
|
93
99
|
concurrent(name: string): void;
|
|
94
100
|
};
|
|
95
101
|
};
|
|
96
|
-
declare const beforeAll: (fn:
|
|
97
|
-
declare const afterAll: (fn:
|
|
98
|
-
declare const beforeEach: (fn:
|
|
99
|
-
declare const afterEach: (fn:
|
|
102
|
+
declare const beforeAll: (fn: SuiteHooks['beforeAll'][0]) => void;
|
|
103
|
+
declare const afterAll: (fn: SuiteHooks['afterAll'][0]) => void;
|
|
104
|
+
declare const beforeEach: (fn: SuiteHooks['beforeEach'][0]) => void;
|
|
105
|
+
declare const afterEach: (fn: SuiteHooks['afterEach'][0]) => void;
|
|
100
106
|
declare function clearContext(): void;
|
|
101
107
|
|
|
102
108
|
declare const mock: sinon.SinonMockStatic;
|
|
@@ -140,4 +146,4 @@ declare global {
|
|
|
140
146
|
}
|
|
141
147
|
}
|
|
142
148
|
|
|
143
|
-
export { afterAll, afterEach, beforeAll, beforeEach, clearContext, defaultSuite, describe, it, mock, spy, stub, suite, test };
|
|
149
|
+
export { afterAll, afterEach, beforeAll, beforeEach, clearContext, createSuiteHooks, defaultSuite, describe, it, mock, spy, stub, suite, test };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as l,b as m,c as n,d as o,e as p,f as q,g as r,h as s}from"./chunk-LUQHGOPU.js";import{e as a,f as b,g as c,h as d,i as e,j as f,k as g,l as h,m as i,n as j,o as k}from"./chunk-Z2OPSSDM.js";import"./chunk-XPSQDVUG.js";export{h as afterAll,j as afterEach,m as assert,g as beforeAll,i as beforeEach,l as chai,k as clearContext,c as createSuiteHooks,b as defaultSuite,e as describe,o as expect,f as it,q as mock,n as should,p as sinon,r as spy,s as stub,a as suite,d as test};
|
package/dist/node/cli.d.ts
CHANGED
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TransformResult, ViteDevServer } from 'vite';
|
|
2
|
+
import { R as ResolvedConfig } from '../types-15d74511';
|
|
2
3
|
import '@antfu/utils';
|
|
3
4
|
import 'jest-snapshot';
|
|
4
5
|
import 'jest-snapshot/build/State';
|
|
5
6
|
|
|
7
|
+
interface ModuleCache {
|
|
8
|
+
promise?: Promise<any>;
|
|
9
|
+
exports?: any;
|
|
10
|
+
transformResult?: TransformResult;
|
|
11
|
+
}
|
|
12
|
+
|
|
6
13
|
declare global {
|
|
7
14
|
namespace NodeJS {
|
|
8
15
|
interface Process {
|
|
9
16
|
__vitest__: {
|
|
10
|
-
|
|
17
|
+
config: ResolvedConfig;
|
|
18
|
+
server: ViteDevServer;
|
|
19
|
+
moduleCache: Map<string, ModuleCache>;
|
|
11
20
|
};
|
|
12
21
|
}
|
|
13
22
|
}
|
package/dist/node/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{a as V}from"../chunk-W4BWZKS2.js";import{a as x,b as O,f as p}from"../chunk-XPSQDVUG.js";p();import{resolve as Y}from"path";import Z from"sade";import v from"picocolors";var M="0.0.40";p();p();import{builtinModules as z,createRequire as L}from"module";import{fileURLToPath as N,pathToFileURL as $}from"url";import{dirname as E,resolve as q}from"path";import B from"vm";var H=process.platform==="win32",D={"/@vite/client":{injectQuery:e=>e,createHotContext(){return{accept:()=>{},prune:()=>{}}},updateStyle(){}}};async function T({moduleCache:e,root:r,files:t,fetch:f,inline:n,external:c}){let g=[];for(let s of t)g.push(await R(`/@fs/${j(q(s))}`,[]));return g;async function y(s,i,o){o=[...o,s];let a=async l=>{if(o.includes(l)){if(!e.get(l))throw new Error(`Circular dependency detected
|
|
2
2
|
Stack:
|
|
3
|
-
${[...o,
|
|
4
|
-
`)}`);return e.get(
|
|
3
|
+
${[...o,l].reverse().map(U=>`- ${U}`).join(`
|
|
4
|
+
`)}`);return e.get(l).exports}return R(l,o)};if(s in D)return D[s];let m=await f(s);if(!m)throw new Error(`failed to load ${s}`);let d=$(i).href,u={};h(s,{transformResult:m,exports:u});let C=N(d),S={require:L(d),__filename:C,__dirname:E(C),__vite_ssr_import__:a,__vite_ssr_dynamic_import__:a,__vite_ssr_exports__:u,__vite_ssr_exportAll__:l=>A(u,l),__vite_ssr_import_meta__:{url:d}};return await B.runInThisContext(`async (${Object.keys(S).join(",")}) => { ${m.code} }`,{filename:i,lineOffset:0})(...Object.values(S)),u}function h(s,i){e.has(s)?Object.assign(e.get(s),i):e.set(s,i)}function _(s){for(let i of n)if(typeof i=="string"){if(s.includes(`/node_modules/${i}/`))return!1}else if(i.test(s))return!1;for(let i of c)if(typeof i=="string"){if(s.includes(`/node_modules/${i}/`))return!0}else if(i.test(s))return!0;return s.includes("/node_modules/")}async function R(s,i){var d,u;let o=J(s);if(z.includes(o))return import(o);let a=Q(o,r);if(_(a))return a.match(/^\w:\//)?import(`/${a}`):import(a);if((d=e.get(a))==null?void 0:d.promise)return(u=e.get(a))==null?void 0:u.promise;let m=y(o,a,i);return h(a,{promise:m}),await m}function A(s,i){for(let o in i)if(o!=="default")try{Object.defineProperty(s,o,{enumerable:!0,configurable:!0,get(){return i[o]}})}catch{}}}function J(e){return e&&e.startsWith("/@id/__x00__")&&(e=`\0${e.slice("/@id/__x00__".length)}`),e&&e.startsWith("/@id/")&&(e=e.slice("/@id/".length)),e.startsWith("__vite-browser-external:")&&(e=e.slice("__vite-browser-external:".length)),e}function Q(e,r){let t=j(e).startsWith("/@fs/")?e.slice(4):e.startsWith(E(r))?e:e.startsWith("/")?j(q(r,e.slice(1))):e;return t.startsWith("//")&&(t=t.slice(1)),H&&t.startsWith("/")?$(t.slice(1)).href:t}function j(e){return e.replace(/\\/g,"/")}p();async function F(e,r){if(r.match(/\.(?:[cm]?[jt]sx?|json)$/))return await e.transformRequest(r,{ssr:!0});{let t=await e.transformRequest(r);return t?await e.ssrTransform(t.code,t.map,r):void 0}}async function W(e,r,t,f){let n={root:e.config.root,files:f,fetch:c=>F(e,c),inline:r.depsInline,external:r.depsExternal,moduleCache:t};try{await T(n)}catch(c){throw process.exitCode=1,c}finally{r.watch||await e.close()}}p();import{resolve as I}from"path";import{findUp as G}from"find-up";import{createServer as K}from"vite";var X=["vitest.config.ts","vitest.config.js","vitest.config.mjs","vite.config.ts","vite.config.js","vite.config.mjs"];async function P(e={}){var g,y,h,_;let{filters:r}=e,t=I(e.root||process.cwd());process.chdir(t);let f=e.config?I(t,e.config):await G(X,{cwd:t}),n=x({},e);n.config=f,n.root=t,n.filters=r?Array.isArray(r)?r:[r]:void 0;let c=await K({root:t,logLevel:"error",clearScreen:!1,configFile:n.config,optimizeDeps:{exclude:["vitest"]}});return await c.pluginContainer.buildStart({}),Object.assign(n,c.config.test),n.depsInline=["vitest/dist","vitest/src","vue","@vue","diff",...((y=(g=c.config.test)==null?void 0:g.deps)==null?void 0:y.inline)||[]],n.depsExternal=((_=(h=c.config.test)==null?void 0:h.deps)==null?void 0:_.external)||[],{server:c,config:n}}Z("vitest [filter]",!0).version(M).describe("A blazing fast unit test framework powered by Vite.").option("-r, --root","root path",process.cwd()).option("-c, --config","path to config file").option("-w, --watch","watch mode",!1).option("-u, --update","update snapshot",!1).option("--global","inject apis globally",!1).option("--dom","mock browser api using jsdom or happy-dom","").action(async(e,r)=>{process.env.VITEST="true",console.log(v.yellow(v.bold(`
|
|
5
5
|
Vitest is currently in closed beta exclusively for Sponsors`))),console.log(v.magenta(`Become a Sponsor of ${v.underline("https://github.com/sponsors/patak-js")} or ${v.underline("https://github.com/sponsors/antfu")}
|
|
6
6
|
to access the source code and issues tracker \u{1F496}
|
|
7
|
-
`));let
|
|
7
|
+
`));let{config:t,server:f}=await P(O(x({},r),{filters:e})),n=new Map;process.__vitest__={server:f,config:t,moduleCache:n},await W(f,t,n,[Y(V,"./node/entry.js")])}).parse(process.argv);
|
package/dist/node/entry.js
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
import{a as
|
|
2
|
-
`)}function
|
|
3
|
-
`).map(
|
|
1
|
+
import{a as z,b as G,c as J,d as V,f as Y,g as Q,o as X}from"../chunk-Z2OPSSDM.js";import{b as Z,c as ee}from"../chunk-W4BWZKS2.js";import{c as Oe,e as Ae,f as c}from"../chunk-XPSQDVUG.js";var se=Oe((ft,oe)=>{c();"use strict";oe.exports=t=>{let e=/^\\\\\?\\/.test(t),n=/[^\u0000-\u0080]+/.test(t);return e||n?t:t.replace(/\\/g,"/")}});c();c();c();import ue from"jest-snapshot";c();import De from"chai";import He from"jest-snapshot";c();import Ee from"@jest/test-result";var{makeEmptyAggregatedTestResult:Pe}=Ee,L=t=>{let e=Pe().snapshot;return e.didUpdate=t.updateSnapshot==="all",e},te=t=>{let e={added:0,fileDeleted:!1,matched:0,unchecked:0,uncheckedKeys:[],unmatched:0,updated:0},n=t.getUncheckedCount(),o=t.getUncheckedKeys();n&&t.removeUncheckedKeys();let i=t.save();return e.fileDeleted=i.deleted,e.added=t.added,e.matched=t.matched,e.unmatched=t.unmatched,e.updated=t.updated,e.unchecked=i.deleted?0:n,e.uncheckedKeys=Array.from(o),e},ne=(t,e,n)=>{e.added&&t.filesAdded++,e.fileDeleted&&t.filesRemoved++,e.unmatched&&t.filesUnmatched++,e.updated&&t.filesUpdated++,t.added+=e.added,t.matched+=e.matched,t.unchecked+=e.unchecked,e.uncheckedKeys&&e.uncheckedKeys.length>0&&t.uncheckedKeysByFile.push({filePath:n,keys:e.uncheckedKeys}),t.unmatched+=e.unmatched,t.updated+=e.updated,t.total+=e.added+e.matched+e.unmatched+e.updated};c();var ie=Ae(se());import R,{isAbsolute as Fe}from"path";import{pluralize as y}from"jest-util";import w from"picocolors";var _=(t,e)=>{Fe(e)&&(e=R.relative(t,e));let n=R.dirname(e),o=R.basename(e);return(0,ie.default)(w.dim(n+R.sep)+w.bold(o))},$=" \u203A ",re=" \u21B3 ",B=" \u2022 ",je=t=>w.bold(w.red(t)),ae=t=>w.bold(w.yellow(t)),Le=t=>w.bold(w.green(t)),D=w.dim,le=t=>w.bold(w.green(t)),_e=w.bold,Be=t=>w.bold(w.green(t)),H="re-run mocha with `--update` to update them",ce=(t,e)=>{let n=[];if(n.push(_e("Snapshot Summary")),e.added&&n.push(`${Le(`${$+y("snapshot",e.added)} written `)}from ${y("test suite",e.filesAdded)}.`),e.unmatched&&n.push(`${je(`${$}${y("snapshot",e.unmatched)} failed`)} from ${y("test suite",e.filesUnmatched)}. ${D(`Inspect your code changes or ${H} to update them.`)}`),e.updated&&n.push(`${Be(`${$+y("snapshot",e.updated)} updated `)}from ${y("test suite",e.filesUpdated)}.`),e.filesRemoved&&(e.didUpdate?n.push(`${le(`${$}${y("snapshot file",e.filesRemoved)} removed `)}from ${y("test suite",e.filesRemoved)}.`):n.push(`${ae(`${$}${y("snapshot file",e.filesRemoved)} obsolete `)}from ${y("test suite",e.filesRemoved)}. ${D(`To remove ${e.filesRemoved===1?"it":"them all"}, ${H}.`)}`)),e.filesRemovedList&&e.filesRemovedList.length){let[o,...i]=e.filesRemovedList;n.push(` ${re} ${B}${_(t,o)}`),i.forEach(s=>{n.push(` ${B}${_(t,s)}`)})}return e.unchecked&&(e.didUpdate?n.push(`${le(`${$}${y("snapshot",e.unchecked)} removed `)}from ${y("test suite",e.uncheckedKeysByFile.length)}.`):n.push(`${ae(`${$}${y("snapshot",e.unchecked)} obsolete `)}from ${y("test suite",e.uncheckedKeysByFile.length)}. ${D(`To remove ${e.unchecked===1?"it":"them all"}, ${H}.`)}`),e.uncheckedKeysByFile.forEach(o=>{n.push(` ${re}${_(t,o.filePath)}`),o.keys.forEach(i=>{n.push(` ${B}${i}`)})})),n};var{expect:Ne}=De,{SnapshotState:We}=He,N=class{snapshotState=null;snapshotSummary;snapshotOptions;ctx=null;testFile="";snapshotResolver;rootDir;constructor({rootDir:e,update:n,snapshotResolver:o=null}){this.rootDir=e,this.snapshotResolver=o;let i=process.env,s=!!i.CI,r=n||i.UPDATE_SNAPSHOT;this.snapshotOptions={updateSnapshot:s&&!r?"none":r?"all":"new"},this.snapshotSummary=L(this.snapshotOptions)}onFileChanged(){!this.ctx||(this.snapshotState!==null&&this.saveSnap(),this.testFile=this.ctx.file,this.snapshotState=new We(this.snapshotResolver.resolveSnapshotPath(this.testFile),this.snapshotOptions))}setTask(e){var n;this.setContext({file:((n=e.file)==null?void 0:n.filepath)||e.name,title:e.name,fullTitle:[e.suite.name,e.name].filter(Boolean).join(" > ")})}setContext(e){!e.title||!e.file||(this.ctx=e,this.testFile!==e.file&&this.onFileChanged())}assert(e,n){if(!this.snapshotState||!this.ctx)return;let{actual:o,expected:i,key:s,pass:r}=this.snapshotState.match({testName:this.ctx.fullTitle||this.ctx.title||this.ctx.file,received:e,isInline:!1});r||Ne(o.trim()).equals(i?i.trim():"",n||`Snapshot name: \`${s}\``)}clear(){this.snapshotSummary=L(this.snapshotOptions)}saveSnap(){if(!this.testFile||!this.snapshotState)return;let e=te(this.snapshotState);ne(this.snapshotSummary,e,this.testFile),this.testFile="",this.snapshotState=null}report(){let e=ce(this.rootDir,this.snapshotSummary);if(e.length>1)return e}};var{addSerializer:Ue}=ue,O;function A(){return O}async function de(t){let{root:e}=t;return O=new N({rootDir:e,update:t.update}),O.snapshotResolver=await ue.buildSnapshotResolver({transform:[],rootDir:e}),function(n,o){for(let i of["matchSnapshot","toMatchSnapshot"])o.addMethod(n.Assertion.prototype,i,function(s){let r=o.flag(this,"object");O.assert(r,s)});n.expect.addSnapshotSerializer=Ue}}c();import{slash as Ke}from"@antfu/utils";c();import{basename as Ie}from"path";c();import{toArray as E}from"@antfu/utils";function he(t){let e=[],n=[];for(let o of t.children)e.length===0||o.computeMode===e[0].computeMode?e.push(o):(n.push(e),e=[o]);return e.length>0&&n.push(e),n}function W(t){t.some(e=>e.mode==="only")&&t.forEach(e=>{e.mode==="run"?e.mode="skip":e.mode==="only"&&(e.mode="run")})}function b(t){return E(t).flatMap(e=>e.children.flatMap(n=>n.type==="task"?[n]:b(n)))}function U(t){return E(t).flatMap(e=>e.type==="suite"?[e,...U(e.children)]:[])}function M(t){return E(t).some(e=>e.children.some(n=>n.type==="task"||M(n)))}function fe(t){return E(t).some(e=>e.children.some(n=>{var o;return((o=n.result)==null?void 0:o.state)==="fail"}))}async function P(t){let e={};for(let i of t){let s={name:Ie(i),type:"suite",mode:"run",computeMode:"serial",filepath:i,children:[]};J(s,Q()),X();try{await import(i);for(let r of[Y,...z.children])if(r.type==="task")s.children.push(r);else{let u=await r.collect(s);(u.name||u.children.length)&&s.children.push(u)}}catch(r){s.result={start:performance.now(),state:"fail",error:r},process.exitCode=1}e[i]=s}let o=Object.values(e).reduce((i,s)=>i.concat(s.children),[]);return W(o),o.forEach(i=>{i.type==="suite"&&(i.mode==="skip"?i.children.forEach(s=>s.mode==="run"&&(s.mode="skip")):W(i.children))}),e}async function pe(t){var l;let{reporter:e,snapshotManager:n,filesMap:o}=t;await((l=e.onWatcherStart)==null?void 0:l.call(e,t));let i,s=new Set,r=new Set,{server:u,moduleCache:a}=process.__vitest__;u.watcher.on("change",async f=>{f=Ke(f),me(f,t,s,r),r.forEach(g=>a.delete(g)),r.clear(),s.size!==0&&(clearTimeout(i),i=setTimeout(async()=>{var T,h,S,x;if(s.size===0)return;n.clear();let g=Array.from(s);s.clear(),await((T=e.onWatcherRerun)==null?void 0:T.call(e,g,f,t)),g.forEach(Re=>a.delete(Re));let C=await P(g);Object.assign(o,C);let v=Object.values(o);(h=e.onCollected)==null||h.call(e,v,t),await I(v,t),n.saveSnap(),await((S=e.onFinished)==null?void 0:S.call(e,t,Object.values(C))),await((x=e.onWatcherStart)==null?void 0:x.call(e,t))},100))}),await new Promise(()=>{})}function me(t,e,n=new Set,o=new Set){if(o.has(t)||n.has(t))return n;if(o.add(t),t in e.filesMap)return n.add(t),n;let i=process.__vitest__.server.moduleGraph.getModuleById(t);return i&&i.importers.forEach(s=>{s.id&&me(s.id,e,n,o)}),n}c();import qe from"fast-glob";async function ge(t){var n;let e=await qe(t.includes||Z,{absolute:!0,cwd:t.root,ignore:t.excludes||ee});return((n=t.filters)==null?void 0:n.length)&&(e=e.filter(o=>t.filters.some(i=>o.includes(i)))),e}c();c();import{performance as we}from"perf_hooks";import{relative as rt}from"path";import d from"picocolors";import ke from"listr";c();import{promises as ze,existsSync as Ge}from"fs";import k from"picocolors";import{createPatch as it}from"diff";import{notNullish as Je}from"@antfu/utils";import{SourceMapConsumer as Ve}from"source-map";async function K(t){var r;if(!(t instanceof Error)){console.error(t);return}let{moduleCache:e}=process.__vitest__,n=t,o=!1,s=tt(n.stack||"").find(u=>e.has(u.file));if(s){let u=(r=e.get(s.file))==null?void 0:r.transformResult,a=await Ye(u==null?void 0:u.map,s);if(a&&Ge(s.file)){let l=await ze.readFile(s.file,"utf-8");console.error(`${k.red(`${k.bold(n.name)}: ${n.message}`)}`),console.log(k.gray(`${s.file}:${a.line}:${a.column}`)),console.log(k.yellow(Xe(l,a))),o=!0}}o||console.error(n),n.showDiff&&console.error(k.gray(nt(ye(n.actual),ye(n.expected))))}function Ye(t,{line:e,column:n}){return new Promise(o=>{if(!t)return o(null);Ve.with(t,null,i=>{let s=i.originalPositionFor({line:e,column:n});s.line!=null&&s.column!=null?o(s):o(null)})})}var Se=/\r?\n/;function Qe(t,e){if(typeof e=="number")return e;let n=t.split(Se),{line:o,column:i}=e,s=0;for(let r=0;r<o-1;r++)s+=n[r].length+1;return s+i}function Xe(t,e=0,n,o=2){e=Qe(t,e),n=n||e;let i=t.split(Se),s=0,r=[];for(let u=0;u<i.length;u++)if(s+=i[u].length+1,s>=e){for(let a=u-o;a<=u+o||n>s;a++){if(a<0||a>=i.length)continue;let l=a+1;r.push(`${k.gray(`${l}${" ".repeat(Math.max(3-String(l).length,0))}|`)} ${i[a]}`);let f=i[a].length;if(a===u){let g=e-(s-f)+1,C=Math.max(1,n>s?f-g:n-e);r.push(`${k.gray(" |")} ${" ".repeat(g)}${"^".repeat(C)}`)}else if(a>u){if(n>s){let g=Math.max(Math.min(n-s,f),1);r.push(`${k.gray(" |")} ${"^".repeat(g)}`)}s+=f+1}}break}return r.join(`
|
|
2
|
+
`)}function ye(t){return String(t)}var Ze=/at (.*) \((.+):(\d+):(\d+)\)$/,et=/at ()(.+):(\d+):(\d+)$/;function tt(t){return t.split(`
|
|
3
|
+
`).map(o=>{let i=o.trim(),s=i.match(Ze)||i.match(et);if(!s)return null;let r=s[2];return r.startsWith("file://")&&(r=r.slice(7)),{method:s[1],file:s[2],line:parseInt(s[3]),column:parseInt(s[4])}}).filter(Je)}function nt(t,e){let n=2048;return t.length>n&&(t=`${t.substring(0,n)} ... Lines skipped`),e.length>n&&(e=`${e.substring(0,n)} ... Lines skipped`),ot(t,e)}function ot(t,e){let n=" ";function o(r){return r[0]==="+"?n+k.green(`${r[0]} ${r.slice(1)}`):r[0]==="-"?n+k.red(`${r[0]} ${r.slice(1)}`):r.match(/@@/)?"--":r.match(/\\ No newline/)?null:n+r}let s=it("string",t,e).split(`
|
|
4
4
|
`).splice(5);return`
|
|
5
|
-
${
|
|
6
|
-
${
|
|
5
|
+
${n}${k.red("- actual")}
|
|
6
|
+
${n}${k.green("+ expected")}
|
|
7
7
|
|
|
8
|
-
${s.map(
|
|
9
|
-
`)}`}function
|
|
10
|
-
`))}onCollected(e){this.start=
|
|
11
|
-
`));let
|
|
12
|
-
Failed to
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
${
|
|
17
|
-
${
|
|
18
|
-
|
|
19
|
-
`))}onSnapshotUpdate(){}};async function de(t){return await ae(t),t.global&&(await import("../global-PFX5FMYU.js")).registerApiGlobally(),t.dom==="happy-dom"?(await import("../happy-dom-RNJZR3YC.js")).setupHappyDOM(globalThis):t.dom&&(await import("../jsdom-6QAZGE6T.js")).setupJSDOM(globalThis),{filesMap:{},get files(){return Object.values(this.filesMap)},get suites(){return Object.values(this.filesMap).reduce((o,n)=>o.concat(n.suites),[])},get tasks(){return this.suites.reduce((o,n)=>o.concat(n.tasks),[])},config:t,reporter:t.reporter||new W,snapshotManager:T()}}c();import Ye from"fast-glob";async function he(t){var o;let e=await Ye(t.includes||q,{absolute:!0,cwd:t.root,ignore:t.excludes||z});return((o=t.filters)==null?void 0:o.length)&&(e=e.filter(n=>t.filters.some(r=>n.includes(r)))),e}async function O(t,e,o){await Promise.all(t.hooks[e].map(n=>n(...o)))}async function fe(t,e){var n,r,s;let{reporter:o}=e;if((n=T())==null||n.setTask(t),await((r=o.onTaskBegin)==null?void 0:r.call(o,t,e)),t.mode==="run"){try{await O(t.suite,"beforeEach",[t,t.suite]),await t.fn(),t.state="pass"}catch(i){t.state="fail",t.error=i,process.exitCode=1}try{await O(t.suite,"afterEach",[t,t.suite])}catch(i){t.state="fail",t.error=i,process.exitCode=1}}await((s=o.onTaskEnd)==null?void 0:s.call(o,t,e))}function L(t){t.some(e=>e.mode==="only")&&t.forEach(e=>{e.mode==="run"?e.mode="skip":e.mode==="only"&&(e.mode="run")})}async function pe(t,e){var n,r;let{reporter:o}=e;if(await((n=o.onSuiteBegin)==null?void 0:n.call(o,t,e)),t.mode==="skip")t.status="skip";else if(t.mode==="todo")t.status="todo";else try{await O(t,"beforeAll",[t]);for(let s of Qe(t.tasks)){let i=s[0].computeMode;if(i==="serial")for(let a of s)await fe(a,e);else i==="concurrent"&&await Promise.all(s.map(a=>fe(a,e)))}await O(t,"afterAll",[t])}catch(s){t.error=s,t.status="fail",process.exitCode=1}await((r=o.onSuiteEnd)==null?void 0:r.call(o,t,e))}function Qe(t){let e=[],o=[];for(let n of t)e.length===0||n.computeMode===e[0].computeMode?e.push(n):(o.push(e),e=[n]);return e.length>0&&o.push(e),o}async function Xe(t,e){var r,s;let{reporter:o}=e;if(t.suites.filter(i=>i.mode==="run").length!==0){if(await((r=o.onFileBegin)==null?void 0:r.call(o,t,e)),e.config.parallel)await Promise.all(t.suites.map(i=>pe(i,e)));else for(let i of t.suites)await pe(i,e);await((s=o.onFileEnd)==null?void 0:s.call(o,t,e))}}async function N(t,e){var n;let{reporter:o}=e;await((n=o.onCollected)==null?void 0:n.call(o,Object.values(t),e));for(let r of Object.values(t))await Xe(r,e)}async function me(t){var a,d;t.watch&&(process.__vite_node__.watch=!0);let e=await he(t);if(!e.length){console.error("No test files found"),process.exitCode=1;return}let o=await de(t),{filesMap:n,snapshotManager:r,reporter:s}=o;await((a=s.onStart)==null?void 0:a.call(s,t));let i=await M(e);Object.assign(n,i),await N(n,o),r.saveSnap(),await((d=s.onFinished)==null?void 0:d.call(s,o)),t.watch&&await se(o)}if(!process.__vite_node__||!process.__vitest__)throw new Error("Vitest can only run in vite-node environment, please use the CLI to start the process");var Ze=process.__vite_node__.server.config.test||{},et=process.__vitest__.options||{},tt=A(A({},et),Ze);await me(tt);var ot=setTimeout(()=>{process.exit()},500);ot.unref();
|
|
8
|
+
${s.map(o).filter(st).join(`
|
|
9
|
+
`)}`}function st(t){return typeof t!="undefined"&&t!==null}var q=class{start=0;end=0;listr=null;listrPromise=null;taskMap=new Map;cwd=process.cwd();relative(e){return rt(this.cwd,e)}onStart(e){this.cwd=e.root,console.log(d.green(`Running tests under ${d.gray(this.cwd)}
|
|
10
|
+
`))}onCollected(e){this.start=we.now(),this.taskMap=new Map,e.reduce((a,l)=>a.concat(b(l)),[]).forEach(a=>{let l={};l.promise=new Promise((f,g)=>{l.resolve=f,l.reject=g}),this.taskMap.set(a,l)});let o={exitOnError:!1},i=a=>({title:a.name,skip:()=>a.mode==="skip"||a.mode==="todo",task:async()=>{var l;return await((l=this.taskMap.get(a))==null?void 0:l.promise)}});function s(a){return a.children.map(l=>l.type==="task"?i(l):u(l))}function r(a){var l;if((l=a.result)==null?void 0:l.error)throw a.result.error;if(!M(a))throw new Error("No tasks found");return new ke(s(a),o)}function u(a){return{title:a.name,skip:()=>a.mode!=="run",task:()=>r(a)}}this.listr=new ke(e.map(a=>({title:this.relative(a.filepath),task:()=>{var l,f;if((l=a.result)==null?void 0:l.error)throw(f=a.result)==null?void 0:f.error;return r(a)}})),o),this.listrPromise=this.listr.run().catch(()=>{})}onTaskEnd(e){var n,o,i,s;((n=e.result)==null?void 0:n.state)==="fail"?(i=this.taskMap.get(e))==null||i.reject((o=e.result)==null?void 0:o.error):(s=this.taskMap.get(e))==null||s.resolve()}async onFinished(e,n=e.files){var C,v,T;await this.listrPromise,this.end=we.now(),console.log();let o=e.snapshotManager.report();o&&console.log(o.join(`
|
|
11
|
+
`));let i=U(n),s=b(n),r=i.filter(h=>{var S;return(S=h.result)==null?void 0:S.error}),u=s.filter(h=>{var S,x;return((S=h.result)==null?void 0:S.state)==="pass"||((x=h.result)==null?void 0:x.state)==="fail"}),a=s.filter(h=>{var S;return((S=h.result)==null?void 0:S.state)==="pass"}),l=s.filter(h=>{var S;return((S=h.result)==null?void 0:S.state)==="fail"}),f=s.filter(h=>h.mode==="skip"),g=s.filter(h=>h.mode==="todo");if(r.length){console.error(d.bold(d.red(`
|
|
12
|
+
Failed to run ${r.length} suites:`)));for(let h of r)console.error(d.red(`
|
|
13
|
+
- ${(C=h.file)==null?void 0:C.filepath} > ${h.name}`)),await K((v=h.result)==null?void 0:v.error),console.log()}if(l.length){console.error(d.bold(d.red(`
|
|
14
|
+
Failed Tests (${l.length})`)));for(let h of l)console.error(`${d.red(`
|
|
15
|
+
${d.inverse(" FAIL ")}`)} ${[h.suite.name,h.name].filter(Boolean).join(" > ")}`),await K((T=h.result)==null?void 0:T.error),console.log()}console.log(d.bold(d.green(`Passed ${a.length} / ${u.length}`))),l.length&&console.log(d.bold(d.red(`Failed ${l.length} / ${u.length}`))),f.length&&console.log(d.yellow(`Skipped ${f.length}`)),g.length&&console.log(d.dim(`Todo ${g.length}`)),console.log(`Time ${(this.end-this.start).toFixed(2)}ms`)}async onWatcherStart(e){await this.listrPromise;let n=e.tasks.filter(o=>{var i;return((i=o.result)==null?void 0:i.state)==="fail"});n.length?console.log(`
|
|
16
|
+
${d.bold(d.inverse(d.red(" FAIL ")))}${d.red(` ${n.length} tests failed. Watching for file changes...`)}`):console.log(`
|
|
17
|
+
${d.bold(d.inverse(d.green(" PASS ")))}${d.green(" Watching for file changes...")}`)}async onWatcherRerun(e,n){await this.listrPromise,console.clear(),console.log(d.blue("Re-running tests...")+d.dim(` [ ${this.relative(n)} ]
|
|
18
|
+
`))}};c();c();import F from"chai";import at from"sinon-chai";import lt from"chai-subset";c();function Ce(){return(t,e)=>{let n=t.Assertion.prototype;e.addMethod(n,"toEqual",function(o){return this.eql(o)}),e.addMethod(n,"toStrictEqual",function(o){return this.equal(o)}),e.addMethod(n,"toBe",function(o){return this.equal(o)}),e.addMethod(n,"toMatchObject",function(o){return this.containSubset(o)}),e.addMethod(n,"toMatch",function(o){return typeof o=="string"?this.include(o):this.match(o)}),e.addMethod(n,"toContain",function(o){return this.contain(o)}),e.addMethod(n,"toBeTruthy",function(){let o=e.flag(this,"object");this.assert(Boolean(o),"expected #{this} to be truthy","expected #{this} to not be truthy",o)}),e.addMethod(n,"toBeFalsy",function(){let o=e.flag(this,"object");this.assert(!o,"expected #{this} to be falsy","expected #{this} to not be falsy",o)}),e.addMethod(n,"toBeNaN",function(){return this.be.NaN}),e.addMethod(n,"toBeUndefined",function(){return this.be.undefined}),e.addMethod(n,"toBeNull",function(){return this.be.null}),e.addMethod(n,"toBeDefined",function(){return this.not.be.undefined}),e.addMethod(n,"toBeInstanceOf",function(o){return this.instanceOf(o)}),e.addMethod(n,"toHaveBeenCalledTimes",function(o){return this.callCount(o)}),e.addMethod(n,"toHaveBeenCalledOnce",function(){return this.callCount(1)}),e.addMethod(n,"toHaveBeenCalled",function(){return this.called}),e.addMethod(n,"toHaveBeenCalled",function(){return this.called}),e.addMethod(n,"toHaveBeenCalledWith",function(...o){return this.calledWith(...o)})}}async function $e(t){F.use(at),F.use(Ce()),F.use(lt),F.use(await de(t))}async function be(t){await $e(t),t.global&&(await import("../global-OOVANJ2U.js")).registerApiGlobally(),t.dom==="happy-dom"?(await import("../happy-dom-RNJZR3YC.js")).setupHappyDOM(globalThis):t.dom&&(await import("../jsdom-6QAZGE6T.js")).setupJSDOM(globalThis)}async function ve(t){return await be(t),{filesMap:{},get files(){return Object.values(this.filesMap)},get tasks(){return b(Object.values(this.filesMap))},config:t,reporter:t.reporter||new q,snapshotManager:A()}}async function j(t,e,n){await Promise.all(V(t)[e].map(o=>o(...n)))}async function ct(t,e){var o,i,s;if(t.mode!=="run")return;let{reporter:n}=e;(o=A())==null||o.setTask(t),await((i=n.onTaskBegin)==null?void 0:i.call(n,t,e)),t.result={start:performance.now(),state:"run"};try{await j(t.suite,"beforeEach",[t,t.suite]),await G(t)(),t.result.state="pass"}catch(r){t.result.state="fail",t.result.error=r,process.exitCode=1}try{await j(t.suite,"afterEach",[t,t.suite])}catch(r){t.result.state="fail",t.result.error=r,process.exitCode=1}t.result.end=performance.now(),await((s=n.onTaskEnd)==null?void 0:s.call(n,t,e))}async function Te(t,e){var o,i;let{reporter:n}=e;if(await((o=n.onSuiteBegin)==null?void 0:o.call(n,t,e)),t.result={start:performance.now(),state:"run"},t.mode==="skip")t.result.state="skip";else if(t.mode==="todo")t.result.state="todo";else try{await j(t,"beforeAll",[t]);for(let s of he(t)){let r=s[0].computeMode;if(r==="serial")for(let u of s)await xe(u,e);else r==="concurrent"&&await Promise.all(s.map(u=>xe(u,e)))}await j(t,"afterAll",[t])}catch(s){t.result.state="fail",t.result.error=s,process.exitCode=1}t.result.end=performance.now(),t.mode==="run"&&(M(t)?fe(t)&&(t.result.state="fail"):(t.result.state="fail",t.result.error=new Error(`No tests found in suite ${t.name}`),process.exitCode=1)),await((i=n.onSuiteEnd)==null?void 0:i.call(n,t,e))}async function xe(t,e){return t.type==="task"?ct(t,e):Te(t,e)}async function I(t,e){for(let n of t)await Te(n,e)}async function Me(t){var a,l,f;let e=await ge(t);if(!e.length){console.error("No test files found"),process.exitCode=1;return}let n=await ve(t),{filesMap:o,snapshotManager:i,reporter:s}=n;await((a=s.onStart)==null?void 0:a.call(s,t));let r=await P(e);Object.assign(o,r);let u=Object.values(o);await((l=s.onCollected)==null?void 0:l.call(s,u,n)),await I(u,n),i.saveSnap(),await((f=s.onFinished)==null?void 0:f.call(s,n)),t.watch&&await pe(n)}if(!process.__vitest__)throw new Error("Vitest can only run in vite-node environment, please use the CLI to start the process");await Me(process.__vitest__.config);var ut=setTimeout(()=>{process.exit()},500);ut.unref();
|
|
@@ -32,7 +32,7 @@ declare class SnapshotManager {
|
|
|
32
32
|
snapshotState: SnapshotStateType | null;
|
|
33
33
|
snapshotSummary: SnapshotSummary;
|
|
34
34
|
snapshotOptions: SnapshotStateOptions;
|
|
35
|
-
|
|
35
|
+
ctx: Context | null;
|
|
36
36
|
testFile: string;
|
|
37
37
|
snapshotResolver: SnapshotResolver | null;
|
|
38
38
|
rootDir: string;
|
|
@@ -81,12 +81,6 @@ interface UserOptions {
|
|
|
81
81
|
* @default false
|
|
82
82
|
*/
|
|
83
83
|
dom?: boolean | 'jsdom' | 'happy-dom';
|
|
84
|
-
/**
|
|
85
|
-
* Run tests files in parallel
|
|
86
|
-
*
|
|
87
|
-
* @default false
|
|
88
|
-
*/
|
|
89
|
-
parallel?: boolean;
|
|
90
84
|
/**
|
|
91
85
|
* Update snapshot files
|
|
92
86
|
*
|
|
@@ -107,24 +101,35 @@ interface UserOptions {
|
|
|
107
101
|
* Custom reporter for output
|
|
108
102
|
*/
|
|
109
103
|
reporter?: Reporter;
|
|
110
|
-
}
|
|
111
|
-
interface ResolvedConfig extends Required<UserOptions> {
|
|
112
104
|
filters?: string[];
|
|
105
|
+
config?: string | undefined;
|
|
106
|
+
}
|
|
107
|
+
interface ResolvedConfig extends Omit<Required<UserOptions>, 'config' | 'filters'> {
|
|
113
108
|
config?: string;
|
|
109
|
+
filters?: string[];
|
|
110
|
+
depsInline: (string | RegExp)[];
|
|
111
|
+
depsExternal: (string | RegExp)[];
|
|
114
112
|
}
|
|
115
113
|
declare type RunMode = 'run' | 'skip' | 'only' | 'todo';
|
|
116
114
|
declare type TaskState = RunMode | 'pass' | 'fail';
|
|
115
|
+
declare type SuiteState = RunMode | 'pass' | 'fail';
|
|
117
116
|
declare type ComputeMode = 'serial' | 'concurrent';
|
|
118
117
|
interface Task {
|
|
118
|
+
type: 'task';
|
|
119
119
|
name: string;
|
|
120
120
|
mode: RunMode;
|
|
121
121
|
computeMode: ComputeMode;
|
|
122
122
|
suite: Suite;
|
|
123
|
-
fn: () => Awaitable<void>;
|
|
124
123
|
file?: File;
|
|
125
|
-
|
|
124
|
+
result?: TaskResult;
|
|
125
|
+
}
|
|
126
|
+
interface TaskResult {
|
|
127
|
+
state: TaskState;
|
|
128
|
+
start: number;
|
|
129
|
+
end?: number;
|
|
126
130
|
error?: unknown;
|
|
127
131
|
}
|
|
132
|
+
declare type TaskOrSuite = Task | Suite;
|
|
128
133
|
declare type TestFunction = () => Awaitable<void>;
|
|
129
134
|
interface ConcurrentCollector {
|
|
130
135
|
(name: string, fn: TestFunction): void;
|
|
@@ -152,60 +157,57 @@ interface TestCollector {
|
|
|
152
157
|
todo: TodoCollector;
|
|
153
158
|
}
|
|
154
159
|
declare type HookListener<T extends any[]> = (...args: T) => Awaitable<void>;
|
|
160
|
+
interface SuiteHooks {
|
|
161
|
+
beforeAll: HookListener<[Suite]>[];
|
|
162
|
+
afterAll: HookListener<[Suite]>[];
|
|
163
|
+
beforeEach: HookListener<[Task, Suite]>[];
|
|
164
|
+
afterEach: HookListener<[Task, Suite]>[];
|
|
165
|
+
}
|
|
155
166
|
interface Suite {
|
|
167
|
+
type: 'suite';
|
|
156
168
|
name: string;
|
|
157
169
|
mode: RunMode;
|
|
158
|
-
|
|
170
|
+
computeMode: ComputeMode;
|
|
171
|
+
children: TaskOrSuite[];
|
|
159
172
|
file?: File;
|
|
160
|
-
|
|
161
|
-
status?: TaskState;
|
|
162
|
-
hooks: {
|
|
163
|
-
beforeAll: HookListener<[Suite]>[];
|
|
164
|
-
afterAll: HookListener<[Suite]>[];
|
|
165
|
-
beforeEach: HookListener<[Task, Suite]>[];
|
|
166
|
-
afterEach: HookListener<[Task, Suite]>[];
|
|
167
|
-
};
|
|
173
|
+
result?: TaskResult;
|
|
168
174
|
}
|
|
169
175
|
interface SuiteCollector {
|
|
170
176
|
readonly name: string;
|
|
171
177
|
readonly mode: RunMode;
|
|
178
|
+
type: 'collector';
|
|
172
179
|
test: TestCollector;
|
|
180
|
+
children: (Suite | Task | SuiteCollector)[];
|
|
173
181
|
collect: (file?: File) => Promise<Suite>;
|
|
174
182
|
clear: () => void;
|
|
175
|
-
on: <T extends keyof
|
|
183
|
+
on: <T extends keyof SuiteHooks>(name: T, ...fn: SuiteHooks[T]) => void;
|
|
176
184
|
}
|
|
177
185
|
declare type TestFactory = (test: (name: string, fn: TestFunction) => void) => Awaitable<void>;
|
|
178
|
-
interface File {
|
|
186
|
+
interface File extends Suite {
|
|
179
187
|
filepath: string;
|
|
180
|
-
suites: Suite[];
|
|
181
|
-
collected: boolean;
|
|
182
|
-
error?: unknown;
|
|
183
188
|
}
|
|
184
189
|
interface RunnerContext {
|
|
185
190
|
filesMap: Record<string, File>;
|
|
186
191
|
files: File[];
|
|
187
|
-
suites: Suite[];
|
|
188
192
|
tasks: Task[];
|
|
189
193
|
config: ResolvedConfig;
|
|
190
194
|
reporter: Reporter;
|
|
191
195
|
snapshotManager: SnapshotManager;
|
|
192
196
|
}
|
|
193
197
|
interface GlobalContext {
|
|
194
|
-
|
|
198
|
+
children: (SuiteCollector | Task)[];
|
|
195
199
|
currentSuite: SuiteCollector | null;
|
|
196
200
|
}
|
|
197
201
|
interface Reporter {
|
|
198
202
|
onStart?: (config: ResolvedConfig) => Awaitable<void>;
|
|
199
203
|
onCollected?: (files: File[], ctx: RunnerContext) => Awaitable<void>;
|
|
200
204
|
onFinished?: (ctx: RunnerContext, files?: File[]) => Awaitable<void>;
|
|
201
|
-
onSuiteBegin?: (suite: Suite, ctx: RunnerContext) => Awaitable<void>;
|
|
202
|
-
onSuiteEnd?: (suite: Suite, ctx: RunnerContext) => Awaitable<void>;
|
|
203
|
-
onFileBegin?: (file: File, ctx: RunnerContext) => Awaitable<void>;
|
|
204
|
-
onFileEnd?: (file: File, ctx: RunnerContext) => Awaitable<void>;
|
|
205
205
|
onTaskBegin?: (task: Task, ctx: RunnerContext) => Awaitable<void>;
|
|
206
206
|
onTaskEnd?: (task: Task, ctx: RunnerContext) => Awaitable<void>;
|
|
207
|
+
onSuiteBegin?: (suite: Suite, ctx: RunnerContext) => Awaitable<void>;
|
|
208
|
+
onSuiteEnd?: (suite: Suite, ctx: RunnerContext) => Awaitable<void>;
|
|
207
209
|
onWatcherStart?: (ctx: RunnerContext) => Awaitable<void>;
|
|
208
210
|
onWatcherRerun?: (files: string[], trigger: string, ctx: RunnerContext) => Awaitable<void>;
|
|
209
211
|
}
|
|
210
212
|
|
|
211
|
-
export { ComputeMode as C, File as F, GlobalContext as G, HookListener as H, ResolvedConfig as R, SuiteCollector as S, TestFactory as T, UserOptions as U, TestFunction as a,
|
|
213
|
+
export { ComputeMode as C, File as F, GlobalContext as G, HookListener as H, ResolvedConfig as R, SuiteCollector as S, TestFactory as T, UserOptions as U, TestFunction as a, SuiteHooks as b, RunMode as c, TaskState as d, SuiteState as e, Task as f, TaskResult as g, TaskOrSuite as h, TestCollector as i, Suite as j, RunnerContext as k, Reporter as l };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vitest",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.40",
|
|
4
4
|
"description": "A blazing fast unit test framework powered by Vite",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vite",
|
|
@@ -48,11 +48,9 @@
|
|
|
48
48
|
"lint": "eslint \"{src,test}/**/*.ts\"",
|
|
49
49
|
"prepublishOnly": "nr build",
|
|
50
50
|
"release": "bumpp --commit --push --tag && esmo scripts/publish.ts",
|
|
51
|
-
"test": "
|
|
52
|
-
"test
|
|
53
|
-
"
|
|
54
|
-
"test:react": "node bin/vitest.mjs --dev -r test/react",
|
|
55
|
-
"coverage": "node bin/vitest.mjs --dev -r test/core --coverage"
|
|
51
|
+
"test:all": "pnpm -r --stream --filter !vitest run test --",
|
|
52
|
+
"test": "node bin/vitest.mjs -r test/core",
|
|
53
|
+
"coverage": "node bin/vitest.mjs -r test/core --coverage"
|
|
56
54
|
},
|
|
57
55
|
"dependencies": {
|
|
58
56
|
"@antfu/utils": "^0.3.0",
|
package/dist/chunk-7SGHSD2B.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as F,b as h,f as y}from"./chunk-XPSQDVUG.js";y();y();var d={suites:[],currentSuite:null};var S=R(),k=S("");function c(){return d.currentSuite||k}function l(o,e=()=>{},r,i){let s=[],t=[],n={name:o,mode:r,hooks:{beforeAll:[],afterAll:[],beforeEach:[],afterEach:[]}},u=E((f,a,p,g)=>{s.push({name:f,mode:p,computeMode:g??i??"serial",suite:{},state:p!=="run"&&p!=="only"?p:void 0,fn:a})}),T={name:o,mode:r,test:u,collect:b,clear:C,on:x};function x(f,...a){n.hooks[f].push(...a)}function C(){s.length=0,t.length=0}async function b(f){t.length=0,e&&await e(u);let a=[...t,...s],p=h(F({},n),{tasks:a,file:f});return a.forEach(g=>{g.suite=p,f&&(g.file=f)}),p}return d.currentSuite=T,d.suites.push(T),T}function E(o){function e(n,u){o(n,u,"run")}e.concurrent=r,e.skip=i,e.only=s,e.todo=t;function r(n,u){o(n,u,"run","concurrent")}r.skip=(n,u)=>o(n,u,"skip","concurrent"),r.only=(n,u)=>o(n,u,"only","concurrent"),r.todo=t;function i(n,u){o(n,u,"skip")}i.concurrent=r.skip;function s(n,u){o(n,u,"only")}s.concurrent=r.only;function t(n){o(n,()=>{},"todo")}return t.concurrent=t,e}var A=function(){function o(t,n){return c().test(t,n)}function e(t,n){return c().test.concurrent(t,n)}e.skip=(t,n)=>c().test.concurrent.skip(t,n),e.only=(t,n)=>c().test.concurrent.only(t,n),e.todo=t=>c().test.concurrent.todo(t);function r(t,n){return c().test.skip(t,n)}r.concurrent=(t,n)=>c().test.skip.concurrent(t,n);function i(t,n){return c().test.only(t,n)}i.concurrent=(t,n)=>c().test.only.concurrent(t,n);function s(t){return c().test.todo(t)}return s.concurrent=t=>c().test.todo.concurrent(t),o.concurrent=e,o.skip=r,o.only=i,o.todo=s,o}();function R(){function o(t,n){return l(t,n,"run")}function e(t,n){return l(t,n,"run","concurrent")}e.skip=(t,n)=>l(t,n,"skip","concurrent"),e.only=(t,n)=>l(t,n,"only","concurrent"),e.todo=t=>l(t,void 0,"todo");function r(t,n){return l(t,n,"skip")}r.concurrent=e.skip;function i(t,n){return l(t,n,"only")}i.concurrent=e.only;function s(t){return l(t,void 0,"todo")}return s.concurrent=e.todo,o.concurrent=e,o.skip=r,o.only=i,o.todo=s,o}var v=S,w=A,B=o=>c().on("beforeAll",o),H=o=>c().on("afterAll",o),P=o=>c().on("beforeEach",o),Q=o=>c().on("afterEach",o);function j(){d.suites.length=0,k.clear(),d.currentSuite=k}export{d as a,S as b,k as c,A as d,v as e,w as f,B as g,H as h,P as i,Q as j,j as k};
|
package/dist/chunk-SAR64N7W.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{f as s}from"./chunk-XPSQDVUG.js";s();var c=["**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],o=["**/node_modules/**","**/dist/**"],l=["suite","test","describe","it","chai","expect","assert","sinon","spy","mock","stub","beforeAll","afterAll","beforeEach","afterEach"];export{c as a,o as b,l as c};
|
package/dist/chunk-TUQVO6ML.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as r,c as a,d as s,e as l,f as c,g as d,h as u,i as p,j as f,k as x}from"./chunk-7SGHSD2B.js";import{d as i,f as e}from"./chunk-XPSQDVUG.js";var h={};i(h,{afterAll:()=>u,afterEach:()=>f,assert:()=>v,beforeAll:()=>d,beforeEach:()=>p,chai:()=>g,clearContext:()=>x,defaultSuite:()=>a,describe:()=>l,expect:()=>C,it:()=>c,mock:()=>k,should:()=>m,sinon:()=>t,spy:()=>S,stub:()=>T,suite:()=>r,test:()=>s});e();e();e();import g from"chai";import{assert as v,should as m,expect as C}from"chai";e();import t from"sinon";var{mock:k,spy:S,stub:T}=t;t.fn=t.spy;export{g as a,v as b,m as c,C as d,t as e,k as f,S as g,T as h,h as i};
|
package/dist/global-PFX5FMYU.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as r}from"./chunk-TUQVO6ML.js";import{c as l}from"./chunk-SAR64N7W.js";import"./chunk-7SGHSD2B.js";import{f as i}from"./chunk-XPSQDVUG.js";i();function a(){l.forEach(o=>{globalThis[o]=r[o]})}export{a as registerApiGlobally};
|