From 59c3ead6b5b6695d1e25385b51fcb576517934f1 Mon Sep 17 00:00:00 2001 From: Juanjo Alvarez Date: Fri, 6 Jun 2025 13:51:45 +0200 Subject: [PATCH 1/6] move the selenium ci step to riot Signed-off-by: Juanjo Alvarez --- .riot/requirements/184226c.txt | 36 + .riot/requirements/308373d.txt | 36 + .riot/requirements/ff0ace3.txt | 38 + hatch.toml | 770 +++++++++--------- .../sources/min_compatible_versions.csv | 2 + min_compatible_versions.csv | 2 + riotfile.py | 31 + tests/ci_visibility/suitespec.yml | 2 +- 8 files changed, 513 insertions(+), 404 deletions(-) create mode 100644 .riot/requirements/184226c.txt create mode 100644 .riot/requirements/308373d.txt create mode 100644 .riot/requirements/ff0ace3.txt diff --git a/.riot/requirements/184226c.txt b/.riot/requirements/184226c.txt new file mode 100644 index 00000000000..5835bdad8ca --- /dev/null +++ b/.riot/requirements/184226c.txt @@ -0,0 +1,36 @@ +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/184226c.in +# +attrs==25.3.0 +certifi==2025.4.26 +charset-normalizer==3.4.2 +coverage[toml]==7.8.2 +h11==0.16.0 +hypothesis==6.135.1 +idna==3.10 +iniconfig==2.1.0 +mock==5.2.0 +opentracing==2.4.0 +outcome==1.3.0.post0 +packaging==25.0 +pluggy==1.6.0 +pygments==2.19.1 +pysocks==1.7.1 +pytest==8.4.0 +pytest-cov==6.1.1 +pytest-mock==3.14.1 +python-dotenv==1.1.0 +requests==2.32.3 +selenium==4.33.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +trio==0.30.0 +trio-websocket==0.12.2 +typing-extensions==4.13.2 +urllib3[socks]==2.4.0 +webdriver-manager==4.0.2 +websocket-client==1.8.0 +wsproto==1.2.0 diff --git a/.riot/requirements/308373d.txt b/.riot/requirements/308373d.txt new file mode 100644 index 00000000000..f86db7522ee --- /dev/null +++ b/.riot/requirements/308373d.txt @@ -0,0 +1,36 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/308373d.in +# +attrs==25.3.0 +certifi==2025.4.26 +charset-normalizer==3.4.2 +coverage[toml]==7.8.2 +h11==0.16.0 +hypothesis==6.135.1 +idna==3.10 +iniconfig==2.1.0 +mock==5.2.0 +opentracing==2.4.0 +outcome==1.3.0.post0 +packaging==25.0 +pluggy==1.6.0 +pygments==2.19.1 +pysocks==1.7.1 +pytest==8.4.0 +pytest-cov==6.1.1 +pytest-mock==3.14.1 +python-dotenv==1.1.0 +requests==2.32.3 +selenium==4.33.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +trio==0.30.0 +trio-websocket==0.12.2 +typing-extensions==4.13.2 +urllib3[socks]==2.4.0 +webdriver-manager==4.0.2 +websocket-client==1.8.0 +wsproto==1.2.0 diff --git a/.riot/requirements/ff0ace3.txt b/.riot/requirements/ff0ace3.txt new file mode 100644 index 00000000000..4315b3b31ce --- /dev/null +++ b/.riot/requirements/ff0ace3.txt @@ -0,0 +1,38 @@ +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/ff0ace3.in +# +attrs==25.3.0 +certifi==2025.4.26 +charset-normalizer==3.4.2 +coverage[toml]==7.8.2 +exceptiongroup==1.3.0 +h11==0.16.0 +hypothesis==6.135.1 +idna==3.10 +iniconfig==2.1.0 +mock==5.2.0 +opentracing==2.4.0 +outcome==1.3.0.post0 +packaging==25.0 +pluggy==1.6.0 +pygments==2.19.1 +pysocks==1.7.1 +pytest==8.4.0 +pytest-cov==6.1.1 +pytest-mock==3.14.1 +python-dotenv==1.1.0 +requests==2.32.3 +selenium==4.33.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +tomli==2.2.1 +trio==0.30.0 +trio-websocket==0.12.2 +typing-extensions==4.13.2 +urllib3[socks]==2.4.0 +webdriver-manager==4.0.2 +websocket-client==1.8.0 +wsproto==1.2.0 diff --git a/hatch.toml b/hatch.toml index 00dd13c6364..6a6ac3df877 100644 --- a/hatch.toml +++ b/hatch.toml @@ -1,280 +1,278 @@ [envs.lint] -detached = true -python = "3.10" dependencies = [ - "black==23.10.1", - "click==8.1.7", - "cython-lint==0.15.0", - "codespell==2.3.0", - "bandit==1.7.5", - "mypy==1.15.0", - "coverage==7.3.0", - "envier==0.6.1", - "types-docutils==0.19.1.1", - "types-protobuf==3.20.4.5", - "types-PyYAML==6.0.12.2", - "types-setuptools==65.6.0.0", - "ddapm-test-agent>=1.2.0", - "packaging==23.1", - "pygments==2.16.1", - "riot==0.20.1", - "ruff==0.11.11", - "clang-format==18.1.5", - "cmake-format==0.6.13", - "ruamel.yaml==0.18.6", + "black==23.10.1", + "click==8.1.7", + "cython-lint==0.15.0", + "codespell==2.3.0", + "bandit==1.7.5", + "mypy==1.15.0", + "coverage==7.3.0", + "envier==0.6.1", + "types-docutils==0.19.1.1", + "types-protobuf==3.20.4.5", + "types-PyYAML==6.0.12.2", + "types-setuptools==65.6.0.0", + "ddapm-test-agent>=1.2.0", + "packaging==23.1", + "pygments==2.16.1", + "riot==0.20.1", + "ruff==0.11.11", + "clang-format==18.1.5", + "cmake-format==0.6.13", + "ruamel.yaml==0.18.6", ] +detached = true +python = "3.10" [envs.lint.scripts] black_check = [ - "black --check {args:.}", -] -cmakeformat_check = [ - "bash scripts/cmake-format.sh" + "black --check {args:.}", ] cformat_check = [ - "bash scripts/cformat.sh" + "bash scripts/cformat.sh", ] -style = [ - "black_check", - "ruff check {args:.}", - "cython-lint {args:.}", - "cformat_check", - "cmakeformat_check", +cmakeformat_check = [ + "bash scripts/cmake-format.sh", ] fmt = [ - "black {args:.}", - "ruff check --fix {args:.}", - "style", + "black {args:.}", + "ruff check --fix {args:.}", + "style", +] +style = [ + "black_check", + "ruff check {args:.}", + "cython-lint {args:.}", + "cformat_check", + "cmakeformat_check", ] # checks should encapsulate all rules used in pre-check checks = [ - "style", - "typing", - "spelling", - "riot", - "security", - "test", - "suitespec-check", + "style", + "typing", + "spelling", + "riot", + "security", + "test", + "suitespec-check", ] -spelling = [ - "codespell -I docs/spelling_wordlist.txt --skip='ddwaf.h,*cassettes*,tests/tracer/fixtures/urls.txt,tests/appsec/iast/fixtures/*' {args:ddtrace/ tests/ releasenotes/ docs/}", +fmt-snapshots = [ + "ddapm-test-agent-fmt {args:tests/snapshots/}", ] -typing = [ - "mypy {args}", +riot = [ + "python -m doctest {args} riotfile.py", ] security = [ - "bandit -c pyproject.toml {args:-r ddtrace/}", + "bandit -c pyproject.toml {args:-r ddtrace/}", ] -fmt-snapshots = [ - "ddapm-test-agent-fmt {args:tests/snapshots/}", -] -riot = [ - "python -m doctest {args} riotfile.py" +spelling = [ + "codespell -I docs/spelling_wordlist.txt --skip='ddwaf.h,*cassettes*,tests/tracer/fixtures/urls.txt,tests/appsec/iast/fixtures/*' {args:ddtrace/ tests/ releasenotes/ docs/}", ] suitespec-check = [ - "python scripts/check_suitespec_coverage.py" + "python scripts/check_suitespec_coverage.py", +] +typing = [ + "mypy {args}", ] [envs.docs] -template = "docs" -dev-mode = false -python = "3.10" -features = ["opentracing"] -dependencies = [ # copied from library dependencies - "protobuf>=3", - "typing_extensions", - "xmltodict>=0.12", - "envier==0.6.1", - "opentelemetry-api>=1", - "opentracing>=2.0.0", - "bytecode", +dependencies = [ + # copied from library dependencies + "protobuf>=3", + "typing_extensions", + "xmltodict>=0.12", + "envier==0.6.1", + "opentelemetry-api>=1", + "opentracing>=2.0.0", + "bytecode", ] +dev-mode = false extra-dependencies = [ - "reno~=3.5.0", - "sphinx~=4.0", - "sphinxcontrib-applehelp<1.0.8", - "sphinxcontrib-devhelp<1.0.6", - "sphinxcontrib-htmlhelp<2.0.5", - "sphinxcontrib-devhelp<1.0.6", - "sphinxcontrib-serializinghtml<1.1.10", - "sphinxcontrib-qthelp<1.0.7", - "sphinxcontrib-spelling==7.7.0", - "PyEnchant==3.2.2", - "sphinx-copybutton==0.5.1", - # Later release of furo breaks formatting for code blocks - "furo<=2023.05.20", - "standard-imghdr", + "reno~=3.5.0", + "sphinx~=4.0", + "sphinxcontrib-applehelp<1.0.8", + "sphinxcontrib-devhelp<1.0.6", + "sphinxcontrib-htmlhelp<2.0.5", + "sphinxcontrib-devhelp<1.0.6", + "sphinxcontrib-serializinghtml<1.1.10", + "sphinxcontrib-qthelp<1.0.7", + "sphinxcontrib-spelling==7.7.0", + "PyEnchant==3.2.2", + "sphinx-copybutton==0.5.1", # Later release of furo breaks formatting for code blocks + "furo<=2023.05.20", + "standard-imghdr", ] +features = ["opentracing"] pre-install-commands = [ - "scripts/docs/install.sh", + "scripts/docs/install.sh", ] +python = "3.10" +template = "docs" [envs.docs.env-vars] DD_TRACE_ENABLED = "false" [envs.docs.scripts] build = [ - "scripts/docs/build.sh", + "scripts/docs/build.sh", ] [envs.scripts] detached = true -python = "3.10" extra-dependencies = [ - "lxml==5.3.0", - "packaging==23.1", - "ruamel.yaml==0.18.6", - "vcrpy==6.0.2", + "lxml==5.3.0", + "packaging==23.1", + "ruamel.yaml==0.18.6", + "vcrpy==6.0.2", ] +python = "3.10" [envs.scripts.scripts] -test = [ - "python -m doctest {args} scripts/get-target-milestone.py scripts/needs_testrun.py tests/suitespec.py", -] needs_testrun = [ "scripts/needs_testrun.py {args}", ] +test = [ + "python -m doctest {args} scripts/get-target-milestone.py scripts/needs_testrun.py tests/suitespec.py", +] [envs.integration_test] -template = "integration_test" extra-dependencies = [ - "mock==5.0.1", - "pytest==7.2.2", - "pytest-mock==3.10.0", - "coverage==7.2.2", - "pytest-cov==4.0.0", - "opentracing==2.4.0", - "hypothesis==6.45.0", + "mock==5.0.1", + "pytest==7.2.2", + "pytest-mock==3.10.0", + "coverage==7.2.2", + "pytest-cov==4.0.0", + "opentracing==2.4.0", + "hypothesis==6.45.0", ] +template = "integration_test" [[envs.integration_test.matrix]] python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] [envs.integration_test.env-vars] -_DD_CIVISIBILITY_USE_CI_CONTEXT_PROVIDER = "1" -DD_TESTING_RAISE = "1" -DD_REMOTE_CONFIGURATION_ENABLED = "false" +CARGO_BUILD_JOBS = "12" +CMAKE_BUILD_PARALLEL_LEVEL = "12" DD_CIVISIBILITY_AGENTLESS_ENABLED = "1" DD_CIVISIBILITY_CODE_COVERAGE_ENABLED = "1" DD_CIVISIBILITY_ITR_ENABLED = "1" -DD_PATCH_MODULES = "unittest:false" -CMAKE_BUILD_PARALLEL_LEVEL = "12" -CARGO_BUILD_JOBS = "12" DD_FAST_BUILD = "1" +DD_PATCH_MODULES = "unittest:false" +DD_REMOTE_CONFIGURATION_ENABLED = "false" +DD_TESTING_RAISE = "1" +_DD_CIVISIBILITY_USE_CI_CONTEXT_PROVIDER = "1" ## ASM Django [envs.appsec_threats_django] -template = "appsec_threats_django" dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "django{matrix:django}" + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "django{matrix:django}", ] +template = "appsec_threats_django" [envs.appsec_threats_django.scripts] test = [ - "uname -a", - "pip freeze", - "DD_IAST_ENABLED=false python -m pytest tests/appsec/contrib_appsec/test_django.py {args}", - "DD_IAST_ENABLED=true DD_IAST_REQUEST_SAMPLING=100 python -m pytest tests/appsec/contrib_appsec/test_django.py {args}" + "uname -a", + "pip freeze", + "DD_IAST_ENABLED=false python -m pytest tests/appsec/contrib_appsec/test_django.py {args}", + "DD_IAST_ENABLED=true DD_IAST_REQUEST_SAMPLING=100 python -m pytest tests/appsec/contrib_appsec/test_django.py {args}", ] # if you add or remove a version here, please also update the parallelism parameter # in .circleci/config.templ.yml [[envs.appsec_threats_django.matrix]] -python = ["3.8", "3.9"] django = ["~=2.2"] +python = ["3.8", "3.9"] [[envs.appsec_threats_django.matrix]] -python = ["3.8", "3.9", "3.10"] django = ["~=3.2"] +python = ["3.8", "3.9", "3.10"] [[envs.appsec_threats_django.matrix]] -python = ["3.8", "3.10"] django = ["==4.0.10"] +python = ["3.8", "3.10"] [[envs.appsec_threats_django.matrix]] -python = ["3.8", "3.11", "3.13"] django = ["~=4.2"] +python = ["3.8", "3.11", "3.13"] [[envs.appsec_threats_django.matrix]] -python = ["3.10", "3.13"] django = ["~=5.1"] - +python = ["3.10", "3.13"] ## ASM Flask [envs.appsec_threats_flask] -template = "appsec_threats_flask" dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "MarkupSafe{matrix:markupsafe:}", - "Werkzeug{matrix:werkzeug:}", - "flask{matrix:flask}" + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "MarkupSafe{matrix:markupsafe:}", + "Werkzeug{matrix:werkzeug:}", + "flask{matrix:flask}", ] +template = "appsec_threats_flask" [envs.appsec_threats_flask.scripts] test = [ - "uname -a", - "pip freeze", - "DD_IAST_ENABLED=false python -m pytest tests/appsec/contrib_appsec/test_flask.py {args}", - "DD_IAST_ENABLED=true DD_IAST_REQUEST_SAMPLING=100 python -m pytest tests/appsec/contrib_appsec/test_flask.py {args}" + "uname -a", + "pip freeze", + "DD_IAST_ENABLED=false python -m pytest tests/appsec/contrib_appsec/test_flask.py {args}", + "DD_IAST_ENABLED=true DD_IAST_REQUEST_SAMPLING=100 python -m pytest tests/appsec/contrib_appsec/test_flask.py {args}", ] # if you add or remove a version here, please also update the parallelism parameter # in .circleci/config.templ.yml [[envs.appsec_threats_flask.matrix]] -python = ["3.8", "3.9"] flask = ["~=1.1"] markupsafe = ["~=1.1"] +python = ["3.8", "3.9"] [[envs.appsec_threats_flask.matrix]] -python = ["3.8", "3.9"] flask = ["==2.1.3"] +python = ["3.8", "3.9"] werkzeug = ["<3.0"] [[envs.appsec_threats_flask.matrix]] -python = ["3.8", "3.10", "3.13"] flask = ["~=2.3"] +python = ["3.8", "3.10", "3.13"] [[envs.appsec_threats_flask.matrix]] -python = ["3.8", "3.11", "3.13"] flask = ["~=3.0"] +python = ["3.8", "3.11", "3.13"] ## ASM IAST module [envs.appsec_iast_default] -template = "appsec_iast_default" dependencies = [ - "pytest", - "pytest-cov", - "pytest-asyncio", - "hypothesis", - "requests", - "urllib3", - "pycryptodome", - "cryptography", - "astunparse", - "simplejson", - "grpcio", + "pytest", + "pytest-cov", + "pytest-asyncio", + "hypothesis", + "requests", + "urllib3", + "pycryptodome", + "cryptography", + "astunparse", + "simplejson", + "grpcio", ] +template = "appsec_iast_default" [envs.appsec_iast_default.env-vars] -_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." -DD_IAST_REQUEST_SAMPLING = "100" DD_IAST_DEDUPLICATION_ENABLED = "false" - +DD_IAST_REQUEST_SAMPLING = "100" +_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." [envs.appsec_iast_default.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest --no-ddtrace {args:tests/appsec/iast/}", + "uname -a", + "pip freeze", + "python -m pytest --no-ddtrace {args:tests/appsec/iast/}", ] [[envs.appsec_iast_default.matrix]] @@ -283,24 +281,24 @@ python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] ## ASM Native IAST module [envs.appsec_iast_native] -template = "appsec_iast_native" dependencies = [ - "cmake", - "pybind11", - "clang" + "cmake", + "pybind11", + "clang", ] +template = "appsec_iast_native" [envs.appsec_iast_native.env-vars] -_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." +DD_IAST_DEDUPLICATION_ENABLED = "false" DD_IAST_REQUEST_SAMPLING = "100" DD_IAST_VULNERABILITIES_PER_REQUEST = "100000" -DD_IAST_DEDUPLICATION_ENABLED = "false" +_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." [envs.appsec_iast_native.scripts] test = [ - "cmake -DCMAKE_BUILD_TYPE=Debug -DPYTHON_EXECUTABLE=python -S ddtrace/appsec/_iast/_taint_tracking -B ddtrace/appsec/_iast/_taint_tracking", - "make -f ddtrace/appsec/_iast/_taint_tracking/tests/Makefile native_tests", - "ddtrace/appsec/_iast/_taint_tracking/tests/native_tests" + "cmake -DCMAKE_BUILD_TYPE=Debug -DPYTHON_EXECUTABLE=python -S ddtrace/appsec/_iast/_taint_tracking -B ddtrace/appsec/_iast/_taint_tracking", + "make -f ddtrace/appsec/_iast/_taint_tracking/tests/Makefile native_tests", + "ddtrace/appsec/_iast/_taint_tracking/tests/native_tests", ] [[envs.appsec_iast_native.matrix]] @@ -309,33 +307,33 @@ python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] ## ASM iast_tdd_propagation [envs.iast_tdd_propagation] -template = "iast_tdd_propagation" dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "flask", - "pycryptodome", - "sqlalchemy~=2.0.23", - "pony", - "aiosqlite", - "tortoise-orm", - "peewee", - "aiosqlite", + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "flask", + "pycryptodome", + "sqlalchemy~=2.0.23", + "pony", + "aiosqlite", + "tortoise-orm", + "peewee", + "aiosqlite", ] +template = "iast_tdd_propagation" [envs.iast_tdd_propagation.env-vars] -_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." +DD_IAST_DEDUPLICATION_ENABLED = "false" DD_IAST_REQUEST_SAMPLING = "100" DD_IAST_VULNERABILITIES_PER_REQUEST = "100000" -DD_IAST_DEDUPLICATION_ENABLED = "false" +_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." [envs.iast_tdd_propagation.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest tests/appsec/iast_tdd_propagation", + "uname -a", + "pip freeze", + "python -m pytest tests/appsec/iast_tdd_propagation", ] [[envs.iast_tdd_propagation.matrix]] @@ -344,286 +342,281 @@ python = ["3.9", "3.10", "3.11", "3.12", "3.13"] ## IAST packages integrations [envs.appsec_integrations_packages] -template = "appsec_integrations_packages" dependencies = [ - "pytest", - "pytest-cov", - "pytest-xdist", - "hypothesis", - "requests", - "SQLAlchemy", - "psycopg2-binary~=2.9.9", - "pymysql", - "mysqlclient==2.1.1", - "mysql-connector-python", - "MarkupSafe~=2.1.1", - "Werkzeug~=3.0.6", + "pytest", + "pytest-cov", + "pytest-xdist", + "hypothesis", + "requests", + "SQLAlchemy", + "psycopg2-binary~=2.9.9", + "pymysql", + "mysqlclient==2.1.1", + "mysql-connector-python", + "MarkupSafe~=2.1.1", + "Werkzeug~=3.0.6", ] +template = "appsec_integrations_packages" [envs.appsec_integrations_packages.env-vars] -_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." +DD_IAST_DEDUPLICATION_ENABLED = "false" DD_IAST_REQUEST_SAMPLING = "100" DD_IAST_VULNERABILITIES_PER_REQUEST = "100000" -DD_IAST_DEDUPLICATION_ENABLED = "false" - +_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." [envs.appsec_integrations_packages.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest -vvv -s -n 8 --no-cov --no-ddtrace {args:tests/appsec/integrations/packages_tests/}", + "uname -a", + "pip freeze", + "python -m pytest -vvv -s -n 8 --no-cov --no-ddtrace {args:tests/appsec/integrations/packages_tests/}", ] [[envs.appsec_integrations_packages.matrix]] python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] - ## ASM appsec_integrations_django [envs.appsec_integrations_django] -template = "appsec_integrations_django" dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "pylibmc", - "bcrypt==4.2.1", - "pytest-django[testing]==3.10.0", - "Django{matrix:django}", + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "pylibmc", + "bcrypt==4.2.1", + "pytest-django[testing]==3.10.0", + "Django{matrix:django}", ] +template = "appsec_integrations_django" [envs.appsec_integrations_django.env-vars] +DD_IAST_DEDUPLICATION_ENABLED = "false" +DD_IAST_REQUEST_SAMPLING = "100" DD_TRACE_AGENT_URL = "http://testagent:9126" _DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." -DD_IAST_REQUEST_SAMPLING = "100" -DD_IAST_DEDUPLICATION_ENABLED = "false" - [envs.appsec_integrations_django.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest -vvv {args:tests/appsec/integrations/django_tests/}", + "uname -a", + "pip freeze", + "python -m pytest -vvv {args:tests/appsec/integrations/django_tests/}", ] [[envs.appsec_integrations_django.matrix]] -python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] django = ["~=4.0"] +python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] [[envs.appsec_integrations_django.matrix]] -python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] django = ["~=3.2"] +python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] ## ASM appsec_integrations_flask [envs.appsec_integrations_flask] -template = "appsec_integrations_flask" dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "gunicorn", - "psycopg2-binary~=2.9.9", - "MarkupSafe{matrix:markupsafe:}", - "itsdangerous{matrix:itsdangerous:}", - "Werkzeug{matrix:werkzeug:}", - "flask{matrix:flask}", + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "gunicorn", + "psycopg2-binary~=2.9.9", + "MarkupSafe{matrix:markupsafe:}", + "itsdangerous{matrix:itsdangerous:}", + "Werkzeug{matrix:werkzeug:}", + "flask{matrix:flask}", ] +template = "appsec_integrations_flask" [envs.appsec_integrations_flask.env-vars] -DD_TRACE_AGENT_URL = "http://testagent:9126" -_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." +DD_IAST_DEDUPLICATION_ENABLED = "false" DD_IAST_REQUEST_SAMPLING = "100" DD_IAST_VULNERABILITIES_PER_REQUEST = "100000" -DD_IAST_DEDUPLICATION_ENABLED = "false" +DD_TRACE_AGENT_URL = "http://testagent:9126" +_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." [envs.appsec_integrations_flask.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest -vvv {args:tests/appsec/integrations/flask_tests/}", + "uname -a", + "pip freeze", + "python -m pytest -vvv {args:tests/appsec/integrations/flask_tests/}", ] [[envs.appsec_integrations_flask.matrix]] -python = ["3.8", "3.9"] flask = ["~=1.1"] +python = ["3.8", "3.9"] # https://github.com/pallets/markupsafe/issues/282 # DEV: Breaking change made in 2.1.0 release -markupsafe = ["~=1.1"] itsdangerous = ["==2.0.1"] +markupsafe = ["~=1.1"] # DEV: Flask 1.0.x is missing a maximum version for werkzeug dependency werkzeug = ["==2.0.3"] [[envs.appsec_integrations_flask.matrix]] -python = ["3.8", "3.9", "3.10", "3.11"] flask = ["~=2.2"] +python = ["3.8", "3.9", "3.10", "3.11"] [[envs.appsec_integrations_flask.matrix]] -python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] flask = ["~=2.2"] +python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] [[envs.appsec_integrations_flask.matrix]] -python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] flask = ["~=3.0"] +python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] [[envs.appsec_integrations_flask.matrix]] # werkzeug 3.1 drops support for py3.8 -python = ["3.11", "3.12", "3.13"] flask = ["~=3.1"] +python = ["3.11", "3.12", "3.13"] werkzeug = ["~=3.1"] ## ASM appsec_integrations_fastapi [envs.appsec_integrations_fastapi] -template = "appsec_integrations_fastapi" dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "python-multipart", - "jinja2", - "httpx<0.28.0", - "anyio{matrix:anyio:}", - "fastapi{matrix:fastapi}" + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "python-multipart", + "jinja2", + "httpx<0.28.0", + "anyio{matrix:anyio:}", + "fastapi{matrix:fastapi}", ] +template = "appsec_integrations_fastapi" [envs.appsec_integrations_fastapi.env-vars] -DD_TRACE_AGENT_URL = "http://testagent:9126" -_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." +DD_IAST_DEDUPLICATION_ENABLED = "false" DD_IAST_REQUEST_SAMPLING = "100" DD_IAST_VULNERABILITIES_PER_REQUEST = "100000" -DD_IAST_DEDUPLICATION_ENABLED = "false" +DD_TRACE_AGENT_URL = "http://testagent:9126" +_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." [envs.appsec_integrations_fastapi.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest -vvv {args:tests/appsec/integrations/fastapi_tests/}", + "uname -a", + "pip freeze", + "python -m pytest -vvv {args:tests/appsec/integrations/fastapi_tests/}", ] - # if you add or remove a version here, please also update the parallelism parameter # in .circleci/config.templ.yml [[envs.appsec_integrations_fastapi.matrix]] -python = ["3.8", "3.10", "3.13"] -fastapi = ["==0.86.0"] anyio = ["==3.7.1"] +fastapi = ["==0.86.0"] +python = ["3.8", "3.10", "3.13"] [[envs.appsec_integrations_fastapi.matrix]] -python = ["3.8", "3.10", "3.13"] fastapi = ["==0.94.1"] +python = ["3.8", "3.10", "3.13"] [[envs.appsec_integrations_fastapi.matrix]] -python = ["3.8", "3.10", "3.13"] fastapi = ["~=0.114.2"] +python = ["3.8", "3.10", "3.13"] ## ASM appsec_integrations_langchain [envs.appsec_integrations_langchain] -template = "appsec_integrations_langchain" dependencies = [ - "pytest", - "pytest-asyncio", - "pytest-cov", - "hypothesis", - "langchain{matrix:langchain:}", - "langchain-experimental{matrix:langchain-experimental:}", + "pytest", + "pytest-asyncio", + "pytest-cov", + "hypothesis", + "langchain{matrix:langchain:}", + "langchain-experimental{matrix:langchain-experimental:}", ] +template = "appsec_integrations_langchain" [envs.appsec_integrations_langchain.env-vars] +DD_IAST_DEDUPLICATION_ENABLED = "false" +DD_IAST_REQUEST_SAMPLING = "100" DD_TRACE_AGENT_URL = "http://testagent:9126" _DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." -DD_IAST_REQUEST_SAMPLING = "100" -DD_IAST_DEDUPLICATION_ENABLED = "false" [envs.appsec_integrations_langchain.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest -vvv {args:tests/appsec/integrations/langchain_tests/}", + "uname -a", + "pip freeze", + "python -m pytest -vvv {args:tests/appsec/integrations/langchain_tests/}", ] [[envs.appsec_integrations_langchain.matrix]] -python = ["3.9", "3.10", "3.11", "3.12", "3.13"] langchain = ["~=0.1"] langchain-experimental = ["~=0.1"] +python = ["3.9", "3.10", "3.11", "3.12", "3.13"] [[envs.appsec_integrations_langchain.matrix]] -python = ["3.9", "3.10", "3.11", "3.12", "3.13"] langchain = ["~=0.2"] langchain-experimental = ["~=0.2"] +python = ["3.9", "3.10", "3.11", "3.12", "3.13"] [[envs.appsec_integrations_langchain.matrix]] -python = ["3.9", "3.10", "3.11", "3.12", "3.13"] langchain = ["~=0.3"] langchain-experimental = ["~=0.3"] +python = ["3.9", "3.10", "3.11", "3.12", "3.13"] ## ASM FastAPI [envs.appsec_threats_fastapi] -template = "appsec_threats_fastapi" dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "httpx<0.28.0", - "anyio{matrix:anyio:}", - "fastapi{matrix:fastapi}" + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "httpx<0.28.0", + "anyio{matrix:anyio:}", + "fastapi{matrix:fastapi}", ] +template = "appsec_threats_fastapi" [envs.appsec_threats_fastapi.scripts] test = [ - "uname -a", - "pip freeze", - "DD_IAST_ENABLED=false python -m pytest tests/appsec/contrib_appsec/test_fastapi.py {args}", - "DD_IAST_ENABLED=true DD_IAST_REQUEST_SAMPLING=100 python -m pytest tests/appsec/contrib_appsec/test_fastapi.py {args}" + "uname -a", + "pip freeze", + "DD_IAST_ENABLED=false python -m pytest tests/appsec/contrib_appsec/test_fastapi.py {args}", + "DD_IAST_ENABLED=true DD_IAST_REQUEST_SAMPLING=100 python -m pytest tests/appsec/contrib_appsec/test_fastapi.py {args}", ] # if you add or remove a version here, please also update the parallelism parameter # in .circleci/config.templ.yml [[envs.appsec_threats_fastapi.matrix]] -python = ["3.8", "3.10", "3.13"] -fastapi = ["==0.86.0"] anyio = ["==3.7.1"] +fastapi = ["==0.86.0"] +python = ["3.8", "3.10", "3.13"] [[envs.appsec_threats_fastapi.matrix]] -python = ["3.8", "3.10", "3.13"] fastapi = ["==0.94.1"] +python = ["3.8", "3.10", "3.13"] [[envs.appsec_threats_fastapi.matrix]] -python = ["3.8", "3.10", "3.13"] fastapi = ["~=0.114.2"] +python = ["3.8", "3.10", "3.13"] ## ASM Appsec Aggregated Leak Testing [envs.iast_aggregated_leak_testing] -template = "iast_aggregated_leak_testing" dependencies = [ - "pytest", - "pytest-cov", - "hypothesis", - "requests", - "pytest-asyncio", - "anyio", - "pydantic", - "pydantic-settings", + "pytest", + "pytest-cov", + "hypothesis", + "requests", + "pytest-asyncio", + "anyio", + "pydantic", + "pydantic-settings", ] +template = "iast_aggregated_leak_testing" [envs.iast_aggregated_leak_testing.env-vars] +DD_FAST_BUILD = "0" DD_IAST_ENABLED = "true" _DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec.,scripts.iast." -DD_FAST_BUILD = "0" [envs.iast_aggregated_leak_testing.scripts] test = [ - "uname -a", - "pip freeze", - # We use --no-cov due to a pytest-cov problem with eval https://github.com/pytest-dev/pytest-cov/issues/676 - "python -m pytest --no-cov tests/appsec/iast_aggregated_memcheck/test_aggregated_memleaks.py", + "uname -a", + "pip freeze", # We use --no-cov due to a pytest-cov problem with eval https://github.com/pytest-dev/pytest-cov/issues/676 + "python -m pytest --no-cov tests/appsec/iast_aggregated_memcheck/test_aggregated_memleaks.py", ] [[envs.iast_aggregated_leak_testing.matrix]] @@ -633,13 +626,13 @@ python = ["3.10", "3.11", "3.12"] [envs.profiling_pytorch] dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "torch>=1.8.1", - "torchvision", - "lz4", + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "torch>=1.8.1", + "torchvision", + "lz4", ] [envs.profiling_pytorch.env-vars] @@ -648,9 +641,9 @@ DD_PROFILING_PYTORCH_ENABLED = "true" [envs.profiling_pytorch.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest tests/profiling_v2/test_pytorch.py -vvv --capture=tee-sys", + "uname -a", + "pip freeze", + "python -m pytest tests/profiling_v2/test_pytorch.py -vvv --capture=tee-sys", ] [[envs.profiling_pytorch.matrix]] @@ -660,165 +653,136 @@ python = ["3.12"] [envs.multiple_os_tests] dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "flask", - "asgiref", - "botocore", - "dnspython", + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "flask", + "asgiref", + "botocore", + "dnspython", ] [envs.multiple_os_tests.env-vars] +CARGO_BUILD_JOBS = "6" +CMAKE_BUILD_PARALLEL_LEVEL = "6" DD_IAST_ENABLED = "false" DD_REMOTE_CONFIGURATION_ENABLED = "false" -CMAKE_BUILD_PARALLEL_LEVEL="6" -CARGO_BUILD_JOBS = "6" [envs.multiple_os_tests.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest tests/internal/service_name/test_extra_services_names.py -v -s", - "python -m pytest tests/appsec/architectures/test_appsec_loading_modules.py -v -s", + "uname -a", + "pip freeze", + "python -m pytest tests/internal/service_name/test_extra_services_names.py -v -s", + "python -m pytest tests/appsec/architectures/test_appsec_loading_modules.py -v -s", ] [[envs.multiple_os_tests.matrix]] python = ["3.13", "3.12", "3.10", "3.8"] [envs.errortracking] -template = "errortracking" dependencies = [ - "flask", - "hypothesis", - "pytest", - "pytest-cov", + "flask", + "hypothesis", + "pytest", + "pytest-cov", ] +template = "errortracking" [envs.errortracking.scripts] test = [ - "pip freeze", - "pytest tests/internal/errortracking", + "pip freeze", + "pytest tests/internal/errortracking", ] [[envs.errortracking.matrix]] python = ["3.10", "3.11", "3.12", "3.13"] [envs.pytest_plugin_v2] -template = "pytest_plugin_v2" dependencies = [ - "httpx", - "msgpack", - "requests", - "hypothesis", - "pytest{matrix:pytest}", - "pytest-cov", - "pytest-mock" + "httpx", + "msgpack", + "requests", + "hypothesis", + "pytest{matrix:pytest}", + "pytest-cov", + "pytest-mock", ] +template = "pytest_plugin_v2" [envs.pytest_plugin_v2.env-vars] DD_AGENT_PORT = "9126" [envs.pytest_plugin_v2.scripts] test = [ - "pip freeze", - "echo $PYTEST_ADDOPTS", - "pytest -c /dev/null --no-ddtrace --no-cov tests/contrib/pytest {args:}", + "pip freeze", + "echo $PYTEST_ADDOPTS", + "pytest -c /dev/null --no-ddtrace --no-cov tests/contrib/pytest {args:}", ] [[envs.pytest_plugin_v2.matrix]] -python = ["3.9", "3.10", "3.12"] pytest = ["~=6.0", "~=7.0", "~=8.0"] +python = ["3.9", "3.10", "3.12"] [envs.snapshot_viewer] -dev-mode = false -detached = true -template = "snapshot_viewer" dependencies = [ - "PrettyPrintTree" + "PrettyPrintTree", ] +detached = true +dev-mode = false +template = "snapshot_viewer" [envs.snapshot_viewer.scripts] view = [ - "python scripts/ci_visibility/view_snapshot.py {args:}", + "python scripts/ci_visibility/view_snapshot.py {args:}", ] [envs.freezegun] -template = "freezegun" dependencies = [ - "freezegun{matrix:freezegun}", - "pytest", - "pytest-cov", - "hypothesis", + "freezegun{matrix:freezegun}", + "pytest", + "pytest-cov", + "hypothesis", ] +template = "freezegun" [envs.freezegun.scripts] test = [ - "pytest tests/contrib/freezegun {args:}", + "pytest tests/contrib/freezegun {args:}", ] [[envs.freezegun.matrix]] -python = ["3.10", "3.12"] freezegun = ["~=1.3.0", "~=1.5.0"] - -[envs.selenium] -template = "selenium" -dependencies = [ - "pytest", - "pytest-cov", - "hypothesis", - "selenium~=4.0", - "webdriver-manager" -] - -[evs.selenium.env-vars] -DD_AGENT_TRACER_URL = "9126" - -[envs.selenium.scripts] -test = [ - "pip freeze", - "pytest -c /dev/null --no-ddtrace --no-cov tests/contrib/selenium {args:}", -] - -[[envs.selenium.matrix]] python = ["3.10", "3.12"] -tested_pytest_plugin_version = ["v1", "v2"] - -[envs.selenium.overrides] -matrix.tested_pytest_plugin_version.env-vars = [ - { key = "_TESTED_PYTEST_LEGACY_PLUGIN", value = "true", if = ["v1"]}, - { key = "_TESTED_PYTEST_LEGACY_PLUGIN", value = "false", if = ["v2"]} -] [envs.appsec_integrations_pygoat] -template = "appsec_integrations_pygoat" dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "pyyaml==6.0.1", + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "pyyaml==6.0.1", ] +template = "appsec_integrations_pygoat" [envs.appsec_integrations_pygoat.env-vars] DD_CIVISIBILITY_ITR_ENABLED = "0" -DD_IAST_REQUEST_SAMPLING = "100" +DD_FAST_BUILD = "1" +DD_IAST_DEDUPLICATION_ENABLED = "false" DD_IAST_ENABLED = "true" -_DD_IAST_DEBUG = "false" +DD_IAST_REQUEST_SAMPLING = "100" DD_IAST_VULNERABILITIES_PER_REQUEST = "100" DD_REMOTE_CONFIGURATION_ENABLED = "true" -DD_IAST_DEDUPLICATION_ENABLED = "false" DD_TRACE_AGENT_URL = "http://0.0.0.0:9126" -DD_FAST_BUILD = "1" PYTHONDONTWRITEBYTECODE = "1" PYTHONUNBUFFERED = "1" +_DD_IAST_DEBUG = "false" [envs.appsec_integrations_pygoat.scripts] test = [ - "uname -a", - "pip freeze", - "bash tests/appsec/integrations/pygoat_tests/run_pygoat.sh {args:tests/appsec/integrations/pygoat_tests/}", + "uname -a", + "pip freeze", + "bash tests/appsec/integrations/pygoat_tests/run_pygoat.sh {args:tests/appsec/integrations/pygoat_tests/}", ] [[envs.appsec_integrations_pygoat.matrix]] diff --git a/lib-injection/sources/min_compatible_versions.csv b/lib-injection/sources/min_compatible_versions.csv index b44c6cf6630..a16e017a44e 100644 --- a/lib-injection/sources/min_compatible_versions.csv +++ b/lib-injection/sources/min_compatible_versions.csv @@ -169,6 +169,7 @@ rq,~=1.8.0 ruamel.yaml,0 sanic,~=20.12 sanic-testing,~=0.8.3 +selenium,~=4.0 slotscheck,==0.17.0 snowflake-connector-python,~=2.3.0 spyne,0 @@ -186,6 +187,7 @@ vcrpy,==4.2.1 vertexai,0 vertica-python,>=0.6.0 virtualenv-clone,0 +webdriver-manager,0 websockets,<11.0 webtest,0 werkzeug,<1.0 diff --git a/min_compatible_versions.csv b/min_compatible_versions.csv index b44c6cf6630..a16e017a44e 100644 --- a/min_compatible_versions.csv +++ b/min_compatible_versions.csv @@ -169,6 +169,7 @@ rq,~=1.8.0 ruamel.yaml,0 sanic,~=20.12 sanic-testing,~=0.8.3 +selenium,~=4.0 slotscheck,==0.17.0 snowflake-connector-python,~=2.3.0 spyne,0 @@ -186,6 +187,7 @@ vcrpy,==4.2.1 vertexai,0 vertica-python,>=0.6.0 virtualenv-clone,0 +webdriver-manager,0 websockets,<11.0 webtest,0 werkzeug,<1.0 diff --git a/riotfile.py b/riotfile.py index 5671b643dfb..bb4a5324b8c 100644 --- a/riotfile.py +++ b/riotfile.py @@ -3030,5 +3030,36 @@ def select_pys(min_version: str = MIN_PYTHON_VERSION, max_version: str = MAX_PYT ), ], ), + Venv( + name="selenium", + command="pytest -c /dev/null --no-ddtrace --no-cov tests/contrib/selenium {args:}", + pkgs={ + "pytest": latest, + "pytest-cov": latest, + "hypothesis": latest, + "selenium": "~=4.0", + "webdriver-manager": latest, + }, + env={ + "DD_AGENT_TRACER_URL": "9126", + }, + venvs=[ + Venv( + pys=select_pys(min_version="3.10", max_version="3.12"), + venvs=[ + Venv( + env={ + "_TESTED_PYTEST_LEGACY_PLUGIN": "true", + }, + ), + Venv( + env={ + "_TESTED_PYTEST_LEGACY_PLUGIN": "false", + }, + ), + ], + ), + ], + ), ], ) diff --git a/tests/ci_visibility/suitespec.yml b/tests/ci_visibility/suitespec.yml index e2850d69dfb..7f1c3dd92db 100644 --- a/tests/ci_visibility/suitespec.yml +++ b/tests/ci_visibility/suitespec.yml @@ -97,7 +97,7 @@ suites: - '@selenium' - tests/contrib/selenium/* - tests/snapshots/test_selenium* - runner: hatch + runner: riot snapshot: true unittest: parallelism: 2 From 681d957c9b3c60f731f24b9bccee83257f373607 Mon Sep 17 00:00:00 2001 From: Juanjo Alvarez Date: Fri, 6 Jun 2025 14:40:02 +0200 Subject: [PATCH 2/6] Move cmdargs Signed-off-by: Juanjo Alvarez --- riotfile.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/riotfile.py b/riotfile.py index bb4a5324b8c..2aba0b962a5 100644 --- a/riotfile.py +++ b/riotfile.py @@ -3032,11 +3032,8 @@ def select_pys(min_version: str = MIN_PYTHON_VERSION, max_version: str = MAX_PYT ), Venv( name="selenium", - command="pytest -c /dev/null --no-ddtrace --no-cov tests/contrib/selenium {args:}", + command="pytest --no-cov {cmdargs} -c /dev/null --no-ddtrace tests/contrib/selenium", pkgs={ - "pytest": latest, - "pytest-cov": latest, - "hypothesis": latest, "selenium": "~=4.0", "webdriver-manager": latest, }, @@ -3045,7 +3042,7 @@ def select_pys(min_version: str = MIN_PYTHON_VERSION, max_version: str = MAX_PYT }, venvs=[ Venv( - pys=select_pys(min_version="3.10", max_version="3.12"), + pys=["3.10", "3.12"], venvs=[ Venv( env={ From aa0fcaebef74ed3162ce3ebad21c20bd5afa77ff Mon Sep 17 00:00:00 2001 From: Juanjo Alvarez Date: Fri, 6 Jun 2025 15:05:00 +0200 Subject: [PATCH 3/6] update riotfiles Signed-off-by: Juanjo Alvarez --- .riot/requirements/184226c.txt | 36 ------------------- .../requirements/{308373d.txt => 19a8285.txt} | 4 +-- .../requirements/{ff0ace3.txt => 1f438b0.txt} | 4 +-- 3 files changed, 4 insertions(+), 40 deletions(-) delete mode 100644 .riot/requirements/184226c.txt rename .riot/requirements/{308373d.txt => 19a8285.txt} (88%) rename .riot/requirements/{ff0ace3.txt => 1f438b0.txt} (89%) diff --git a/.riot/requirements/184226c.txt b/.riot/requirements/184226c.txt deleted file mode 100644 index 5835bdad8ca..00000000000 --- a/.riot/requirements/184226c.txt +++ /dev/null @@ -1,36 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/184226c.in -# -attrs==25.3.0 -certifi==2025.4.26 -charset-normalizer==3.4.2 -coverage[toml]==7.8.2 -h11==0.16.0 -hypothesis==6.135.1 -idna==3.10 -iniconfig==2.1.0 -mock==5.2.0 -opentracing==2.4.0 -outcome==1.3.0.post0 -packaging==25.0 -pluggy==1.6.0 -pygments==2.19.1 -pysocks==1.7.1 -pytest==8.4.0 -pytest-cov==6.1.1 -pytest-mock==3.14.1 -python-dotenv==1.1.0 -requests==2.32.3 -selenium==4.33.0 -sniffio==1.3.1 -sortedcontainers==2.4.0 -trio==0.30.0 -trio-websocket==0.12.2 -typing-extensions==4.13.2 -urllib3[socks]==2.4.0 -webdriver-manager==4.0.2 -websocket-client==1.8.0 -wsproto==1.2.0 diff --git a/.riot/requirements/308373d.txt b/.riot/requirements/19a8285.txt similarity index 88% rename from .riot/requirements/308373d.txt rename to .riot/requirements/19a8285.txt index f86db7522ee..2293b0d7da2 100644 --- a/.riot/requirements/308373d.txt +++ b/.riot/requirements/19a8285.txt @@ -2,14 +2,14 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile --no-annotate .riot/requirements/308373d.in +# pip-compile --no-annotate .riot/requirements/19a8285.in # attrs==25.3.0 certifi==2025.4.26 charset-normalizer==3.4.2 coverage[toml]==7.8.2 h11==0.16.0 -hypothesis==6.135.1 +hypothesis==6.45.0 idna==3.10 iniconfig==2.1.0 mock==5.2.0 diff --git a/.riot/requirements/ff0ace3.txt b/.riot/requirements/1f438b0.txt similarity index 89% rename from .riot/requirements/ff0ace3.txt rename to .riot/requirements/1f438b0.txt index 4315b3b31ce..cd4a6e87c47 100644 --- a/.riot/requirements/ff0ace3.txt +++ b/.riot/requirements/1f438b0.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/ff0ace3.in +# pip-compile --no-annotate .riot/requirements/1f438b0.in # attrs==25.3.0 certifi==2025.4.26 @@ -10,7 +10,7 @@ charset-normalizer==3.4.2 coverage[toml]==7.8.2 exceptiongroup==1.3.0 h11==0.16.0 -hypothesis==6.135.1 +hypothesis==6.45.0 idna==3.10 iniconfig==2.1.0 mock==5.2.0 From 8b9677e6c393100a8b7733b305a155a2fdf087d2 Mon Sep 17 00:00:00 2001 From: Juanjo Alvarez Date: Fri, 6 Jun 2025 17:24:21 +0200 Subject: [PATCH 4/6] name the venvs with env vars so the hashes are regenerated Signed-off-by: Juanjo Alvarez --- .../requirements/{19a8285.txt => 1a955bc.txt} | 2 +- .../requirements/{1f438b0.txt => 1b9a6d0.txt} | 2 +- .riot/requirements/1e89074.txt | 36 ++++++++++++++++++ .riot/requirements/f1cb8ae.txt | 38 +++++++++++++++++++ riotfile.py | 7 +++- 5 files changed, 81 insertions(+), 4 deletions(-) rename .riot/requirements/{19a8285.txt => 1a955bc.txt} (91%) rename .riot/requirements/{1f438b0.txt => 1b9a6d0.txt} (91%) create mode 100644 .riot/requirements/1e89074.txt create mode 100644 .riot/requirements/f1cb8ae.txt diff --git a/.riot/requirements/19a8285.txt b/.riot/requirements/1a955bc.txt similarity index 91% rename from .riot/requirements/19a8285.txt rename to .riot/requirements/1a955bc.txt index 2293b0d7da2..1471008b117 100644 --- a/.riot/requirements/19a8285.txt +++ b/.riot/requirements/1a955bc.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile --no-annotate .riot/requirements/19a8285.in +# pip-compile --no-annotate .riot/requirements/1a955bc.in # attrs==25.3.0 certifi==2025.4.26 diff --git a/.riot/requirements/1f438b0.txt b/.riot/requirements/1b9a6d0.txt similarity index 91% rename from .riot/requirements/1f438b0.txt rename to .riot/requirements/1b9a6d0.txt index cd4a6e87c47..eb4e2a2911d 100644 --- a/.riot/requirements/1f438b0.txt +++ b/.riot/requirements/1b9a6d0.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1f438b0.in +# pip-compile --no-annotate .riot/requirements/1b9a6d0.in # attrs==25.3.0 certifi==2025.4.26 diff --git a/.riot/requirements/1e89074.txt b/.riot/requirements/1e89074.txt new file mode 100644 index 00000000000..2ec36742e0c --- /dev/null +++ b/.riot/requirements/1e89074.txt @@ -0,0 +1,36 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1e89074.in +# +attrs==25.3.0 +certifi==2025.4.26 +charset-normalizer==3.4.2 +coverage[toml]==7.8.2 +h11==0.16.0 +hypothesis==6.45.0 +idna==3.10 +iniconfig==2.1.0 +mock==5.2.0 +opentracing==2.4.0 +outcome==1.3.0.post0 +packaging==25.0 +pluggy==1.6.0 +pygments==2.19.1 +pysocks==1.7.1 +pytest==8.4.0 +pytest-cov==6.1.1 +pytest-mock==3.14.1 +python-dotenv==1.1.0 +requests==2.32.3 +selenium==4.33.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +trio==0.30.0 +trio-websocket==0.12.2 +typing-extensions==4.13.2 +urllib3[socks]==2.4.0 +webdriver-manager==4.0.2 +websocket-client==1.8.0 +wsproto==1.2.0 diff --git a/.riot/requirements/f1cb8ae.txt b/.riot/requirements/f1cb8ae.txt new file mode 100644 index 00000000000..aa0a4e795a4 --- /dev/null +++ b/.riot/requirements/f1cb8ae.txt @@ -0,0 +1,38 @@ +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/f1cb8ae.in +# +attrs==25.3.0 +certifi==2025.4.26 +charset-normalizer==3.4.2 +coverage[toml]==7.8.2 +exceptiongroup==1.3.0 +h11==0.16.0 +hypothesis==6.45.0 +idna==3.10 +iniconfig==2.1.0 +mock==5.2.0 +opentracing==2.4.0 +outcome==1.3.0.post0 +packaging==25.0 +pluggy==1.6.0 +pygments==2.19.1 +pysocks==1.7.1 +pytest==8.4.0 +pytest-cov==6.1.1 +pytest-mock==3.14.1 +python-dotenv==1.1.0 +requests==2.32.3 +selenium==4.33.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +tomli==2.2.1 +trio==0.30.0 +trio-websocket==0.12.2 +typing-extensions==4.13.2 +urllib3[socks]==2.4.0 +webdriver-manager==4.0.2 +websocket-client==1.8.0 +wsproto==1.2.0 diff --git a/riotfile.py b/riotfile.py index 2aba0b962a5..b9fccb63e52 100644 --- a/riotfile.py +++ b/riotfile.py @@ -3032,24 +3032,27 @@ def select_pys(min_version: str = MIN_PYTHON_VERSION, max_version: str = MAX_PYT ), Venv( name="selenium", - command="pytest --no-cov {cmdargs} -c /dev/null --no-ddtrace tests/contrib/selenium", + pys=["3.10", "3.12"], pkgs={ "selenium": "~=4.0", "webdriver-manager": latest, }, + command="pytest --no-cov {cmdargs} -c /dev/null --no-ddtrace tests/contrib/selenium", env={ "DD_AGENT_TRACER_URL": "9126", }, venvs=[ Venv( - pys=["3.10", "3.12"], venvs=[ Venv( + name="pytest-legacy-plugin-true", env={ "_TESTED_PYTEST_LEGACY_PLUGIN": "true", }, ), Venv( + name="pytest-legacy-plugin-false", + pys=["3.10", "3.12"], env={ "_TESTED_PYTEST_LEGACY_PLUGIN": "false", }, From 1c3e2c98de3ecda805b4dd4b3029f9cc09d03691 Mon Sep 17 00:00:00 2001 From: Juanjo Alvarez Date: Mon, 9 Jun 2025 12:44:31 +0200 Subject: [PATCH 5/6] Only selenium changes Signed-off-by: Juanjo Alvarez --- hatch.toml | 723 +++++++++++++++++++++++++++-------------------------- 1 file changed, 365 insertions(+), 358 deletions(-) diff --git a/hatch.toml b/hatch.toml index b7c25631f61..103e5332a5a 100644 --- a/hatch.toml +++ b/hatch.toml @@ -1,278 +1,280 @@ [envs.lint] -dependencies = [ - "black==23.10.1", - "click==8.1.7", - "cython-lint==0.15.0", - "codespell==2.3.0", - "bandit==1.7.5", - "mypy==1.15.0", - "coverage==7.3.0", - "envier==0.6.1", - "types-docutils==0.19.1.1", - "types-protobuf==3.20.4.5", - "types-PyYAML==6.0.12.2", - "types-setuptools==65.6.0.0", - "ddapm-test-agent>=1.2.0", - "packaging==23.1", - "pygments==2.16.1", - "riot==0.20.1", - "ruff==0.11.11", - "clang-format==18.1.5", - "cmake-format==0.6.13", - "ruamel.yaml==0.18.6", -] detached = true python = "3.10" +dependencies = [ + "black==23.10.1", + "click==8.1.7", + "cython-lint==0.15.0", + "codespell==2.3.0", + "bandit==1.7.5", + "mypy==1.15.0", + "coverage==7.3.0", + "envier==0.6.1", + "types-docutils==0.19.1.1", + "types-protobuf==3.20.4.5", + "types-PyYAML==6.0.12.2", + "types-setuptools==65.6.0.0", + "ddapm-test-agent>=1.2.0", + "packaging==23.1", + "pygments==2.16.1", + "riot==0.20.1", + "ruff==0.11.11", + "clang-format==18.1.5", + "cmake-format==0.6.13", + "ruamel.yaml==0.18.6", +] [envs.lint.scripts] black_check = [ - "black --check {args:.}", -] -cformat_check = [ - "bash scripts/cformat.sh", + "black --check {args:.}", ] cmakeformat_check = [ - "bash scripts/cmake-format.sh", + "bash scripts/cmake-format.sh" ] -fmt = [ - "black {args:.}", - "ruff check --fix {args:.}", - "style", +cformat_check = [ + "bash scripts/cformat.sh" ] style = [ - "black_check", - "ruff check {args:.}", - "cython-lint {args:.}", - "cformat_check", - "cmakeformat_check", + "black_check", + "ruff check {args:.}", + "cython-lint {args:.}", + "cformat_check", + "cmakeformat_check", +] +fmt = [ + "black {args:.}", + "ruff check --fix {args:.}", + "style", ] # checks should encapsulate all rules used in pre-check checks = [ - "style", - "typing", - "spelling", - "riot", - "security", - "test", - "suitespec-check", + "style", + "typing", + "spelling", + "riot", + "security", + "test", + "suitespec-check", ] -fmt-snapshots = [ - "ddapm-test-agent-fmt {args:tests/snapshots/}", +spelling = [ + "codespell -I docs/spelling_wordlist.txt --skip='ddwaf.h,*cassettes*,tests/tracer/fixtures/urls.txt,tests/appsec/iast/fixtures/*' {args:ddtrace/ tests/ releasenotes/ docs/}", ] -riot = [ - "python -m doctest {args} riotfile.py", +typing = [ + "mypy {args}", ] security = [ - "bandit -c pyproject.toml {args:-r ddtrace/}", + "bandit -c pyproject.toml {args:-r ddtrace/}", ] -spelling = [ - "codespell -I docs/spelling_wordlist.txt --skip='ddwaf.h,*cassettes*,tests/tracer/fixtures/urls.txt,tests/appsec/iast/fixtures/*' {args:ddtrace/ tests/ releasenotes/ docs/}", +fmt-snapshots = [ + "ddapm-test-agent-fmt {args:tests/snapshots/}", ] -suitespec-check = [ - "python scripts/check_suitespec_coverage.py", +riot = [ + "python -m doctest {args} riotfile.py" ] -typing = [ - "mypy {args}", +suitespec-check = [ + "python scripts/check_suitespec_coverage.py" ] [envs.docs] -dependencies = [ - # copied from library dependencies - "protobuf>=3", - "typing_extensions", - "xmltodict>=0.12", - "envier==0.6.1", - "opentelemetry-api>=1", - "opentracing>=2.0.0", - "bytecode", -] +template = "docs" dev-mode = false +python = "3.10" +features = ["opentracing"] +dependencies = [ # copied from library dependencies + "protobuf>=3", + "typing_extensions", + "xmltodict>=0.12", + "envier==0.6.1", + "opentelemetry-api>=1", + "opentracing>=2.0.0", + "bytecode", +] extra-dependencies = [ - "reno~=3.5.0", - "sphinx~=4.0", - "sphinxcontrib-applehelp<1.0.8", - "sphinxcontrib-devhelp<1.0.6", - "sphinxcontrib-htmlhelp<2.0.5", - "sphinxcontrib-devhelp<1.0.6", - "sphinxcontrib-serializinghtml<1.1.10", - "sphinxcontrib-qthelp<1.0.7", - "sphinxcontrib-spelling==7.7.0", - "PyEnchant==3.2.2", - "sphinx-copybutton==0.5.1", # Later release of furo breaks formatting for code blocks - "furo<=2023.05.20", - "standard-imghdr", + "reno~=3.5.0", + "sphinx~=4.0", + "sphinxcontrib-applehelp<1.0.8", + "sphinxcontrib-devhelp<1.0.6", + "sphinxcontrib-htmlhelp<2.0.5", + "sphinxcontrib-devhelp<1.0.6", + "sphinxcontrib-serializinghtml<1.1.10", + "sphinxcontrib-qthelp<1.0.7", + "sphinxcontrib-spelling==7.7.0", + "PyEnchant==3.2.2", + "sphinx-copybutton==0.5.1", + # Later release of furo breaks formatting for code blocks + "furo<=2023.05.20", + "standard-imghdr", ] -features = ["opentracing"] pre-install-commands = [ - "scripts/docs/install.sh", + "scripts/docs/install.sh", ] -python = "3.10" -template = "docs" [envs.docs.env-vars] DD_TRACE_ENABLED = "false" [envs.docs.scripts] build = [ - "scripts/docs/build.sh", + "scripts/docs/build.sh", ] [envs.scripts] detached = true +python = "3.10" extra-dependencies = [ - "lxml==5.3.0", - "packaging==23.1", - "ruamel.yaml==0.18.6", - "vcrpy==6.0.2", + "lxml==5.3.0", + "packaging==23.1", + "ruamel.yaml==0.18.6", + "vcrpy==6.0.2", ] -python = "3.10" [envs.scripts.scripts] +test = [ + "python -m doctest {args} scripts/get-target-milestone.py scripts/needs_testrun.py tests/suitespec.py", +] needs_testrun = [ "scripts/needs_testrun.py {args}", ] -test = [ - "python -m doctest {args} scripts/get-target-milestone.py scripts/needs_testrun.py tests/suitespec.py", -] [envs.integration_test] +template = "integration_test" extra-dependencies = [ - "mock==5.0.1", - "pytest==7.2.2", - "pytest-mock==3.10.0", - "coverage==7.2.2", - "pytest-cov==4.0.0", - "opentracing==2.4.0", - "hypothesis==6.45.0", + "mock==5.0.1", + "pytest==7.2.2", + "pytest-mock==3.10.0", + "coverage==7.2.2", + "pytest-cov==4.0.0", + "opentracing==2.4.0", + "hypothesis==6.45.0", ] -template = "integration_test" [[envs.integration_test.matrix]] python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] [envs.integration_test.env-vars] -CARGO_BUILD_JOBS = "12" -CMAKE_BUILD_PARALLEL_LEVEL = "12" +_DD_CIVISIBILITY_USE_CI_CONTEXT_PROVIDER = "1" +DD_TESTING_RAISE = "1" +DD_REMOTE_CONFIGURATION_ENABLED = "false" DD_CIVISIBILITY_AGENTLESS_ENABLED = "1" DD_CIVISIBILITY_CODE_COVERAGE_ENABLED = "1" DD_CIVISIBILITY_ITR_ENABLED = "1" -DD_FAST_BUILD = "1" DD_PATCH_MODULES = "unittest:false" -DD_REMOTE_CONFIGURATION_ENABLED = "false" -DD_TESTING_RAISE = "1" -_DD_CIVISIBILITY_USE_CI_CONTEXT_PROVIDER = "1" +CMAKE_BUILD_PARALLEL_LEVEL = "12" +CARGO_BUILD_JOBS = "12" +DD_FAST_BUILD = "1" ## ASM Django [envs.appsec_threats_django] +template = "appsec_threats_django" dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "django{matrix:django}", + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "django{matrix:django}" ] -template = "appsec_threats_django" [envs.appsec_threats_django.scripts] test = [ - "uname -a", - "pip freeze", - "DD_IAST_ENABLED=false python -m pytest tests/appsec/contrib_appsec/test_django.py {args}", - "DD_IAST_ENABLED=true DD_IAST_REQUEST_SAMPLING=100 python -m pytest tests/appsec/contrib_appsec/test_django.py {args}", + "uname -a", + "pip freeze", + "DD_IAST_ENABLED=false python -m pytest tests/appsec/contrib_appsec/test_django.py {args}", + "DD_IAST_ENABLED=true DD_IAST_REQUEST_SAMPLING=100 python -m pytest tests/appsec/contrib_appsec/test_django.py {args}" ] # if you add or remove a version here, please also update the parallelism parameter # in .circleci/config.templ.yml [[envs.appsec_threats_django.matrix]] -django = ["~=2.2"] python = ["3.8", "3.9"] +django = ["~=2.2"] [[envs.appsec_threats_django.matrix]] -django = ["~=3.2"] python = ["3.8", "3.9", "3.10"] +django = ["~=3.2"] [[envs.appsec_threats_django.matrix]] -django = ["==4.0.10"] python = ["3.8", "3.10"] +django = ["==4.0.10"] [[envs.appsec_threats_django.matrix]] -django = ["~=4.2"] python = ["3.8", "3.11", "3.13"] +django = ["~=4.2"] [[envs.appsec_threats_django.matrix]] -django = ["~=5.1"] python = ["3.10", "3.13"] +django = ["~=5.1"] + ## ASM Flask [envs.appsec_threats_flask] +template = "appsec_threats_flask" dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "MarkupSafe{matrix:markupsafe:}", - "Werkzeug{matrix:werkzeug:}", - "flask{matrix:flask}", + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "MarkupSafe{matrix:markupsafe:}", + "Werkzeug{matrix:werkzeug:}", + "flask{matrix:flask}" ] -template = "appsec_threats_flask" [envs.appsec_threats_flask.scripts] test = [ - "uname -a", - "pip freeze", - "DD_IAST_ENABLED=false python -m pytest tests/appsec/contrib_appsec/test_flask.py {args}", - "DD_IAST_ENABLED=true DD_IAST_REQUEST_SAMPLING=100 python -m pytest tests/appsec/contrib_appsec/test_flask.py {args}", + "uname -a", + "pip freeze", + "DD_IAST_ENABLED=false python -m pytest tests/appsec/contrib_appsec/test_flask.py {args}", + "DD_IAST_ENABLED=true DD_IAST_REQUEST_SAMPLING=100 python -m pytest tests/appsec/contrib_appsec/test_flask.py {args}" ] # if you add or remove a version here, please also update the parallelism parameter # in .circleci/config.templ.yml [[envs.appsec_threats_flask.matrix]] +python = ["3.8", "3.9"] flask = ["~=1.1"] markupsafe = ["~=1.1"] -python = ["3.8", "3.9"] [[envs.appsec_threats_flask.matrix]] -flask = ["==2.1.3"] python = ["3.8", "3.9"] +flask = ["==2.1.3"] werkzeug = ["<3.0"] [[envs.appsec_threats_flask.matrix]] -flask = ["~=2.3"] python = ["3.8", "3.10", "3.13"] +flask = ["~=2.3"] [[envs.appsec_threats_flask.matrix]] -flask = ["~=3.0"] python = ["3.8", "3.11", "3.13"] +flask = ["~=3.0"] ## ASM IAST module [envs.appsec_iast_default] +template = "appsec_iast_default" dependencies = [ - "pytest", - "pytest-cov", - "pytest-asyncio", - "hypothesis", - "requests", - "urllib3", - "pycryptodome", - "cryptography", - "astunparse", - "simplejson", - "grpcio", + "pytest", + "pytest-cov", + "pytest-asyncio", + "hypothesis", + "requests", + "urllib3", + "pycryptodome", + "cryptography", + "astunparse", + "simplejson", + "grpcio", ] -template = "appsec_iast_default" [envs.appsec_iast_default.env-vars] -DD_IAST_DEDUPLICATION_ENABLED = "false" -DD_IAST_REQUEST_SAMPLING = "100" _DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." +DD_IAST_REQUEST_SAMPLING = "100" +DD_IAST_DEDUPLICATION_ENABLED = "false" + [envs.appsec_iast_default.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest --no-ddtrace {args:tests/appsec/iast/}", + "uname -a", + "pip freeze", + "python -m pytest --no-ddtrace {args:tests/appsec/iast/}", ] [[envs.appsec_iast_default.matrix]] @@ -281,24 +283,24 @@ python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] ## ASM Native IAST module [envs.appsec_iast_native] +template = "appsec_iast_native" dependencies = [ - "cmake", - "pybind11", - "clang", + "cmake", + "pybind11", + "clang" ] -template = "appsec_iast_native" [envs.appsec_iast_native.env-vars] -DD_IAST_DEDUPLICATION_ENABLED = "false" +_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." DD_IAST_REQUEST_SAMPLING = "100" DD_IAST_VULNERABILITIES_PER_REQUEST = "100000" -_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." +DD_IAST_DEDUPLICATION_ENABLED = "false" [envs.appsec_iast_native.scripts] test = [ - "cmake -DCMAKE_BUILD_TYPE=Debug -DPYTHON_EXECUTABLE=python -S ddtrace/appsec/_iast/_taint_tracking -B ddtrace/appsec/_iast/_taint_tracking", - "make -f ddtrace/appsec/_iast/_taint_tracking/tests/Makefile native_tests", - "ddtrace/appsec/_iast/_taint_tracking/tests/native_tests", + "cmake -DCMAKE_BUILD_TYPE=Debug -DPYTHON_EXECUTABLE=python -S ddtrace/appsec/_iast/_taint_tracking -B ddtrace/appsec/_iast/_taint_tracking", + "make -f ddtrace/appsec/_iast/_taint_tracking/tests/Makefile native_tests", + "ddtrace/appsec/_iast/_taint_tracking/tests/native_tests" ] [[envs.appsec_iast_native.matrix]] @@ -307,33 +309,33 @@ python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] ## ASM iast_tdd_propagation [envs.iast_tdd_propagation] +template = "iast_tdd_propagation" dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "flask", - "pycryptodome", - "sqlalchemy~=2.0.23", - "pony", - "aiosqlite", - "tortoise-orm", - "peewee", - "aiosqlite", + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "flask", + "pycryptodome", + "sqlalchemy~=2.0.23", + "pony", + "aiosqlite", + "tortoise-orm", + "peewee", + "aiosqlite", ] -template = "iast_tdd_propagation" [envs.iast_tdd_propagation.env-vars] -DD_IAST_DEDUPLICATION_ENABLED = "false" +_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." DD_IAST_REQUEST_SAMPLING = "100" DD_IAST_VULNERABILITIES_PER_REQUEST = "100000" -_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." +DD_IAST_DEDUPLICATION_ENABLED = "false" [envs.iast_tdd_propagation.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest tests/appsec/iast_tdd_propagation", + "uname -a", + "pip freeze", + "python -m pytest tests/appsec/iast_tdd_propagation", ] [[envs.iast_tdd_propagation.matrix]] @@ -342,64 +344,67 @@ python = ["3.9", "3.10", "3.11", "3.12", "3.13"] ## IAST packages integrations [envs.appsec_integrations_packages] +template = "appsec_integrations_packages" dependencies = [ - "pytest", - "pytest-cov", - "pytest-xdist", - "hypothesis", - "requests", - "SQLAlchemy", - "psycopg2-binary~=2.9.9", - "pymysql", - "mysqlclient==2.1.1", - "mysql-connector-python", - "MarkupSafe~=2.1.1", - "Werkzeug~=3.0.6", + "pytest", + "pytest-cov", + "pytest-xdist", + "hypothesis", + "requests", + "SQLAlchemy", + "psycopg2-binary~=2.9.9", + "pymysql", + "mysqlclient==2.1.1", + "mysql-connector-python", + "MarkupSafe~=2.1.1", + "Werkzeug~=3.0.6", ] -template = "appsec_integrations_packages" [envs.appsec_integrations_packages.env-vars] -DD_IAST_DEDUPLICATION_ENABLED = "false" +_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." DD_IAST_REQUEST_SAMPLING = "100" DD_IAST_VULNERABILITIES_PER_REQUEST = "100000" -_DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." +DD_IAST_DEDUPLICATION_ENABLED = "false" + [envs.appsec_integrations_packages.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest -vvv -s -n 8 --no-cov --no-ddtrace {args:tests/appsec/integrations/packages_tests/}", + "uname -a", + "pip freeze", + "python -m pytest -vvv -s -n 8 --no-cov --no-ddtrace {args:tests/appsec/integrations/packages_tests/}", ] [[envs.appsec_integrations_packages.matrix]] python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + ## ASM appsec_integrations_django [envs.appsec_integrations_django] +template = "appsec_integrations_django" dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "pylibmc", - "bcrypt==4.2.1", - "pytest-django[testing]==3.10.0", - "Django{matrix:django}", + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "pylibmc", + "bcrypt==4.2.1", + "pytest-django[testing]==3.10.0", + "Django{matrix:django}", ] -template = "appsec_integrations_django" [envs.appsec_integrations_django.env-vars] -DD_IAST_DEDUPLICATION_ENABLED = "false" -DD_IAST_REQUEST_SAMPLING = "100" DD_TRACE_AGENT_URL = "http://testagent:9126" _DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." +DD_IAST_REQUEST_SAMPLING = "100" +DD_IAST_DEDUPLICATION_ENABLED = "false" + [envs.appsec_integrations_django.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest -vvv {args:tests/appsec/integrations/django_tests/}", + "uname -a", + "pip freeze", + "python -m pytest -vvv {args:tests/appsec/integrations/django_tests/}", ] [[envs.appsec_integrations_django.matrix]] @@ -415,8 +420,8 @@ python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] django = ["~=4.0.10"] [[envs.appsec_integrations_django.matrix]] -django = ["~=3.2"] python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] +django = ["~=3.2"] [[envs.appsec_integrations_django.matrix]] python = ["3.8", "3.9"] @@ -425,65 +430,66 @@ django = ["~=2.2"] ## ASM appsec_integrations_flask [envs.appsec_integrations_flask] +template = "appsec_integrations_flask" dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "gunicorn", - "psycopg2-binary~=2.9.9", - "MarkupSafe{matrix:markupsafe:}", - "itsdangerous{matrix:itsdangerous:}", - "Werkzeug{matrix:werkzeug:}", - "flask{matrix:flask}", + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "gunicorn", + "psycopg2-binary~=2.9.9", + "MarkupSafe{matrix:markupsafe:}", + "itsdangerous{matrix:itsdangerous:}", + "Werkzeug{matrix:werkzeug:}", + "flask{matrix:flask}", ] -template = "appsec_integrations_flask" [envs.appsec_integrations_flask.env-vars] -DD_IAST_DEDUPLICATION_ENABLED = "false" -DD_IAST_REQUEST_SAMPLING = "100" -DD_IAST_VULNERABILITIES_PER_REQUEST = "100000" DD_TRACE_AGENT_URL = "http://testagent:9126" _DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." +DD_IAST_REQUEST_SAMPLING = "100" +DD_IAST_VULNERABILITIES_PER_REQUEST = "100000" +DD_IAST_DEDUPLICATION_ENABLED = "false" [envs.appsec_integrations_flask.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest -vvv {args:tests/appsec/integrations/flask_tests/}", + "uname -a", + "pip freeze", + "python -m pytest -vvv {args:tests/appsec/integrations/flask_tests/}", ] [[envs.appsec_integrations_flask.matrix]] -flask = ["~=1.1"] python = ["3.8", "3.9"] +flask = ["~=1.1"] # https://github.com/pallets/markupsafe/issues/282 # DEV: Breaking change made in 2.1.0 release -itsdangerous = ["==2.0.1"] markupsafe = ["~=1.1"] +itsdangerous = ["==2.0.1"] # DEV: Flask 1.0.x is missing a maximum version for werkzeug dependency werkzeug = ["==2.0.3"] [[envs.appsec_integrations_flask.matrix]] -flask = ["~=2.2"] python = ["3.8", "3.9", "3.10", "3.11"] +flask = ["~=2.2"] [[envs.appsec_integrations_flask.matrix]] -flask = ["~=2.2"] python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] +flask = ["~=2.2"] [[envs.appsec_integrations_flask.matrix]] -flask = ["~=3.0"] python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] +flask = ["~=3.0"] [[envs.appsec_integrations_flask.matrix]] # werkzeug 3.1 drops support for py3.8 -flask = ["~=3.1"] python = ["3.11", "3.12", "3.13"] +flask = ["~=3.1"] werkzeug = ["~=3.1"] ## ASM appsec_integrations_fastapi [envs.appsec_integrations_fastapi] +template = "appsec_integrations_fastapi" dependencies = [ "pytest", "pytest-cov", @@ -496,140 +502,141 @@ dependencies = [ "anyio{matrix:anyio:}", "fastapi{matrix:fastapi}" ] -template = "appsec_integrations_fastapi" [envs.appsec_integrations_fastapi.env-vars] -DD_IAST_DEDUPLICATION_ENABLED = "false" -DD_IAST_REQUEST_SAMPLING = "100" -DD_IAST_VULNERABILITIES_PER_REQUEST = "100000" DD_TRACE_AGENT_URL = "http://testagent:9126" _DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." +DD_IAST_REQUEST_SAMPLING = "100" +DD_IAST_VULNERABILITIES_PER_REQUEST = "100000" +DD_IAST_DEDUPLICATION_ENABLED = "false" [envs.appsec_integrations_fastapi.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest -vvv {args:tests/appsec/integrations/fastapi_tests/}", + "uname -a", + "pip freeze", + "python -m pytest -vvv {args:tests/appsec/integrations/fastapi_tests/}", ] + # if you add or remove a version here, please also update the parallelism parameter # in .circleci/config.templ.yml [[envs.appsec_integrations_fastapi.matrix]] -anyio = ["==3.7.1"] -fastapi = ["==0.86.0"] python = ["3.8", "3.10", "3.13"] +fastapi = ["==0.86.0"] +anyio = ["==3.7.1"] [[envs.appsec_integrations_fastapi.matrix]] -fastapi = ["==0.94.1"] python = ["3.8", "3.10", "3.13"] +fastapi = ["==0.94.1"] [[envs.appsec_integrations_fastapi.matrix]] -fastapi = ["~=0.114.2"] python = ["3.8", "3.10", "3.13"] +fastapi = ["~=0.114.2"] ## ASM appsec_integrations_langchain [envs.appsec_integrations_langchain] +template = "appsec_integrations_langchain" dependencies = [ - "pytest", - "pytest-asyncio", - "pytest-cov", - "hypothesis", - "langchain{matrix:langchain:}", - "langchain-experimental{matrix:langchain-experimental:}", + "pytest", + "pytest-asyncio", + "pytest-cov", + "hypothesis", + "langchain{matrix:langchain:}", + "langchain-experimental{matrix:langchain-experimental:}", ] -template = "appsec_integrations_langchain" [envs.appsec_integrations_langchain.env-vars] -DD_IAST_DEDUPLICATION_ENABLED = "false" -DD_IAST_REQUEST_SAMPLING = "100" DD_TRACE_AGENT_URL = "http://testagent:9126" _DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec." +DD_IAST_REQUEST_SAMPLING = "100" +DD_IAST_DEDUPLICATION_ENABLED = "false" [envs.appsec_integrations_langchain.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest -vvv {args:tests/appsec/integrations/langchain_tests/}", + "uname -a", + "pip freeze", + "python -m pytest -vvv {args:tests/appsec/integrations/langchain_tests/}", ] [[envs.appsec_integrations_langchain.matrix]] +python = ["3.9", "3.10", "3.11", "3.12", "3.13"] langchain = ["~=0.1"] langchain-experimental = ["~=0.1"] -python = ["3.9", "3.10", "3.11", "3.12", "3.13"] [[envs.appsec_integrations_langchain.matrix]] +python = ["3.9", "3.10", "3.11", "3.12", "3.13"] langchain = ["~=0.2"] langchain-experimental = ["~=0.2"] -python = ["3.9", "3.10", "3.11", "3.12", "3.13"] [[envs.appsec_integrations_langchain.matrix]] +python = ["3.9", "3.10", "3.11", "3.12", "3.13"] langchain = ["~=0.3"] langchain-experimental = ["~=0.3"] -python = ["3.9", "3.10", "3.11", "3.12", "3.13"] ## ASM FastAPI [envs.appsec_threats_fastapi] +template = "appsec_threats_fastapi" dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "httpx<0.28.0", - "anyio{matrix:anyio:}", - "fastapi{matrix:fastapi}", + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "httpx<0.28.0", + "anyio{matrix:anyio:}", + "fastapi{matrix:fastapi}" ] -template = "appsec_threats_fastapi" [envs.appsec_threats_fastapi.scripts] test = [ - "uname -a", - "pip freeze", - "DD_IAST_ENABLED=false python -m pytest tests/appsec/contrib_appsec/test_fastapi.py {args}", - "DD_IAST_ENABLED=true DD_IAST_REQUEST_SAMPLING=100 python -m pytest tests/appsec/contrib_appsec/test_fastapi.py {args}", + "uname -a", + "pip freeze", + "DD_IAST_ENABLED=false python -m pytest tests/appsec/contrib_appsec/test_fastapi.py {args}", + "DD_IAST_ENABLED=true DD_IAST_REQUEST_SAMPLING=100 python -m pytest tests/appsec/contrib_appsec/test_fastapi.py {args}" ] # if you add or remove a version here, please also update the parallelism parameter # in .circleci/config.templ.yml [[envs.appsec_threats_fastapi.matrix]] -anyio = ["==3.7.1"] -fastapi = ["==0.86.0"] python = ["3.8", "3.10", "3.13"] +fastapi = ["==0.86.0"] +anyio = ["==3.7.1"] [[envs.appsec_threats_fastapi.matrix]] -fastapi = ["==0.94.1"] python = ["3.8", "3.10", "3.13"] +fastapi = ["==0.94.1"] [[envs.appsec_threats_fastapi.matrix]] -fastapi = ["~=0.114.2"] python = ["3.8", "3.10", "3.13"] +fastapi = ["~=0.114.2"] ## ASM Appsec Aggregated Leak Testing [envs.iast_aggregated_leak_testing] +template = "iast_aggregated_leak_testing" dependencies = [ - "pytest", - "pytest-cov", - "hypothesis", - "requests", - "pytest-asyncio", - "anyio", - "pydantic", - "pydantic-settings", + "pytest", + "pytest-cov", + "hypothesis", + "requests", + "pytest-asyncio", + "anyio", + "pydantic", + "pydantic-settings", ] -template = "iast_aggregated_leak_testing" [envs.iast_aggregated_leak_testing.env-vars] -DD_FAST_BUILD = "0" DD_IAST_ENABLED = "true" _DD_IAST_PATCH_MODULES = "benchmarks.,tests.appsec.,scripts.iast." +DD_FAST_BUILD = "0" [envs.iast_aggregated_leak_testing.scripts] test = [ - "uname -a", - "pip freeze", # We use --no-cov due to a pytest-cov problem with eval https://github.com/pytest-dev/pytest-cov/issues/676 - "python -m pytest --no-cov tests/appsec/iast_aggregated_memcheck/test_aggregated_memleaks.py", + "uname -a", + "pip freeze", + # We use --no-cov due to a pytest-cov problem with eval https://github.com/pytest-dev/pytest-cov/issues/676 + "python -m pytest --no-cov tests/appsec/iast_aggregated_memcheck/test_aggregated_memleaks.py", ] [[envs.iast_aggregated_leak_testing.matrix]] @@ -639,13 +646,13 @@ python = ["3.10", "3.11", "3.12"] [envs.profiling_pytorch] dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "torch>=1.8.1", - "torchvision", - "lz4", + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "torch>=1.8.1", + "torchvision", + "lz4", ] [envs.profiling_pytorch.env-vars] @@ -654,9 +661,9 @@ DD_PROFILING_PYTORCH_ENABLED = "true" [envs.profiling_pytorch.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest tests/profiling_v2/test_pytorch.py -vvv --capture=tee-sys", + "uname -a", + "pip freeze", + "python -m pytest tests/profiling_v2/test_pytorch.py -vvv --capture=tee-sys", ] [[envs.profiling_pytorch.matrix]] @@ -666,136 +673,136 @@ python = ["3.12"] [envs.multiple_os_tests] dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "flask", - "asgiref", - "botocore", - "dnspython", + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "flask", + "asgiref", + "botocore", + "dnspython", ] [envs.multiple_os_tests.env-vars] -CARGO_BUILD_JOBS = "6" -CMAKE_BUILD_PARALLEL_LEVEL = "6" DD_IAST_ENABLED = "false" DD_REMOTE_CONFIGURATION_ENABLED = "false" +CMAKE_BUILD_PARALLEL_LEVEL="6" +CARGO_BUILD_JOBS = "6" [envs.multiple_os_tests.scripts] test = [ - "uname -a", - "pip freeze", - "python -m pytest tests/internal/service_name/test_extra_services_names.py -v -s", - "python -m pytest tests/appsec/architectures/test_appsec_loading_modules.py -v -s", + "uname -a", + "pip freeze", + "python -m pytest tests/internal/service_name/test_extra_services_names.py -v -s", + "python -m pytest tests/appsec/architectures/test_appsec_loading_modules.py -v -s", ] [[envs.multiple_os_tests.matrix]] python = ["3.13", "3.12", "3.10", "3.8"] [envs.errortracking] +template = "errortracking" dependencies = [ - "flask", - "hypothesis", - "pytest", - "pytest-cov", + "flask", + "hypothesis", + "pytest", + "pytest-cov", ] -template = "errortracking" [envs.errortracking.scripts] test = [ - "pip freeze", - "pytest tests/internal/errortracking", + "pip freeze", + "pytest tests/internal/errortracking", ] [[envs.errortracking.matrix]] python = ["3.10", "3.11", "3.12", "3.13"] [envs.pytest_plugin_v2] +template = "pytest_plugin_v2" dependencies = [ - "httpx", - "msgpack", - "requests", - "hypothesis", - "pytest{matrix:pytest}", - "pytest-cov", - "pytest-mock", + "httpx", + "msgpack", + "requests", + "hypothesis", + "pytest{matrix:pytest}", + "pytest-cov", + "pytest-mock" ] -template = "pytest_plugin_v2" [envs.pytest_plugin_v2.env-vars] DD_AGENT_PORT = "9126" [envs.pytest_plugin_v2.scripts] test = [ - "pip freeze", - "echo $PYTEST_ADDOPTS", - "pytest -c /dev/null --no-ddtrace --no-cov tests/contrib/pytest {args:}", + "pip freeze", + "echo $PYTEST_ADDOPTS", + "pytest -c /dev/null --no-ddtrace --no-cov tests/contrib/pytest {args:}", ] [[envs.pytest_plugin_v2.matrix]] -pytest = ["~=6.0", "~=7.0", "~=8.0"] python = ["3.9", "3.10", "3.12"] +pytest = ["~=6.0", "~=7.0", "~=8.0"] [envs.snapshot_viewer] -dependencies = [ - "PrettyPrintTree", -] -detached = true dev-mode = false +detached = true template = "snapshot_viewer" +dependencies = [ + "PrettyPrintTree" +] [envs.snapshot_viewer.scripts] view = [ - "python scripts/ci_visibility/view_snapshot.py {args:}", + "python scripts/ci_visibility/view_snapshot.py {args:}", ] [envs.freezegun] +template = "freezegun" dependencies = [ - "freezegun{matrix:freezegun}", - "pytest", - "pytest-cov", - "hypothesis", + "freezegun{matrix:freezegun}", + "pytest", + "pytest-cov", + "hypothesis", ] -template = "freezegun" [envs.freezegun.scripts] test = [ - "pytest tests/contrib/freezegun {args:}", + "pytest tests/contrib/freezegun {args:}", ] [[envs.freezegun.matrix]] -freezegun = ["~=1.3.0", "~=1.5.0"] python = ["3.10", "3.12"] +freezegun = ["~=1.3.0", "~=1.5.0"] [envs.appsec_integrations_pygoat] +template = "appsec_integrations_pygoat" dependencies = [ - "pytest", - "pytest-cov", - "requests", - "hypothesis", - "pyyaml==6.0.1", + "pytest", + "pytest-cov", + "requests", + "hypothesis", + "pyyaml==6.0.1", ] -template = "appsec_integrations_pygoat" [envs.appsec_integrations_pygoat.env-vars] DD_CIVISIBILITY_ITR_ENABLED = "0" -DD_FAST_BUILD = "1" -DD_IAST_DEDUPLICATION_ENABLED = "false" -DD_IAST_ENABLED = "true" DD_IAST_REQUEST_SAMPLING = "100" +DD_IAST_ENABLED = "true" +_DD_IAST_DEBUG = "false" DD_IAST_VULNERABILITIES_PER_REQUEST = "100" DD_REMOTE_CONFIGURATION_ENABLED = "true" +DD_IAST_DEDUPLICATION_ENABLED = "false" DD_TRACE_AGENT_URL = "http://0.0.0.0:9126" +DD_FAST_BUILD = "1" PYTHONDONTWRITEBYTECODE = "1" PYTHONUNBUFFERED = "1" -_DD_IAST_DEBUG = "false" [envs.appsec_integrations_pygoat.scripts] test = [ - "uname -a", - "pip freeze", - "bash tests/appsec/integrations/pygoat_tests/run_pygoat.sh {args:tests/appsec/integrations/pygoat_tests/}", + "uname -a", + "pip freeze", + "bash tests/appsec/integrations/pygoat_tests/run_pygoat.sh {args:tests/appsec/integrations/pygoat_tests/}", ] [[envs.appsec_integrations_pygoat.matrix]] From 911a2f762a4c8c64f17236aea85b1e39ceb4b9a7 Mon Sep 17 00:00:00 2001 From: Juanjo Alvarez Date: Tue, 10 Jun 2025 09:41:03 +0200 Subject: [PATCH 6/6] Force lockfile recreation Signed-off-by: Juanjo Alvarez --- .riot/requirements/{1b9a6d0.txt => 1230d1c.txt} | 4 ++-- .riot/requirements/{f1cb8ae.txt => 143a175.txt} | 4 ++-- .riot/requirements/{1a955bc.txt => 18e9ec9.txt} | 4 ++-- .riot/requirements/{1e89074.txt => 1db770e.txt} | 4 ++-- riotfile.py | 5 ++--- 5 files changed, 10 insertions(+), 11 deletions(-) rename .riot/requirements/{1b9a6d0.txt => 1230d1c.txt} (89%) rename .riot/requirements/{f1cb8ae.txt => 143a175.txt} (89%) rename .riot/requirements/{1a955bc.txt => 18e9ec9.txt} (88%) rename .riot/requirements/{1e89074.txt => 1db770e.txt} (88%) diff --git a/.riot/requirements/1b9a6d0.txt b/.riot/requirements/1230d1c.txt similarity index 89% rename from .riot/requirements/1b9a6d0.txt rename to .riot/requirements/1230d1c.txt index eb4e2a2911d..5eaeaa41cd5 100644 --- a/.riot/requirements/1b9a6d0.txt +++ b/.riot/requirements/1230d1c.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1b9a6d0.in +# pip-compile --no-annotate .riot/requirements/1230d1c.in # attrs==25.3.0 certifi==2025.4.26 @@ -24,7 +24,7 @@ pytest==8.4.0 pytest-cov==6.1.1 pytest-mock==3.14.1 python-dotenv==1.1.0 -requests==2.32.3 +requests==2.32.4 selenium==4.33.0 sniffio==1.3.1 sortedcontainers==2.4.0 diff --git a/.riot/requirements/f1cb8ae.txt b/.riot/requirements/143a175.txt similarity index 89% rename from .riot/requirements/f1cb8ae.txt rename to .riot/requirements/143a175.txt index aa0a4e795a4..cdad4bedf95 100644 --- a/.riot/requirements/f1cb8ae.txt +++ b/.riot/requirements/143a175.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/f1cb8ae.in +# pip-compile --no-annotate .riot/requirements/143a175.in # attrs==25.3.0 certifi==2025.4.26 @@ -24,7 +24,7 @@ pytest==8.4.0 pytest-cov==6.1.1 pytest-mock==3.14.1 python-dotenv==1.1.0 -requests==2.32.3 +requests==2.32.4 selenium==4.33.0 sniffio==1.3.1 sortedcontainers==2.4.0 diff --git a/.riot/requirements/1a955bc.txt b/.riot/requirements/18e9ec9.txt similarity index 88% rename from .riot/requirements/1a955bc.txt rename to .riot/requirements/18e9ec9.txt index 1471008b117..9052ff1de61 100644 --- a/.riot/requirements/1a955bc.txt +++ b/.riot/requirements/18e9ec9.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1a955bc.in +# pip-compile --no-annotate .riot/requirements/18e9ec9.in # attrs==25.3.0 certifi==2025.4.26 @@ -23,7 +23,7 @@ pytest==8.4.0 pytest-cov==6.1.1 pytest-mock==3.14.1 python-dotenv==1.1.0 -requests==2.32.3 +requests==2.32.4 selenium==4.33.0 sniffio==1.3.1 sortedcontainers==2.4.0 diff --git a/.riot/requirements/1e89074.txt b/.riot/requirements/1db770e.txt similarity index 88% rename from .riot/requirements/1e89074.txt rename to .riot/requirements/1db770e.txt index 2ec36742e0c..59cfb978b22 100644 --- a/.riot/requirements/1e89074.txt +++ b/.riot/requirements/1db770e.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1e89074.in +# pip-compile --no-annotate .riot/requirements/1db770e.in # attrs==25.3.0 certifi==2025.4.26 @@ -23,7 +23,7 @@ pytest==8.4.0 pytest-cov==6.1.1 pytest-mock==3.14.1 python-dotenv==1.1.0 -requests==2.32.3 +requests==2.32.4 selenium==4.33.0 sniffio==1.3.1 sortedcontainers==2.4.0 diff --git a/riotfile.py b/riotfile.py index 2ec51e599f0..9fd2ead05d2 100644 --- a/riotfile.py +++ b/riotfile.py @@ -3043,14 +3043,13 @@ def select_pys(min_version: str = MIN_PYTHON_VERSION, max_version: str = MAX_PYT Venv( venvs=[ Venv( - name="pytest-legacy-plugin-true", + name="selenium-pytest-legacy-plugin-true", env={ "_TESTED_PYTEST_LEGACY_PLUGIN": "true", }, ), Venv( - name="pytest-legacy-plugin-false", - pys=["3.10", "3.12"], + name="selenium-pytest-legacy-plugin-false", env={ "_TESTED_PYTEST_LEGACY_PLUGIN": "false", },