gecko-dev/.hgignore
Erich Gubler 59905b6142 Bug 1720941, part 1: build(ci): integrate WebGPU CTS into CI r=webgpu-reviewers,taskgraph-reviewers,jmaher,jimb
Vendor in WebGPU CTS so that we can run it against our implementation of WebGPU. This patch includes:

1. Some linting configuration tweaks, to silence issues that weren't straightforward to fix in CTS upstream.
2. Some WPT runner configuration to enable preferences, and skip MacOS testing altogether (since it's not targeted by our current work).
3. A new Rust binary crate that, when run from a development environment:
    1. Creates a vendored copy of WebGPU CTS in `<gecko>/dom/webgpu/tests/cts/checkout/`.
    2. Generates private Web Platform Tests (see also `<gecko>/testing/web-platform/docs/index.rst`). To do this, we:
        1. Use upstream test generation via `npm` scripts, which creates a single `cts.https.html` file with thousands of variants.
        2. Chunk the `cts.https.html` file into parts that Taskcluster can distribute without timing out individual jobs. IMO, this is the most likely part of these changes to need further iteration, because:
            1. We currently naively divide tests by number of variant, and have made no effort to empirically prove that we're dividing execution time of chunks.
            2. There is currently no stability in the distribution of tests per chunk. Test variants are essentially a flattened list of the tree structure used to organize tests. Adding a few tests that end up being placed in the middle of the list can cause the chunk with new tests _and all subsequent chunks_ to have their contents changed, which will probably cause a disproportionate number of line changes to review.:
        3. Fix `script` tag(s) so they actually work with the WPT test runner for private tests (viz., in the `testing/web-platform/mozilla` directory).

The output of the new vendoring binary is designed make the above steps transparent. N.B. that no actual vendoring in of files has happened yet; the next patch will add the results of running this script.

Differential Revision: https://phabricator.services.mozilla.com/D169951
2023-03-22 14:03:50 +00:00

293 lines
7.9 KiB
Plaintext

# .hgignore - List of filenames hg should ignore
# Filenames that should be ignored wherever they appear
~$
\.py(c|o)$
(^|/)TAGS$
(^|/)tags$
(^|/)ID$
(^|/)\.DS_Store$
\.pdb
\.eslintcache
\.gcda
\.gcno
\.gcov
compile_commands\.json
# Generated by hg (e.g. revert, failed patch, ...)
\.orig$
\.rej$
# Ignore Python .egg-info directories for first-party modules (but,
# still add vendored packages' .egg-info directories)
^(?=.*\.egg-info/)(?!^third_party/python/)(?!^testing/web-platform/tests/tools/third_party/)
# Vim swap files.
^\.sw.$
.[^/]*\.sw.$
# Emacs directory variable files.
\.dir-locals\.el
# Emacs project sentinel files.
\.projectile
# User files that may appear at the root
^\.clang-tidy
^\.mozconfig
^mozconfig*
^\.moz-fast-forward
^old-configure$
^config\.cache$
^config\.log$
^\.clang_complete
^\.?machrc$
# pyenv artifact
^\.python-version$
# Empty marker file that's generated when we check out NSS
^security/manager/\.nss\.checkout$
# Build directories
^obj
# gecko.log is generated by various test harnesses
^gecko\.log
# Ignore newtab component build assets
^browser/components/newtab/logs/
# Ignore ASRouter generated test files
^browser/components/newtab/content-src/asrouter/schemas/corpus/CFRMessageProvider.messages.json
^browser/components/newtab/content-src/asrouter/schemas/corpus/OnboardingMessageProvider.messages.json
^browser/components/newtab/content-src/asrouter/schemas/corpus/PanelTestProvider.messages.json
^browser/components/newtab/content-src/asrouter/schemas/corpus/PanelTestProvider_toast_notification.messages.json
# Ignore Pocket component build and dev assets
browser/components/pocket/content/panels/css/main.compiled.css.map
# Build directories for js shell
_DBG\.OBJ/
_OPT\.OBJ/
^js/src/.*-obj/
^js/src/obj-.*/
# SpiderMonkey configury
^js/src/old-configure$
^js/src/autom4te.cache$
# SpiderMonkey test result logs
^js/src/tests/results-.*\.(html|txt)$
^js/src/devtools/rootAnalysis/t/out
# SpiderMonkey wasm/generate-spectests artifacts
^js/src/jit-test/etc/wasm/generate-spectests/specs/
^js/src/jit-test/etc/wasm/generate-spectests/tests/
^js/src/jit-test/etc/wasm/generate-spectests/target/
# Java HTML5 parser classes
^parser/html/java/(html|java)parser/
# SVN directories
\.svn/
# Ignore the files and directory that Eclipse IDE creates
\.project$
\.cproject$
\.settings/
# Ignore the files and directory that JetBrains IDEs create.
\.idea/
\.iml$
# Android Monitor in Android Studio creates a captures/ directory.
^captures/
# Gradle cache.
^.gradle/
# Local Gradle configuration properties.
^local.properties$
# Git repositories
.git/
# Ignore chrome.manifest files from the devtools loader
^devtools/client/chrome.manifest$
^devtools/shared/chrome.manifest$
# Ignore node_modules directories in devtools
^devtools/.*/node_modules/
# Ignore node_module directories and npm artifacts
^remote/test/puppeteer/.*\.tsbuildinfo
^remote/test/puppeteer/.*/lib/
^remote/test/puppeteer/.*/node_modules/
^remote/test/puppeteer/.*/\.wireit/
^remote/test/puppeteer/\.devcontainer/
^remote/test/puppeteer/\.github
^remote/test/puppeteer/\.husky
^remote/test/puppeteer/\.wireit/
^remote/test/puppeteer/coverage/
^remote/test/puppeteer/docker/
^remote/test/puppeteer/docs/puppeteer-core\.api\.json
^remote/test/puppeteer/docs/puppeteer\.api\.json
^remote/test/puppeteer/experimental/
^remote/test/puppeteer/lib/
^remote/test/puppeteer/node_modules/
^remote/test/puppeteer/package-lock\.json
^remote/test/puppeteer/packages/ng-schematics/test/build
^remote/test/puppeteer/src/generated
^remote/test/puppeteer/test/build
^remote/test/puppeteer/test/installation/puppeteer.*\.tgz
^remote/test/puppeteer/test/output-firefox
^remote/test/puppeteer/test/output-chromium
^remote/test/puppeteer/testserver/lib/
^remote/test/puppeteer/utils/mochaRunner/lib/
^remote/test/puppeteer/website
^third_party/js/PKI.js/node_modules/
^third_party/js/PKI.js/package-lock.json
# git checkout of libstagefright
^media/libstagefright/android$
# Tag files generated by GNU Global
(^|/)GTAGS$
(^|/)GRTAGS$
(^|/)GSYMS$
(^|/)GPATH$
# Git clone directory for updating web-platform-tests
^testing/web-platform/sync/
# Third party metadata for web-platform-tests
^testing/web-platform/products/
# Android Gradle artifacts.
^mobile/android/gradle/.gradle
# XCode project cruft
^[^/]*\.xcodeproj/
# Rust/Cargo output from running `cargo` directly
^target/
^servo/ports/geckolib/target/
^dom/base/rust/target/
^servo/components/style/target/
^dom/webgpu/tests/cts/vendor/target/
# Ignore mozharness execution files
^testing/mozharness/.tox/
^testing/mozharness/build/
^testing/mozharness/logs/
^testing/mozharness/.coverage
^testing/mozharness/nosetests.xml
# Ignore tox generated dir
.tox/
# Ignore ESLint and other tool's node_modules.
^node_modules/
^tools/browsertime/node_modules/
^tools/lint/eslint/eslint-plugin-mozilla/node_modules/
^browser/components/newtab/node_modules/
^tools/esmify/node_modules/
# Ignore talos virtualenv and tp5n files.
# The tp5n set is supposed to be decompressed at
# testing/talos/talos/fis|tests/tp5n in order to run tests like tps
# locally. Similarly, running talos requires a Python package virtual
# environment. Both the virtual environment and tp5n files end up littering
# the status command, so we ignore them.
^testing/talos/.Python
^testing/talos/bin/
^testing/talos/include/
^testing/talos/lib/
^testing/talos/talos/fis/tp5n.zip
^testing/talos/talos/fis/tp5n.tar.gz
^testing/talos/talos/fis/tp5n
^testing/talos/talos/tests/tp5n.zip
^testing/talos/talos/tests/tp5n.tar.gz
^testing/talos/talos/tests/tp5n
^testing/talos/talos/tests/devtools/damp.manifest.develop
^testing/talos/talos/startup_test/startup_about_home_paint/startup_about_home_paint.manifest.develop
^testing/talos/talos/webextensions/
^talos-venv
^py3venv
^testing/talos/talos/mitmproxy/mitmdump
^testing/talos/talos/mitmproxy/mitmproxy
^testing/talos/talos/mitmproxy/mitmweb
# Ignore talos webkit benchmark files; source is copied from in-tree /third_party
# into testing/talos/talos/tests/webkit/PerformanceTests/ when run locally
# i.e. speedometer, motionmark, stylebench
^testing/talos/talos/tests/webkit/PerformanceTests
# Ignore toolchains.json created by tooltool.
^toolchains\.json
# Unit test
\.pytest_cache/
# Ruff
\.ruff_cache/
# Ignore files created when running a reftest.
^lextab.py$
# Ignore sync tps logs and reports
tps\.log
tps_result\.json
# Ignore Visual Studio/Visual Studio Code workspace files.
\.vs/
\.vscode/(?!extensions\.json|tasks\.json)
\.user$
# https://bz.mercurial-scm.org/show_bug.cgi?id=5322
^comm/
# Ignore various raptor performance framework files
^testing/raptor/.raptor-venv
^testing/raptor/raptor-venv
^testing/raptor/raptor/tests/json/
^testing/raptor/webext/raptor/auto_gen_test_config.js
# Ignore condprofile build directory
^testing/condprofile/build
# Ignore browsertime output directory
^browsertime-results
# Ignore the build directories of WebGPU and WebRender standalone builds.
gfx/wgpu/target
gfx/wgpu/.*/build
gfx/wr/target/
# Ignore Rust/Cargo output from running `cargo` directly for image_builder docker image
^taskcluster/docker/image_builder/build-image/target
# Ignore ICU4X experimentation data files.
# See intl/ICU4X.md for more details.
^config/external/icu4x
# Ignore the index files generated by clangd.
^.cache/clangd/index/
# Ignore mypy files
\.mypy_cache/
# Ignore Storybook generated files
^browser/components/storybook/node_modules/
^browser/components/storybook/storybook-static/
^browser/components/storybook/.storybook/chrome-map.js
^browser/components/storybook/custom-elements.json
# Ignore jscodeshift installed by mach esmify on windows
^tools/esmify/jscodeshift
^tools/esmify/jscodeshift.cmd
^tools/esmify/jscodeshift.ps1
^tools/esmify/package-lock.json
# Ignore support files for en-US dictionary updates
^extensions/spellcheck/locales/en-US/hunspell/dictionary-sources/scowl
^extensions/spellcheck/locales/en-US/hunspell/dictionary-sources/support_files/
^extensions/spellcheck/locales/en-US/hunspell/dictionary-sources/*en_US-mozilla*