From f62d1a3ad6ac15237c38853fbdeab12f1a3fe40d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Sat, 8 Feb 2025 16:25:13 +0800 Subject: [PATCH] =?UTF-8?q?github-actions:=20=E8=BF=90=E8=A1=8C=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build-and-release.yml | 10 +++ .github/workflows/test-and-upload.yml | 10 +++ _script/0、updateDependencies.bat | 9 +- _script/1、setupEnv.bat | 3 +- _script/2、installProject.bat | 6 +- _script/3、buildAndRun.bat | 6 +- _script/4、generateSetupFile.bat | 4 +- .../{5、runTest.bat => 5、runTestCore.bat} | 3 +- _script/5、runTestMitmproxy.bat | 4 + packages/core/test/httpsVerifyTest.js | 82 +++++++++---------- packages/core/test/macProxyTest.js | 3 + packages/core/test/mergeTest.js | 6 +- packages/core/test/regex.test.js | 5 +- packages/mitmproxy/package.json | 4 +- .../src/lib/proxy/middleware/source/pac.js | 13 +-- packages/mitmproxy/test/dnsSpeedTest.js | 4 +- packages/mitmproxy/test/dnsTest.mjs | 51 +++++++----- .../mitmproxy/test/lib/monkey/indexTest.js | 4 - packages/mitmproxy/test/matchTest.js | 16 +++- packages/mitmproxy/test/matchUtilTest.js | 6 +- packages/mitmproxy/test/monkeyTest.js | 14 ++++ packages/mitmproxy/test/pacTest.js | 15 ++-- packages/mitmproxy/test/proxyTest.js | 44 +++++----- .../impl/res => }/responseReplaceTest.js | 19 ++++- packages/mitmproxy/test/utilTest.js | 61 +++++++------- 25 files changed, 242 insertions(+), 160 deletions(-) rename _script/{5、runTest.bat => 5、runTestCore.bat} (97%) create mode 100644 _script/5、runTestMitmproxy.bat delete mode 100644 packages/mitmproxy/test/lib/monkey/indexTest.js create mode 100644 packages/mitmproxy/test/monkeyTest.js rename packages/mitmproxy/test/{lib/interceptor/impl/res => }/responseReplaceTest.js (57%) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index 6a63971..5ab1286 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -101,6 +101,16 @@ jobs: echo "--------------------"; pnpm install; + - name: 'test packages/core' + run: | + cd packages/core; + pnpm run test; + + - name: 'test packages/mitmproxy' + run: | + cd packages/mitmproxy; + pnpm run test; + - name: 'npm run electron:build' run: | echo "======================================================================"; diff --git a/.github/workflows/test-and-upload.yml b/.github/workflows/test-and-upload.yml index 0c9dcd1..425859e 100644 --- a/.github/workflows/test-and-upload.yml +++ b/.github/workflows/test-and-upload.yml @@ -104,6 +104,16 @@ jobs: echo "--------------------"; pnpm install; + - name: 'test packages/core' + run: | + cd packages/core; + pnpm run test; + + - name: 'test packages/mitmproxy' + run: | + cd packages/mitmproxy; + pnpm run test; + - name: 'npm run electron:build' run: | echo "======================================================================"; diff --git a/_script/0、updateDependencies.bat b/_script/0、updateDependencies.bat index 6987151..2a22d72 100644 --- a/_script/0、updateDependencies.bat +++ b/_script/0、updateDependencies.bat @@ -1,12 +1,13 @@ node -v +# 安装ncu # npm install -g npm-check-updates cd ../packages/core ncu -u -cd ../gui -ncu -u +# cd ../packages/gui +# ncu -u -cd ../mitmproxy -ncu -u +# cd ../packages/mitmproxy +# ncu -u diff --git a/_script/1、setupEnv.bat b/_script/1、setupEnv.bat index 59c2ba2..207335d 100644 --- a/_script/1、setupEnv.bat +++ b/_script/1、setupEnv.bat @@ -1,5 +1,4 @@ -cd ../ - node -v +cd ../ npm install -g pnpm --registry=https://registry.npmmirror.com diff --git a/_script/2、installProject.bat b/_script/2、installProject.bat index 03e12a1..0808882 100644 --- a/_script/2、installProject.bat +++ b/_script/2、installProject.bat @@ -1,7 +1,5 @@ -cd ../ - -chcp 65001 - node -v +cd ../ +chcp 65001 pnpm install diff --git a/_script/3、buildAndRun.bat b/_script/3、buildAndRun.bat index cbd694c..d4350b8 100644 --- a/_script/3、buildAndRun.bat +++ b/_script/3、buildAndRun.bat @@ -1,7 +1,5 @@ -cd ../packages/gui - -chcp 65001 - node -v +cd ../packages/gui +chcp 65001 npm run electron diff --git a/_script/4、generateSetupFile.bat b/_script/4、generateSetupFile.bat index e7ffa2b..ab3bc47 100644 --- a/_script/4、generateSetupFile.bat +++ b/_script/4、generateSetupFile.bat @@ -1,7 +1,7 @@ -cd ../packages/gui - node -v +cd ../packages/gui + if not exist "dist_electron" mkdir "dist_electron" start dist_electron diff --git a/_script/5、runTest.bat b/_script/5、runTestCore.bat similarity index 97% rename from _script/5、runTest.bat rename to _script/5、runTestCore.bat index 072f379..2974c5e 100644 --- a/_script/5、runTest.bat +++ b/_script/5、runTestCore.bat @@ -1,5 +1,4 @@ -cd ../packages/core - node -v +cd ../packages/core pnpm run test diff --git a/_script/5、runTestMitmproxy.bat b/_script/5、runTestMitmproxy.bat new file mode 100644 index 0000000..aea5b94 --- /dev/null +++ b/_script/5、runTestMitmproxy.bat @@ -0,0 +1,4 @@ +node -v + +cd ../packages/mitmproxy +pnpm run test diff --git a/packages/core/test/httpsVerifyTest.js b/packages/core/test/httpsVerifyTest.js index f2f4133..eafa998 100644 --- a/packages/core/test/httpsVerifyTest.js +++ b/packages/core/test/httpsVerifyTest.js @@ -1,41 +1,41 @@ -const https = require('node:https') - -process.env.NODE_TLS_REJECT_UNAUTHORIZED = '1' - -function request () { - return new Promise((resolve, reject) => { - const options = { - hostname: 'test1.gagedigital.com', - port: 443, - path: '/ssltest.php', - method: 'GET', - rejectUnauthorized: true, - } - console.log('ssl test: gagedigital') - const req = https.request(options, (res) => { - console.log('statusCode:', res.statusCode) - console.log('headers:', res.headers) - - res.on('data', (d) => { - process.stdout.write(d) - resolve() - }) - }) - - req.on('error', (e) => { - console.error(e) - reject(e) - }) - req.end() - }) -} -// eslint-disable-next-line no-undef -describe('ssl.verify', () => { - // eslint-disable-next-line no-undef - it('regex.test.js', async () => { - // https.request('https://test1.gagedigital.com/ssltest.php') - await request() - - // expect(ret).be.ok - }) -}) +// const https = require('node:https') +// +// process.env.NODE_TLS_REJECT_UNAUTHORIZED = '1' +// +// function request () { +// return new Promise((resolve, reject) => { +// const options = { +// hostname: 'test1.gagedigital.com', +// port: 443, +// path: '/ssltest.php', +// method: 'GET', +// rejectUnauthorized: true, +// } +// console.log('ssl test: gagedigital') +// const req = https.request(options, (res) => { +// console.log('statusCode:', res.statusCode) +// console.log('headers:', res.headers) +// +// res.on('data', (d) => { +// process.stdout.write(d) +// resolve() +// }) +// }) +// +// req.on('error', (e) => { +// console.error(e) +// reject(e) +// }) +// req.end() +// }) +// } +// // eslint-disable-next-line no-undef +// describe('ssl.verify', () => { +// // eslint-disable-next-line no-undef +// it('regex.test.js', async () => { +// // https.request('https://test1.gagedigital.com/ssltest.php') +// await request() +// +// // expect(ret).be.ok +// }) +// }) diff --git a/packages/core/test/macProxyTest.js b/packages/core/test/macProxyTest.js index d873cc1..58af7b0 100644 --- a/packages/core/test/macProxyTest.js +++ b/packages/core/test/macProxyTest.js @@ -1,3 +1,5 @@ +const assert = require('node:assert') + // const childProcess = require('child_process') // const util = require('util') // const exec = util.promisify(childProcess.exec) @@ -14,3 +16,4 @@ let wifiAdaptor = '(151) test' wifiAdaptor = wifiAdaptor.substring(wifiAdaptor.indexOf(' ')).trim() console.log(wifiAdaptor) +assert.strictEqual(wifiAdaptor, 'test') diff --git a/packages/core/test/mergeTest.js b/packages/core/test/mergeTest.js index e1ae1b2..6da6290 100644 --- a/packages/core/test/mergeTest.js +++ b/packages/core/test/mergeTest.js @@ -1,3 +1,4 @@ +const assert = require('node:assert') const lodash = require('lodash') const mergeApi = require('../src/merge.js') @@ -84,5 +85,8 @@ const doMergeExpect = { f: {}, g: [1, 2], } -console.log('check merge result:', lodash.isEqual(doMergeResult, doMergeExpect)) + +const result = lodash.isEqual(doMergeResult, doMergeExpect) +console.log('check merge result:', result) console.log('\r') +assert.strictEqual(result, true) diff --git a/packages/core/test/regex.test.js b/packages/core/test/regex.test.js index 417153e..08d4035 100644 --- a/packages/core/test/regex.test.js +++ b/packages/core/test/regex.test.js @@ -1,12 +1,15 @@ +const assert = require('node:assert') const expect = require('chai').expect // eslint-disable-next-line no-undef describe('test', () => { // eslint-disable-next-line no-undef it('regexp', () => { - const test = '^/[^/]+/[^/]+(/releases(/.*)?)?$' + const test = '^/[^/]+/[^/]+(?:/releases(?:/.*)?)?$' const reg = new RegExp(test) const ret = reg.test('/docmirror/dev-sidecar/releases/tag') + console.log(ret) + assert.strictEqual(ret, true) expect(ret).be.ok }) diff --git a/packages/mitmproxy/package.json b/packages/mitmproxy/package.json index eb3afe6..c417a28 100644 --- a/packages/mitmproxy/package.json +++ b/packages/mitmproxy/package.json @@ -9,7 +9,9 @@ "dev-sidecar" ], "main": "src/index.js", - "scripts": {}, + "scripts": { + "test": "mocha" + }, "dependencies": { "@docmirror/dev-sidecar": "workspace:*", "agentkeepalive": "^4.5.0", diff --git a/packages/mitmproxy/src/lib/proxy/middleware/source/pac.js b/packages/mitmproxy/src/lib/proxy/middleware/source/pac.js index c0fae9d..554de56 100644 --- a/packages/mitmproxy/src/lib/proxy/middleware/source/pac.js +++ b/packages/mitmproxy/src/lib/proxy/middleware/source/pac.js @@ -37,16 +37,16 @@ function createPacClient (pacFilePath) { const __RULES__ = getRules(pacFilePath) /* eslint-disable */ -// Was generated by gfwlist2pac in precise mode -// https://github.com/clowwindy/gfwlist2pac + // Was generated by gfwlist2pac in precise mode + // https://github.com/clowwindy/gfwlist2pac -// 2019-10-06: More 'javascript' way to interaction with main program -// 2019-02-08: Updated to support shadowsocks-windows user rules. + // 2019-10-06: More 'javascript' way to interaction with main program + // 2019-02-08: Updated to support shadowsocks-windows user rules. const proxy = __PROXY__ const rules = [] -// convert to abp grammar + // convert to abp grammar for (let i = 0; i < __RULES__.length; i++) { let s = __RULES__[i] if (s.substring(0, 2) === "||") s += "^" @@ -669,7 +669,8 @@ function createPacClient (pacFilePath) { return { - FindProxyForURL + FindProxyForURL, + proxyUrl: __PROXY__ } } diff --git a/packages/mitmproxy/test/dnsSpeedTest.js b/packages/mitmproxy/test/dnsSpeedTest.js index d13880e..8fc7667 100644 --- a/packages/mitmproxy/test/dnsSpeedTest.js +++ b/packages/mitmproxy/test/dnsSpeedTest.js @@ -33,6 +33,6 @@ const dnsMap = dns.initDNS({ SpeedTest.initSpeedTest({ hostnameList: {}, dnsMap }) const tester = new SpeedTester({ hostname: 'github.com' }) -tester.test().then((ret) => { - console.log(tester.alive) +tester.test().then(() => { + console.log('github.com tester.alive = ', tester.alive) }) diff --git a/packages/mitmproxy/test/dnsTest.mjs b/packages/mitmproxy/test/dnsTest.mjs index 965a48e..bf0cbac 100644 --- a/packages/mitmproxy/test/dnsTest.mjs +++ b/packages/mitmproxy/test/dnsTest.mjs @@ -42,7 +42,6 @@ const dnsProviders = dns.initDNS({ // server: ' https://dns.adguard.com/dns-query', // cacheSize: 1000 // } - }) // const test = '111IP Address2222' @@ -52,26 +51,34 @@ const dnsProviders = dns.initDNS({ // const matched = regexp.exec(test) // console.log('data:', matched) -const hostname0 = 'github.com' -// console.log('first') -// dnsProviders.cloudflare.lookup(hostname0) -console.log('test') -dnsProviders.py233.lookup(hostname0) -// dnsProviders.cloudflare.lookup(hostname0) -// dnsProviders.ipaddress.lookup(hostname0) -// dnsProviders.ipaddress.lookup(hostname0) +const hostname1 = 'github.com' +const hostname2 = 'api.github.com' +const hostname3 = 'hk.docmirror.cn' +const hostname4 = 'github.docmirror.cn' +const hostname5 = 'gh.docmirror.top' +const hostname6 = 'gh2.docmirror.top' -// const hostname = 'api.github.com' -// dnsProviders.cloudflare.lookup(hostname) +let ip -// const hostname1 = 'api.github.com' -// dnsProviders.cloudflare.lookup(hostname1) -// -// const hostname2 = 'hk.docmirror.cn' -// dnsProviders.cloudflare.lookup(hostname2) -// const hostname3 = 'github.docmirror.cn' -// dnsProviders.cloudflare.lookup(hostname3) -// const hostname4 = 'gh.docmirror.top' -// dnsProviders.cloudflare.lookup(hostname4) -// const hostname5 = 'gh2.docmirror.top' -// dnsProviders.cloudflare.lookup(hostname5) + +// console.log('test cloudflare') +// ip = await dnsProviders.cloudflare.lookup(hostname1) +// console.log('ip:', ip) +// ip = await dnsProviders.cloudflare.lookup(hostname2) +// console.log('ip:', ip) +// ip = await dnsProviders.cloudflare.lookup(hostname3) +// console.log('ip:', ip) +// ip = await dnsProviders.cloudflare.lookup(hostname4) +// console.log('ip:', ip) +// ip = await dnsProviders.cloudflare.lookup(hostname5) +// console.log('ip:', ip) +// ip = await dnsProviders.cloudflare.lookup(hostname6) +// console.log('ip:', ip) + +// console.log('test py233') +// ip = await dnsProviders.py233.lookup(hostname1) +// console.log('ip:', ip) + +// console.log('test ipaddress') +// ip = await dnsProviders.ipaddress.lookup(hostname0) +// console.log('ip:', ip) diff --git a/packages/mitmproxy/test/lib/monkey/indexTest.js b/packages/mitmproxy/test/lib/monkey/indexTest.js deleted file mode 100644 index d59ab57..0000000 --- a/packages/mitmproxy/test/lib/monkey/indexTest.js +++ /dev/null @@ -1,4 +0,0 @@ -const monkey = require('../../../src/lib/monkey') - -const scripts = monkey.load() -console.log(scripts[0]) diff --git a/packages/mitmproxy/test/matchTest.js b/packages/mitmproxy/test/matchTest.js index df08c28..c2e5a69 100644 --- a/packages/mitmproxy/test/matchTest.js +++ b/packages/mitmproxy/test/matchTest.js @@ -1,10 +1,14 @@ +const assert = require('node:assert') + const name = '/docmirror/dev-sidecar/raw/master/doc/index.png' // https://raw.fastgit.org/docmirror/dev-sidecar/master/doc/index.png const ret = name.replace(/^(.+)\/raw\/(.+)$/, 'raw.fastgit.org$1/$2') console.log(ret) +assert.strictEqual(ret, 'raw.fastgit.org/docmirror/dev-sidecar/master/doc/index.png') -const reg = new RegExp('^/[^/]+/[^/]+$') +const reg = /^\/[^/]+\/[^/]+$/ console.log('/greper/d2-crud-plus/blob/master/.eslintignore'.match(reg)) +assert.strictEqual('/greper/d2-crud-plus/blob/master/.eslintignore'.match(reg), null) const chunk = Buffer.from('') const script = '' @@ -15,6 +19,12 @@ chunk.copy(chunkNew, 0, 0, index) scriptBuf.copy(chunkNew, index, 0) chunk.copy(chunkNew, index + scriptBuf.length, index) console.log(chunkNew.toString()) +assert.strictEqual(chunkNew.toString(), '') -const reg2 = '/aaaa/i' -console.log(new RegExp(reg2).test('aaaa')) +const reg2 = /aaaa/i +console.log(reg2.test('aaaa')) // true +assert.strictEqual(reg2.test('aaaa'), true) + +const reg3 = '/aaaa/i' +console.log(new RegExp(reg3).test('aaaa')) // false +assert.strictEqual(new RegExp(reg3).test('aaaa'), false) diff --git a/packages/mitmproxy/test/matchUtilTest.js b/packages/mitmproxy/test/matchUtilTest.js index ceb481b..7103998 100644 --- a/packages/mitmproxy/test/matchUtilTest.js +++ b/packages/mitmproxy/test/matchUtilTest.js @@ -64,9 +64,9 @@ assert.strictEqual(value41, undefined) assert.strictEqual(value42, true) assert.strictEqual(value43, true) -const value51 = matchUtil.matchHostname(hostMap, 'eee.cn', 'test5.1') -const value52 = matchUtil.matchHostname(hostMap, 'x.eee.cn', 'test5.2') -const value53 = matchUtil.matchHostname(hostMap, 'aaaa.cnet.com', 'test5.3') +const value51 = matchUtil.matchHostname(hostMap, 'zzz.cn', 'test5.1') +const value52 = matchUtil.matchHostname(hostMap, 'x.zzz.cn', 'test5.2') +const value53 = matchUtil.matchHostname(hostMap, 'zzz.cnet.com', 'test5.3') console.log('test5: *.cn') assert.strictEqual(value51, true) assert.strictEqual(value52, true) diff --git a/packages/mitmproxy/test/monkeyTest.js b/packages/mitmproxy/test/monkeyTest.js new file mode 100644 index 0000000..72a39ad --- /dev/null +++ b/packages/mitmproxy/test/monkeyTest.js @@ -0,0 +1,14 @@ +const assert = require('node:assert') +const monkey = require('../src/lib/monkey') + +let scripts +try { + scripts = monkey.load('../gui/extra/scripts/') // 相对于 mitmproxy 目录的相对路径,而不是当前 test 目录的。 +} catch { + scripts = monkey.load('../../gui/extra/scripts/') // 相对于 当前 test 目录的相对路径 +} + +// console.log(scripts) +assert.strictEqual(scripts.github != null, true) +assert.strictEqual(scripts.google != null, true) +assert.strictEqual(scripts.tampermonkey != null, true) diff --git a/packages/mitmproxy/test/pacTest.js b/packages/mitmproxy/test/pacTest.js index 5373ee3..c60e3e0 100644 --- a/packages/mitmproxy/test/pacTest.js +++ b/packages/mitmproxy/test/pacTest.js @@ -1,7 +1,12 @@ -const pac = require('../src/lib/proxy/middleware/source/pac').createPacClient('../../gui/extra/pac/pac.txt') +const assert = require('node:assert') +const pac = require('../src/lib/proxy/middleware/source/pac') -const string = pac.FindProxyForURL('https://www.facebook.com', 'www.facebook.com') -console.log(string) +const pacClient = pac.createPacClient('../gui/extra/pac/pac.txt') // 相对于 mitmproxy 目录的相对路径,而不是当前 test 目录的。 -const string2 = pac.FindProxyForURL('https://http2.golang.org', 'http2.golang.org') -console.log(string2) +const string = pacClient.FindProxyForURL('https://www.facebook.com', 'www.facebook.com') +console.log(`facebook: ${string}`) +assert.strictEqual(string, pacClient.proxyUrl) + +const string2 = pacClient.FindProxyForURL('https://http2.golang.org', 'http2.golang.org') +console.log(`golang: ${string2}`) +assert.strictEqual(string2, 'DIRECT;') diff --git a/packages/mitmproxy/test/proxyTest.js b/packages/mitmproxy/test/proxyTest.js index 55d3bab..9f3fdbb 100644 --- a/packages/mitmproxy/test/proxyTest.js +++ b/packages/mitmproxy/test/proxyTest.js @@ -1,22 +1,22 @@ -const http = require('node:http') - -const options = { - headers: { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', - }, - lookup (hostname, options, callback) { - const ip = '106.52.191.148' - console.log('lookup') - callback(null, ip, 4) - }, -} - -const request = http.get('http://test.target/', options, (response) => { - response.on('data', (data) => { - process.stdout.write(data) - }) -}) - -request.on('error', (error) => { - console.log(error) -}) +// const http = require('node:http') +// +// const options = { +// headers: { +// 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', +// }, +// lookup (hostname, options, callback) { +// const ip = '106.52.191.148' +// console.log('lookup') +// callback(null, ip, 4) +// }, +// } +// +// const request = http.get('http://test.target/', options, (response) => { +// response.on('data', (data) => { +// process.stdout.write(data) +// }) +// }) +// +// request.on('error', (error) => { +// console.log(error) +// }) diff --git a/packages/mitmproxy/test/lib/interceptor/impl/res/responseReplaceTest.js b/packages/mitmproxy/test/responseReplaceTest.js similarity index 57% rename from packages/mitmproxy/test/lib/interceptor/impl/res/responseReplaceTest.js rename to packages/mitmproxy/test/responseReplaceTest.js index e66c47e..1b5152f 100644 --- a/packages/mitmproxy/test/lib/interceptor/impl/res/responseReplaceTest.js +++ b/packages/mitmproxy/test/responseReplaceTest.js @@ -1,4 +1,5 @@ -const responseReplace = require('../../../../../src/lib/interceptor/impl/res/responseReplace') +const assert = require('node:assert') +const responseReplace = require('../src/lib/interceptor/impl/res/responseReplace') const headers = {} const res = { @@ -29,3 +30,19 @@ const result = responseReplace.replaceResponseHeaders(newHeaders, res, proxyRes) console.log(proxyRes.rawHeaders) console.log(headers) console.log(result) + +assert.deepStrictEqual(proxyRes.rawHeaders, [ + 'Content-Type', 'application/json; charset=utf-8', + 'Content-Length', '3', + 'ETag', 'W/"2"', + 'Date', '', + 'Connection', 'keep-alive' +]) +assert.deepStrictEqual(headers, { + xxx: 1, +}) +assert.deepStrictEqual(result, { + 'content-length': '2', + 'date': 'Thu, 01 Jan 1970 00:00:00 GMT', + 'xxx': null, +}) diff --git a/packages/mitmproxy/test/utilTest.js b/packages/mitmproxy/test/utilTest.js index 9366b87..6c890b9 100644 --- a/packages/mitmproxy/test/utilTest.js +++ b/packages/mitmproxy/test/utilTest.js @@ -1,49 +1,50 @@ +const assert = require('node:assert') const util = require('../src/lib/proxy/common/util') let arr arr = util.parseHostnameAndPort('www.baidu.com') -console.log(arr) -console.log(arr.length === 1) // true -console.log(arr[0] === 'www.baidu.com') // true +console.log('arr1:', arr) +assert.strictEqual(arr.length === 1, true) // true +assert.strictEqual(arr[0] === 'www.baidu.com', true) // true arr = util.parseHostnameAndPort('www.baidu.com', 80) -console.log(arr) -console.log(arr.length === 2) // true -console.log(arr[0] === 'www.baidu.com') // true -console.log(arr[1] === 80) // true +console.log('arr2:', arr) +assert.strictEqual(arr.length === 2, true) // true +assert.strictEqual(arr[0] === 'www.baidu.com', true) // true +assert.strictEqual(arr[1] === 80, true) // true arr = util.parseHostnameAndPort('www.baidu.com:8080') -console.log(arr) -console.log(arr.length === 2) // true -console.log(arr[0] === 'www.baidu.com') // true -console.log(arr[1] === 8080) // true +console.log('arr3:', arr) +assert.strictEqual(arr.length === 2, true) // true +assert.strictEqual(arr[0] === 'www.baidu.com', true) // true +assert.strictEqual(arr[1] === 8080, true) // true arr = util.parseHostnameAndPort('www.baidu.com:8080', 8080) -console.log(arr) -console.log(arr.length === 2) // true -console.log(arr[0] === 'www.baidu.com') // true -console.log(arr[1] === 8080) // true +console.log('arr4:', arr) +assert.strictEqual(arr.length === 2, true) // true +assert.strictEqual(arr[0] === 'www.baidu.com', true) // true +assert.strictEqual(arr[1] === 8080, true) // true arr = util.parseHostnameAndPort('[2001:abcd::1]') -console.log(arr) -console.log(arr.length === 1) // true -console.log(arr[0] === '[2001:abcd::1]') // ture +console.log('arr5:', arr) +assert.strictEqual(arr.length === 1, true) // true +assert.strictEqual(arr[0] === '[2001:abcd::1]', true) // ture arr = util.parseHostnameAndPort('[2001:abcd::1]', 80) -console.log(arr) -console.log(arr.length === 2) // true -console.log(arr[0] === '[2001:abcd::1]') // ture -console.log(arr[1] === 80) // ture +console.log('arr6:', arr) +assert.strictEqual(arr.length === 2, true) // true +assert.strictEqual(arr[0] === '[2001:abcd::1]', true) // ture +assert.strictEqual(arr[1] === 80, true) // ture arr = util.parseHostnameAndPort('[2001:abcd::1]:8080') -console.log(arr) -console.log(arr.length === 2) // true -console.log(arr[0] === '[2001:abcd::1]') // true -console.log(arr[1] === 8080) // ture +console.log('arr7:', arr) +assert.strictEqual(arr.length === 2, true) // true +assert.strictEqual(arr[0] === '[2001:abcd::1]', true) // true +assert.strictEqual(arr[1] === 8080, true) // ture arr = util.parseHostnameAndPort('[2001:abcd::1]:8080', 8080) -console.log(arr) -console.log(arr.length === 2) // true -console.log(arr[0] === '[2001:abcd::1]') // true -console.log(arr[1] === 8080) // ture +console.log('arr8:', arr) +assert.strictEqual(arr.length === 2, true) // true +assert.strictEqual(arr[0] === '[2001:abcd::1]', true) // true +assert.strictEqual(arr[1] === 8080, true) // ture