diff options
Diffstat (limited to 'dom/webgpu/tests/cts/checkout/Gruntfile.js')
-rw-r--r-- | dom/webgpu/tests/cts/checkout/Gruntfile.js | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/dom/webgpu/tests/cts/checkout/Gruntfile.js b/dom/webgpu/tests/cts/checkout/Gruntfile.js new file mode 100644 index 0000000000..bb48aeaac4 --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/Gruntfile.js @@ -0,0 +1,229 @@ +/* eslint-disable node/no-unpublished-require */ +/* eslint-disable prettier/prettier */ +/* eslint-disable no-console */ + +module.exports = function (grunt) { + // Project configuration. + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + + clean: { + out: ['out/', 'out-wpt/', 'out-node/'], + }, + + run: { + 'generate-version': { + cmd: 'node', + args: ['tools/gen_version'], + }, + 'generate-listings': { + cmd: 'node', + args: ['tools/gen_listings', 'out/', 'src/webgpu', 'src/stress', 'src/manual', 'src/unittests', 'src/demo'], + }, + 'generate-wpt-cts-html': { + cmd: 'node', + args: ['tools/gen_wpt_cts_html', 'out-wpt/cts.https.html', 'src/common/templates/cts.https.html'], + }, + 'generate-cache': { + cmd: 'node', + args: ['tools/gen_cache', 'out/data', 'src/webgpu'], + }, + unittest: { + cmd: 'node', + args: ['tools/run_node', 'unittests:*'], + }, + 'build-out': { + cmd: 'node', + args: [ + 'node_modules/@babel/cli/bin/babel', + '--extensions=.ts,.js', + '--source-maps=true', + '--out-dir=out/', + 'src/', + ], + }, + 'build-out-wpt': { + cmd: 'node', + args: [ + 'node_modules/@babel/cli/bin/babel', + '--extensions=.ts,.js', + '--source-maps=false', + '--delete-dir-on-start', + '--out-dir=out-wpt/', + 'src/', + '--only=src/common/framework/', + '--only=src/common/runtime/helper/', + '--only=src/common/runtime/wpt.ts', + '--only=src/webgpu/', + // These files will be generated, instead of compiled from TypeScript. + '--ignore=src/common/internal/version.ts', + '--ignore=src/webgpu/listing.ts', + ], + }, + 'build-out-node': { + cmd: 'node', + args: [ + 'node_modules/typescript/lib/tsc.js', + '--project', 'node.tsconfig.json', + '--outDir', 'out-node/', + ], + }, + 'copy-assets': { + cmd: 'node', + args: [ + 'node_modules/@babel/cli/bin/babel', + 'src/resources/', + '--out-dir=out/resources/', + '--copy-files' + ], + }, + 'copy-assets-wpt': { + cmd: 'node', + args: [ + 'node_modules/@babel/cli/bin/babel', + 'src/resources/', + '--out-dir=out-wpt/resources/', + '--copy-files' + ], + }, + lint: { + cmd: 'node', + args: ['node_modules/eslint/bin/eslint', 'src/**/*.ts', '--max-warnings=0'], + }, + presubmit: { + cmd: 'node', + args: ['tools/presubmit'], + }, + fix: { + cmd: 'node', + args: ['node_modules/eslint/bin/eslint', 'src/**/*.ts', '--fix'], + }, + 'autoformat-out-wpt': { + cmd: 'node', + args: ['node_modules/prettier/bin-prettier', '--loglevel=warn', '--write', 'out-wpt/**/*.js'], + }, + tsdoc: { + cmd: 'node', + args: ['node_modules/typedoc/bin/typedoc'], + }, + 'tsdoc-treatWarningsAsErrors': { + cmd: 'node', + args: ['node_modules/typedoc/bin/typedoc', '--treatWarningsAsErrors'], + }, + + serve: { + cmd: 'node', + args: ['node_modules/http-server/bin/http-server', '-p8080', '-a127.0.0.1', '-c-1'] + } + }, + + copy: { + 'out-wpt-generated': { + files: [ + { expand: true, cwd: 'out', src: 'common/internal/version.js', dest: 'out-wpt/' }, + { expand: true, cwd: 'out', src: 'webgpu/listing.js', dest: 'out-wpt/' }, + ], + }, + 'out-wpt-htmlfiles': { + files: [ + { expand: true, cwd: 'src', src: 'webgpu/**/*.html', dest: 'out-wpt/' }, + ], + }, + }, + + ts: { + check: { + tsconfig: { + tsconfig: 'tsconfig.json', + passThrough: true, + }, + }, + }, + }); + + grunt.loadNpmTasks('grunt-contrib-clean'); + grunt.loadNpmTasks('grunt-contrib-copy'); + grunt.loadNpmTasks('grunt-run'); + grunt.loadNpmTasks('grunt-ts'); + + const helpMessageTasks = []; + function registerTaskAndAddToHelp(name, desc, deps) { + grunt.registerTask(name, deps); + addExistingTaskToHelp(name, desc); + } + function addExistingTaskToHelp(name, desc) { + helpMessageTasks.push({ name, desc }); + } + + grunt.registerTask('set-quiet-mode', () => { + grunt.log.write('Running tasks'); + require('quiet-grunt'); + }); + + grunt.registerTask('build-standalone', 'Build out/ (no checks, no WPT)', [ + 'run:build-out', + 'run:copy-assets', + 'run:generate-version', + 'run:generate-listings', + ]); + grunt.registerTask('build-wpt', 'Build out/ (no checks)', [ + 'run:build-out-wpt', + 'run:copy-assets-wpt', + 'run:autoformat-out-wpt', + 'run:generate-version', + 'run:generate-listings', + 'copy:out-wpt-generated', + 'copy:out-wpt-htmlfiles', + 'run:generate-wpt-cts-html', + ]); + grunt.registerTask('build-done-message', () => { + process.stderr.write('\nBuild completed! Running checks/tests'); + }); + + registerTaskAndAddToHelp('pre', 'Run all presubmit checks: standalone+wpt+typecheck+unittest+lint', [ + 'set-quiet-mode', + 'clean', + 'build-standalone', + 'build-wpt', + 'run:build-out-node', + 'build-done-message', + 'ts:check', + 'run:presubmit', + 'run:unittest', + 'run:lint', + 'run:tsdoc-treatWarningsAsErrors', + ]); + registerTaskAndAddToHelp('standalone', 'Build standalone and typecheck', [ + 'set-quiet-mode', + 'build-standalone', + 'build-done-message', + 'ts:check', + ]); + registerTaskAndAddToHelp('wpt', 'Build for WPT and typecheck', [ + 'set-quiet-mode', + 'build-wpt', + 'build-done-message', + 'ts:check', + ]); + registerTaskAndAddToHelp('unittest', 'Build standalone, typecheck, and unittest', [ + 'standalone', + 'run:unittest', + ]); + registerTaskAndAddToHelp('check', 'Just typecheck', [ + 'set-quiet-mode', + 'ts:check', + ]); + + registerTaskAndAddToHelp('serve', 'Serve out/ on 127.0.0.1:8080 (does NOT compile source)', ['run:serve']); + registerTaskAndAddToHelp('fix', 'Fix lint and formatting', ['run:fix']); + + addExistingTaskToHelp('clean', 'Clean out/ and out-wpt/'); + + grunt.registerTask('default', '', () => { + console.error('\nAvailable tasks (see grunt --help for info):'); + for (const { name, desc } of helpMessageTasks) { + console.error(`$ grunt ${name}`); + console.error(` ${desc}`); + } + }); +}; |