diff --git a/experimental/css-has-pseudo/.tape.mjs b/experimental/css-has-pseudo/.tape.mjs index a7015ef4a..edbad92ae 100644 --- a/experimental/css-has-pseudo/.tape.mjs +++ b/experimental/css-has-pseudo/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/css-has-pseudo-experimental'; postcssTape(plugin)({ diff --git a/experimental/css-has-pseudo/package.json b/experimental/css-has-pseudo/package.json index ab8187efd..ed48317f9 100644 --- a/experimental/css-has-pseudo/package.json +++ b/experimental/css-has-pseudo/package.json @@ -38,6 +38,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/experimental/postcss-nesting/.tape.mjs b/experimental/postcss-nesting/.tape.mjs index 959943ca6..e9cd5b14a 100644 --- a/experimental/postcss-nesting/.tape.mjs +++ b/experimental/postcss-nesting/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-nesting-experimental'; const mixinPluginRule = () => { diff --git a/experimental/postcss-nesting/package.json b/experimental/postcss-nesting/package.json index 8a94d0867..2d0662e3e 100644 --- a/experimental/postcss-nesting/package.json +++ b/experimental/postcss-nesting/package.json @@ -31,6 +31,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/package-lock.json b/package-lock.json index 0522033a3..309c15fe9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -104,6 +104,9 @@ "name": "@csstools/css-has-pseudo-experimental", "version": "0.6.0", "license": "CC0-1.0", + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -122,6 +125,9 @@ "dependencies": { "postcss-selector-parser": "^6.0.10" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7245,7 +7251,6 @@ "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.4", "postcss-selector-parser": "^6.0.10" } }, @@ -7308,6 +7313,7 @@ "postcss-value-parser": "^4.2.0" }, "devDependencies": { + "@csstools/postcss-tape": "*", "postcss-simple-vars": "^7.0.1" }, "engines": { @@ -7328,6 +7334,7 @@ "postcss-selector-parser": "^6.0.10" }, "devDependencies": { + "@csstools/postcss-tape": "*", "puppeteer": "^19.5.2" }, "engines": { @@ -7350,6 +7357,7 @@ "postcss-value-parser": "^4.2.0" }, "devDependencies": { + "@csstools/postcss-tape": "*", "@mrhenry/core-web": "^1.0.4", "puppeteer": "^19.5.2" }, @@ -7368,6 +7376,7 @@ "version": "8.0.2", "license": "CC0-1.0", "devDependencies": { + "@csstools/postcss-tape": "*", "puppeteer": "^19.5.2" }, "engines": { @@ -7387,6 +7396,9 @@ "dependencies": { "postcss-selector-parser": "^6.0.10" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7402,6 +7414,9 @@ "name": "@csstools/postcss-base-plugin", "version": "0.0.0", "license": "CC0-1.0", + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7422,6 +7437,7 @@ "postcss-selector-parser": "^6.0.10" }, "devDependencies": { + "@csstools/postcss-tape": "*", "postcss-import": "^15.0.0", "puppeteer": "^19.5.2" }, @@ -7446,6 +7462,7 @@ "postcss-value-parser": "^4.2.0" }, "devDependencies": { + "@csstools/postcss-tape": "*", "postcss-lab-function": "^5.0.0" }, "engines": { @@ -7465,6 +7482,9 @@ "dependencies": { "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7482,6 +7502,9 @@ "dependencies": { "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7499,6 +7522,9 @@ "dependencies": { "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7515,6 +7541,7 @@ "version": "2.0.1", "license": "CC0-1.0", "devDependencies": { + "@csstools/postcss-tape": "*", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -7537,6 +7564,9 @@ "@csstools/css-tokenizer": "^2.0.0", "@csstools/media-query-list-parser": "^2.0.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7558,6 +7588,7 @@ "postcss-value-parser": "^4.2.0" }, "devDependencies": { + "@csstools/postcss-tape": "*", "postcss-import": "^15.0.0" }, "engines": { @@ -7580,6 +7611,9 @@ "@csstools/css-tokenizer": "^2.0.0", "postcss-selector-parser": "^6.0.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7601,6 +7635,7 @@ "postcss-value-parser": "^4.2.0" }, "devDependencies": { + "@csstools/postcss-tape": "*", "postcss-import": "^15.0.0", "style-dictionary-design-tokens-example": "^1.1.0" }, @@ -7621,6 +7656,9 @@ "dependencies": { "postcss-selector-parser": "^6.0.10" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7639,6 +7677,9 @@ "@csstools/postcss-progressive-custom-properties": "^2.0.0", "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7656,6 +7697,9 @@ "dependencies": { "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7674,6 +7718,9 @@ "dependencies": { "postcss-selector-parser": "^6.0.10" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7692,6 +7739,7 @@ "postcss-selector-parser": "^6.0.10" }, "devDependencies": { + "@csstools/postcss-tape": "*", "puppeteer": "^19.5.2" }, "engines": { @@ -7711,6 +7759,9 @@ "dependencies": { "postcss-selector-parser": "^6.0.10" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7729,6 +7780,9 @@ "dependencies": { "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7743,6 +7797,9 @@ "plugins/postcss-gap-properties": { "version": "4.0.1", "license": "CC0-1.0", + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7759,6 +7816,7 @@ "version": "1.0.3", "license": "CC0-1.0", "devDependencies": { + "@csstools/postcss-tape": "*", "postcss-custom-media": "^9.0.0" }, "engines": { @@ -7780,6 +7838,9 @@ "@csstools/postcss-progressive-custom-properties": "^2.0.0", "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7799,6 +7860,9 @@ "@csstools/color-helpers": "^1.0.0", "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7818,6 +7882,9 @@ "@csstools/postcss-progressive-custom-properties": "^2.0.0", "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7835,6 +7902,9 @@ "dependencies": { "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7855,6 +7925,7 @@ "postcss-selector-parser": "^6.0.10" }, "devDependencies": { + "@csstools/postcss-tape": "*", "puppeteer": "^19.5.2" }, "engines": { @@ -7876,6 +7947,9 @@ "@csstools/postcss-progressive-custom-properties": "^2.0.0", "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7893,6 +7967,9 @@ "dependencies": { "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7908,6 +7985,9 @@ "name": "@csstools/postcss-logical-float-and-clear", "version": "1.0.1", "license": "CC0-1.0", + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7926,6 +8006,9 @@ "dependencies": { "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7944,6 +8027,9 @@ "dependencies": { "@csstools/css-tokenizer": "^2.0.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7964,6 +8050,9 @@ "@csstools/css-tokenizer": "^2.0.0", "@csstools/media-query-list-parser": "^2.0.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -7982,6 +8071,9 @@ "dependencies": { "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -8001,6 +8093,7 @@ "postcss-selector-parser": "^6.0.10" }, "devDependencies": { + "@csstools/postcss-tape": "*", "puppeteer": "^19.5.2" }, "engines": { @@ -8021,6 +8114,9 @@ "dependencies": { "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -8041,6 +8137,9 @@ "@csstools/postcss-progressive-custom-properties": "^2.0.0", "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -8058,6 +8157,9 @@ "dependencies": { "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -8075,6 +8177,9 @@ "dependencies": { "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -8093,6 +8198,9 @@ "dependencies": { "postcss-value-parser": "^4.2.0" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -8110,6 +8218,9 @@ "dependencies": { "postcss-selector-parser": "^6.0.10" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -8128,6 +8239,9 @@ "dependencies": { "postcss-selector-parser": "^6.0.10" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -8145,6 +8259,9 @@ "dependencies": { "postcss-selector-parser": "^6.0.10" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -8165,6 +8282,9 @@ "@csstools/css-parser-algorithms": "^2.0.1", "@csstools/css-tokenizer": "^2.0.1" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -8185,6 +8305,7 @@ "postcss-value-parser": "^4.2.0" }, "devDependencies": { + "@csstools/postcss-tape": "*", "autoprefixer": "^10.4.8" }, "engines": { @@ -8207,6 +8328,9 @@ "@csstools/css-tokenizer": "^2.0.0", "browserslist": "^4.21.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -8227,6 +8351,9 @@ "@csstools/css-parser-algorithms": "^2.0.1", "@csstools/css-tokenizer": "^2.0.1" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, @@ -8242,6 +8369,9 @@ "name": "@csstools/postcss-unset-value", "version": "2.0.1", "license": "CC0-1.0", + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "engines": { "node": "^14 || ^16 || >=18" }, diff --git a/packages/postcss-tape/README.md b/packages/postcss-tape/README.md index 2e9d805f9..cb6e59f10 100644 --- a/packages/postcss-tape/README.md +++ b/packages/postcss-tape/README.md @@ -1,11 +1,9 @@ # PostCSS Tape for csstools/postcss-plugins -_Internal package_ - See [.tape.mjs](https://github.com/csstools/postcss-plugins/blob/main/plugins/postcss-base-plugin/.tape.mjs) in the base plugin for a minimal example. ```js -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-base-plugin'; postcssTape(plugin)({ @@ -24,13 +22,17 @@ postcssTape(plugin)({ }); ``` -Browse the source code and tests here or see tests in plugins for more usage details. +Browse the [source code and tests here](https://github.com/csstools/postcss-plugins/tree/main/packages/postcss-tape) or see [tests in plugins](https://github.com/csstools/postcss-plugins/tree/main/plugins) for more usage details. ------------- +## Quickly update all `expect.css` files. -## After node 20 is released do a find/replace to migrate fully to workspaces : +Set an env variable `REWRITE_EXPECTS` to `true` to update all `expect` files. -- `import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs';` -- `import { postcssTape } from '@csstools/postcss-tape';` +example : -Then add `@csstools/postcss-tape` the each `package.json` as a dev dependency. +```json + "scripts": { + "test": "node .tape.mjs ", + "test:rewrite-expects": "REWRITE_EXPECTS=true node .tape.mjs" + }, +``` diff --git a/packages/postcss-tape/dist/index.cjs b/packages/postcss-tape/dist/index.cjs index 877ae77f3..6488d2175 100644 --- a/packages/postcss-tape/dist/index.cjs +++ b/packages/postcss-tape/dist/index.cjs @@ -1 +1 @@ -"use strict";var e=require("fs"),n=require("path"),o=require("postcss"),s=require("postcss-8.4"),t=require("postcss-html"),r=require("assert");const noopPlugin=()=>({postcssPlugin:"noop-plugin",Rule(){}});noopPlugin.postcss=!0;const c="----------------------------------------";function formatCSSAssertError(e,n,o,s=!1){let t="";if(t+=`\n${e}\n\n`,n.message&&(t+=`message :\n ${n.message}\n\n`),n.options)try{t+=`options :\n${JSON.stringify(n.options,null,2)}\n\n`}catch(e){}return t+=`output changed :\n${prettyDiff(o.message)}\n`,s||(t+="\n"+c),t}function formatWarningsAssertError(e,n,o,s,t=!1){let r="";if(r+=`\n${e}\n\n`,n.message&&(r+=`message :\n ${n.message}\n\n`),n.options)try{r+=`options :\n${JSON.stringify(n.options,null,2)}\n\n`}catch(e){}return r+=`unexpected or missing warnings :\n+ actual ${o.length}\n- expected ${s}\n`,t||(o.forEach((e=>{r+=`\n[${e.plugin}]: ${e.text}`})),o.length&&(r+="\n"),r+="\n"+c),r}function prettyDiff(e){return e.replace(/[^\\](\\n)/gm,((e,n)=>e.replace(n," "))).replace(/(\\t)/gm,((e,n)=>e.replace(n," "))).replace(/\+$/gm,"").replace(/^Expected values to be strictly equal:\n/,"")}function formatGitHubActionAnnotation(e,o="error",s={}){let t="::"+o;const r=Object.keys(s).map((e=>{let o=String(s[e]);return"file"===e&&process.env.GITHUB_WORKSPACE&&(o=n.relative(process.env.GITHUB_WORKSPACE,n.resolve(o))),`${e}=${t=o,t.replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/]/g,"%5D").replace(/;/g,"%3B")}`;var t})).join(",");return r&&(t+=` ${r}`),`${t}::${c=e||"",c.replace(/\r/g,"%0D").replace(/\n/g,"%0A")}`;var c}function reduceInformationInCssSyntaxError(e){process.env.DEBUG||(delete e.source,e.input&&delete e.input.source,delete e.postcssNode)}const i=process.env.GITHUB_ACTIONS&&"true"===process.env.ENABLE_ANNOTATIONS_FOR_NODE&&"true"===process.env.ENABLE_ANNOTATIONS_FOR_OS;function postcssSyntax(e){return e.postcssSyntaxHTML?t():null}const a={postcssPlugin:"declaration-cloner",Declaration(e){"to-clone"===e.prop&&e.cloneBefore({prop:"cloned"})}},l={postcssPlugin:"rule-cloner",prepare(){const e=new WeakSet;return{RuleExit(n){e.has(n)||"to-clone"===n.selector&&(e.add(n),n.cloneBefore({selector:"cloned"}))}}}},p={postcssPlugin:"at-rule-cloner",prepare(){const e=new WeakSet;return{AtRuleExit(n){if(!e.has(n))return"to-clone"===n.params?(e.add(n),void n.cloneBefore({params:"cloned"})):"to-clone"===n.name?(e.add(n),void n.cloneBefore({name:"cloned"})):void 0}}}};exports.atRuleClonerPlugin=p,exports.declarationClonerPlugin=a,exports.postcssTape=function postcssTape(t){let a=!1;{!0!==t.postcss&&(a=!0,i?console.log(formatGitHubActionAnnotation('postcss flag not set to "true" on exported plugin object',"error",{file:"./package.json",line:1,col:1})):console.error(`\npostcss flag not set to "true"\n\n${c}`));const n=t();n.postcssPlugin&&"string"==typeof n.postcssPlugin||(a=!0,i?console.log(formatGitHubActionAnnotation('plugin name not set via "postcssPlugin"',"error",{file:"./package.json",line:1,col:1})):console.error(`\nplugin name not set via "postcssPlugin"\n\n${c}`));const o=JSON.parse(e.readFileSync("./package.json").toString());o.keywords&&o.keywords.includes("postcss-plugin")||(a=!0,i?console.log(formatGitHubActionAnnotation('package.json does not include "postcss-plugin" keyword',"error",{file:"./package.json",line:1,col:1})):console.error(`\npackage.json does not include "postcss-plugin" keyword\n\n${c}`));const s=["css-has-pseudo","css-blank-pseudo","css-prefers-color-scheme","@csstools/css-has-pseudo-experimental"].includes(o.name);o.name.startsWith("postcss-")||o.name.startsWith("@csstools/postcss-")||s||(a=!0,i?console.log(formatGitHubActionAnnotation('plugin name in package.json does not start with "postcss-"',"error",{file:"./package.json",line:1,col:1})):console.error(`\nplugin name in package.json does not start with "postcss-"\n\n${c}`)),Object.keys(Object(o.dependencies)).includes("postcss")&&!("postcssTapeSelfTest"in t)&&(a=!0,i?console.log(formatGitHubActionAnnotation("postcss should only be a peer and/or dev dependency","error",{file:"./package.json",line:1,col:1})):console.error(`\npostcss should only be a peer and/or dev dependency\n\n${c}`))}return async l=>{const p=new Set;for(const u in l){const g=l[u];g.before&&await g.before();const f=n.join(".","test",u.split(":")[0]),d=n.join(".","test",u.replace(/:/g,"."));let m="css";g.postcssSyntaxHTML&&(m="html");const S=`${f}.${m}`;let A=`${d}.expect.${m}`,$=`${d}.result.${m}`;g.expect&&(A=n.join(".","test",g.expect)),g.result&&($=n.join(".","test",g.result));const w=g.plugins??[t(g.options)],y=await e.promises.readFile(S,"utf8");let h,x="";try{x=await e.promises.readFile(A,"utf8")}catch(e){a=!0,x=!1,i?console.log(formatGitHubActionAnnotation(`${u}\n\nmissing or broken "expect" file: "${n.parse(A).base}"`,"error",{file:S,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nmissing or broken "expect" file: "${n.parse(A).base}"\n\n${c}`))}let b=!1;try{h=await o(w).process(y,{from:S,to:$,map:{inline:!1,annotation:!1},syntax:postcssSyntax(g)})}catch(e){if(reduceInformationInCssSyntaxError(e),b=!0,g.exception&&g.exception.test(e.message))continue;throw e}!b&&g.exception&&(a=!0,i?console.log(formatGitHubActionAnnotation(`${u}\n\nexpected an exception but got none`,"error",{file:S,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nexpected an exception but got none\n\n${c}`)));const E=h.css.toString();if(await e.promises.writeFile($,E,"utf8"),process.env.REWRITE_EXPECTS&&e.promises.writeFile(A,E,"utf8"),!1!==x){try{r.strict.strictEqual(E,x)}catch(e){a=!0,i?console.log(formatGitHubActionAnnotation(formatCSSAssertError(u,g,e,!0),"error",{file:A,line:1,col:1})):(p.add(u),console.error(formatCSSAssertError(u,g,e)))}try{if(!g.postcssSyntaxHTML&&h.map.toJSON().sources.includes(""))throw new Error("Sourcemap is broken")}catch(e){a=!0;const n='\nThis is most likely a newly created PostCSS AST Node without a value for "source".\nsee :\n- https://github.com/postcss/postcss/blob/main/docs/guidelines/plugin.md#24-set-nodesource-for-new-nodes\n- https://postcss.org/api/#node-source';i?console.log(formatGitHubActionAnnotation(`${u}\n\nbroken source map: ${JSON.stringify(h.map.toJSON().sources)}\n${n}`,"error",{file:S,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nbroken source map: ${JSON.stringify(h.map.toJSON().sources)}\n${n}\n\n${c}`))}g.after&&await g.after();try{const n=await e.promises.readFile($,"utf8");if((await o([noopPlugin()]).process(n,{from:$,to:$,map:{inline:!1,annotation:!1},syntax:postcssSyntax(g)})).warnings().length)throw new Error("Unexpected warnings on second pass")}catch(e){a=!0,i?console.log(formatGitHubActionAnnotation(`${u}\n\nresult was not parsable with PostCSS.`,"error",{file:A,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nresult was not parsable with PostCSS.\n\n${c}`))}if(o([noopPlugin()]).version!==s([noopPlugin()]).version){const e=await s(w).process(y,{from:S,to:$,map:{inline:!1,annotation:!1}});try{r.strict.strictEqual(e.css.toString(),E)}catch(e){reduceInformationInCssSyntaxError(e),a=!0,i?console.log(formatGitHubActionAnnotation("testing older PostCSS:\n"+formatCSSAssertError(u,g,e,!0),"error",{file:A,line:1,col:1})):(p.add(u),console.error("testing older PostCSS:\n"+formatCSSAssertError(u,g,e)))}}try{(h.warnings().length||g.warnings)&&r.strict.strictEqual(h.warnings().length,g.warnings)}catch(e){a=!0,i?console.log(formatGitHubActionAnnotation(formatWarningsAssertError(u,g,h.warnings(),g.warnings??0,!0),"error",{file:A,line:1,col:1})):(p.add(u),console.error(formatWarningsAssertError(u,g,h.warnings(),g.warnings??0)))}}}if(p.size){console.error("\nunexpected failures:");for(const e of p.values())console.error(" - "+e)}a&&process.exit(1),console.warn("pass "+t().postcssPlugin)}},exports.ruleClonerPlugin=l; +"use strict";var e=require("fs"),n=require("path"),o=require("postcss"),s=require("postcss-8.4"),t=require("postcss-html"),r=require("assert");const noopPlugin=()=>({postcssPlugin:"noop-plugin",Rule(){}});noopPlugin.postcss=!0;const c="----------------------------------------";function formatCSSAssertError(e,n,o,s=!1){let t="";if(t+=`\n${e}\n\n`,n.message&&(t+=`message :\n ${n.message}\n\n`),n.options)try{t+=`options :\n${JSON.stringify(n.options,null,2)}\n\n`}catch(e){}return t+=`output changed :\n${prettyDiff(o.message)}\n`,s||(t+="\n"+c),t}function formatWarningsAssertError(e,n,o,s,t=!1){let r="";if(r+=`\n${e}\n\n`,n.message&&(r+=`message :\n ${n.message}\n\n`),n.options)try{r+=`options :\n${JSON.stringify(n.options,null,2)}\n\n`}catch(e){}return r+=`unexpected or missing warnings :\n+ actual ${o.length}\n- expected ${s}\n`,t||(o.forEach((e=>{r+=`\n[${e.plugin}]: ${e.text}`})),o.length&&(r+="\n"),r+="\n"+c),r}function prettyDiff(e){return e.replace(/[^\\](\\n)/gm,((e,n)=>e.replace(n," "))).replace(/(\\t)/gm,((e,n)=>e.replace(n," "))).replace(/\+$/gm,"").replace(/^Expected values to be strictly equal:\n/,"")}function formatGitHubActionAnnotation(e,o="error",s={}){let t="::"+o;const r=Object.keys(s).map((e=>{let o=String(s[e]);return"file"===e&&process.env.GITHUB_WORKSPACE&&(o=n.relative(process.env.GITHUB_WORKSPACE,n.resolve(o))),`${e}=${t=o,t.replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/]/g,"%5D").replace(/;/g,"%3B")}`;var t})).join(",");return r&&(t+=` ${r}`),`${t}::${c=e||"",c.replace(/\r/g,"%0D").replace(/\n/g,"%0A")}`;var c}function reduceInformationInCssSyntaxError(e){process.env.DEBUG||(delete e.source,e.input&&delete e.input.source,delete e.postcssNode)}const i=process.env.GITHUB_ACTIONS&&"true"===process.env.ENABLE_ANNOTATIONS_FOR_NODE&&"true"===process.env.ENABLE_ANNOTATIONS_FOR_OS;function postcssSyntax(e){return e.postcssSyntaxHTML?t():null}const a={postcssPlugin:"declaration-cloner",Declaration(e){"to-clone"===e.prop&&e.cloneBefore({prop:"cloned"})}},l={postcssPlugin:"rule-cloner",prepare(){const e=new WeakSet;return{RuleExit(n){e.has(n)||"to-clone"===n.selector&&(e.add(n),n.cloneBefore({selector:"cloned"}))}}}},p={postcssPlugin:"at-rule-cloner",prepare(){const e=new WeakSet;return{AtRuleExit(n){if(!e.has(n))return"to-clone"===n.params?(e.add(n),void n.cloneBefore({params:"cloned"})):"to-clone"===n.name?(e.add(n),void n.cloneBefore({name:"cloned"})):void 0}}}};exports.atRuleClonerPlugin=p,exports.declarationClonerPlugin=a,exports.postcssTape=function postcssTape(t){let a=!1;{!0!==t.postcss&&(a=!0,i?console.log(formatGitHubActionAnnotation('postcss flag not set to "true" on exported plugin object',"error",{file:"./package.json",line:1,col:1})):console.error(`\npostcss flag not set to "true"\n\n${c}`));const n=t();n.postcssPlugin&&"string"==typeof n.postcssPlugin||(a=!0,i?console.log(formatGitHubActionAnnotation('plugin name not set via "postcssPlugin"',"error",{file:"./package.json",line:1,col:1})):console.error(`\nplugin name not set via "postcssPlugin"\n\n${c}`));const o=JSON.parse(e.readFileSync("./package.json").toString());o.keywords&&o.keywords.includes("postcss-plugin")||(a=!0,i?console.log(formatGitHubActionAnnotation('package.json does not include "postcss-plugin" keyword',"error",{file:"./package.json",line:1,col:1})):console.error(`\npackage.json does not include "postcss-plugin" keyword\n\n${c}`));const s=["css-has-pseudo","css-blank-pseudo","css-prefers-color-scheme","@csstools/css-has-pseudo-experimental"].includes(o.name);let r=o.name;if(r.startsWith("@")){r=o.name.split("/").slice(1).join("/")}r.startsWith("postcss-")||s||(a=!0,i?console.log(formatGitHubActionAnnotation('plugin name in package.json does not start with "postcss-"',"error",{file:"./package.json",line:1,col:1})):console.error(`\nplugin name in package.json does not start with "postcss-"\n\n${c}`)),Object.keys(Object(o.dependencies)).includes("postcss")&&!("postcssTapeSelfTest"in t)&&(a=!0,i?console.log(formatGitHubActionAnnotation("postcss should only be a peer and/or dev dependency","error",{file:"./package.json",line:1,col:1})):console.error(`\npostcss should only be a peer and/or dev dependency\n\n${c}`))}return async l=>{const p=new Set;for(const u in l){const g=l[u];g.before&&await g.before();const f=n.join(".","test",u.split(":")[0]),d=n.join(".","test",u.replace(/:/g,"."));let m="css";g.postcssSyntaxHTML&&(m="html");const S=`${f}.${m}`;let A=`${d}.expect.${m}`,$=`${d}.result.${m}`;g.expect&&(A=n.join(".","test",g.expect)),g.result&&($=n.join(".","test",g.result));const w=g.plugins??[t(g.options)],y=await e.promises.readFile(S,"utf8");let h,x="";try{x=await e.promises.readFile(A,"utf8")}catch(e){a=!0,x=!1,i?console.log(formatGitHubActionAnnotation(`${u}\n\nmissing or broken "expect" file: "${n.parse(A).base}"`,"error",{file:S,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nmissing or broken "expect" file: "${n.parse(A).base}"\n\n${c}`))}let b=!1;try{h=await o(w).process(y,{from:S,to:$,map:{inline:!1,annotation:!1},syntax:postcssSyntax(g)})}catch(e){if(reduceInformationInCssSyntaxError(e),b=!0,g.exception&&g.exception.test(e.message))continue;throw e}!b&&g.exception&&(a=!0,i?console.log(formatGitHubActionAnnotation(`${u}\n\nexpected an exception but got none`,"error",{file:S,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nexpected an exception but got none\n\n${c}`)));const E=h.css.toString();if(await e.promises.writeFile($,E,"utf8"),process.env.REWRITE_EXPECTS&&e.promises.writeFile(A,E,"utf8"),!1!==x){try{r.strict.strictEqual(E,x)}catch(e){a=!0,i?console.log(formatGitHubActionAnnotation(formatCSSAssertError(u,g,e,!0),"error",{file:A,line:1,col:1})):(p.add(u),console.error(formatCSSAssertError(u,g,e)))}try{if(!g.postcssSyntaxHTML&&h.map.toJSON().sources.includes(""))throw new Error("Sourcemap is broken")}catch(e){a=!0;const n='\nThis is most likely a newly created PostCSS AST Node without a value for "source".\nsee :\n- https://github.com/postcss/postcss/blob/main/docs/guidelines/plugin.md#24-set-nodesource-for-new-nodes\n- https://postcss.org/api/#node-source';i?console.log(formatGitHubActionAnnotation(`${u}\n\nbroken source map: ${JSON.stringify(h.map.toJSON().sources)}\n${n}`,"error",{file:S,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nbroken source map: ${JSON.stringify(h.map.toJSON().sources)}\n${n}\n\n${c}`))}g.after&&await g.after();try{const n=await e.promises.readFile($,"utf8");if((await o([noopPlugin()]).process(n,{from:$,to:$,map:{inline:!1,annotation:!1},syntax:postcssSyntax(g)})).warnings().length)throw new Error("Unexpected warnings on second pass")}catch(e){a=!0,i?console.log(formatGitHubActionAnnotation(`${u}\n\nresult was not parsable with PostCSS.`,"error",{file:A,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nresult was not parsable with PostCSS.\n\n${c}`))}if(o([noopPlugin()]).version!==s([noopPlugin()]).version){const e=await s(w).process(y,{from:S,to:$,map:{inline:!1,annotation:!1}});try{r.strict.strictEqual(e.css.toString(),E)}catch(e){reduceInformationInCssSyntaxError(e),a=!0,i?console.log(formatGitHubActionAnnotation("testing older PostCSS:\n"+formatCSSAssertError(u,g,e,!0),"error",{file:A,line:1,col:1})):(p.add(u),console.error("testing older PostCSS:\n"+formatCSSAssertError(u,g,e)))}}try{(h.warnings().length||g.warnings)&&r.strict.strictEqual(h.warnings().length,g.warnings)}catch(e){a=!0,i?console.log(formatGitHubActionAnnotation(formatWarningsAssertError(u,g,h.warnings(),g.warnings??0,!0),"error",{file:A,line:1,col:1})):(p.add(u),console.error(formatWarningsAssertError(u,g,h.warnings(),g.warnings??0)))}}}if(p.size){console.error("\nunexpected failures:");for(const e of p.values())console.error(" - "+e)}a&&process.exit(1),console.warn("pass "+t().postcssPlugin)}},exports.ruleClonerPlugin=l; diff --git a/packages/postcss-tape/dist/index.mjs b/packages/postcss-tape/dist/index.mjs index 4949df5a7..5d25dd0bf 100644 --- a/packages/postcss-tape/dist/index.mjs +++ b/packages/postcss-tape/dist/index.mjs @@ -1 +1 @@ -import o,{promises as n}from"fs";import e from"path";import t from"postcss";import s from"postcss-8.4";import r from"postcss-html";import{strict as c}from"assert";const noopPlugin=()=>({postcssPlugin:"noop-plugin",Rule(){}});noopPlugin.postcss=!0;const a="----------------------------------------";function formatCSSAssertError(o,n,e,t=!1){let s="";if(s+=`\n${o}\n\n`,n.message&&(s+=`message :\n ${n.message}\n\n`),n.options)try{s+=`options :\n${JSON.stringify(n.options,null,2)}\n\n`}catch(o){}return s+=`output changed :\n${prettyDiff(e.message)}\n`,t||(s+="\n"+a),s}function formatWarningsAssertError(o,n,e,t,s=!1){let r="";if(r+=`\n${o}\n\n`,n.message&&(r+=`message :\n ${n.message}\n\n`),n.options)try{r+=`options :\n${JSON.stringify(n.options,null,2)}\n\n`}catch(o){}return r+=`unexpected or missing warnings :\n+ actual ${e.length}\n- expected ${t}\n`,s||(e.forEach((o=>{r+=`\n[${o.plugin}]: ${o.text}`})),e.length&&(r+="\n"),r+="\n"+a),r}function prettyDiff(o){return o.replace(/[^\\](\\n)/gm,((o,n)=>o.replace(n," "))).replace(/(\\t)/gm,((o,n)=>o.replace(n," "))).replace(/\+$/gm,"").replace(/^Expected values to be strictly equal:\n/,"")}function formatGitHubActionAnnotation(o,n="error",t={}){let s="::"+n;const r=Object.keys(t).map((o=>{let n=String(t[o]);return"file"===o&&process.env.GITHUB_WORKSPACE&&(n=e.relative(process.env.GITHUB_WORKSPACE,e.resolve(n))),`${o}=${s=n,s.replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/]/g,"%5D").replace(/;/g,"%3B")}`;var s})).join(",");return r&&(s+=` ${r}`),`${s}::${c=o||"",c.replace(/\r/g,"%0D").replace(/\n/g,"%0A")}`;var c}function reduceInformationInCssSyntaxError(o){process.env.DEBUG||(delete o.source,o.input&&delete o.input.source,delete o.postcssNode)}const i=process.env.GITHUB_ACTIONS&&"true"===process.env.ENABLE_ANNOTATIONS_FOR_NODE&&"true"===process.env.ENABLE_ANNOTATIONS_FOR_OS;function postcssSyntax(o){return o.postcssSyntaxHTML?r():null}function postcssTape(r){let l=!1;{!0!==r.postcss&&(l=!0,i?console.log(formatGitHubActionAnnotation('postcss flag not set to "true" on exported plugin object',"error",{file:"./package.json",line:1,col:1})):console.error(`\npostcss flag not set to "true"\n\n${a}`));const n=r();n.postcssPlugin&&"string"==typeof n.postcssPlugin||(l=!0,i?console.log(formatGitHubActionAnnotation('plugin name not set via "postcssPlugin"',"error",{file:"./package.json",line:1,col:1})):console.error(`\nplugin name not set via "postcssPlugin"\n\n${a}`));const e=JSON.parse(o.readFileSync("./package.json").toString());e.keywords&&e.keywords.includes("postcss-plugin")||(l=!0,i?console.log(formatGitHubActionAnnotation('package.json does not include "postcss-plugin" keyword',"error",{file:"./package.json",line:1,col:1})):console.error(`\npackage.json does not include "postcss-plugin" keyword\n\n${a}`));const t=["css-has-pseudo","css-blank-pseudo","css-prefers-color-scheme","@csstools/css-has-pseudo-experimental"].includes(e.name);e.name.startsWith("postcss-")||e.name.startsWith("@csstools/postcss-")||t||(l=!0,i?console.log(formatGitHubActionAnnotation('plugin name in package.json does not start with "postcss-"',"error",{file:"./package.json",line:1,col:1})):console.error(`\nplugin name in package.json does not start with "postcss-"\n\n${a}`)),Object.keys(Object(e.dependencies)).includes("postcss")&&!("postcssTapeSelfTest"in r)&&(l=!0,i?console.log(formatGitHubActionAnnotation("postcss should only be a peer and/or dev dependency","error",{file:"./package.json",line:1,col:1})):console.error(`\npostcss should only be a peer and/or dev dependency\n\n${a}`))}return async o=>{const p=new Set;for(const u in o){const g=o[u];g.before&&await g.before();const f=e.join(".","test",u.split(":")[0]),d=e.join(".","test",u.replace(/:/g,"."));let m="css";g.postcssSyntaxHTML&&(m="html");const S=`${f}.${m}`;let A=`${d}.expect.${m}`,$=`${d}.result.${m}`;g.expect&&(A=e.join(".","test",g.expect)),g.result&&($=e.join(".","test",g.result));const w=g.plugins??[r(g.options)],y=await n.readFile(S,"utf8");let h,b="";try{b=await n.readFile(A,"utf8")}catch(o){l=!0,b=!1,i?console.log(formatGitHubActionAnnotation(`${u}\n\nmissing or broken "expect" file: "${e.parse(A).base}"`,"error",{file:S,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nmissing or broken "expect" file: "${e.parse(A).base}"\n\n${a}`))}let x=!1;try{h=await t(w).process(y,{from:S,to:$,map:{inline:!1,annotation:!1},syntax:postcssSyntax(g)})}catch(o){if(reduceInformationInCssSyntaxError(o),x=!0,g.exception&&g.exception.test(o.message))continue;throw o}!x&&g.exception&&(l=!0,i?console.log(formatGitHubActionAnnotation(`${u}\n\nexpected an exception but got none`,"error",{file:S,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nexpected an exception but got none\n\n${a}`)));const E=h.css.toString();if(await n.writeFile($,E,"utf8"),process.env.REWRITE_EXPECTS&&n.writeFile(A,E,"utf8"),!1!==b){try{c.strictEqual(E,b)}catch(o){l=!0,i?console.log(formatGitHubActionAnnotation(formatCSSAssertError(u,g,o,!0),"error",{file:A,line:1,col:1})):(p.add(u),console.error(formatCSSAssertError(u,g,o)))}try{if(!g.postcssSyntaxHTML&&h.map.toJSON().sources.includes(""))throw new Error("Sourcemap is broken")}catch(o){l=!0;const n='\nThis is most likely a newly created PostCSS AST Node without a value for "source".\nsee :\n- https://github.com/postcss/postcss/blob/main/docs/guidelines/plugin.md#24-set-nodesource-for-new-nodes\n- https://postcss.org/api/#node-source';i?console.log(formatGitHubActionAnnotation(`${u}\n\nbroken source map: ${JSON.stringify(h.map.toJSON().sources)}\n${n}`,"error",{file:S,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nbroken source map: ${JSON.stringify(h.map.toJSON().sources)}\n${n}\n\n${a}`))}g.after&&await g.after();try{const o=await n.readFile($,"utf8");if((await t([noopPlugin()]).process(o,{from:$,to:$,map:{inline:!1,annotation:!1},syntax:postcssSyntax(g)})).warnings().length)throw new Error("Unexpected warnings on second pass")}catch(o){l=!0,i?console.log(formatGitHubActionAnnotation(`${u}\n\nresult was not parsable with PostCSS.`,"error",{file:A,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nresult was not parsable with PostCSS.\n\n${a}`))}if(t([noopPlugin()]).version!==s([noopPlugin()]).version){const o=await s(w).process(y,{from:S,to:$,map:{inline:!1,annotation:!1}});try{c.strictEqual(o.css.toString(),E)}catch(o){reduceInformationInCssSyntaxError(o),l=!0,i?console.log(formatGitHubActionAnnotation("testing older PostCSS:\n"+formatCSSAssertError(u,g,o,!0),"error",{file:A,line:1,col:1})):(p.add(u),console.error("testing older PostCSS:\n"+formatCSSAssertError(u,g,o)))}}try{(h.warnings().length||g.warnings)&&c.strictEqual(h.warnings().length,g.warnings)}catch(o){l=!0,i?console.log(formatGitHubActionAnnotation(formatWarningsAssertError(u,g,h.warnings(),g.warnings??0,!0),"error",{file:A,line:1,col:1})):(p.add(u),console.error(formatWarningsAssertError(u,g,h.warnings(),g.warnings??0)))}}}if(p.size){console.error("\nunexpected failures:");for(const o of p.values())console.error(" - "+o)}l&&process.exit(1),console.warn("pass "+r().postcssPlugin)}}const l={postcssPlugin:"declaration-cloner",Declaration(o){"to-clone"===o.prop&&o.cloneBefore({prop:"cloned"})}},p={postcssPlugin:"rule-cloner",prepare(){const o=new WeakSet;return{RuleExit(n){o.has(n)||"to-clone"===n.selector&&(o.add(n),n.cloneBefore({selector:"cloned"}))}}}},u={postcssPlugin:"at-rule-cloner",prepare(){const o=new WeakSet;return{AtRuleExit(n){if(!o.has(n))return"to-clone"===n.params?(o.add(n),void n.cloneBefore({params:"cloned"})):"to-clone"===n.name?(o.add(n),void n.cloneBefore({name:"cloned"})):void 0}}}};export{u as atRuleClonerPlugin,l as declarationClonerPlugin,postcssTape,p as ruleClonerPlugin}; +import o,{promises as e}from"fs";import n from"path";import t from"postcss";import s from"postcss-8.4";import r from"postcss-html";import{strict as c}from"assert";const noopPlugin=()=>({postcssPlugin:"noop-plugin",Rule(){}});noopPlugin.postcss=!0;const i="----------------------------------------";function formatCSSAssertError(o,e,n,t=!1){let s="";if(s+=`\n${o}\n\n`,e.message&&(s+=`message :\n ${e.message}\n\n`),e.options)try{s+=`options :\n${JSON.stringify(e.options,null,2)}\n\n`}catch(o){}return s+=`output changed :\n${prettyDiff(n.message)}\n`,t||(s+="\n"+i),s}function formatWarningsAssertError(o,e,n,t,s=!1){let r="";if(r+=`\n${o}\n\n`,e.message&&(r+=`message :\n ${e.message}\n\n`),e.options)try{r+=`options :\n${JSON.stringify(e.options,null,2)}\n\n`}catch(o){}return r+=`unexpected or missing warnings :\n+ actual ${n.length}\n- expected ${t}\n`,s||(n.forEach((o=>{r+=`\n[${o.plugin}]: ${o.text}`})),n.length&&(r+="\n"),r+="\n"+i),r}function prettyDiff(o){return o.replace(/[^\\](\\n)/gm,((o,e)=>o.replace(e," "))).replace(/(\\t)/gm,((o,e)=>o.replace(e," "))).replace(/\+$/gm,"").replace(/^Expected values to be strictly equal:\n/,"")}function formatGitHubActionAnnotation(o,e="error",t={}){let s="::"+e;const r=Object.keys(t).map((o=>{let e=String(t[o]);return"file"===o&&process.env.GITHUB_WORKSPACE&&(e=n.relative(process.env.GITHUB_WORKSPACE,n.resolve(e))),`${o}=${s=e,s.replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/]/g,"%5D").replace(/;/g,"%3B")}`;var s})).join(",");return r&&(s+=` ${r}`),`${s}::${c=o||"",c.replace(/\r/g,"%0D").replace(/\n/g,"%0A")}`;var c}function reduceInformationInCssSyntaxError(o){process.env.DEBUG||(delete o.source,o.input&&delete o.input.source,delete o.postcssNode)}const a=process.env.GITHUB_ACTIONS&&"true"===process.env.ENABLE_ANNOTATIONS_FOR_NODE&&"true"===process.env.ENABLE_ANNOTATIONS_FOR_OS;function postcssSyntax(o){return o.postcssSyntaxHTML?r():null}function postcssTape(r){let l=!1;{!0!==r.postcss&&(l=!0,a?console.log(formatGitHubActionAnnotation('postcss flag not set to "true" on exported plugin object',"error",{file:"./package.json",line:1,col:1})):console.error(`\npostcss flag not set to "true"\n\n${i}`));const e=r();e.postcssPlugin&&"string"==typeof e.postcssPlugin||(l=!0,a?console.log(formatGitHubActionAnnotation('plugin name not set via "postcssPlugin"',"error",{file:"./package.json",line:1,col:1})):console.error(`\nplugin name not set via "postcssPlugin"\n\n${i}`));const n=JSON.parse(o.readFileSync("./package.json").toString());n.keywords&&n.keywords.includes("postcss-plugin")||(l=!0,a?console.log(formatGitHubActionAnnotation('package.json does not include "postcss-plugin" keyword',"error",{file:"./package.json",line:1,col:1})):console.error(`\npackage.json does not include "postcss-plugin" keyword\n\n${i}`));const t=["css-has-pseudo","css-blank-pseudo","css-prefers-color-scheme","@csstools/css-has-pseudo-experimental"].includes(n.name);let s=n.name;if(s.startsWith("@")){s=n.name.split("/").slice(1).join("/")}s.startsWith("postcss-")||t||(l=!0,a?console.log(formatGitHubActionAnnotation('plugin name in package.json does not start with "postcss-"',"error",{file:"./package.json",line:1,col:1})):console.error(`\nplugin name in package.json does not start with "postcss-"\n\n${i}`)),Object.keys(Object(n.dependencies)).includes("postcss")&&!("postcssTapeSelfTest"in r)&&(l=!0,a?console.log(formatGitHubActionAnnotation("postcss should only be a peer and/or dev dependency","error",{file:"./package.json",line:1,col:1})):console.error(`\npostcss should only be a peer and/or dev dependency\n\n${i}`))}return async o=>{const p=new Set;for(const u in o){const g=o[u];g.before&&await g.before();const f=n.join(".","test",u.split(":")[0]),d=n.join(".","test",u.replace(/:/g,"."));let m="css";g.postcssSyntaxHTML&&(m="html");const S=`${f}.${m}`;let A=`${d}.expect.${m}`,$=`${d}.result.${m}`;g.expect&&(A=n.join(".","test",g.expect)),g.result&&($=n.join(".","test",g.result));const w=g.plugins??[r(g.options)],y=await e.readFile(S,"utf8");let h,b="";try{b=await e.readFile(A,"utf8")}catch(o){l=!0,b=!1,a?console.log(formatGitHubActionAnnotation(`${u}\n\nmissing or broken "expect" file: "${n.parse(A).base}"`,"error",{file:S,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nmissing or broken "expect" file: "${n.parse(A).base}"\n\n${i}`))}let x=!1;try{h=await t(w).process(y,{from:S,to:$,map:{inline:!1,annotation:!1},syntax:postcssSyntax(g)})}catch(o){if(reduceInformationInCssSyntaxError(o),x=!0,g.exception&&g.exception.test(o.message))continue;throw o}!x&&g.exception&&(l=!0,a?console.log(formatGitHubActionAnnotation(`${u}\n\nexpected an exception but got none`,"error",{file:S,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nexpected an exception but got none\n\n${i}`)));const E=h.css.toString();if(await e.writeFile($,E,"utf8"),process.env.REWRITE_EXPECTS&&e.writeFile(A,E,"utf8"),!1!==b){try{c.strictEqual(E,b)}catch(o){l=!0,a?console.log(formatGitHubActionAnnotation(formatCSSAssertError(u,g,o,!0),"error",{file:A,line:1,col:1})):(p.add(u),console.error(formatCSSAssertError(u,g,o)))}try{if(!g.postcssSyntaxHTML&&h.map.toJSON().sources.includes(""))throw new Error("Sourcemap is broken")}catch(o){l=!0;const e='\nThis is most likely a newly created PostCSS AST Node without a value for "source".\nsee :\n- https://github.com/postcss/postcss/blob/main/docs/guidelines/plugin.md#24-set-nodesource-for-new-nodes\n- https://postcss.org/api/#node-source';a?console.log(formatGitHubActionAnnotation(`${u}\n\nbroken source map: ${JSON.stringify(h.map.toJSON().sources)}\n${e}`,"error",{file:S,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nbroken source map: ${JSON.stringify(h.map.toJSON().sources)}\n${e}\n\n${i}`))}g.after&&await g.after();try{const o=await e.readFile($,"utf8");if((await t([noopPlugin()]).process(o,{from:$,to:$,map:{inline:!1,annotation:!1},syntax:postcssSyntax(g)})).warnings().length)throw new Error("Unexpected warnings on second pass")}catch(o){l=!0,a?console.log(formatGitHubActionAnnotation(`${u}\n\nresult was not parsable with PostCSS.`,"error",{file:A,line:1,col:1})):(p.add(u),console.error(`\n${u}\n\nresult was not parsable with PostCSS.\n\n${i}`))}if(t([noopPlugin()]).version!==s([noopPlugin()]).version){const o=await s(w).process(y,{from:S,to:$,map:{inline:!1,annotation:!1}});try{c.strictEqual(o.css.toString(),E)}catch(o){reduceInformationInCssSyntaxError(o),l=!0,a?console.log(formatGitHubActionAnnotation("testing older PostCSS:\n"+formatCSSAssertError(u,g,o,!0),"error",{file:A,line:1,col:1})):(p.add(u),console.error("testing older PostCSS:\n"+formatCSSAssertError(u,g,o)))}}try{(h.warnings().length||g.warnings)&&c.strictEqual(h.warnings().length,g.warnings)}catch(o){l=!0,a?console.log(formatGitHubActionAnnotation(formatWarningsAssertError(u,g,h.warnings(),g.warnings??0,!0),"error",{file:A,line:1,col:1})):(p.add(u),console.error(formatWarningsAssertError(u,g,h.warnings(),g.warnings??0)))}}}if(p.size){console.error("\nunexpected failures:");for(const o of p.values())console.error(" - "+o)}l&&process.exit(1),console.warn("pass "+r().postcssPlugin)}}const l={postcssPlugin:"declaration-cloner",Declaration(o){"to-clone"===o.prop&&o.cloneBefore({prop:"cloned"})}},p={postcssPlugin:"rule-cloner",prepare(){const o=new WeakSet;return{RuleExit(e){o.has(e)||"to-clone"===e.selector&&(o.add(e),e.cloneBefore({selector:"cloned"}))}}}},u={postcssPlugin:"at-rule-cloner",prepare(){const o=new WeakSet;return{AtRuleExit(e){if(!o.has(e))return"to-clone"===e.params?(o.add(e),void e.cloneBefore({params:"cloned"})):"to-clone"===e.name?(o.add(e),void e.cloneBefore({name:"cloned"})):void 0}}}};export{u as atRuleClonerPlugin,l as declarationClonerPlugin,postcssTape,p as ruleClonerPlugin}; diff --git a/packages/postcss-tape/dist/test-case-options.d.ts b/packages/postcss-tape/dist/test-case-options.d.ts index 87ad2a397..c1dd65223 100644 --- a/packages/postcss-tape/dist/test-case-options.d.ts +++ b/packages/postcss-tape/dist/test-case-options.d.ts @@ -1,13 +1,24 @@ import type { Plugin } from 'postcss'; export type TestCaseOptions = { + /** Debug message */ message?: string; + /** Plugin options. Only used if `plugins` is not specified. */ options?: unknown; + /** Plugins to use. When specified the original plugin is not used. */ plugins?: Array; + /** The expected number of warnings. */ warnings?: number; + /** Expected exception */ + /** NOTE: plugins should not throw exceptions, this goes against best practices. Use `errors` instead. */ exception?: RegExp; + /** Override the file name of the "expect" file. */ expect?: string; + /** Override the file name of the "result" file. */ result?: string; + /** Do something before the test is run. */ before?: () => void; + /** Do something after the test is run. */ after?: () => void | Promise; + /** Process the test cases with "postcss-html" as the syntax */ postcssSyntaxHTML?: boolean; }; diff --git a/packages/postcss-tape/package.json b/packages/postcss-tape/package.json index 6433b8070..08e0bf20c 100644 --- a/packages/postcss-tape/package.json +++ b/packages/postcss-tape/package.json @@ -1,14 +1,27 @@ { "name": "@csstools/postcss-tape", - "description": "Quickly test PostCSS plugins in csstools/postcss-plugins", + "description": "Quickly test PostCSS plugins", "version": "1.0.0", - "author": "Jonathan Neal ", + "contributors": [ + { + "name": "Antonio Laguna", + "email": "antonio@laguna.es", + "url": "https://antonio.laguna.es" + }, + { + "name": "Jonathan Neal", + "email": "jonathantneal@hotmail.com" + }, + { + "name": "Romain Menke", + "email": "romainmenke@gmail.com" + } + ], "license": "CC0-1.0", "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, - "private": true, "engines": { "node": "^14 || ^16 || >=18" }, diff --git a/packages/postcss-tape/src/index.ts b/packages/postcss-tape/src/index.ts index 4eec2245c..b6ef493b4 100644 --- a/packages/postcss-tape/src/index.ts +++ b/packages/postcss-tape/src/index.ts @@ -84,7 +84,13 @@ export function postcssTape(currentPlugin: PluginCreator) { '@csstools/css-has-pseudo-experimental', ].includes(packageInfo.name); - if (!packageInfo.name.startsWith('postcss-') && !packageInfo.name.startsWith('@csstools/postcss-') && !isOlderPackageName) { + let packageName = packageInfo.name; + if (packageName.startsWith('@')) { + const parts = packageInfo.name.split('/'); + packageName = parts.slice(1).join('/'); + } + + if (!packageName.startsWith('postcss-') && !isOlderPackageName) { hasErrors = true; if (emitGitHubAnnotations) { diff --git a/packages/postcss-tape/src/test-case-options.ts b/packages/postcss-tape/src/test-case-options.ts index 285b5a328..d1ddaf03b 100644 --- a/packages/postcss-tape/src/test-case-options.ts +++ b/packages/postcss-tape/src/test-case-options.ts @@ -1,29 +1,28 @@ import type { Plugin } from 'postcss'; - export type TestCaseOptions = { - // Debug message + /** Debug message */ message?: string, - // Plugin options. Only used if `plugins` is not specified. + /** Plugin options. Only used if `plugins` is not specified. */ options?: unknown, - // Plugins to use. When specified the original plugin is not used. + /** Plugins to use. When specified the original plugin is not used. */ plugins?: Array, - // The expected number of warnings. + /** The expected number of warnings. */ warnings?: number, - // Expected exception - // NOTE: plugins should not throw exceptions, this goes against best practices. Use `errors` instead. + /** Expected exception */ + /** NOTE: plugins should not throw exceptions, this goes against best practices. Use `errors` instead. */ exception?: RegExp, - // Override the file name of the "expect" file. + /** Override the file name of the "expect" file. */ expect?: string, - // Override the file name of the "result" file. + /** Override the file name of the "result" file. */ result?: string, - // Do something before the test is run. + /** Do something before the test is run. */ before?: () => void, - // Do something after the test is run. + /** Do something after the test is run. */ after?: () => void | Promise, - // Process the test cases with "postcss-html" as the syntax + /** Process the test cases with "postcss-html" as the syntax */ postcssSyntaxHTML?: boolean, } diff --git a/packages/selector-specificity/package.json b/packages/selector-specificity/package.json index e0d41a74e..307d3dac1 100644 --- a/packages/selector-specificity/package.json +++ b/packages/selector-specificity/package.json @@ -39,7 +39,6 @@ "dist" ], "peerDependencies": { - "postcss": "^8.4", "postcss-selector-parser": "^6.0.10" }, "devDependencies": { diff --git a/plugin-packs/postcss-preset-env/.tape.mjs b/plugin-packs/postcss-preset-env/.tape.mjs index 26a436201..3223d8951 100644 --- a/plugin-packs/postcss-preset-env/.tape.mjs +++ b/plugin-packs/postcss-preset-env/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from 'postcss-preset-env'; import postcssImport from 'postcss-import'; diff --git a/plugin-packs/postcss-preset-env/package.json b/plugin-packs/postcss-preset-env/package.json index 2e061ad8e..05a898183 100644 --- a/plugin-packs/postcss-preset-env/package.json +++ b/plugin-packs/postcss-preset-env/package.json @@ -101,6 +101,7 @@ "postcss": "^8.4" }, "devDependencies": { + "@csstools/postcss-tape": "*", "postcss-simple-vars": "^7.0.1" }, "scripts": { diff --git a/plugins/css-blank-pseudo/.tape.mjs b/plugins/css-blank-pseudo/.tape.mjs index 966a2cf2c..bfacf3a6d 100644 --- a/plugins/css-blank-pseudo/.tape.mjs +++ b/plugins/css-blank-pseudo/.tape.mjs @@ -1,4 +1,4 @@ -import { declarationClonerPlugin, postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { declarationClonerPlugin, postcssTape } from '@csstools/postcss-tape'; import plugin from 'css-blank-pseudo'; postcssTape(plugin)({ diff --git a/plugins/css-blank-pseudo/package.json b/plugins/css-blank-pseudo/package.json index 87cc32bfe..a388c6f89 100644 --- a/plugins/css-blank-pseudo/package.json +++ b/plugins/css-blank-pseudo/package.json @@ -57,6 +57,7 @@ "postcss": "^8.4" }, "devDependencies": { + "@csstools/postcss-tape": "*", "puppeteer": "^19.5.2" }, "scripts": { diff --git a/plugins/css-has-pseudo/.tape.mjs b/plugins/css-has-pseudo/.tape.mjs index 7d12d82f7..91423a1ac 100644 --- a/plugins/css-has-pseudo/.tape.mjs +++ b/plugins/css-has-pseudo/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from 'css-has-pseudo'; import postcssLogical from 'postcss-logical'; import postcssNesting from 'postcss-nesting'; diff --git a/plugins/css-has-pseudo/package.json b/plugins/css-has-pseudo/package.json index c98faf405..8c7c166b7 100644 --- a/plugins/css-has-pseudo/package.json +++ b/plugins/css-has-pseudo/package.json @@ -59,6 +59,7 @@ "postcss": "^8.4" }, "devDependencies": { + "@csstools/postcss-tape": "*", "@mrhenry/core-web": "^1.0.4", "puppeteer": "^19.5.2" }, diff --git a/plugins/css-prefers-color-scheme/.tape.mjs b/plugins/css-prefers-color-scheme/.tape.mjs index 73ba51538..184208c43 100644 --- a/plugins/css-prefers-color-scheme/.tape.mjs +++ b/plugins/css-prefers-color-scheme/.tape.mjs @@ -1,4 +1,4 @@ -import { declarationClonerPlugin, postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { declarationClonerPlugin, postcssTape } from '@csstools/postcss-tape'; import plugin from 'css-prefers-color-scheme'; postcssTape(plugin)({ diff --git a/plugins/css-prefers-color-scheme/package.json b/plugins/css-prefers-color-scheme/package.json index 0a0eaaeda..9594037cb 100644 --- a/plugins/css-prefers-color-scheme/package.json +++ b/plugins/css-prefers-color-scheme/package.json @@ -54,6 +54,7 @@ "postcss": "^8.4" }, "devDependencies": { + "@csstools/postcss-tape": "*", "puppeteer": "^19.5.2" }, "scripts": { diff --git a/plugins/postcss-attribute-case-insensitive/.tape.mjs b/plugins/postcss-attribute-case-insensitive/.tape.mjs index 7ff4b914a..f1a5a5fab 100644 --- a/plugins/postcss-attribute-case-insensitive/.tape.mjs +++ b/plugins/postcss-attribute-case-insensitive/.tape.mjs @@ -1,4 +1,4 @@ -import { declarationClonerPlugin, postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { declarationClonerPlugin, postcssTape } from '@csstools/postcss-tape'; import plugin from 'postcss-attribute-case-insensitive'; postcssTape(plugin)({ diff --git a/plugins/postcss-attribute-case-insensitive/package.json b/plugins/postcss-attribute-case-insensitive/package.json index ccebaa563..06029b3f2 100644 --- a/plugins/postcss-attribute-case-insensitive/package.json +++ b/plugins/postcss-attribute-case-insensitive/package.json @@ -47,6 +47,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-base-plugin/.tape.mjs b/plugins/postcss-base-plugin/.tape.mjs index 04432aca1..5cc051b0b 100644 --- a/plugins/postcss-base-plugin/.tape.mjs +++ b/plugins/postcss-base-plugin/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-base-plugin'; postcssTape(plugin)({ diff --git a/plugins/postcss-base-plugin/package.json b/plugins/postcss-base-plugin/package.json index 1b04245cd..420f879fe 100644 --- a/plugins/postcss-base-plugin/package.json +++ b/plugins/postcss-base-plugin/package.json @@ -42,6 +42,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-cascade-layers/.tape.mjs b/plugins/postcss-cascade-layers/.tape.mjs index d9e0fd4f5..574f2dbbc 100644 --- a/plugins/postcss-cascade-layers/.tape.mjs +++ b/plugins/postcss-cascade-layers/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-cascade-layers'; import postcssImport from 'postcss-import'; diff --git a/plugins/postcss-cascade-layers/package.json b/plugins/postcss-cascade-layers/package.json index e5e0bd38f..acd4652b7 100644 --- a/plugins/postcss-cascade-layers/package.json +++ b/plugins/postcss-cascade-layers/package.json @@ -54,6 +54,7 @@ "postcss": "^8.4" }, "devDependencies": { + "@csstools/postcss-tape": "*", "postcss-import": "^15.0.0", "puppeteer": "^19.5.2" }, diff --git a/plugins/postcss-color-function/.tape.mjs b/plugins/postcss-color-function/.tape.mjs index 74abb913a..ce5598375 100644 --- a/plugins/postcss-color-function/.tape.mjs +++ b/plugins/postcss-color-function/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape, ruleClonerPlugin } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape, ruleClonerPlugin } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-color-function'; import lab from 'postcss-lab-function'; diff --git a/plugins/postcss-color-function/package.json b/plugins/postcss-color-function/package.json index 76eee5086..dfb759f96 100644 --- a/plugins/postcss-color-function/package.json +++ b/plugins/postcss-color-function/package.json @@ -37,6 +37,7 @@ "postcss": "^8.4" }, "devDependencies": { + "@csstools/postcss-tape": "*", "postcss-lab-function": "^5.0.0" }, "scripts": { diff --git a/plugins/postcss-color-functional-notation/.tape.mjs b/plugins/postcss-color-functional-notation/.tape.mjs index f0277124e..fe3d35221 100644 --- a/plugins/postcss-color-functional-notation/.tape.mjs +++ b/plugins/postcss-color-functional-notation/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape, ruleClonerPlugin } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape, ruleClonerPlugin } from '@csstools/postcss-tape'; import plugin from 'postcss-color-functional-notation'; postcssTape(plugin)({ diff --git a/plugins/postcss-color-functional-notation/package.json b/plugins/postcss-color-functional-notation/package.json index a42b1ba5e..c1113c059 100644 --- a/plugins/postcss-color-functional-notation/package.json +++ b/plugins/postcss-color-functional-notation/package.json @@ -34,6 +34,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-color-hex-alpha/.tape.mjs b/plugins/postcss-color-hex-alpha/.tape.mjs index bdf1e6cda..21a07f435 100644 --- a/plugins/postcss-color-hex-alpha/.tape.mjs +++ b/plugins/postcss-color-hex-alpha/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape, ruleClonerPlugin } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape, ruleClonerPlugin } from '@csstools/postcss-tape'; import plugin from 'postcss-color-hex-alpha'; postcssTape(plugin)({ diff --git a/plugins/postcss-color-hex-alpha/package.json b/plugins/postcss-color-hex-alpha/package.json index 6832ce079..150b8fea0 100644 --- a/plugins/postcss-color-hex-alpha/package.json +++ b/plugins/postcss-color-hex-alpha/package.json @@ -51,6 +51,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-color-rebeccapurple/.tape.mjs b/plugins/postcss-color-rebeccapurple/.tape.mjs index 952add1c2..afc5bac1f 100644 --- a/plugins/postcss-color-rebeccapurple/.tape.mjs +++ b/plugins/postcss-color-rebeccapurple/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape, ruleClonerPlugin } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape, ruleClonerPlugin } from '@csstools/postcss-tape'; import plugin from 'postcss-color-rebeccapurple'; postcssTape(plugin)({ diff --git a/plugins/postcss-color-rebeccapurple/package.json b/plugins/postcss-color-rebeccapurple/package.json index 3d4a033b9..dc618405e 100644 --- a/plugins/postcss-color-rebeccapurple/package.json +++ b/plugins/postcss-color-rebeccapurple/package.json @@ -51,6 +51,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-conditional-values/.tape.mjs b/plugins/postcss-conditional-values/.tape.mjs index 4d48cf945..e1044f408 100644 --- a/plugins/postcss-conditional-values/.tape.mjs +++ b/plugins/postcss-conditional-values/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-conditional-values'; postcssTape(plugin)({ diff --git a/plugins/postcss-conditional-values/package.json b/plugins/postcss-conditional-values/package.json index 74d0d5daa..a14b53ab1 100644 --- a/plugins/postcss-conditional-values/package.json +++ b/plugins/postcss-conditional-values/package.json @@ -42,6 +42,7 @@ "postcss": "^8.4" }, "devDependencies": { + "@csstools/postcss-tape": "*", "postcss-value-parser": "^4.2.0" }, "scripts": { diff --git a/plugins/postcss-custom-media/package.json b/plugins/postcss-custom-media/package.json index 447979383..012cac93d 100644 --- a/plugins/postcss-custom-media/package.json +++ b/plugins/postcss-custom-media/package.json @@ -54,6 +54,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-custom-properties/.tape.mjs b/plugins/postcss-custom-properties/.tape.mjs index a940db3ba..b4746ccf0 100644 --- a/plugins/postcss-custom-properties/.tape.mjs +++ b/plugins/postcss-custom-properties/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from 'postcss-custom-properties'; import postcssImport from 'postcss-import'; diff --git a/plugins/postcss-custom-properties/package.json b/plugins/postcss-custom-properties/package.json index 7cf0c4b25..c1b7abdaa 100644 --- a/plugins/postcss-custom-properties/package.json +++ b/plugins/postcss-custom-properties/package.json @@ -42,6 +42,7 @@ "postcss": "^8.4" }, "devDependencies": { + "@csstools/postcss-tape": "*", "postcss-import": "^15.0.0" }, "scripts": { diff --git a/plugins/postcss-custom-selectors/.tape.mjs b/plugins/postcss-custom-selectors/.tape.mjs index 73ee9f4ca..f6c6d883f 100644 --- a/plugins/postcss-custom-selectors/.tape.mjs +++ b/plugins/postcss-custom-selectors/.tape.mjs @@ -1,4 +1,4 @@ -import { declarationClonerPlugin, postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { declarationClonerPlugin, postcssTape } from '@csstools/postcss-tape'; import plugin from 'postcss-custom-selectors'; postcssTape(plugin)({ diff --git a/plugins/postcss-custom-selectors/package.json b/plugins/postcss-custom-selectors/package.json index 6cdd9e659..fe0acb23c 100644 --- a/plugins/postcss-custom-selectors/package.json +++ b/plugins/postcss-custom-selectors/package.json @@ -57,6 +57,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-design-tokens/.tape.mjs b/plugins/postcss-design-tokens/.tape.mjs index 17c1834e6..1399bd258 100644 --- a/plugins/postcss-design-tokens/.tape.mjs +++ b/plugins/postcss-design-tokens/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-design-tokens'; import postcssImport from 'postcss-import'; diff --git a/plugins/postcss-design-tokens/package.json b/plugins/postcss-design-tokens/package.json index 57b8d9627..7a68a42bb 100644 --- a/plugins/postcss-design-tokens/package.json +++ b/plugins/postcss-design-tokens/package.json @@ -47,6 +47,7 @@ "postcss": "^8.4" }, "devDependencies": { + "@csstools/postcss-tape": "*", "postcss-import": "^15.0.0", "style-dictionary-design-tokens-example": "^1.1.0" }, diff --git a/plugins/postcss-dir-pseudo-class/.tape.mjs b/plugins/postcss-dir-pseudo-class/.tape.mjs index 76117a3f1..6d7de825d 100644 --- a/plugins/postcss-dir-pseudo-class/.tape.mjs +++ b/plugins/postcss-dir-pseudo-class/.tape.mjs @@ -1,4 +1,4 @@ -import { declarationClonerPlugin, postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { declarationClonerPlugin, postcssTape } from '@csstools/postcss-tape'; import plugin from 'postcss-dir-pseudo-class'; postcssTape(plugin)({ diff --git a/plugins/postcss-dir-pseudo-class/package.json b/plugins/postcss-dir-pseudo-class/package.json index 66e57decb..87e050c11 100644 --- a/plugins/postcss-dir-pseudo-class/package.json +++ b/plugins/postcss-dir-pseudo-class/package.json @@ -48,6 +48,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-double-position-gradients/.tape.mjs b/plugins/postcss-double-position-gradients/.tape.mjs index cbec7f6db..55d04fbd1 100644 --- a/plugins/postcss-double-position-gradients/.tape.mjs +++ b/plugins/postcss-double-position-gradients/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape, ruleClonerPlugin } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape, ruleClonerPlugin } from '@csstools/postcss-tape'; import plugin from 'postcss-double-position-gradients'; postcssTape(plugin)({ diff --git a/plugins/postcss-double-position-gradients/package.json b/plugins/postcss-double-position-gradients/package.json index e11524ab3..98e3e7a31 100644 --- a/plugins/postcss-double-position-gradients/package.json +++ b/plugins/postcss-double-position-gradients/package.json @@ -35,6 +35,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-env-function/package.json b/plugins/postcss-env-function/package.json index bcc0ca132..90b5a16bb 100644 --- a/plugins/postcss-env-function/package.json +++ b/plugins/postcss-env-function/package.json @@ -32,6 +32,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-extract/.tape.mjs b/plugins/postcss-extract/.tape.mjs index 982fc6322..9e96b872d 100644 --- a/plugins/postcss-extract/.tape.mjs +++ b/plugins/postcss-extract/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-extract'; import assert from 'assert'; diff --git a/plugins/postcss-extract/package.json b/plugins/postcss-extract/package.json index fc6f4cf7e..6fa4fc6b4 100644 --- a/plugins/postcss-extract/package.json +++ b/plugins/postcss-extract/package.json @@ -44,6 +44,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-focus-visible/.tape.mjs b/plugins/postcss-focus-visible/.tape.mjs index cfaa68b27..099890c00 100644 --- a/plugins/postcss-focus-visible/.tape.mjs +++ b/plugins/postcss-focus-visible/.tape.mjs @@ -1,4 +1,4 @@ -import { declarationClonerPlugin, postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { declarationClonerPlugin, postcssTape } from '@csstools/postcss-tape'; import plugin from 'postcss-focus-visible'; postcssTape(plugin)({ diff --git a/plugins/postcss-focus-visible/package.json b/plugins/postcss-focus-visible/package.json index ff6340155..0e3f4898c 100644 --- a/plugins/postcss-focus-visible/package.json +++ b/plugins/postcss-focus-visible/package.json @@ -45,6 +45,7 @@ "postcss": "^8.4" }, "devDependencies": { + "@csstools/postcss-tape": "*", "puppeteer": "^19.5.2" }, "scripts": { diff --git a/plugins/postcss-focus-within/.tape.mjs b/plugins/postcss-focus-within/.tape.mjs index 89f79c396..de736301f 100644 --- a/plugins/postcss-focus-within/.tape.mjs +++ b/plugins/postcss-focus-within/.tape.mjs @@ -1,4 +1,4 @@ -import { declarationClonerPlugin, postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { declarationClonerPlugin, postcssTape } from '@csstools/postcss-tape'; import plugin from 'postcss-focus-within'; postcssTape(plugin)({ diff --git a/plugins/postcss-focus-within/package.json b/plugins/postcss-focus-within/package.json index 03f3da45a..29cc4661c 100644 --- a/plugins/postcss-focus-within/package.json +++ b/plugins/postcss-focus-within/package.json @@ -56,6 +56,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-font-format-keywords/.tape.mjs b/plugins/postcss-font-format-keywords/.tape.mjs index 1452255ee..9131d71cf 100644 --- a/plugins/postcss-font-format-keywords/.tape.mjs +++ b/plugins/postcss-font-format-keywords/.tape.mjs @@ -1,4 +1,4 @@ -import { atRuleClonerPlugin, postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { atRuleClonerPlugin, postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-font-format-keywords'; postcssTape(plugin)({ diff --git a/plugins/postcss-font-format-keywords/package.json b/plugins/postcss-font-format-keywords/package.json index 221a5c3ff..613fbb8cb 100644 --- a/plugins/postcss-font-format-keywords/package.json +++ b/plugins/postcss-font-format-keywords/package.json @@ -34,6 +34,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-gap-properties/.tape.mjs b/plugins/postcss-gap-properties/.tape.mjs index 7fd7fad69..9714f7824 100644 --- a/plugins/postcss-gap-properties/.tape.mjs +++ b/plugins/postcss-gap-properties/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from 'postcss-gap-properties'; postcssTape(plugin)({ diff --git a/plugins/postcss-gap-properties/package.json b/plugins/postcss-gap-properties/package.json index ddd260510..37124eb51 100644 --- a/plugins/postcss-gap-properties/package.json +++ b/plugins/postcss-gap-properties/package.json @@ -45,6 +45,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-global-data/.tape.mjs b/plugins/postcss-global-data/.tape.mjs index 71eaaf013..c8773c5aa 100644 --- a/plugins/postcss-global-data/.tape.mjs +++ b/plugins/postcss-global-data/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-global-data'; import postcssCustomMedia from 'postcss-custom-media'; diff --git a/plugins/postcss-global-data/package.json b/plugins/postcss-global-data/package.json index 6bec1bc5b..67fc63262 100644 --- a/plugins/postcss-global-data/package.json +++ b/plugins/postcss-global-data/package.json @@ -42,6 +42,7 @@ "postcss": "^8.4" }, "devDependencies": { + "@csstools/postcss-tape": "*", "postcss-custom-media": "^9.0.0" }, "scripts": { diff --git a/plugins/postcss-gradients-interpolation-method/.tape.mjs b/plugins/postcss-gradients-interpolation-method/.tape.mjs index 67eb10504..89dd08f70 100644 --- a/plugins/postcss-gradients-interpolation-method/.tape.mjs +++ b/plugins/postcss-gradients-interpolation-method/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-gradients-interpolation-method'; postcssTape(plugin)({ diff --git a/plugins/postcss-gradients-interpolation-method/package.json b/plugins/postcss-gradients-interpolation-method/package.json index f67176efe..ff67cff51 100644 --- a/plugins/postcss-gradients-interpolation-method/package.json +++ b/plugins/postcss-gradients-interpolation-method/package.json @@ -35,6 +35,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-hwb-function/.tape.mjs b/plugins/postcss-hwb-function/.tape.mjs index c0e5e935a..ff807d27d 100644 --- a/plugins/postcss-hwb-function/.tape.mjs +++ b/plugins/postcss-hwb-function/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape, ruleClonerPlugin } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape, ruleClonerPlugin } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-hwb-function'; postcssTape(plugin)({ diff --git a/plugins/postcss-hwb-function/package.json b/plugins/postcss-hwb-function/package.json index 448f666ea..4e413fcab 100644 --- a/plugins/postcss-hwb-function/package.json +++ b/plugins/postcss-hwb-function/package.json @@ -36,6 +36,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-ic-unit/.tape.mjs b/plugins/postcss-ic-unit/.tape.mjs index ddc7bba97..69b166af2 100644 --- a/plugins/postcss-ic-unit/.tape.mjs +++ b/plugins/postcss-ic-unit/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape, ruleClonerPlugin } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape, ruleClonerPlugin } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-ic-unit'; postcssTape(plugin)({ diff --git a/plugins/postcss-ic-unit/package.json b/plugins/postcss-ic-unit/package.json index f00542fff..1d0ad316f 100644 --- a/plugins/postcss-ic-unit/package.json +++ b/plugins/postcss-ic-unit/package.json @@ -35,6 +35,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-image-set-function/.tape.mjs b/plugins/postcss-image-set-function/.tape.mjs index f21ef60ff..df5789adb 100644 --- a/plugins/postcss-image-set-function/.tape.mjs +++ b/plugins/postcss-image-set-function/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape, ruleClonerPlugin } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape, ruleClonerPlugin } from '@csstools/postcss-tape'; import plugin from 'postcss-image-set-function'; postcssTape(plugin)({ diff --git a/plugins/postcss-image-set-function/package.json b/plugins/postcss-image-set-function/package.json index 684efd3b6..1a51da834 100644 --- a/plugins/postcss-image-set-function/package.json +++ b/plugins/postcss-image-set-function/package.json @@ -34,6 +34,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-is-pseudo-class/.tape.mjs b/plugins/postcss-is-pseudo-class/.tape.mjs index 34232ea43..4c270b78f 100644 --- a/plugins/postcss-is-pseudo-class/.tape.mjs +++ b/plugins/postcss-is-pseudo-class/.tape.mjs @@ -1,4 +1,4 @@ -import { declarationClonerPlugin, postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { declarationClonerPlugin, postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-is-pseudo-class'; postcssTape(plugin)({ diff --git a/plugins/postcss-is-pseudo-class/package.json b/plugins/postcss-is-pseudo-class/package.json index 0f821bb8e..15e6d1142 100644 --- a/plugins/postcss-is-pseudo-class/package.json +++ b/plugins/postcss-is-pseudo-class/package.json @@ -36,6 +36,7 @@ "postcss": "^8.4" }, "devDependencies": { + "@csstools/postcss-tape": "*", "puppeteer": "^19.5.2" }, "scripts": { diff --git a/plugins/postcss-lab-function/.tape.mjs b/plugins/postcss-lab-function/.tape.mjs index e5283a05f..25b9335e0 100644 --- a/plugins/postcss-lab-function/.tape.mjs +++ b/plugins/postcss-lab-function/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape, ruleClonerPlugin } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape, ruleClonerPlugin } from '@csstools/postcss-tape'; import plugin from 'postcss-lab-function'; postcssTape(plugin)({ diff --git a/plugins/postcss-lab-function/package.json b/plugins/postcss-lab-function/package.json index e735c968a..85dda6a5f 100644 --- a/plugins/postcss-lab-function/package.json +++ b/plugins/postcss-lab-function/package.json @@ -36,6 +36,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-logical-float-and-clear/.tape.mjs b/plugins/postcss-logical-float-and-clear/.tape.mjs index c1b2c848d..f5475167e 100644 --- a/plugins/postcss-logical-float-and-clear/.tape.mjs +++ b/plugins/postcss-logical-float-and-clear/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-logical-float-and-clear'; postcssTape(plugin)({ diff --git a/plugins/postcss-logical-float-and-clear/package.json b/plugins/postcss-logical-float-and-clear/package.json index 8074885af..06090321a 100644 --- a/plugins/postcss-logical-float-and-clear/package.json +++ b/plugins/postcss-logical-float-and-clear/package.json @@ -41,6 +41,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-logical-resize/.tape.mjs b/plugins/postcss-logical-resize/.tape.mjs index 98e97ded3..f6a0433a1 100644 --- a/plugins/postcss-logical-resize/.tape.mjs +++ b/plugins/postcss-logical-resize/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-logical-resize'; postcssTape(plugin)({ diff --git a/plugins/postcss-logical-resize/package.json b/plugins/postcss-logical-resize/package.json index e9e527534..2fa02a860 100644 --- a/plugins/postcss-logical-resize/package.json +++ b/plugins/postcss-logical-resize/package.json @@ -44,6 +44,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-logical-viewport-units/.tape.mjs b/plugins/postcss-logical-viewport-units/.tape.mjs index 5ff7471d9..e17950e2f 100644 --- a/plugins/postcss-logical-viewport-units/.tape.mjs +++ b/plugins/postcss-logical-viewport-units/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape, ruleClonerPlugin } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape, ruleClonerPlugin } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-logical-viewport-units'; postcssTape(plugin)({ diff --git a/plugins/postcss-logical-viewport-units/package.json b/plugins/postcss-logical-viewport-units/package.json index fb31e04f0..98df3b328 100644 --- a/plugins/postcss-logical-viewport-units/package.json +++ b/plugins/postcss-logical-viewport-units/package.json @@ -44,6 +44,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-logical/.tape.mjs b/plugins/postcss-logical/.tape.mjs index fd9eddd39..9c9492885 100644 --- a/plugins/postcss-logical/.tape.mjs +++ b/plugins/postcss-logical/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from 'postcss-logical'; postcssTape(plugin)({ diff --git a/plugins/postcss-logical/package.json b/plugins/postcss-logical/package.json index 0fb464347..5d2c5aac5 100644 --- a/plugins/postcss-logical/package.json +++ b/plugins/postcss-logical/package.json @@ -48,6 +48,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-media-queries-aspect-ratio-number-values/.tape.mjs b/plugins/postcss-media-queries-aspect-ratio-number-values/.tape.mjs index 5cd18d593..ca140e24f 100644 --- a/plugins/postcss-media-queries-aspect-ratio-number-values/.tape.mjs +++ b/plugins/postcss-media-queries-aspect-ratio-number-values/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-media-queries-aspect-ratio-number-values'; postcssTape(plugin)({ diff --git a/plugins/postcss-media-queries-aspect-ratio-number-values/package.json b/plugins/postcss-media-queries-aspect-ratio-number-values/package.json index 60bfdbcc2..31076fadd 100644 --- a/plugins/postcss-media-queries-aspect-ratio-number-values/package.json +++ b/plugins/postcss-media-queries-aspect-ratio-number-values/package.json @@ -46,6 +46,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-nested-calc/.tape.mjs b/plugins/postcss-nested-calc/.tape.mjs index 44eaf0bbd..b05802256 100644 --- a/plugins/postcss-nested-calc/.tape.mjs +++ b/plugins/postcss-nested-calc/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape, ruleClonerPlugin } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape, ruleClonerPlugin } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-nested-calc'; postcssTape(plugin)({ diff --git a/plugins/postcss-nested-calc/package.json b/plugins/postcss-nested-calc/package.json index e2a7583ff..a88437b84 100644 --- a/plugins/postcss-nested-calc/package.json +++ b/plugins/postcss-nested-calc/package.json @@ -44,6 +44,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-nesting/.tape.mjs b/plugins/postcss-nesting/.tape.mjs index 99bc12f0b..d66952e7d 100644 --- a/plugins/postcss-nesting/.tape.mjs +++ b/plugins/postcss-nesting/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from 'postcss-nesting'; const mixinPluginRule = () => { diff --git a/plugins/postcss-nesting/package.json b/plugins/postcss-nesting/package.json index 2c92dc5c5..67084893a 100644 --- a/plugins/postcss-nesting/package.json +++ b/plugins/postcss-nesting/package.json @@ -52,6 +52,7 @@ "postcss": "^8.4" }, "devDependencies": { + "@csstools/postcss-tape": "*", "puppeteer": "^19.5.2" }, "scripts": { diff --git a/plugins/postcss-normalize-display-values/.tape.mjs b/plugins/postcss-normalize-display-values/.tape.mjs index 42876f4af..d32ecb1b2 100644 --- a/plugins/postcss-normalize-display-values/.tape.mjs +++ b/plugins/postcss-normalize-display-values/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-normalize-display-values'; postcssTape(plugin)({ diff --git a/plugins/postcss-normalize-display-values/package.json b/plugins/postcss-normalize-display-values/package.json index ddf9fe7f3..262802b33 100644 --- a/plugins/postcss-normalize-display-values/package.json +++ b/plugins/postcss-normalize-display-values/package.json @@ -34,6 +34,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-oklab-function/.tape.mjs b/plugins/postcss-oklab-function/.tape.mjs index 7afdf038d..13f18e3b5 100644 --- a/plugins/postcss-oklab-function/.tape.mjs +++ b/plugins/postcss-oklab-function/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-oklab-function'; postcssTape(plugin)({ diff --git a/plugins/postcss-oklab-function/package.json b/plugins/postcss-oklab-function/package.json index 995e59118..2b477449c 100644 --- a/plugins/postcss-oklab-function/package.json +++ b/plugins/postcss-oklab-function/package.json @@ -36,6 +36,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-overflow-shorthand/.tape.mjs b/plugins/postcss-overflow-shorthand/.tape.mjs index d803b9bea..4b4b93efe 100644 --- a/plugins/postcss-overflow-shorthand/.tape.mjs +++ b/plugins/postcss-overflow-shorthand/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from 'postcss-overflow-shorthand'; postcssTape(plugin)({ diff --git a/plugins/postcss-overflow-shorthand/package.json b/plugins/postcss-overflow-shorthand/package.json index 7811e7245..bfb8589da 100644 --- a/plugins/postcss-overflow-shorthand/package.json +++ b/plugins/postcss-overflow-shorthand/package.json @@ -48,6 +48,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-place/.tape.mjs b/plugins/postcss-place/.tape.mjs index 4951daf48..2058ada5d 100644 --- a/plugins/postcss-place/.tape.mjs +++ b/plugins/postcss-place/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from 'postcss-place'; postcssTape(plugin)({ diff --git a/plugins/postcss-place/package.json b/plugins/postcss-place/package.json index ed72cb4b0..cb8b01412 100644 --- a/plugins/postcss-place/package.json +++ b/plugins/postcss-place/package.json @@ -48,6 +48,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-progressive-custom-properties/.tape.mjs b/plugins/postcss-progressive-custom-properties/.tape.mjs index dd11b392a..40d38a82d 100644 --- a/plugins/postcss-progressive-custom-properties/.tape.mjs +++ b/plugins/postcss-progressive-custom-properties/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-progressive-custom-properties'; postcssTape(plugin)({ diff --git a/plugins/postcss-progressive-custom-properties/package.json b/plugins/postcss-progressive-custom-properties/package.json index 28e8a30a5..918dfcef6 100644 --- a/plugins/postcss-progressive-custom-properties/package.json +++ b/plugins/postcss-progressive-custom-properties/package.json @@ -34,6 +34,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "node ./generate/matchers.mjs && eslint --fix ./src/matchers.ts && rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-pseudo-class-any-link/.tape.mjs b/plugins/postcss-pseudo-class-any-link/.tape.mjs index 0870eb878..c03372104 100644 --- a/plugins/postcss-pseudo-class-any-link/.tape.mjs +++ b/plugins/postcss-pseudo-class-any-link/.tape.mjs @@ -1,4 +1,4 @@ -import { declarationClonerPlugin, postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { declarationClonerPlugin, postcssTape } from '@csstools/postcss-tape'; import plugin from 'postcss-pseudo-class-any-link'; postcssTape(plugin)({ diff --git a/plugins/postcss-pseudo-class-any-link/package.json b/plugins/postcss-pseudo-class-any-link/package.json index 6a2a23947..3fb1208c9 100644 --- a/plugins/postcss-pseudo-class-any-link/package.json +++ b/plugins/postcss-pseudo-class-any-link/package.json @@ -48,6 +48,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-scope-pseudo-class/.tape.mjs b/plugins/postcss-scope-pseudo-class/.tape.mjs index 528925628..eb750237d 100644 --- a/plugins/postcss-scope-pseudo-class/.tape.mjs +++ b/plugins/postcss-scope-pseudo-class/.tape.mjs @@ -1,4 +1,4 @@ -import { declarationClonerPlugin, postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { declarationClonerPlugin, postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-scope-pseudo-class'; postcssTape(plugin)({ diff --git a/plugins/postcss-scope-pseudo-class/package.json b/plugins/postcss-scope-pseudo-class/package.json index b3393dc6b..592441c8a 100644 --- a/plugins/postcss-scope-pseudo-class/package.json +++ b/plugins/postcss-scope-pseudo-class/package.json @@ -44,6 +44,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-selector-not/.tape.mjs b/plugins/postcss-selector-not/.tape.mjs index d59a5e077..2b9c8a01d 100644 --- a/plugins/postcss-selector-not/.tape.mjs +++ b/plugins/postcss-selector-not/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from 'postcss-selector-not'; postcssTape(plugin)({ diff --git a/plugins/postcss-selector-not/package.json b/plugins/postcss-selector-not/package.json index d86d73ad3..af2c67841 100644 --- a/plugins/postcss-selector-not/package.json +++ b/plugins/postcss-selector-not/package.json @@ -47,6 +47,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-stepped-value-functions/.tape.mjs b/plugins/postcss-stepped-value-functions/.tape.mjs index 445c38950..7c045d5e6 100644 --- a/plugins/postcss-stepped-value-functions/.tape.mjs +++ b/plugins/postcss-stepped-value-functions/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-stepped-value-functions'; postcssTape(plugin)({ diff --git a/plugins/postcss-stepped-value-functions/package.json b/plugins/postcss-stepped-value-functions/package.json index 5b7d762a3..56ff4d1df 100644 --- a/plugins/postcss-stepped-value-functions/package.json +++ b/plugins/postcss-stepped-value-functions/package.json @@ -46,6 +46,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-text-decoration-shorthand/.tape.mjs b/plugins/postcss-text-decoration-shorthand/.tape.mjs index 635ff48b1..5c4370ab9 100644 --- a/plugins/postcss-text-decoration-shorthand/.tape.mjs +++ b/plugins/postcss-text-decoration-shorthand/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-text-decoration-shorthand'; import autoprefixer from 'autoprefixer'; diff --git a/plugins/postcss-text-decoration-shorthand/package.json b/plugins/postcss-text-decoration-shorthand/package.json index 24789967b..33010d911 100644 --- a/plugins/postcss-text-decoration-shorthand/package.json +++ b/plugins/postcss-text-decoration-shorthand/package.json @@ -46,6 +46,7 @@ "postcss": "^8.4" }, "devDependencies": { + "@csstools/postcss-tape": "*", "autoprefixer": "^10.4.8" }, "scripts": { diff --git a/plugins/postcss-todo-or-die/.tape.mjs b/plugins/postcss-todo-or-die/.tape.mjs index 5535c98c1..ce8de394f 100644 --- a/plugins/postcss-todo-or-die/.tape.mjs +++ b/plugins/postcss-todo-or-die/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-todo-or-die'; process.env['BROWSERSLIST'] = '> 1%, chrome 79'; diff --git a/plugins/postcss-todo-or-die/package.json b/plugins/postcss-todo-or-die/package.json index d70fb4b3c..d6e04b51d 100644 --- a/plugins/postcss-todo-or-die/package.json +++ b/plugins/postcss-todo-or-die/package.json @@ -45,6 +45,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-trigonometric-functions/.tape.mjs b/plugins/postcss-trigonometric-functions/.tape.mjs index 089c5fe8c..342e0368b 100644 --- a/plugins/postcss-trigonometric-functions/.tape.mjs +++ b/plugins/postcss-trigonometric-functions/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-trigonometric-functions'; postcssTape(plugin)({ diff --git a/plugins/postcss-trigonometric-functions/package.json b/plugins/postcss-trigonometric-functions/package.json index ab9835c08..c864a65eb 100644 --- a/plugins/postcss-trigonometric-functions/package.json +++ b/plugins/postcss-trigonometric-functions/package.json @@ -46,6 +46,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs", diff --git a/plugins/postcss-unset-value/.tape.mjs b/plugins/postcss-unset-value/.tape.mjs index 80dd59969..6f283880e 100644 --- a/plugins/postcss-unset-value/.tape.mjs +++ b/plugins/postcss-unset-value/.tape.mjs @@ -1,4 +1,4 @@ -import { postcssTape } from '../../packages/postcss-tape/dist/index.mjs'; +import { postcssTape } from '@csstools/postcss-tape'; import plugin from '@csstools/postcss-unset-value'; postcssTape(plugin)({ diff --git a/plugins/postcss-unset-value/package.json b/plugins/postcss-unset-value/package.json index f2e03c749..07a248612 100644 --- a/plugins/postcss-unset-value/package.json +++ b/plugins/postcss-unset-value/package.json @@ -41,6 +41,9 @@ "peerDependencies": { "postcss": "^8.4" }, + "devDependencies": { + "@csstools/postcss-tape": "*" + }, "scripts": { "prebuild": "npm run clean", "build": "rollup -c ../../rollup/default.mjs",