| OLD | NEW |
| 1 "use strict"; | 1 "use strict"; |
| 2 // Usage: `node generate-test-wrappers.js js-filename1.js [js-filename2.js ...]`
will generate: | 2 // Usage: `node generate-test-wrappers.js js-filename1.js [js-filename2.js ...]`
will generate: |
| 3 // - js-filename1.https.html | 3 // - js-filename1.https.html |
| 4 // - js-filename1.sharedworker.html | 4 // - js-filename1.sharedworker.html |
| 5 // - js-filename1.dedicatedworker.html | 5 // - js-filename1.dedicatedworker.html |
| 6 // - js-filename1.serviceworker.html | 6 // - js-filename1.serviceworker.html |
| 7 // (for each passed filename) | 7 // (for each passed filename) |
| 8 // | 8 // |
| 9 // It will turn any importScripts inside the .js file into <script>s in the brow
ser context wrapper. | 9 // It will turn any importScripts inside the .js file into <script>s in the brow
ser context wrapper. |
| 10 // | 10 // |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 function generateWrapper(jsFilename) { | 24 function generateWrapper(jsFilename) { |
| 25 const importedScriptFilenames = findImportedScriptFilenames(jsFilename); | 25 const importedScriptFilenames = findImportedScriptFilenames(jsFilename); |
| 26 const importedScriptTags = importedScriptFilenames | 26 const importedScriptTags = importedScriptFilenames |
| 27 .map(filename => `<script src="${filename}"></script>`) | 27 .map(filename => `<script src="${filename}"></script>`) |
| 28 .join('\n'); | 28 .join('\n'); |
| 29 | 29 |
| 30 const basename = path.basename(jsFilename); | 30 const basename = path.basename(jsFilename); |
| 31 const noExtension = path.basename(jsFilename, '.js'); | 31 const noExtension = path.basename(jsFilename, '.js'); |
| 32 | 32 |
| 33 const outputs = { | 33 const outputs = { |
| 34 https: `<!DOCTYPE html> | 34 '.html': `<!DOCTYPE html> |
| 35 <meta charset="utf-8"> | 35 <meta charset="utf-8"> |
| 36 <title>${basename} browser context wrapper file</title> | 36 <title>${basename} browser context wrapper file</title> |
| 37 | 37 |
| 38 <script src="/resources/testharness.js"></script> | 38 <script src="/resources/testharness.js"></script> |
| 39 <script src="/resources/testharnessreport.js"></script> | 39 <script src="/resources/testharnessreport.js"></script> |
| 40 | 40 |
| 41 ${importedScriptTags} | 41 ${importedScriptTags} |
| 42 | 42 |
| 43 <script src="${basename}"></script> | 43 <script src="${basename}"></script> |
| 44 `, | 44 `, |
| 45 dedicatedworker: `<!DOCTYPE html> | 45 '.dedicatedworker.html': `<!DOCTYPE html> |
| 46 <meta charset="utf-8"> | 46 <meta charset="utf-8"> |
| 47 <title>${basename} dedicated worker wrapper file</title> | 47 <title>${basename} dedicated worker wrapper file</title> |
| 48 | 48 |
| 49 <script src="/resources/testharness.js"></script> | 49 <script src="/resources/testharness.js"></script> |
| 50 <script src="/resources/testharnessreport.js"></script> | 50 <script src="/resources/testharnessreport.js"></script> |
| 51 | 51 |
| 52 <script> | 52 <script> |
| 53 'use strict'; | 53 'use strict'; |
| 54 fetch_tests_from_worker(new Worker('${basename}')); | 54 fetch_tests_from_worker(new Worker('${basename}')); |
| 55 </script> | 55 </script> |
| 56 `, | 56 `, |
| 57 sharedworker: `<!DOCTYPE html> | 57 '.sharedworker.html': `<!DOCTYPE html> |
| 58 <meta charset="utf-8"> | 58 <meta charset="utf-8"> |
| 59 <title>${basename} shared worker wrapper file</title> | 59 <title>${basename} shared worker wrapper file</title> |
| 60 | 60 |
| 61 <script src="/resources/testharness.js"></script> | 61 <script src="/resources/testharness.js"></script> |
| 62 <script src="/resources/testharnessreport.js"></script> | 62 <script src="/resources/testharnessreport.js"></script> |
| 63 | 63 |
| 64 <script> | 64 <script> |
| 65 'use strict'; | 65 'use strict'; |
| 66 fetch_tests_from_worker(new SharedWorker('${basename}')); | 66 fetch_tests_from_worker(new SharedWorker('${basename}')); |
| 67 </script> | 67 </script> |
| 68 `, | 68 `, |
| 69 serviceworker: `<!DOCTYPE html> | 69 '.serviceworker.https.html': `<!DOCTYPE html> |
| 70 <meta charset="utf-8"> | 70 <meta charset="utf-8"> |
| 71 <title>${basename} service worker wrapper file</title> | 71 <title>${basename} service worker wrapper file</title> |
| 72 | 72 |
| 73 <script src="/resources/testharness.js"></script> | 73 <script src="/resources/testharness.js"></script> |
| 74 <script src="/resources/testharnessreport.js"></script> | 74 <script src="/resources/testharnessreport.js"></script> |
| 75 <script src="/service-workers/service-worker/resources/test-helpers.sub.js"></sc
ript> | 75 <script src="/service-workers/service-worker/resources/test-helpers.sub.js"></sc
ript> |
| 76 | 76 |
| 77 <script> | 77 <script> |
| 78 'use strict'; | 78 'use strict'; |
| 79 service_worker_test('${basename}', 'Service worker test setup'); | 79 service_worker_test('${basename}', 'Service worker test setup'); |
| 80 </script> | 80 </script> |
| 81 ` | 81 ` |
| 82 }; | 82 }; |
| 83 | 83 |
| 84 for (const [key, value] of Object.entries(outputs)) { | 84 for (const [key, value] of Object.entries(outputs)) { |
| 85 const destFilename = path.resolve(path.dirname(jsFilename), `${noExtensi
on}.${key}.html`); | 85 const destFilename = path.resolve(path.dirname(jsFilename), `${noExtensi
on}${key}`); |
| 86 fs.writeFileSync(destFilename, value, { encoding: 'utf-8' }); | 86 fs.writeFileSync(destFilename, value, { encoding: 'utf-8' }); |
| 87 } | 87 } |
| 88 } | 88 } |
| 89 | 89 |
| 90 function findImportedScriptFilenames(inputFilename) { | 90 function findImportedScriptFilenames(inputFilename) { |
| 91 const scriptContents = fs.readFileSync(inputFilename, { encoding: 'utf-8' })
; | 91 const scriptContents = fs.readFileSync(inputFilename, { encoding: 'utf-8' })
; |
| 92 | 92 |
| 93 const regExp = /self\.importScripts\('([^']+)'\);/g; | 93 const regExp = /self\.importScripts\('([^']+)'\);/g; |
| 94 | 94 |
| 95 let result = []; | 95 let result = []; |
| 96 let match; | 96 let match; |
| 97 while (match = regExp.exec(scriptContents)) { | 97 while (match = regExp.exec(scriptContents)) { |
| 98 result.push(match[1]); | 98 result.push(match[1]); |
| 99 } | 99 } |
| 100 | 100 |
| 101 return result.filter(x => x !== '/resources/testharness.js'); | 101 return result.filter(x => x !== '/resources/testharness.js'); |
| 102 } | 102 } |
| OLD | NEW |