|
1 | 1 | const { resolve } = require('path'); |
2 | 2 |
|
3 | | -const remoteLatestBucket = 'vizzu-lib-main-sha.storage.googleapis.com'; |
4 | | -const remoteStableBucket = 'vizzu-lib-main.storage.googleapis.com'; |
| 3 | +const remoteLatestBucket = 'https://vizzu-lib-main-sha.storage.googleapis.com'; |
| 4 | +const remoteStableBucket = 'https://vizzu-lib-main.storage.googleapis.com'; |
| 5 | +const remoteCdn = 'https://cdn.jsdelivr.net/npm/vizzu'; |
5 | 6 | const defaultAnimStep = '20%'; |
6 | 7 | const defaultTestCaseTimeout = 60000; |
7 | 8 | const padLength = 7; |
@@ -114,40 +115,62 @@ try { |
114 | 115 |
|
115 | 116 | async #setUrl(url) { |
116 | 117 | try { |
117 | | - let vizzuMinJs = 'vizzu.min.js'; |
118 | 118 | let vizzuJs = 'vizzu.js'; |
| 119 | + let vizzuMinJs = 'vizzu.min.js'; |
| 120 | + let vizzuTypeForced; |
119 | 121 |
|
120 | 122 | if (url.endsWith(vizzuMinJs)) { |
121 | 123 | url = url.substring(0, url.length - vizzuMinJs.length); |
122 | | - } |
123 | | - if (url.endsWith(vizzuJs)) { |
| 124 | + vizzuTypeForced = vizzuMinJs; |
| 125 | + } else if (url.endsWith(vizzuJs)) { |
124 | 126 | url = url.substring(0, url.length - vizzuJs.length); |
| 127 | + vizzuTypeForced = vizzuJs |
125 | 128 | } |
| 129 | + |
126 | 130 | if (url.endsWith('/')) { |
127 | 131 | url = url.substring(0, url.length - 1); |
128 | 132 | } |
129 | 133 |
|
130 | | - if (url.includes(remoteStableBucket)) { |
131 | | - url = 'https://' + remoteStableBucket + '/lib'; |
132 | | - } else if (url.includes(remoteLatestBucket)) { |
133 | | - url = 'https://' + remoteLatestBucket + '/lib-' + url.split('/lib-')[1].substring(0,7); |
| 134 | + if (url.toLowerCase() === 'head') { |
| 135 | + url = remoteStableBucket + '/lib'; |
| 136 | + } else if (/^[A-Za-z0-9]+$/.test(url) && url.length === 7) { |
| 137 | + url = remoteLatestBucket + '/lib-' + url; |
| 138 | + } else if (/^(\d+\.)?(\d+\.)?(\*|\d+)$/.test(url)) { |
| 139 | + url = remoteCdn + '@' + url + '/dist'; |
| 140 | + vizzuTypeForced = vizzuMinJs; |
134 | 141 | } |
135 | 142 |
|
136 | 143 | if (url.startsWith('https://')) { |
137 | | - if (await this.#isUrlExist(url + '/' + vizzuMinJs)) { |
138 | | - url = url + '/' + vizzuMinJs; |
139 | | - } else if (await this.#isUrlExist(url + '/' + vizzuJs)) { |
140 | | - url = url + '/' + vizzuJs; |
| 144 | + if (vizzuTypeForced) { |
| 145 | + if (await this.#isUrlExist(url + '/' + vizzuTypeForced)) { |
| 146 | + url = url + '/' + vizzuTypeForced; |
| 147 | + } else { |
| 148 | + throw new Error('ENOENT: ' + url + '/' + vizzuTypeForced); |
| 149 | + } |
141 | 150 | } else { |
142 | | - throw new Error('ENOENT: ' + url + '/' + vizzuMinJs + '|' + url + '/' + vizzuJs); |
| 151 | + if (await this.#isUrlExist(url + '/' + vizzuJs)) { |
| 152 | + url = url + '/' + vizzuJs; |
| 153 | + } else if (await this.#isUrlExist(url + '/' + vizzuMinJs)) { |
| 154 | + url = url + '/' + vizzuMinJs; |
| 155 | + } else { |
| 156 | + throw new Error('ENOENT: ' + url + '/' + vizzuJs + '|' + url + '/' + vizzuMinJs); |
| 157 | + } |
143 | 158 | } |
144 | 159 | } else { |
145 | | - if (fs.existsSync(this.#workspacePath + url + '/' + vizzuMinJs)) { |
146 | | - url = url + '/' + vizzuMinJs; |
147 | | - } else if (fs.existsSync(this.#workspacePath + url + '/' + vizzuJs)) { |
148 | | - url = url + '/' + vizzuJs; |
| 160 | + if (vizzuTypeForced) { |
| 161 | + if (fs.existsSync(this.#workspacePath + url + '/' + vizzuTypeForced)) { |
| 162 | + url = url + '/' + vizzuTypeForced; |
| 163 | + } else { |
| 164 | + throw new Error('ENOENT: ' + url + '/' + vizzuTypeForced); |
| 165 | + } |
149 | 166 | } else { |
150 | | - throw new Error('ENOENT: ' + path.resolve(this.#workspacePath + url + '/' + vizzuMinJs) + '|' + path.resolve(this.#workspacePath + url + '/' + vizzuJs)); |
| 167 | + if (fs.existsSync(this.#workspacePath + url + '/' + vizzuJs)) { |
| 168 | + url = url + '/' + vizzuJs; |
| 169 | + } else if (fs.existsSync(this.#workspacePath + url + '/' + vizzuMinJs)) { |
| 170 | + url = url + '/' + vizzuMinJs; |
| 171 | + } else { |
| 172 | + throw new Error('ENOENT: ' + path.resolve(this.#workspacePath + url + '/' + vizzuJs) + '|' + path.resolve(this.#workspacePath + url + '/' + vizzuMinJs)); |
| 173 | + } |
151 | 174 | } |
152 | 175 | } |
153 | 176 | this.#url = url; |
@@ -284,15 +307,15 @@ try { |
284 | 307 | if (this.#refurl === undefined) { |
285 | 308 | let vizzuMinJs = 'vizzu.min.js'; |
286 | 309 | let vizzuJs = 'vizzu.js'; |
287 | | - let shaUrl = await fetch('https://' + remoteStableBucket + '/lib/sha.txt'); |
| 310 | + let shaUrl = await fetch(remoteStableBucket + '/lib/sha.txt'); |
288 | 311 | sha = await shaUrl.text(); |
289 | 312 | sha = sha.trim(); |
290 | | - if (await this.#isUrlExist('https://' + remoteLatestBucket + '/lib-' + sha + '/' + vizzuMinJs)) { |
291 | | - this.#refurl = 'https://' + remoteLatestBucket + '/lib-' + sha + '/' + vizzuMinJs; |
292 | | - } else if (await this.#isUrlExist('https://' + remoteLatestBucket + '/lib-' + sha + '/' + vizzuJs)) { |
293 | | - this.#refurl = 'https://' + remoteLatestBucket + '/lib-' + sha + '/' + vizzuJs; |
| 313 | + if (await this.#isUrlExist(remoteLatestBucket + '/lib-' + sha + '/' + vizzuMinJs)) { |
| 314 | + this.#refurl = remoteLatestBucket + '/lib-' + sha + '/' + vizzuMinJs; |
| 315 | + } else if (await this.#isUrlExist(remoteLatestBucket + '/lib-' + sha + '/' + vizzuJs)) { |
| 316 | + this.#refurl = remoteLatestBucket + '/lib-' + sha + '/' + vizzuJs; |
294 | 317 | } else { |
295 | | - throw new Error('ENOENT: ' + 'https://' + remoteLatestBucket + '/lib-' + sha + '/' + vizzuMinJs + '|' + 'https://' + remoteLatestBucket + '/lib-' + sha + '/' + vizzuJs); |
| 318 | + throw new Error('ENOENT: ' + remoteLatestBucket + '/lib-' + sha + '/' + vizzuMinJs + '|' + remoteLatestBucket + '/lib-' + sha + '/' + vizzuJs); |
296 | 319 | } |
297 | 320 | } |
298 | 321 | let testCaseRefData = await this.#runTestCaseClient(testCase, this.#refurl); |
@@ -474,7 +497,7 @@ try { |
474 | 497 | .alias('u', 'vizzuUrl') |
475 | 498 | .describe('u', 'Change vizzu.js url') |
476 | 499 | .nargs('u', 1) |
477 | | - .default('u', '/example/lib') |
| 500 | + .default('u', '/example/lib/vizzu.js') |
478 | 501 | .argv; |
479 | 502 |
|
480 | 503 | let test = new TestSuite(__dirname + '/test_cases'); |
|
0 commit comments