diff --git a/.vscode/settings.json b/.vscode/settings.json index 167053a..43f9512 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -60,7 +60,7 @@ "cwd": "/mnt/d/Work/WeChatProjects/miniprogram-demo/miniprogram", "args": [ "\"--config-path\"", - "\"/mnt/d/Work/disassembly/wcc-exec/wcc/config/cmd2.txt\"" + "\"/mnt/d/Work/disassembly/wcc-exec/wcc/config/llw2.txt\"" ] }, "cmake.configureSettings": { diff --git a/test/runner/ast-helper.js b/test/runner/ast-helper.js new file mode 100644 index 0000000..ade09a2 --- /dev/null +++ b/test/runner/ast-helper.js @@ -0,0 +1,21 @@ + +const parser = require("@babel/parser"); +const tool = require('./tool') + + +const code2ast = (str)=>{ + + const nodeData = JSON.parse(str) + + for(let key in nodeData.generateFunctionContent){ + const nData = nodeData.generateFunctionContent[key] + + let nodeAST = JSON.parse(JSON.stringify(parser.parse(nData))) + nodeAST = tool.removeVariables(nodeAST) + nodeData.generateFunctionContent[key] = nodeAST + } + return nodeData +} +module.exports = { + code2ast +} \ No newline at end of file diff --git a/test/runner/node.ts b/test/runner/node.ts index e077373..1cf6adf 100644 --- a/test/runner/node.ts +++ b/test/runner/node.ts @@ -2,7 +2,7 @@ import { spawn } from "child_process"; import path from "path"; import * as fs from 'fs' -const wcsc = (args: string[], projectPath: string, outputPath: string | undefined = undefined) => { +const wcsc = (args: string[], projectPath: string, outputPath: string | undefined = undefined): Promise => { if(!fs.existsSync(projectPath)){ throw new Error('projectPath not exists.') } diff --git a/test/runner/tool.js b/test/runner/tool.js new file mode 100644 index 0000000..e31e215 --- /dev/null +++ b/test/runner/tool.js @@ -0,0 +1,43 @@ + +const clearNum = ["start", "end", "line", "column", "index", 'parenStart'] + +const FUNC = { + '[object Object]': (ast)=>{ + for(let key in ast){ + const type = Object.prototype.toString.call(ast[key]) + // console.log(key, ' - ', type) + if(clearNum.includes(key))ast[key] = 0 + else if(FUNC[type]){ + ast[key] = FUNC[type](ast[key]) + }else{ + // console.log('无法识别的类型:', type) + } + } + if(ast.type && ast.type === 'Identifier'){ + ast.name = '' + ast.loc.identifierName = '' + } + return ast + }, + '[object Array]': (arr)=>{ + for (let i = 0; i < arr.length; i++) { + const ele = arr[i]; + const type = Object.prototype.toString.call(ele) + arr[i] = FUNC[type](ele) + } + return arr + } + +} +const removeVariables = (ast)=>{ + const type = Object.prototype.toString.call(ast) + // console.log(type) + if(FUNC[type]){ + return FUNC[type](ast) + } + return null +} + +module.exports = { + removeVariables +} \ No newline at end of file diff --git a/test/spec/wcc/lla/LOG.MD b/test/spec/wcc/lla/LOG.MD new file mode 100644 index 0000000..e69de29 diff --git a/test/spec/wcc/lla/lla.js b/test/spec/wcc/lla/lla.js new file mode 100644 index 0000000..db9dee7 --- /dev/null +++ b/test/spec/wcc/lla/lla.js @@ -0,0 +1,217 @@ +import { spawn } from 'child_process' +import path from 'path' +import * as fs from 'fs' + +const samples = [] +const config3 = { + id: 3, + projectPath: "/mnt/d/Work/WeChatProjects/miniprogram-demo/miniprogram", + args: [ + "-d", + "--split", + ">_<109", + "-xc", + "9>_<109./miniprogram_npm/miniprogram-barrage/index.wxml>_<1090>_<109./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml>_<1090>_<109./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml>_<1090>_<109./miniprogram_npm/wxml-to-canvas/index.wxml>_<1090>_<109./page/API/index.wxml>_<1091>_<109set-tab-bar>_<109./page/API/components/set-tab-bar/set-tab-bar.wxml>_<1090>_<109./page/cloud/index.wxml>_<1090>_<109./page/component/index.wxml>_<1090>_<109./page/extend/index.wxml>_<1090", + "-lla", + "./miniprogram_npm/miniprogram-barrage/index>_<109./miniprogram_npm/miniprogram-recycle-view/recycle-item>_<109./miniprogram_npm/miniprogram-recycle-view/recycle-view>_<109./miniprogram_npm/wxml-to-canvas/index>_<109./page/API/index>_<109./page/API/components/set-tab-bar/set-tab-bar>_<109./page/cloud/index>_<109./page/component/index>_<109./page/extend/index", + "./miniprogram_npm/miniprogram-barrage/index.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml", + "./miniprogram_npm/wxml-to-canvas/index.wxml", + "./page/API/index.wxml", + "./page/API/components/set-tab-bar/set-tab-bar.wxml", + "./page/cloud/index.wxml", + "./page/common/foot.wxml", + "./page/common/head.wxml", + "./page/component/index.wxml", + "./page/extend/index.wxml", + "-gn", + "$gwx", + ] +} +samples.push(config3) +const config4 = { + id: 4, + projectPath: "/mnt/d/Work/WeChatProjects/miniprogram-demo/miniprogram", + args: [ + "-d", + "--split", + ">_<4362", + "-xc", + "34>_<4362./packageComponent/pages/canvas/canvas-2d/canvas-2d.wxml>_<43620>_<4362./packageComponent/pages/canvas/webgl/webgl.wxml>_<43620>_<4362./packageComponent/pages/content/icon/icon.wxml>_<43620>_<4362./packageComponent/pages/content/progress/progress.wxml>_<43620>_<4362./packageComponent/pages/content/rich-text/rich-text.wxml>_<43620>_<4362./packageComponent/pages/content/text/text.wxml>_<43620>_<4362./packageComponent/pages/form/button/button.wxml>_<43620>_<4362./packageComponent/pages/form/checkbox/checkbox.wxml>_<43620>_<4362./packageComponent/pages/form/editor/editor.wxml>_<43620>_<4362./packageComponent/pages/form/form/form.wxml>_<43620>_<4362./packageComponent/pages/form/input/input.wxml>_<43620>_<4362./packageComponent/pages/form/label/label.wxml>_<43620>_<4362./packageComponent/pages/form/picker/picker.wxml>_<43620>_<4362./packageComponent/pages/form/picker-view/picker-view.wxml>_<43620>_<4362./packageComponent/pages/form/radio/radio.wxml>_<43620>_<4362./packageComponent/pages/form/slider/slider.wxml>_<43620>_<4362./packageComponent/pages/form/switch/switch.wxml>_<43620>_<4362./packageComponent/pages/form/textarea/textarea.wxml>_<43620>_<4362./packageComponent/pages/map/map/map.wxml>_<43620>_<4362./packageComponent/pages/media/camera/camera.wxml>_<43620>_<4362./packageComponent/pages/media/image/image.wxml>_<43620>_<4362./packageComponent/pages/media/live-player/live-player.wxml>_<43620>_<4362./packageComponent/pages/media/live-pusher/live-pusher.wxml>_<43620>_<4362./packageComponent/pages/media/video/video.wxml>_<43620>_<4362./packageComponent/pages/nav/navigator/navigator.wxml>_<43620>_<4362./packageComponent/pages/obstacle-free/aria-component/aria-component.wxml>_<43620>_<4362./packageComponent/pages/open/ad/ad.wxml>_<43620>_<4362./packageComponent/pages/open/open-data/open-data.wxml>_<43620>_<4362./packageComponent/pages/open/web-view/web-view.wxml>_<43620>_<4362./packageComponent/pages/view/cover-view/cover-view.wxml>_<43620>_<4362./packageComponent/pages/view/movable-view/movable-view.wxml>_<43620>_<4362./packageComponent/pages/view/scroll-view/scroll-view.wxml>_<43620>_<4362./packageComponent/pages/view/swiper/swiper.wxml>_<43620>_<4362./packageComponent/pages/view/view/view.wxml>_<43620", + "-lla", + "./packageComponent/pages/canvas/canvas-2d/canvas-2d>_<4362./packageComponent/pages/canvas/webgl/webgl>_<4362./packageComponent/pages/content/icon/icon>_<4362./packageComponent/pages/content/progress/progress>_<4362./packageComponent/pages/content/rich-text/rich-text>_<4362./packageComponent/pages/content/text/text>_<4362./packageComponent/pages/form/button/button>_<4362./packageComponent/pages/form/checkbox/checkbox>_<4362./packageComponent/pages/form/editor/editor>_<4362./packageComponent/pages/form/form/form>_<4362./packageComponent/pages/form/input/input>_<4362./packageComponent/pages/form/label/label>_<4362./packageComponent/pages/form/picker/picker>_<4362./packageComponent/pages/form/picker-view/picker-view>_<4362./packageComponent/pages/form/radio/radio>_<4362./packageComponent/pages/form/slider/slider>_<4362./packageComponent/pages/form/switch/switch>_<4362./packageComponent/pages/form/textarea/textarea>_<4362./packageComponent/pages/map/map/map>_<4362./packageComponent/pages/media/camera/camera>_<4362./packageComponent/pages/media/image/image>_<4362./packageComponent/pages/media/live-player/live-player>_<4362./packageComponent/pages/media/live-pusher/live-pusher>_<4362./packageComponent/pages/media/video/video>_<4362./packageComponent/pages/nav/navigator/navigator>_<4362./packageComponent/pages/obstacle-free/aria-component/aria-component>_<4362./packageComponent/pages/open/ad/ad>_<4362./packageComponent/pages/open/open-data/open-data>_<4362./packageComponent/pages/open/web-view/web-view>_<4362./packageComponent/pages/view/cover-view/cover-view>_<4362./packageComponent/pages/view/movable-view/movable-view>_<4362./packageComponent/pages/view/scroll-view/scroll-view>_<4362./packageComponent/pages/view/swiper/swiper>_<4362./packageComponent/pages/view/view/view", + "./miniprogram_npm/miniprogram-barrage/index.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml", + "./miniprogram_npm/wxml-to-canvas/index.wxml", + "./page/API/components/set-tab-bar/set-tab-bar.wxml", + "./page/API/index.wxml", + "./page/cloud/index.wxml", + "./page/common/foot.wxml", + "./page/common/head.wxml", + "./page/component/index.wxml", + "./page/extend/index.wxml", + "./packageComponent/pages/canvas/canvas-2d/canvas-2d.wxml", + "./packageComponent/pages/canvas/webgl/webgl.wxml", + "./packageComponent/pages/content/icon/icon.wxml", + "./packageComponent/pages/content/progress/progress.wxml", + "./packageComponent/pages/content/rich-text/rich-text.wxml", + "./packageComponent/pages/content/text/text.wxml", + "./packageComponent/pages/form/button/button.wxml", + "./packageComponent/pages/form/checkbox/checkbox.wxml", + "./packageComponent/pages/form/editor/editor.wxml", + "./packageComponent/pages/form/form/form.wxml", + "./packageComponent/pages/form/input/input.wxml", + "./packageComponent/pages/form/label/label.wxml", + "./packageComponent/pages/form/picker/picker.wxml", + "./packageComponent/pages/form/picker-view/picker-view.wxml", + "./packageComponent/pages/form/radio/radio.wxml", + "./packageComponent/pages/form/slider/slider.wxml", + "./packageComponent/pages/form/switch/switch.wxml", + "./packageComponent/pages/form/textarea/textarea.wxml", + "./packageComponent/pages/map/map/map.wxml", + "./packageComponent/pages/media/camera/camera.wxml", + "./packageComponent/pages/media/image/image.wxml", + "./packageComponent/pages/media/live-player/live-player.wxml", + "./packageComponent/pages/media/live-pusher/live-pusher.wxml", + "./packageComponent/pages/media/video/video.wxml", + "./packageComponent/pages/nav/navigator/navigator.wxml", + "./packageComponent/pages/obstacle-free/aria-component/aria-component.wxml", + "./packageComponent/pages/open/ad/ad.wxml", + "./packageComponent/pages/open/open-data/open-data.wxml", + "./packageComponent/pages/open/web-view/web-view.wxml", + "./packageComponent/pages/view/cover-view/cover-view.wxml", + "./packageComponent/pages/view/movable-view/movable-view.wxml", + "./packageComponent/pages/view/scroll-view/scroll-view.wxml", + "./packageComponent/pages/view/swiper/swiper.wxml", + "./packageComponent/pages/view/view/view.wxml", + "-gn", + "$7061636b616765436f6d706f6e656e742f", + ] +} +samples.push(config4) + +// const config5 = { +// id: 5, +// projectPath: "/mnt/disk1/WeChatProjects/we1", +// args: ["-d","--split",">_<2460","-xc","2>_<2460./pages/index/index.wxml>_<24600>_<2460./pages/logs/logs.wxml>_<24600","-lla","./pages/index/index>_<2460./pages/logs/logs","./pages/index/index.wxml","./pages/logs/logs.wxml","-gn","$gwx"] +// } +// samples.push(config5) + +const test_wine = (config) => { + const wine = spawn( + path.resolve(__dirname, "../../../wine/wcc.exe"), + config.args, + { + cwd: config.projectPath, + } + ); + const spwanData = [], + errData = []; + wine.stdout.on("data", (e) => { + spwanData.push(e); + }); + wine.stderr.on("data", (e) => { + errData.push(e); + }); + return new Promise((resolve, reject) => { + wine.on("close", (n) => { + console.log("wine n: ", n); + if (0 === n) { + let result = Buffer.concat(spwanData).toString(); + result = JSON.parse(result); + // result = result.generateFunctionContent["__COMMON__"]; + // delete result.generateFunctionContent["__COMMON__"]; + result = JSON.stringify(result, null, 4) + fs.writeFileSync( + path.resolve(__dirname, `./${config.id}/wine_output.json`), + result + ); + // process.stdout.write(result); + resolve(result); + } else { + process.stderr.write( + "wine error:" + + Buffer.concat(errData).toString() + ); + // process.stderr.write(Buffer.concat(spwanData).toString()); + reject(n); + } + }); + }); +}; +const test_node = (config) => { + try { + fs.mkdirSync(path.resolve(__dirname, config.id + '')) + } catch (ignore) { + + } + const node_exec = spawn( + path.resolve(__dirname, "../../../../build/wcc"), + config.args, + { + cwd: config.projectPath, + env: { + WX_DEBUG_COMPILER_OUTPUT: path.resolve(__dirname, config.id + ''), + }, + // stdio: 'inherit' + } + ); + const spwanData = [], + errData = []; + node_exec.stdout.on("data", (e) => { + spwanData.push(e); + // console.log(e.toString()) + }); + node_exec.stderr.on("data", (e) => { + errData.push(e); + // console.log(e.toString()) + }); + return new Promise((resolve, reject) => { + node_exec.on("close", (n) => { + console.log("node n: ", n); + if (0 === n) { + let result = Buffer.concat(spwanData).toString(); + // require('fs').writeFileSync('/mnt/disk2/wechat-web-devtools-linux/tmp/llw2.json', result) + // process.stdout.write(result); + result = JSON.parse(result); + // fs.writeFileSync( + // path.resolve(__dirname, "./3/node_output1.json"), + // JSON.stringify(result, null, 4) + // ); + // result = result.generateFunctionContent["__COMMON__"]; + // delete result.generateFunctionContent["__COMMON__"]; + result = JSON.stringify(result, null, 4) + fs.writeFileSync( + path.resolve(__dirname, `./${config.id}/node_output.json`), + result + ); + fs.writeFileSync( + path.resolve(__dirname, `./${config.id}/node_stderr.json`), + Buffer.concat(errData) + ); + resolve(result); + } else { + process.stderr.write(Buffer.concat(errData).toString()); + // process.stderr.write(Buffer.concat(spwanData).toString()); + reject(n); + } + }); + }); +}; + +const test = async (config) => { + try { + const node_result = await test_node(config); + const wine_result = await test_wine(config); + console.log("结果是否一致:", wine_result.trim() === node_result); + } catch (err) { + console.error("错误:", err); + } +}; +(async ()=>{ + for(let sample of samples){ + await test(sample) + } +})() diff --git a/test/spec/wcc/lla/raw-parse.js b/test/spec/wcc/lla/raw-parse.js new file mode 100644 index 0000000..62315b6 --- /dev/null +++ b/test/spec/wcc/lla/raw-parse.js @@ -0,0 +1,84 @@ + +const path = require("path"); +const fs = require("fs"); +const { spawn } = require("child_process"); + +const wxmlParser = (()=>{ + const getFileArr = (code)=>{ + // 获取x数组并解析 + const indexArr = eval(code.match(/var x=(\[.*\]);/)[1]); + return indexArr; + } + const parseGZFuncMap = (code)=>{ + const exp = `function gz\\$(.*?)\\(\\)\\{[\\s\\S]*?__WXML_GLOBAL__\\.ops_cached\\.\\$.*?\n}`; + const gzs = code.matchAll(new RegExp(exp, 'g')); + const gzFunc = {} + for (const gz of gzs) { + gzFunc[`gz$${gz[1]}`] = gz[0]; + } + return gzFunc; + } + const parseDepsMap = (code, fileArr)=>{ + + // 获取所有依赖 _ai函数 被引入的文件, 文件 + // _ai(i, depPath, e, mainPath, r, c) + const deps = code.matchAll( + /_ai\(.*?,x\[(\d+)\],.*?,x\[(\d+)\],\d+,\d+\)/g + ); + // 处理依赖 + const depsResult = {} + for (let dep of deps) { + const file = fileArr[dep[2]] + let depFile = fileArr[dep[1]] + depFile = `./${path.join(path.dirname(file), depFile)}` + if(depsResult[file]){ + depsResult[file].push(depFile) + }else{ + depsResult[file] = [depFile] + } + } + return depsResult + } + const parseDMEMap = (code)=>{ + // ti: import依赖引入 + const regExp = /d_\[x\[(\d+)\]\]={}[\s\S]*?e_\[x\[\d+\]\]={f:m\d+,j:\[.*?\],i:\[.*?\],ti:\[(.*?)\],ic:\[.*?\]}/g; + const ms = code.matchAll(regExp); + const mFunc = {} + for (const m of ms) { + mFunc[`x[${m[1]}]`] = m[0] + } + return mFunc + } + const parseNvRequireCode = (code)=>{ + const ret = code.match(/(__WXML_GLOBAL__\.ops_set\.\$.*?=[\s\S]*)var x=\[/) + return ret[1] + } + const parseCSCode = (code)=>{ + const cs = code.match(/var cs([\s\S]*?)function gz/); + return cs[1]; + } + const parse = (data, code)=>{ + data.nv_require = parseNvRequireCode(code) + data.cs = parseCSCode(code) + data.gz = parseGZFuncMap(code) + data.fileArr = getFileArr(code); + data.deps = parseDepsMap(code, data.fileArr) + data.dme = parseDMEMap(code) + } + return { + parse + } +})() + +const data = fs.readFileSync('/home/msojocs/Documents/Work/compiler/test/wcc/lla/miniprogram-demo/初次加载1/linux_output.js') +const code = data.toString(); + +const fileArr = wxmlParser.getFileArr(code) +// console.log(fileArr) +const gzFunc = wxmlParser.parseGZFuncMap(code) +// console.log(gzFunc) +const deps = wxmlParser.parseDepsMap(code, fileArr) +// console.log(deps) +const mFunc = wxmlParser.parseDMEMap(code) +const nvRequire = wxmlParser.parseNvRequireCode(code) +console.log(nvRequire) \ No newline at end of file diff --git a/test/spec/wcc/lla/wcc.js b/test/spec/wcc/lla/wcc.js new file mode 100644 index 0000000..6bde2e1 --- /dev/null +++ b/test/spec/wcc/lla/wcc.js @@ -0,0 +1,96 @@ + +const path = require("path"); +const fs = require("fs"); +const { spawn } = require("child_process"); + + +const wcc = (args, projectPath, outputPath = undefined) => { + const node_exec = spawn( + path.resolve(__dirname, "../../../nodejs/wcc"), + args, + { + cwd: projectPath, + env: { + WX_DEBUG_COMPILER_OUTPUT: outputPath, + }, + // stdio: 'inherit' + } + ); + const spwanData = [], + errData = []; + node_exec.stdout.on("data", (e) => { + spwanData.push(e); + // console.log(e.toString()) + }); + node_exec.stderr.on("data", (e) => { + errData.push(e); + // console.log(e.toString()) + }); + return new Promise((resolve, reject) => { + node_exec.on("close", (n) => { + // console.log("node n: ", n); + outputPath && require('fs').writeFileSync(`${outputPath}/linux_err.js`, Buffer.concat(errData).toString()) + if (0 === n) { + let result = Buffer.concat(spwanData).toString(); + // process.stdout.write(result); + // result = JSON.parse(result); + resolve(result); + } else { + process.stderr.write(Buffer.concat(errData).toString()); + // process.stderr.write(Buffer.concat(spwanData).toString()); + reject(n); + } + }); + }); +}; +const test = async () => { + const projectPath = path.resolve( + __dirname, + "../../examples/miniprogram-demo/miniprogram" + ); + const args = [ + "-d", + "--split", + ">_<1989", + "-xc", + "12>_<1989./component/navigation-bar/navigation-bar.wxml>_<19891>_<1989mp-navigation-bar>_<1989./components/navigation-bar/index.wxml>_<19891>_<1989mp-navigation-bar>_<1989./components/page-scroll/index.wxml>_<19891>_<1989mp-navigation-bar>_<1989./miniprogram_npm/miniprogram-barrage/index.wxml>_<19890>_<1989./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml>_<19890>_<1989./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml>_<19890>_<1989./miniprogram_npm/wxml-to-canvas/index.wxml>_<19890>_<1989./page/API/index.wxml>_<19892>_<1989set-tab-bar>_<1989mp-navigation-bar>_<1989./page/API/components/set-tab-bar/set-tab-bar.wxml>_<19891>_<1989mp-navigation-bar>_<1989./page/cloud/index.wxml>_<19891>_<1989mp-navigation-bar>_<1989./page/component/index.wxml>_<19891>_<1989mp-navigation-bar>_<1989./page/extend/index.wxml>_<19891>_<1989mp-navigation-bar", + "-lla", + "./component/navigation-bar/navigation-bar>_<1989./components/navigation-bar/index>_<1989./components/page-scroll/index>_<1989./miniprogram_npm/miniprogram-barrage/index>_<1989./miniprogram_npm/miniprogram-recycle-view/recycle-item>_<1989./miniprogram_npm/miniprogram-recycle-view/recycle-view>_<1989./miniprogram_npm/wxml-to-canvas/index>_<1989./page/API/index>_<1989./page/API/components/set-tab-bar/set-tab-bar>_<1989./page/cloud/index>_<1989./page/component/index>_<1989./page/extend/index", + "./common/foot.wxml", + "./common/head.wxml", + "./component/navigation-bar/navigation-bar.wxml", + "./components/navigation-bar/index.wxml", + "./components/page-scroll/index.wxml", + "./miniprogram_npm/miniprogram-barrage/index.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml", + "./miniprogram_npm/wxml-to-canvas/index.wxml", + "./page/API/index.wxml", + "./page/API/components/set-tab-bar/set-tab-bar.wxml", + "./page/cloud/index.wxml", + "./page/common/foot.wxml", + "./page/common/head.wxml", + "./page/component/index.wxml", + "./page/extend/index.wxml", + "-gn", + "$gwx", + ]; + const storagePath = path.resolve( + __dirname, + `miniprogram-demo/tmp` + ); + try { + fs.mkdirSync(storagePath, { recursive: true }); + } catch (error) {} + const n = JSON.parse(await wcc(args, projectPath, storagePath)); + // const w = JSON.parse(await wine.wcc(args, projectPath)); + // fs.writeFileSync( + // `${storagePath}/wine-output.json`, + // JSON.stringify(w, null, 4) + // ); + fs.writeFileSync( + `${storagePath}/node-output.json`, + JSON.stringify(n, null, 4) + ); +}; +test(); diff --git a/test/spec/wcc/llw/LOG.MD b/test/spec/wcc/llw/LOG.MD new file mode 100644 index 0000000..9400f54 --- /dev/null +++ b/test/spec/wcc/llw/LOG.MD @@ -0,0 +1,26 @@ +# unicode +| 符号 | unicode | +|-----|---------| +| tab | \u0009 | +| t | \u0074 | + +# 起始 +var cs = cs || [];\u000a$gwx_XC_1=function(_,_v,_n,_p,_s,_wp,_wl,$gwn,$gwl,$gwh,wh,$gstack,$gwrt,gra,grb,TestTest,wfor,_ca,_da,_r,_rz,_o,_oz,_1,_1z,_2,_2z,_m,_mz,nv_getDate,nv_getRegExp,nv_console,nv_parseInt,nv_parseFloat,nv_isNaN,nv_isFinite,nv_decodeURI,nv_decodeURIComponent,nv_encodeURI,nv_encodeURIComponent,$gdc,nv_JSON,_af,_gv,_ai,_grp,_gd,_gapi,$ixc,_ic,_w,_ev,_tsd){return function(path,global){\u000aif(typeof global==='undefined'){if (typeof __GWX_GLOBAL__==='undefined')global={};else global=__GWX_GLOBAL__;}if(typeof __WXML_GLOBAL__ === 'undefined') {__WXML_GLOBAL__={};\u000a}__WXML_GLOBAL__.modules = __WXML_GLOBAL__.modules || {};\u000a + +# +var e_={}\u000aif(typeof(global.entrys)==='undefined')global.entrys={};e_=global.entrys;\u000avar d_={}\u000aif(typeof(global.defines)==='undefined')global.defines={};d_=global.defines;\u000avar f_={}\u000aif(typeof(global.modules)==='undefined')global.modules={};f_=global.modules || {};\u000avar p_={}\u000avar cs = cs || [];\u000a__WXML_GLOBAL__.ops_cached = __WXML_GLOBAL__.ops_cached || {}\u000a__WXML_GLOBAL__.ops_set = __WXML_GLOBAL__.ops_set || {};\u000a__WXML_GLOBAL__.ops_init = __WXML_GLOBAL__.ops_init || {};\u000avar z=__WXML_GLOBAL__.ops_set.$gwx_XC_1 || [];\u000a + +# 函数 +function gz$gwx_XC_0_1(){\u000aif( __WXML_GLOBAL__.ops_cached.$gwx_XC_0_1)return __WXML_GLOBAL__.ops_cached.$gwx_XC_0_1\u000a__WXML_GLOBAL__.ops_cached.$gwx_XC_0_1=[];\u000a(function(z){var a=11;function Z(ops){z.push(ops)}\u000aZ([3,'container'])\u000aZ([3,'userinfo'])\u000aZ([[7],[3,'canIUseOpenData']])\u000aZ([3,'bindViewTap'])\u000aZ([3,'userinfo-avatar'])\u000aZ([3,'width: 183rpx; height: 148rpx; display: block; box-sizing: border-box'])\u000aZ([3,'userAvatarUrl'])\u000aZ([3,'userNickName'])\u000aZ([[2,'!'],[[7],[3,'hasUserInfo']]])\u000aZ([[7],[3,'canIUseGetUserProfile']])\u000aZ([3,'getUserProfile'])\u000aZ([3,' 获取头像昵称 '])\u000aZ([[7],[3,'canIUse']])\u000aZ([3,'getUserInfo'])\u000aZ(z[13])\u000aZ(z[11])\u000aZ([3,' 请使用1.4.4及以上版本基础库 '])\u000aZ(z[3])\u000aZ(z[4])\u000aZ([3,'cover'])\u000aZ([[6],[[7],[3,'userInfo']],[3,'avatarUrl']])\u000aZ([3,'userinfo-nickname'])\u000aZ([a,[[6],[[7],[3,'userInfo']],[3,'nickName']]])\u000aZ([3,'usermotto'])\u000aZ([3,'user-motto'])\u000aZ([a,[[7],[3,'motto']]])\u000a})(__WXML_GLOBAL__.ops_cached.$gwx_XC_0_1);return __WXML_GLOBAL__.ops_cached.$gwx_XC_0_1\u000a} + +# +\u000a__WXML_GLOBAL__.ops_set.$gwx_XC_0=z;\u000a__WXML_GLOBAL__.ops_init.$gwx_XC_0=true;\u000avar x=['./pages/index/index.wxml'];d_[x[0]]={}\u000a + + +var m0=function(e,s,r,gg){\u000avar z=gz$gwx_XC_0_1()\u000acs.push(\u0022./pages/index/index.wxml:view:2:2\u0022)\u000avar oB=_n('view')\u000a_rz(z,oB,'class',0,e,s,gg)\u000acs.push(\u0022./pages/index/index.wxml:view:3:4\u0022)\u000avar xC=_n('view')\u000a_rz(z,xC,'class',1,e,s,gg)\u000avar oD=_v()\u000a_(xC,oD)\u000aif(_oz(z,2,e,s,gg)){oD.wxVkey=1\u000acs.push(\u0022./pages/index/index.wxml:block:4:6\u0022)\u000acs.push(\u0022./pages/index/index.wxml:view:5:8\u0022)\u000avar fE=_mz(z,'view',['bindtap',3,'class',1,'style',2],[],e,s,gg)\u000acs.push(\u0022./pages/index/index.wxml:open-data:6:10\u0022)\u000avar cF=_n('open-data')\u000a_rz(z,cF,'type',6,e,s,gg)\u000acs.pop()\u000a_(fE,cF)\u000acs.pop()\u000a_(oD,fE)\u000acs.push(\u0022./pages/index/index.wxml:open-data:8:8\u0022)\u000avar hG=_n('open-data')\u000a_rz(z,hG,'type',7,e,s,gg)\u000acs.pop()\u000a_(oD,hG)\u000acs.pop()\u000a}\u000aelse if(_oz(z,8,e,s,gg)){oD.wxVkey=2\u000acs.push(\u0022./pages/index/index.wxml:block:10:6\u0022)\u000avar oH=_v()\u000a_(oD,oH)\u000aif(_oz(z,9,e,s,gg)){oH.wxVkey=1\u000acs.push(\u0022./pages/index/index.wxml:button:11:8\u0022)\u000acs.push(\u0022./pages/index/index.wxml:button:11:8\u0022)\u000avar cI=_n('button')\u000a_rz(z,cI,'bindtap',10,e,s,gg)\u000avar oJ=_oz(z,11,e,s,gg)\u000a_(cI,oJ)\u000acs.pop()\u000a_(oH,cI)\u000acs.pop()\u000a}\u000aelse if(_oz(z,12,e,s,gg)){oH.wxVkey=2\u000acs.push(\u0022./pages/index/index.wxml:button:12:8\u0022)\u000acs.push(\u0022./pages/index/index.wxml:button:12:8\u0022)\u000avar lK=_mz(z,'button',['bindgetuserinfo',13,'openType',1],[],e,s,gg)\u000avar aL=_oz(z,15,e,s,gg)\u000a_(lK,aL)\u000acs.pop()\u000a_(oH,lK)\u000acs.pop()\u000a}\u000aelse{oH.wxVkey=3\u000acs.push(\u0022./pages/index/index.wxml:view:13:8\u0022)\u000acs.push(\u0022./pages/index/index.wxml:view:13:8\u0022)\u000avar tM=_n('view')\u000avar eN=_oz(z,16,e,s,gg)\u000a_(tM,eN)\u000acs.pop()\u000a_(oH,tM)\u000acs.pop()\u000a}\u000aoH.wxXCkey=1\u000acs.pop()\u000a}\u000aelse{oD.wxVkey=3\u000acs.push(\u0022./pages/index/index.wxml:block:15:6\u0022)\u000acs.push(\u0022./pages/index/index.wxml:image:16:8\u0022)\u000avar bO=_mz(z,'image',['bindtap',17,'class',1,'mode',2,'src',3],[],e,s,gg)\u000acs.pop()\u000a_(oD,bO)\u000acs.push(\u0022./pages/index/index.wxml:text:17:8\u0022)\u000avar oP=_n('text')\u000a_rz(z,oP,'class',21,e,s,gg)\u000avar xQ=_oz(z,22,e,s,gg)\u000a_(oP,xQ)\u000acs.pop()\u000a_(oD,oP)\u000acs.pop()\u000a}\u000aoD.wxXCkey=1\u000acs.pop()\u000a_(oB,xC)\u000acs.push(\u0022./pages/index/index.wxml:view:20:4\u0022)\u000avar oR=_n('view')\u000a_rz(z,oR,'class',23,e,s,gg)\u000acs.push(\u0022./pages/index/index.wxml:text:21:6\u0022)\u000avar fS=_n('text')\u000a_rz(z,fS,'class',24,e,s,gg)\u000avar cT=_oz(z,25,e,s,gg)\u000a_(fS,cT)\u000acs.pop()\u000a_(oR,fS)\u000acs.pop()\u000a_(oB,oR)\u000acs.pop()\u000a_(r,oB)\u000areturn r\u000a}\u000ae_[x[0]]={f:m0,j:[],i:[],ti:[],ic:[]}\u000a + +# +if(path&&e_[path]){\u000aouterGlobal.__wxml_comp_version__=0.02\u000areturn function(env,dd,global){$gwxc=0;var root={\u0022tag\u0022:\u0022wx-page\u0022};root.children=[]\u000a;g=\u0022$gwx_XC_0\u0022;var main=e_[path].f\u000acs=[]\u000aif (typeof global===\u0022undefined\u0022)global={};global.f=$gdc(f_[path],\u0022\u0022,1);\u000aif(typeof(outerGlobal.__webview_engine_version__)!='undefined'&&outerGlobal.__webview_engine_version__+1e-6>=0.02+1e-6&&outerGlobal.__mergeData__)\u000a{\u000aenv=outerGlobal.__mergeData__(env,dd);\u000a}\u000atry{\u000amain(env,{},root,global);\u000a_tsd(root)\u000aif(typeof(outerGlobal.__webview_engine_version__)=='undefined'|| outerGlobal.__webview_engine_version__+1e-6<0.01+1e-6){return _ev(root);}\u000a}catch(err){\u000aconsole.log(cs, env);\u000aconsole.log(err)\u000athrow err\u000a}\u000a;g=\u0022\u0022;\u000areturn root;\u000a}\u000a}\u000a}\u000a} + +# end +(__g.a,__g.b,__g.c,__g.d,__g.e,__g.f,__g.g,__g.h,__g.i,__g.j,__g.k,__g.l,__g.m,__g.n,__g.o,__g.p,__g.q,__g.r,__g.s,__g.t,__g.u,__g.v,__g.w,__g.x,__g.y,__g.z,__g.A,__g.B,__g.C,__g.D,__g.E,__g.F,__g.G,__g.H,__g.I,__g.J,__g.K,__g.L,__g.M,__g.N,__g.O,__g.P,__g.Q,__g.R,__g.S,__g.T,__g.U,__g.V,__g.W,__g.X,__g.Y,__g.Z,__g.aa);if(__vd_version_info__.delayedGwx||false)$gwx_XC_0(); \ No newline at end of file diff --git a/test/spec/wcc/llw/llw.js b/test/spec/wcc/llw/llw.js new file mode 100644 index 0000000..aa55c3e --- /dev/null +++ b/test/spec/wcc/llw/llw.js @@ -0,0 +1,228 @@ +#!/usr/bin/env node + +const { spawn, spawnSync } = require("child_process"); +const path = require("path"); +const fs = require("fs"); +const { exit } = require("process"); + +const samples = [] +const sample2 = { + projectPath: "/mnt/disk1/WeChatProjects/qs-wxapp/", + args:[ + "-d", + "--split", + ">_<9912", + "-cc", + "1>_<9912./pages/index/index.wxml>_<99120", + "-llw", + "./pages/index/index", + "./pages/index/index.wxml", + "-gn", + "$gwx", +]}; +samples.push([sample2, 2]) +const sample3 = { + projectPath: "/mnt/disk1/WeChatProjects/miniprogram-demo/miniprogram/", + args:[ + "-d", + "--split", + ">_<4685", + "-cc", + "9>_<4685./miniprogram_npm/miniprogram-barrage/index.wxml>_<46850>_<4685./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml>_<46850>_<4685./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml>_<46850>_<4685./miniprogram_npm/wxml-to-canvas/index.wxml>_<46850>_<4685./page/API/index.wxml>_<46851>_<4685set-tab-bar>_<4685./page/API/components/set-tab-bar/set-tab-bar.wxml>_<46850>_<4685./page/cloud/index.wxml>_<46850>_<4685./page/component/index.wxml>_<46850>_<4685./page/extend/index.wxml>_<46850", + "-llw", + "./miniprogram_npm/miniprogram-barrage/index>_<4685./miniprogram_npm/miniprogram-recycle-view/recycle-item>_<4685./miniprogram_npm/miniprogram-recycle-view/recycle-view>_<4685./miniprogram_npm/wxml-to-canvas/index>_<4685./page/API/index>_<4685./page/API/components/set-tab-bar/set-tab-bar>_<4685./page/cloud/index>_<4685./page/component/index>_<4685./page/extend/index", + "./miniprogram_npm/miniprogram-barrage/index.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml", + "./miniprogram_npm/wxml-to-canvas/index.wxml", + "./page/API/index.wxml", + "./page/API/components/set-tab-bar/set-tab-bar.wxml", + "./page/cloud/index.wxml", + "./page/common/foot.wxml", + "./page/common/head.wxml", + "./page/component/index.wxml", + "./page/extend/index.wxml", + "-gn", + "$gwx", +]}; +samples.push([sample3, 3]) +const sample4= { + projectPath: "/mnt/disk1/WeChatProjects/miniprogram-demo/miniprogram/", + args: [ + "-d", + "--split", + ">_<3975", + "-cc", + "34>_<3975./packageComponent/pages/canvas/canvas-2d/canvas-2d.wxml>_<39750>_<3975./packageComponent/pages/canvas/webgl/webgl.wxml>_<39750>_<3975./packageComponent/pages/content/icon/icon.wxml>_<39750>_<3975./packageComponent/pages/content/progress/progress.wxml>_<39750>_<3975./packageComponent/pages/content/rich-text/rich-text.wxml>_<39750>_<3975./packageComponent/pages/content/text/text.wxml>_<39750>_<3975./packageComponent/pages/form/button/button.wxml>_<39750>_<3975./packageComponent/pages/form/checkbox/checkbox.wxml>_<39750>_<3975./packageComponent/pages/form/editor/editor.wxml>_<39750>_<3975./packageComponent/pages/form/form/form.wxml>_<39750>_<3975./packageComponent/pages/form/input/input.wxml>_<39750>_<3975./packageComponent/pages/form/label/label.wxml>_<39750>_<3975./packageComponent/pages/form/picker/picker.wxml>_<39750>_<3975./packageComponent/pages/form/picker-view/picker-view.wxml>_<39750>_<3975./packageComponent/pages/form/radio/radio.wxml>_<39750>_<3975./packageComponent/pages/form/slider/slider.wxml>_<39750>_<3975./packageComponent/pages/form/switch/switch.wxml>_<39750>_<3975./packageComponent/pages/form/textarea/textarea.wxml>_<39750>_<3975./packageComponent/pages/map/map/map.wxml>_<39750>_<3975./packageComponent/pages/media/camera/camera.wxml>_<39750>_<3975./packageComponent/pages/media/image/image.wxml>_<39750>_<3975./packageComponent/pages/media/live-player/live-player.wxml>_<39750>_<3975./packageComponent/pages/media/live-pusher/live-pusher.wxml>_<39750>_<3975./packageComponent/pages/media/video/video.wxml>_<39750>_<3975./packageComponent/pages/nav/navigator/navigator.wxml>_<39750>_<3975./packageComponent/pages/obstacle-free/aria-component/aria-component.wxml>_<39750>_<3975./packageComponent/pages/open/ad/ad.wxml>_<39750>_<3975./packageComponent/pages/open/open-data/open-data.wxml>_<39750>_<3975./packageComponent/pages/open/web-view/web-view.wxml>_<39750>_<3975./packageComponent/pages/view/cover-view/cover-view.wxml>_<39750>_<3975./packageComponent/pages/view/movable-view/movable-view.wxml>_<39750>_<3975./packageComponent/pages/view/scroll-view/scroll-view.wxml>_<39750>_<3975./packageComponent/pages/view/swiper/swiper.wxml>_<39750>_<3975./packageComponent/pages/view/view/view.wxml>_<39750", + "-llw", + "./packageComponent/pages/canvas/canvas-2d/canvas-2d>_<3975./packageComponent/pages/canvas/webgl/webgl>_<3975./packageComponent/pages/content/icon/icon>_<3975./packageComponent/pages/content/progress/progress>_<3975./packageComponent/pages/content/rich-text/rich-text>_<3975./packageComponent/pages/content/text/text>_<3975./packageComponent/pages/form/button/button>_<3975./packageComponent/pages/form/checkbox/checkbox>_<3975./packageComponent/pages/form/editor/editor>_<3975./packageComponent/pages/form/form/form>_<3975./packageComponent/pages/form/input/input>_<3975./packageComponent/pages/form/label/label>_<3975./packageComponent/pages/form/picker/picker>_<3975./packageComponent/pages/form/picker-view/picker-view>_<3975./packageComponent/pages/form/radio/radio>_<3975./packageComponent/pages/form/slider/slider>_<3975./packageComponent/pages/form/switch/switch>_<3975./packageComponent/pages/form/textarea/textarea>_<3975./packageComponent/pages/map/map/map>_<3975./packageComponent/pages/media/camera/camera>_<3975./packageComponent/pages/media/image/image>_<3975./packageComponent/pages/media/live-player/live-player>_<3975./packageComponent/pages/media/live-pusher/live-pusher>_<3975./packageComponent/pages/media/video/video>_<3975./packageComponent/pages/nav/navigator/navigator>_<3975./packageComponent/pages/obstacle-free/aria-component/aria-component>_<3975./packageComponent/pages/open/ad/ad>_<3975./packageComponent/pages/open/open-data/open-data>_<3975./packageComponent/pages/open/web-view/web-view>_<3975./packageComponent/pages/view/cover-view/cover-view>_<3975./packageComponent/pages/view/movable-view/movable-view>_<3975./packageComponent/pages/view/scroll-view/scroll-view>_<3975./packageComponent/pages/view/swiper/swiper>_<3975./packageComponent/pages/view/view/view", + "./miniprogram_npm/miniprogram-barrage/index.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml", + "./miniprogram_npm/wxml-to-canvas/index.wxml", + "./page/API/components/set-tab-bar/set-tab-bar.wxml", + "./page/API/index.wxml", + "./page/cloud/index.wxml", + "./page/common/foot.wxml", + "./page/common/head.wxml", + "./page/component/index.wxml", + "./page/extend/index.wxml", + "./packageComponent/pages/canvas/canvas-2d/canvas-2d.wxml", + "./packageComponent/pages/canvas/webgl/webgl.wxml", + "./packageComponent/pages/content/icon/icon.wxml", + "./packageComponent/pages/content/progress/progress.wxml", + "./packageComponent/pages/content/rich-text/rich-text.wxml", + "./packageComponent/pages/content/text/text.wxml", + "./packageComponent/pages/form/button/button.wxml", + "./packageComponent/pages/form/checkbox/checkbox.wxml", + "./packageComponent/pages/form/editor/editor.wxml", + "./packageComponent/pages/form/form/form.wxml", + "./packageComponent/pages/form/input/input.wxml", + "./packageComponent/pages/form/label/label.wxml", + "./packageComponent/pages/form/picker/picker.wxml", + "./packageComponent/pages/form/picker-view/picker-view.wxml", + "./packageComponent/pages/form/radio/radio.wxml", + "./packageComponent/pages/form/slider/slider.wxml", + "./packageComponent/pages/form/switch/switch.wxml", + "./packageComponent/pages/form/textarea/textarea.wxml", + "./packageComponent/pages/map/map/map.wxml", + "./packageComponent/pages/media/camera/camera.wxml", + "./packageComponent/pages/media/image/image.wxml", + "./packageComponent/pages/media/live-player/live-player.wxml", + "./packageComponent/pages/media/live-pusher/live-pusher.wxml", + "./packageComponent/pages/media/video/video.wxml", + "./packageComponent/pages/nav/navigator/navigator.wxml", + "./packageComponent/pages/obstacle-free/aria-component/aria-component.wxml", + "./packageComponent/pages/open/ad/ad.wxml", + "./packageComponent/pages/open/open-data/open-data.wxml", + "./packageComponent/pages/open/web-view/web-view.wxml", + "./packageComponent/pages/view/cover-view/cover-view.wxml", + "./packageComponent/pages/view/movable-view/movable-view.wxml", + "./packageComponent/pages/view/scroll-view/scroll-view.wxml", + "./packageComponent/pages/view/swiper/swiper.wxml", + "./packageComponent/pages/view/view/view.wxml", + "-gn", + "$7061636b616765436f6d706f6e656e742f", + ] +} +samples.push([sample4, 4]) + +const sample5 = { + projectPath: "/mnt/disk1/WeChatProjects/we1", + args: ["-d","--split",">_<7271","-cc","2>_<7271./pages/index/index.wxml>_<72710>_<7271./pages/logs/logs.wxml>_<72710","-llw","./pages/index/index>_<7271./pages/logs/logs","./pages/index/index.wxml","./pages/logs/logs.wxml","-gn","$gwx"] +} +samples.push([sample5, 5]) + +const test_wine = (config, id) => { + try { + fs.mkdirSync(path.resolve(__dirname, '' + id)) + } catch (ignore) { + + } + const wine = spawn( + path.resolve(__dirname, "../../../wine/wcc.exe"), + config.args, + { + cwd: config.projectPath, + } + ); + const spwanData = [], + errData = []; + wine.stdout.on("data", (e) => { + spwanData.push(e); + }); + wine.stderr.on("data", (e) => { + errData.push(e); + }); + return new Promise((resolve, reject) => { + wine.on("close", (n) => { + console.log("wine n: ", n); + if (0 === n) { + let result = Buffer.concat(spwanData).toString(); + result = JSON.parse(result); + // delete result.generateFunctionContent["__COMMON__"]; + result = JSON.stringify(result, null, 4) + // result = result.generateFunctionContent["__COMMON__"]; + fs.writeFileSync( + path.resolve(__dirname, `./${id}/wine_output.json`), + result + ); + // process.stdout.write(result); + resolve(result); + } else { + process.stderr.write( + "wine error:", + Buffer.concat(errData).toString() + ); + // process.stderr.write(Buffer.concat(spwanData).toString()); + reject(n); + } + }); + }); +}; +const test_node = (config, id) => { + try { + fs.mkdirSync(path.resolve(__dirname, '' + id)) + } catch (ignore) { + + } + const node_exec = spawn( + path.resolve(__dirname, "../../../nodejs/wcc"), + config.args, + { + cwd: config.projectPath, + env: { + WX_DEBUG_COMPILER_OUTPUT: path.resolve(__dirname, `./${id}`), + }, + // stdio: 'inherit' + } + ); + const spwanData = [], + errData = []; + node_exec.stdout.on("data", (e) => { + spwanData.push(e); + // console.log(e.toString()) + }); + node_exec.stderr.on("data", (e) => { + errData.push(e); + // console.log(e.toString()) + }); + return new Promise((resolve, reject) => { + node_exec.on("close", (n) => { + console.log("node n: ", n); + process.stderr.write(`=========stderr输出=========\n${Buffer.concat(errData).toString()}\n\n=========stderr输出 END=========\n`); + if (0 === n) { + let result = Buffer.concat(spwanData).toString(); + // require('fs').writeFileSync('/mnt/disk2/wechat-web-devtools-linux/tmp/llw2.json', result) + // process.stdout.write(result); + result = JSON.parse(result); + // delete result.generateFunctionContent["__COMMON__"]; + result = JSON.stringify(result, null, 4) + // result = result.generateFunctionContent["__COMMON__"]; + fs.writeFileSync( + path.resolve(__dirname, `./${id}/node_output.json`), + result + ); + resolve(result); + } else { + reject(n); + } + }); + }); +}; + +const test = async (config, id) => { + try { + const node_result = await test_node(config, id); + const wine_result = await test_wine(config, id); + console.log("结果是否一致:", wine_result.trim() === node_result); + } catch (err) { + console.error("错误:", err); + } +}; +(async ()=>{ + for (const sample of samples) { + // if(sample[1] === 2) + await test(sample[0], sample[1]) + } +})() diff --git a/test/spec/wcc/raw/raw.test.js b/test/spec/wcc/raw/raw.test.js new file mode 100644 index 0000000..9702ebd --- /dev/null +++ b/test/spec/wcc/raw/raw.test.js @@ -0,0 +1,202 @@ +const assert = require("assert"); +const node = require("../../runner/node"); +const wine = require("../../runner/wine"); +const path = require("path"); +const fs = require("fs"); + +describe("wcc - raw", function () { + describe("Raw: node output should equal with wine", function () { + // afterEach(function(){ + // if(this.currentTest.state === 'failed'){ + // console.error('failed', this.currentTest) + // } + // }) + it("初次加载1", async function () { + const projectPath = path.resolve( + __dirname, + "../../examples/miniprogram-demo/miniprogram" + ); + const args = [ + "-d", + "--split", + ">_<8005", + "-xc", + "12>_<8005./component/navigation-bar/navigation-bar.wxml>_<80051>_<8005mp-navigation-bar>_<8005./components/navigation-bar/index.wxml>_<80051>_<8005mp-navigation-bar>_<8005./components/page-scroll/index.wxml>_<80051>_<8005mp-navigation-bar>_<8005./miniprogram_npm/miniprogram-barrage/index.wxml>_<80050>_<8005./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml>_<80050>_<8005./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml>_<80050>_<8005./miniprogram_npm/wxml-to-canvas/index.wxml>_<80050>_<8005./page/API/index.wxml>_<80052>_<8005set-tab-bar>_<8005mp-navigation-bar>_<8005./page/API/components/set-tab-bar/set-tab-bar.wxml>_<80051>_<8005mp-navigation-bar>_<8005./page/cloud/index.wxml>_<80051>_<8005mp-navigation-bar>_<8005./page/component/index.wxml>_<80051>_<8005mp-navigation-bar>_<8005./page/extend/index.wxml>_<80051>_<8005mp-navigation-bar", + "./common/foot.wxml", + "./common/head.wxml", + "./component/navigation-bar/navigation-bar.wxml", + "./components/navigation-bar/index.wxml", + "./components/page-scroll/index.wxml", + "./miniprogram_npm/miniprogram-barrage/index.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml", + "./miniprogram_npm/wxml-to-canvas/index.wxml", + "./page/API/index.wxml", + "./page/API/components/set-tab-bar/set-tab-bar.wxml", + "./page/cloud/index.wxml", + "./page/common/foot.wxml", + "./page/common/head.wxml", + "./page/component/index.wxml", + "./page/extend/index.wxml", + "-gn", + "$gwx", + ]; + const w = (await wine.wcc(args, projectPath)).replaceAll("\r\n", "\n"); + const n = await node.wcc(args, projectPath); + const storagePath = path.resolve( + __dirname, + `miniprogram-demo/${this.test.title}` + ); + try { + fs.mkdirSync(storagePath, { recursive: true }); + } catch (error) {} + + fs.writeFileSync(`${storagePath}/wine-output.js`, w); + fs.writeFileSync(`${storagePath}/node-output.js`, n); + assert.equal(w, n); + }); + it("初次加载2", async function () { + const projectPath = path.resolve( + __dirname, + "../../examples/miniprogram-demo/miniprogram/" + ); + const args = [ + "-d", + "--split", + ">_<4987", + "-xc", + "7>_<4987./packageSkyline/pages/flutter/half-page/index.wxml>_<49873>_<4987navigation-bar>_<4987page-scroll>_<4987mp-navigation-bar>_<4987./packageSkyline/pages/flutter/scale-page/index.wxml>_<49873>_<4987navigation-bar>_<4987page-scroll>_<4987mp-navigation-bar>_<4987./packageSkyline/pages/share-element/card/index.wxml>_<49873>_<4987navigation-bar>_<4987page-scroll>_<4987mp-navigation-bar>_<4987./packageSkyline/pages/share-element/list/index.wxml>_<49873>_<4987navigation-bar>_<4987page-scroll>_<4987mp-navigation-bar>_<4987./packageSkyline/pages/worklet/animation/index.wxml>_<49873>_<4987navigation-bar>_<4987page-scroll>_<4987mp-navigation-bar>_<4987./packageSkyline/pages/worklet/bottom-sheet/index.wxml>_<49873>_<4987navigation-bar>_<4987page-scroll>_<4987mp-navigation-bar>_<4987./packageSkyline/pages/worklet/gesture/index.wxml>_<49873>_<4987navigation-bar>_<4987page-scroll>_<4987mp-navigation-bar", + "./common/foot.wxml", + "./common/head.wxml", + "./component/navigation-bar/navigation-bar.wxml", + "./components/navigation-bar/index.wxml", + "./components/page-scroll/index.wxml", + "./miniprogram_npm/miniprogram-barrage/index.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml", + "./miniprogram_npm/wxml-to-canvas/index.wxml", + "./page/API/index.wxml", + "./page/API/components/set-tab-bar/set-tab-bar.wxml", + "./page/cloud/index.wxml", + "./page/common/foot.wxml", + "./page/common/head.wxml", + "./page/component/index.wxml", + "./page/extend/index.wxml", + "./packageSkyline/pages/flutter/half-page/index.wxml", + "./packageSkyline/pages/flutter/scale-page/index.wxml", + "./packageSkyline/pages/share-element/card/index.wxml", + "./packageSkyline/pages/share-element/list/index.wxml", + "./packageSkyline/pages/worklet/animation/index.wxml", + "./packageSkyline/pages/worklet/bottom-sheet/index.wxml", + "./packageSkyline/pages/worklet/gesture/index.wxml", + "-gn", + "$7061636b616765536b796c696e652f", + ]; + const w = (await wine.wcc(args, projectPath)).replaceAll("\r\n", "\n"); + const n = await node.wcc(args, projectPath); + const storagePath = path.resolve( + __dirname, + `miniprogram-demo/${this.test.title}` + ); + try { + fs.mkdirSync(storagePath, { recursive: true }); + } catch (error) {} + fs.writeFileSync(`${storagePath}/wine-output.js`, w); + fs.writeFileSync(`${storagePath}/node-output.js`, n); + assert.equal(w, n); + }); + it("组件 - skyline - 自定义路由", async function () { + const projectPath = path.resolve( + __dirname, + "../../examples/miniprogram-demo/miniprogram/" + ); + const args = [ + "-d", + "--split", + ">_<9107", + "-xc", + "12>_<9107./component/navigation-bar/navigation-bar.wxml>_<91071>_<9107mp-navigation-bar>_<9107./components/navigation-bar/index.wxml>_<91071>_<9107mp-navigation-bar>_<9107./components/page-scroll/index.wxml>_<91071>_<9107mp-navigation-bar>_<9107./miniprogram_npm/miniprogram-barrage/index.wxml>_<91070>_<9107./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml>_<91070>_<9107./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml>_<91070>_<9107./miniprogram_npm/wxml-to-canvas/index.wxml>_<91070>_<9107./page/API/index.wxml>_<91072>_<9107set-tab-bar>_<9107mp-navigation-bar>_<9107./page/API/components/set-tab-bar/set-tab-bar.wxml>_<91071>_<9107mp-navigation-bar>_<9107./page/cloud/index.wxml>_<91071>_<9107mp-navigation-bar>_<9107./page/component/index.wxml>_<91071>_<9107mp-navigation-bar>_<9107./page/extend/index.wxml>_<91071>_<9107mp-navigation-bar", + "./common/foot.wxml", + "./common/head.wxml", + "./component/navigation-bar/navigation-bar.wxml", + "./components/navigation-bar/index.wxml", + "./components/page-scroll/index.wxml", + "./miniprogram_npm/miniprogram-barrage/index.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml", + "./miniprogram_npm/wxml-to-canvas/index.wxml", + "./page/API/index.wxml", + "./page/API/components/set-tab-bar/set-tab-bar.wxml", + "./page/cloud/index.wxml", + "./page/common/foot.wxml", + "./page/common/head.wxml", + "./page/component/index.wxml", + "./page/extend/index.wxml", + "-gn", + "$gwx", + ]; + const w = (await wine.wcc(args, projectPath)).replaceAll("\r\n", "\n"); + const n = await node.wcc(args, projectPath); + const storagePath = path.resolve( + __dirname, + `miniprogram-demo/${this.test.title}` + ); + try { + fs.mkdirSync(storagePath, { recursive: true }); + } catch (error) {} + fs.writeFileSync(`${storagePath}/wine-output.js`, w); + fs.writeFileSync(`${storagePath}/node-output.js`, n); + assert.equal(w, n); + }); + it("组件 - skyline - 自定义路由 -2", async function () { + const projectPath = path.resolve( + __dirname, + "../../examples/miniprogram-demo/miniprogram/" + ); + const args = [ + "-d", + "--split", + ">_<657", + "-xc", + "7>_<657./packageSkyline/pages/flutter/half-page/index.wxml>_<6573>_<657navigation-bar>_<657page-scroll>_<657mp-navigation-bar>_<657./packageSkyline/pages/flutter/scale-page/index.wxml>_<6573>_<657navigation-bar>_<657page-scroll>_<657mp-navigation-bar>_<657./packageSkyline/pages/share-element/card/index.wxml>_<6573>_<657navigation-bar>_<657page-scroll>_<657mp-navigation-bar>_<657./packageSkyline/pages/share-element/list/index.wxml>_<6573>_<657navigation-bar>_<657page-scroll>_<657mp-navigation-bar>_<657./packageSkyline/pages/worklet/animation/index.wxml>_<6573>_<657navigation-bar>_<657page-scroll>_<657mp-navigation-bar>_<657./packageSkyline/pages/worklet/bottom-sheet/index.wxml>_<6573>_<657navigation-bar>_<657page-scroll>_<657mp-navigation-bar>_<657./packageSkyline/pages/worklet/gesture/index.wxml>_<6573>_<657navigation-bar>_<657page-scroll>_<657mp-navigation-bar", + "./common/foot.wxml", + "./common/head.wxml", + "./component/navigation-bar/navigation-bar.wxml", + "./components/navigation-bar/index.wxml", + "./components/page-scroll/index.wxml", + "./miniprogram_npm/miniprogram-barrage/index.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml", + "./miniprogram_npm/wxml-to-canvas/index.wxml", + "./page/API/index.wxml", + "./page/API/components/set-tab-bar/set-tab-bar.wxml", + "./page/cloud/index.wxml", + "./page/common/foot.wxml", + "./page/common/head.wxml", + "./page/component/index.wxml", + "./page/extend/index.wxml", + "./packageSkyline/pages/flutter/half-page/index.wxml", + "./packageSkyline/pages/flutter/scale-page/index.wxml", + "./packageSkyline/pages/share-element/card/index.wxml", + "./packageSkyline/pages/share-element/list/index.wxml", + "./packageSkyline/pages/worklet/animation/index.wxml", + "./packageSkyline/pages/worklet/bottom-sheet/index.wxml", + "./packageSkyline/pages/worklet/gesture/index.wxml", + "-gn", + "$7061636b616765536b796c696e652f", + ]; + const w = (await wine.wcc(args, projectPath)).replaceAll("\r\n", "\n"); + const n = await node.wcc(args, projectPath); + const storagePath = path.resolve( + __dirname, + `miniprogram-demo/${this.test.title}` + ); + try { + fs.mkdirSync(storagePath, { recursive: true }); + } catch (error) {} + fs.writeFileSync(`${storagePath}/wine-output.js`, w); + fs.writeFileSync(`${storagePath}/node-output.js`, n); + assert.equal(w, n); + }); + }); +}); diff --git a/test/spec/wcsc/ll/ll.spec1.ts b/test/spec/wcsc/ll/ll.spec1.ts new file mode 100644 index 0000000..b31be2d --- /dev/null +++ b/test/spec/wcsc/ll/ll.spec1.ts @@ -0,0 +1,81 @@ +import assert from "assert"; +import path from "path"; +import node from '../../../runner/node' +import wine from '../../../runner/wine' +import * as fs from 'fs' + +describe("wcsc", function () { + describe("LazyLoad: node output should deep equal with wine", function () { + // afterEach(function(){ + // if(this.currentTest.state === 'failed'){ + // console.error('failed', this.currentTest) + // } + // }) + it("主界面", async function () { + const projectPath = path.resolve( + __dirname, + "../../examples/miniprogram-demo/miniprogram" + ); + const args: string[] = [ + "-db", + "-pc", + "12", + "./page/component/index.wxss", + "./page/API/index.wxss", + "./page/cloud/index.wxss", + "./page/extend/index.wxss", + "./component/navigation-bar/navigation-bar.wxss", + "./components/navigation-bar/index.wxss", + "./components/page-scroll/index.wxss", + "./page/API/components/set-tab-bar/set-tab-bar.wxss", + "./miniprogram_npm/miniprogram-barrage/index.wxss", + "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxss", + "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxss", + "./miniprogram_npm/wxml-to-canvas/index.wxss", + "./app.wxss", + "./common/common-skyline.wxss", + "./common/reset.wxss", + "./common/lib/weui.wxss", + "./page/common/index-skyline.wxss", + "-ll", + ]; + const w = JSON.parse(await wine.wcsc(args, projectPath)); + const n = JSON.parse(await node.wcsc(args, projectPath)); + const storagePath = path.resolve(__dirname, `miniprogram-demo/${this.test?.title}`) + try { + fs.mkdirSync(storagePath, {recursive: true}); + } catch (error) {} + fs.writeFileSync( + `${storagePath}/wine-output.json`, + JSON.stringify(w, null, 4) + ); + fs.writeFileSync( + `${storagePath}/node-output.json`, + JSON.stringify(n, null, 4) + ); + assert.deepEqual(w, n); + }); + it("接口-设置界面标题", async function () { + const projectPath = path.resolve( + __dirname, + "../../examples/miniprogram-demo/miniprogram/" + ); + const args = ["-db","-pc","74","./packageAPI/pages/api/login/login.wxss","./packageAPI/pages/api/get-user-info/get-user-info.wxss","./packageAPI/pages/api/request-payment/request-payment.wxss","./packageAPI/pages/api/jump/jump.wxss","./packageAPI/pages/api/share/share.wxss","./packageAPI/pages/api/share-button/share-button.wxss","./packageAPI/pages/api/custom-message/custom-message.wxss","./packageAPI/pages/api/subscribe-message/subscribe-message.wxss","./packageAPI/pages/api/choose-address/choose-address.wxss","./packageAPI/pages/api/choose-invoice-title/choose-invoice-title.wxss","./packageAPI/pages/api/soter-authentication/soter-authentication.wxss","./packageAPI/pages/api/setting/setting.wxss","./packageAPI/pages/ar/visionkit-basic/visionkit-basic.wxss","./packageAPI/pages/ar/plane-ar/plane-ar.wxss","./packageAPI/pages/ar/2dmarker-ar/2dmarker-ar.wxss","./packageAPI/pages/ar/osd-ar/osd-ar.wxss","./packageAPI/pages/page/set-navigation-bar-title/set-navigation-bar-title.wxss","./packageAPI/pages/page/navigation-bar-loading/navigation-bar-loading.wxss","./packageAPI/pages/page/navigator/navigator.wxss","./packageAPI/pages/page/pull-down-refresh/pull-down-refresh.wxss","./packageAPI/pages/page/animation/animation.wxss","./packageAPI/pages/page/action-sheet/action-sheet.wxss","./packageAPI/pages/page/modal/modal.wxss","./packageAPI/pages/page/toast/toast.wxss","./packageAPI/pages/page/canvas/canvas.wxss","./packageAPI/pages/page/get-wxml-node-info/get-wxml-node-info.wxss","./packageAPI/pages/page/page-scroll/page-scroll.wxss","./packageAPI/pages/page/intersection-observer/intersection-observer.wxss","./packageAPI/pages/device/clipboard-data/clipboard-data.wxss","./packageAPI/pages/device/bluetooth/bluetooth.wxss","./packageAPI/pages/device/bluetooth/slave/slave.wxss","./packageAPI/pages/device/screen-brightness/screen-brightness.wxss","./packageAPI/pages/device/vibrate/vibrate.wxss","./packageAPI/pages/device/add-contact/add-contact.wxss","./packageAPI/pages/device/wifi/wifi.wxss","./packageAPI/pages/device/get-network-type/get-network-type.wxss","./packageAPI/pages/device/on-network-status-change/on-network-status-change.wxss","./packageAPI/pages/device/get-system-info/get-system-info.wxss","./packageAPI/pages/device/on-compass-change/on-compass-change.wxss","./packageAPI/pages/device/make-phone-call/make-phone-call.wxss","./packageAPI/pages/device/scan-code/scan-code.wxss","./packageAPI/pages/device/on-accelerometer-change/on-accelerometer-change.wxss","./packageAPI/pages/device/capture-screen/capture-screen.wxss","./packageAPI/pages/device/ibeacon/ibeacon.wxss","./packageAPI/pages/device/get-battery-info/get-battery-info.wxss","./packageAPI/pages/media/image/image.wxss","./packageAPI/pages/media/voice/voice.wxss","./packageAPI/pages/media/file/file.wxss","./packageAPI/pages/media/load-font-face/load-font-face.wxss","./packageAPI/pages/media/background-audio/background-audio.wxss","./packageAPI/pages/media/video/video.wxss","./packageAPI/pages/media/audio/audio.wxss","./packageAPI/pages/media/media-container/media-container.wxss","./packageAPI/pages/location/get-location/get-location.wxss","./packageAPI/pages/location/open-location/open-location.wxss","./packageAPI/pages/location/choose-location/choose-location.wxss","./packageAPI/pages/network/request/request.wxss","./packageAPI/pages/network/web-socket/web-socket.wxss","./packageAPI/pages/network/upload-file/upload-file.wxss","./packageAPI/pages/network/download-file/download-file.wxss","./packageAPI/pages/network/mdns/mdns.wxss","./packageAPI/pages/network/udp-socket/udp-socket.wxss","./packageAPI/pages/storage/storage/storage.wxss","./packageAPI/pages/storage/get-background-fetch-data/get-background-fetch-data.wxss","./packageAPI/pages/storage/get-background-prefetch-data/get-background-prefetch-data.wxss","./packageAPI/pages/performance/get-performance/get-performance.wxss","./packageAPI/pages/worker/worker/worker.wxss","./packageAPI/pages/framework/two-way-bindings/two-way-bindings.wxss","./packageAPI/pages/framework/wxs/wxs.wxss","./packageAPI/pages/framework/resizable/resizable.wxss","./packageAPI/pages/framework/wxs/movable.wxss","./packageAPI/pages/framework/wxs/sidebar.wxss","./packageAPI/pages/framework/wxs/stick-top.wxss","./packageAPI/pages/framework/wxs/nearby.wxss","./app.wxss","./common/common-skyline.wxss","./common/reset.wxss","./common/lib/weui.wxss","./component/navigation-bar/navigation-bar.wxss","./components/navigation-bar/index.wxss","./components/page-scroll/index.wxss","./page/API/index.wxss","./page/API/components/set-tab-bar/set-tab-bar.wxss","./page/cloud/index.wxss","./page/common/index-skyline.wxss","./page/component/index.wxss","./page/extend/index.wxss","./miniprogram_npm/miniprogram-barrage/index.wxss","./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxss","./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxss","./miniprogram_npm/wxml-to-canvas/index.wxss","--subpackage","packageAPI","-ll"] + const w = JSON.parse(await wine.wcsc(args, projectPath)); + const n = JSON.parse(await node.wcsc(args, projectPath)); + const storagePath = path.resolve(__dirname, `miniprogram-demo/${this.test?.title}`) + try { + fs.mkdirSync(storagePath, {recursive: true}); + } catch (error) {} + fs.writeFileSync( + `${storagePath}/wine-output.json`, + JSON.stringify(w, null, 4) + ); + fs.writeFileSync( + `${storagePath}/node-output.json`, + JSON.stringify(n, null, 4) + ); + assert.deepEqual(w, n); + }); + }); +}); diff --git a/test/spec/wcsc/raw/raw.test.js b/test/spec/wcsc/raw/raw.test.js new file mode 100644 index 0000000..7fbc4b8 --- /dev/null +++ b/test/spec/wcsc/raw/raw.test.js @@ -0,0 +1,185 @@ +const assert = require("assert"); +const node = require("../../runner/node"); +const wine = require("../../runner/wine"); +const path = require("path"); +const fs = require("fs"); + +describe("wcsc", function () { + describe("Raw: node output should equal with wine", function () { + // afterEach(function(){ + // if(this.currentTest.state === 'failed'){ + // console.error('failed', this.currentTest) + // } + // }) + it("主界面", async function () { + const projectPath = path.resolve( + __dirname, + "../../examples/miniprogram-demo/miniprogram" + ); + const args = [ + "-db", + "-pc", + "12", + "./page/component/index.wxss", + "./page/API/index.wxss", + "./page/cloud/index.wxss", + "./page/extend/index.wxss", + "./component/navigation-bar/navigation-bar.wxss", + "./components/navigation-bar/index.wxss", + "./components/page-scroll/index.wxss", + "./page/API/components/set-tab-bar/set-tab-bar.wxss", + "./miniprogram_npm/miniprogram-barrage/index.wxss", + "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxss", + "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxss", + "./miniprogram_npm/wxml-to-canvas/index.wxss", + "./app.wxss", + "./common/common-skyline.wxss", + "./common/reset.wxss", + "./common/lib/weui.wxss", + "./page/common/index-skyline.wxss", + // "-ll", + ]; + const w = await wine.wcsc(args, projectPath); + const n = await node.wcsc(args, projectPath); + const storagePath = path.resolve( + __dirname, + `miniprogram-demo/${this.test.title}` + ); + try { + fs.mkdirSync(storagePath, { recursive: true }); + } catch (error) {} + fs.writeFileSync( + `${storagePath}/wine-output.js`, + w + ); + fs.writeFileSync( + `${storagePath}/node-output.js`, + n + ); + assert.equal(w, n); + }); + it("接口-设置界面标题", async function () { + const projectPath = path.resolve( + __dirname, + "../../examples/miniprogram-demo/miniprogram/" + ); + const args = [ + "-db", + "-pc", + "74", + "./packageAPI/pages/api/login/login.wxss", + "./packageAPI/pages/api/get-user-info/get-user-info.wxss", + "./packageAPI/pages/api/request-payment/request-payment.wxss", + "./packageAPI/pages/api/jump/jump.wxss", + "./packageAPI/pages/api/share/share.wxss", + "./packageAPI/pages/api/share-button/share-button.wxss", + "./packageAPI/pages/api/custom-message/custom-message.wxss", + "./packageAPI/pages/api/subscribe-message/subscribe-message.wxss", + "./packageAPI/pages/api/choose-address/choose-address.wxss", + "./packageAPI/pages/api/choose-invoice-title/choose-invoice-title.wxss", + "./packageAPI/pages/api/soter-authentication/soter-authentication.wxss", + "./packageAPI/pages/api/setting/setting.wxss", + "./packageAPI/pages/ar/visionkit-basic/visionkit-basic.wxss", + "./packageAPI/pages/ar/plane-ar/plane-ar.wxss", + "./packageAPI/pages/ar/2dmarker-ar/2dmarker-ar.wxss", + "./packageAPI/pages/ar/osd-ar/osd-ar.wxss", + "./packageAPI/pages/page/set-navigation-bar-title/set-navigation-bar-title.wxss", + "./packageAPI/pages/page/navigation-bar-loading/navigation-bar-loading.wxss", + "./packageAPI/pages/page/navigator/navigator.wxss", + "./packageAPI/pages/page/pull-down-refresh/pull-down-refresh.wxss", + "./packageAPI/pages/page/animation/animation.wxss", + "./packageAPI/pages/page/action-sheet/action-sheet.wxss", + "./packageAPI/pages/page/modal/modal.wxss", + "./packageAPI/pages/page/toast/toast.wxss", + "./packageAPI/pages/page/canvas/canvas.wxss", + "./packageAPI/pages/page/get-wxml-node-info/get-wxml-node-info.wxss", + "./packageAPI/pages/page/page-scroll/page-scroll.wxss", + "./packageAPI/pages/page/intersection-observer/intersection-observer.wxss", + "./packageAPI/pages/device/clipboard-data/clipboard-data.wxss", + "./packageAPI/pages/device/bluetooth/bluetooth.wxss", + "./packageAPI/pages/device/bluetooth/slave/slave.wxss", + "./packageAPI/pages/device/screen-brightness/screen-brightness.wxss", + "./packageAPI/pages/device/vibrate/vibrate.wxss", + "./packageAPI/pages/device/add-contact/add-contact.wxss", + "./packageAPI/pages/device/wifi/wifi.wxss", + "./packageAPI/pages/device/get-network-type/get-network-type.wxss", + "./packageAPI/pages/device/on-network-status-change/on-network-status-change.wxss", + "./packageAPI/pages/device/get-system-info/get-system-info.wxss", + "./packageAPI/pages/device/on-compass-change/on-compass-change.wxss", + "./packageAPI/pages/device/make-phone-call/make-phone-call.wxss", + "./packageAPI/pages/device/scan-code/scan-code.wxss", + "./packageAPI/pages/device/on-accelerometer-change/on-accelerometer-change.wxss", + "./packageAPI/pages/device/capture-screen/capture-screen.wxss", + "./packageAPI/pages/device/ibeacon/ibeacon.wxss", + "./packageAPI/pages/device/get-battery-info/get-battery-info.wxss", + "./packageAPI/pages/media/image/image.wxss", + "./packageAPI/pages/media/voice/voice.wxss", + "./packageAPI/pages/media/file/file.wxss", + "./packageAPI/pages/media/load-font-face/load-font-face.wxss", + "./packageAPI/pages/media/background-audio/background-audio.wxss", + "./packageAPI/pages/media/video/video.wxss", + "./packageAPI/pages/media/audio/audio.wxss", + "./packageAPI/pages/media/media-container/media-container.wxss", + "./packageAPI/pages/location/get-location/get-location.wxss", + "./packageAPI/pages/location/open-location/open-location.wxss", + "./packageAPI/pages/location/choose-location/choose-location.wxss", + "./packageAPI/pages/network/request/request.wxss", + "./packageAPI/pages/network/web-socket/web-socket.wxss", + "./packageAPI/pages/network/upload-file/upload-file.wxss", + "./packageAPI/pages/network/download-file/download-file.wxss", + "./packageAPI/pages/network/mdns/mdns.wxss", + "./packageAPI/pages/network/udp-socket/udp-socket.wxss", + "./packageAPI/pages/storage/storage/storage.wxss", + "./packageAPI/pages/storage/get-background-fetch-data/get-background-fetch-data.wxss", + "./packageAPI/pages/storage/get-background-prefetch-data/get-background-prefetch-data.wxss", + "./packageAPI/pages/performance/get-performance/get-performance.wxss", + "./packageAPI/pages/worker/worker/worker.wxss", + "./packageAPI/pages/framework/two-way-bindings/two-way-bindings.wxss", + "./packageAPI/pages/framework/wxs/wxs.wxss", + "./packageAPI/pages/framework/resizable/resizable.wxss", + "./packageAPI/pages/framework/wxs/movable.wxss", + "./packageAPI/pages/framework/wxs/sidebar.wxss", + "./packageAPI/pages/framework/wxs/stick-top.wxss", + "./packageAPI/pages/framework/wxs/nearby.wxss", + "./app.wxss", + "./common/common-skyline.wxss", + "./common/reset.wxss", + "./common/lib/weui.wxss", + "./component/navigation-bar/navigation-bar.wxss", + "./components/navigation-bar/index.wxss", + "./components/page-scroll/index.wxss", + "./page/API/index.wxss", + "./page/API/components/set-tab-bar/set-tab-bar.wxss", + "./page/cloud/index.wxss", + "./page/common/index-skyline.wxss", + "./page/component/index.wxss", + "./page/extend/index.wxss", + "./miniprogram_npm/miniprogram-barrage/index.wxss", + "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxss", + "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxss", + "./miniprogram_npm/wxml-to-canvas/index.wxss", + "--subpackage", + "packageAPI", + // "-ll", + ]; + const w = await wine.wcsc(args, projectPath); + const n = await node.wcsc(args, projectPath); + const storagePath = path.resolve( + __dirname, + `miniprogram-demo/${this.test.title}` + ); + try { + fs.mkdirSync(storagePath, { recursive: true }); + } catch (error) {} + fs.writeFileSync( + `${storagePath}/wine-output.js`, + w + ); + fs.writeFileSync( + `${storagePath}/node-output.js`, + n + ); + assert.equal(w, n); + }); + }); +}); diff --git a/test/wcc.sh b/test/wcc.sh index 6b3005b..35418ed 100644 --- a/test/wcc.sh +++ b/test/wcc.sh @@ -11,6 +11,6 @@ cd /mnt/d/Work/WeChatProjects/miniprogram-demo/miniprogram # /root/github/wx-compiler/build/wcc "--config-path" "/mnt/d/Work/disassembly/wcc-exec/wcc/config/$cmd.txt" > /root/github/wx-compiler/test/wcc_linux.json # /mnt/d/Work/disassembly/wcc-exec/wcc/wcc.exe "--config-path" "d:/Work/disassembly/wcc-exec/wcc/config/$cmd.txt" > /root/github/wx-compiler/test/wcc_win.json # done; - -/root/github/wx-compiler/build/wcc "--config-path" "/mnt/d/Work/disassembly/wcc-exec/wcc/config/cmd2.txt" > /root/github/wx-compiler/test/wcc_linux.json -/mnt/d/Work/disassembly/wcc-exec/wcc/wcc.exe "--config-path" "d:/Work/disassembly/wcc-exec/wcc/config/cmd2.txt" > /root/github/wx-compiler/test/wcc_win.json +filename="llw2.txt" +/root/github/wx-compiler/build/wcc "--config-path" "/mnt/d/Work/disassembly/wcc-exec/wcc/config/$filename" > /root/github/wx-compiler/test/wcc_linux.json +/mnt/d/Work/disassembly/wcc-exec/wcc/wcc.exe "--config-path" "d:/Work/disassembly/wcc-exec/wcc/config/$filename" > /root/github/wx-compiler/test/wcc_win.json