UNPKG

under-the-sun

Version:

A nothing-new-under-the-sun testing framework.

2 lines (1 loc) 2.62 kB
"use strict";var c=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var M=(e,t)=>{for(var o in t)c(e,o,{get:t[o],enumerable:!0})},L=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of F(t))!E.call(e,r)&&r!==o&&c(e,r,{get:()=>t[r],enumerable:!(n=v(t,r))||n.enumerable});return e};var O=e=>L(c({},"__esModule",{value:!0}),e);var j={};M(j,{defineTestGroup:()=>p,setTestReporter:()=>P,test:()=>u});module.exports=O(j);var d=require("node:perf_hooks");var m=require("perf_hooks");function h(){let e=m.performance.now(),t=0,o=0;return{reportResult(n,r){if(!r.error){t++;return}o++,g("FAIL: "+n),console.error(r.error.stack??r.error.message),console.error()},reportFinish(){let n=t+o,r=m.performance.now()-e,T=`${t}/${n} tests passed (${Math.ceil(r)}ms)`;(o>0?g:_)(T)}}}function g(e){console.error("\x1B[31m%s\x1B[0m",e)}function _(e){console.info("\x1B[32m%s\x1B[0m",e)}var S=global??window??{},R=Symbol.for("__UTS_G__"),l=S[R]=S[R]??{};var s=l.options=l.options??{};function b(){return{schedule(e){return e.run()}}}function y(){let e=Promise.resolve({runtimeMs:0,error:null});return{schedule(t){return e=e.then(async()=>t.run()),e}}}function x(){return s.serial?y():b()}function A(){return{testsRunning:[],reporter:s.customTestReporter??h(),finalReportScheduled:!1,scheduler:s.customTestScheduler??x(),filterByDescription:/.*/}}var f;function i(){return f||(f=l.state=A()),f}function $(){return new Promise(e=>{setTimeout(e,1)})}async function B(){await $();let e=i(),t=[];for(;t.length<e.testsRunning.length;)t=await Promise.allSettled(e.testsRunning);return t}async function C(){return!(await B()).some(t=>t.status==="rejected"||t.value?.error)}async function I(){let e=i();e.finalReportScheduled=!0;try{return await C()}finally{e.reporter.reportFinish?.()}}function w(){i().finalReportScheduled||I().then(t=>{process.exit(t?0:1)},t=>{console.error(t)})}function k(e){let t=i();t.testsRunning!==null&&t.filterByDescription.test(e.description)&&t.testsRunning.push(t.scheduler.schedule(e)),w()}function N(e){return e instanceof Error?e:new Error(JSON.stringify(e))}async function G(e){try{return await e(),null}catch(t){return N(t)}}function u(e,t){k({description:e,run:async()=>{let n=d.performance.now(),r=await G(t),a={runtimeMs:d.performance.now()-n,error:r};return await i().reporter.reportResult(e,a),a}})}function p(e){return(t,o)=>u(e+t,o)}function D(){let e=global;e.test=u,e.defineTestGroup=p}function P(e){s.customTestReporter=e}s.magicGlobals&&D();0&&(module.exports={defineTestGroup,setTestReporter,test});