R: tests/*.R scripts run by R CMD check are not tests (data.table), sanitizer images (rocker/r-devel-san) are the R way to run ASan/UBSan, styler on issue_comment is not a gate
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 40/100
Piste de recherche
The three R rules live in ecosystems/r.py: the _styler check around lines 124-137 (it must consider the workflow trigger, not just the commit), the R_TEST_FILES.path regex (it must also accept tests/*.R scripts), and the sanitizer detection (it must recognise *-san and rocker/r-devel-san images). Start by reading those rules and the corpus entries for testthat, ggplot2 and data.table in corpus/. Done when those expectations match the corpus results without regressing the testthat and tinytest layouts.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
data.table has one of the largest R test suites (inst/tests/*.Rraw driven by tests/*.R, which R CMD check runs by definition) → FAIL "no tests found (testthat or tinytest files)". Its two GitLab jobs run the check under R built with -fsanitize=address,undefined (rocker/r-devel-san) → "no sanitizers found". testthat and ggplot2 PASS "CI enforces the styler style" though styler runs only in a /style issue-comment job that no push or PR triggers.
Evidence from the corpus audit
r-lib/testthat, tidyverse/ggplot2 (and tidyverse/dplyr) / code-formatting
- kind: FALSE_POSITIVE
- actual: PASS (R): "CI enforces the styler style"
- expected: FAIL/WARN for testthat and ggplot2: styler runs only in the
stylejob ofpr-commands.yaml, which is triggered by a maintainer typing/stylein a PR comment (issue_comment), so no push or pull request is ever checked; for dplyr the PASS is right but should creditair(format-suggest.yamlrunsair format .on everypull_request_targetand fails throughreviewdog/action-suggesterwithfail_level: error), not styler. - evidence: testthat
.github/workflows/pr-commands.yaml:52:if: ${{ github.event.issue.pull_request && (github.event.comment.author_association == 'MEMBER' || ...) && startsWith(github.event.comment.body, '/style') }},:73:run: styler::style_pkg(), followed bygit commit -m 'Style'; the workflow's only trigger ison: issue_comment: types: [created]. ggplot2pr-commands.yaml:69,73identical; ggplot2 hasair.tomlbut no job runs air. Validator:ecosystems/r.py:124-137(_styler: "it enforces the style where the job fails on git diff --exit-code or commits the changes") counts the commit without looking at the job's trigger. - repro: the r-lib
pr-commands.yamlexample (onissue_comment,/styleguard,styler::style_pkg()+git commit) as the only workflow touching styler; expect no formatting enforcement. - confidence: medium (the documented rule is applied as written; the rule itself is what is wrong)
Rdatatable/data.table / tests-run
- kind: FALSE_NEGATIVE
- actual: FAIL: R: no tests found (testthat (tests/testthat/test-.R) or tinytest (inst/tinytest/test_.R) files)
- expected: PASS: data.table has one of the largest R test suites (22,016-line
inst/tests/tests.Rrawplus 11 more.Rrawfiles) run bytests/*.Rscripts, whichR CMD checkexecutes by definition (everytests/*.Rfile is a test); CI runsR CMD checkinR-CMD-check-occasional.yamland.gitlab-ci.ymlandcheck-r-packageinR-CMD-check.yaml. - evidence:
tests/main.R:2-4:require(data.table)/test.data.table() # runs the main test suite of 5,000+ tests in /inst/tests/tests.Rraw;tests/also holdsS4.R froll.R nafill.R optimize.R programming.R types.R ...;inst/tests/tests.Rraw(22016 lines). Validatorecosystems/r.pyR_TEST_FILES.path:(?:^|/)(?:tests/testthat/test[-_][^/]+|inst/tinytest/test_[^/]+)\.[Rr]$recognises only testthat and tinytest layouts. - repro:
DESCRIPTION,tests/main.Rcontainingstopifnot(foo::f() == 1), workflow withr-lib/actions/check-r-package@v2; expect tests found (R CMD check runstests/*.R). - confidence: high
Rdatatable/data.table / sanitizers
- kind: UNSUPPORTED
- actual: FAIL: no sanitizers found; enable AddressSanitizer, UndefinedBehaviorSanitizer
- expected: PASS (or at least a mention): two GitLab CI jobs run the whole check under R builds compiled with
-fsanitize=address,undefined(clang and gcc), using the R community's standard approach of a prebuilt sanitizer image (rocker/r-devel-san,rhub/*-san, here the project's ownr-devel-clang-san/r-devel-gcc-san), and fail the job on sanitizer output. - evidence:
.gitlab-ci.yml:220-222:test-lin-dev-clang-san:...image: registry.gitlab.com/rdatatable/dockerfiles/r-devel-clang-san;:227:LSAN_OPTIONS: "suppressions=$CI_PROJECT_DIR/.dev/lsan.supp";:235:# fail if R CMD check had failed or if sanitizer output found;:238-240the gcc twin;.ci/README.md:16-17documents both asclang -fsanitize=address,undefined. The flags live in the image, so only the image name (*-san,rocker/r-devel-san,rocker/r-devel-ubsan-clang) is visible. - repro:
.gitlab-ci.ymljob withimage: rocker/r-devel-sanrunningR CMD check; expect sanitizers recognised (ASan+UBSan) for the R package's native code. - confidence: medium
Found by the regression-corpus audit (235 real repositories, one or more per ecosystem profile; corpus and expected results in corpus/). Evidence is quoted from the audited checkouts at the commits pinned in corpus/projects.toml; <checkouts>/<owner>__<repo> is such a checkout.
🤖 Generated with Claude Code
- Langage dominant
- Python
- Étoiles
- 4
- Forks
- 1
- Merge moyen
- 10 h 41 min
- PR mergées (30 j)
- 79
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de cpp-best-practices/project_validator
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
cpp-best-practices/project_validator#267 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
cpp-best-practices/project_validator#263 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
cpp-best-practices/project_validator#260 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
cpp-best-practices/project_validator#259 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
cpp-best-practices/project_validator#255 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de cpp-best-practices/project_validator
Issues similaires
-
add entry to blockOuverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 65/100
StevenBlack/hosts#3299 ·
-
`garak --report` overwrites the input report when its name has no ".report"Peut-être pris @0z5a l’a pris aujourd’hui. Ouverteneeds-triage
Difficulté 2/5 Une demi-journée Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 2 jours
-
plot_graph crashes when a mesh node has no m2m edgePeut-être pris @tygvi l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
mllam/neural-lam#883 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
future-agi/future-agi#4092 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
transcript analytics: a text whose only protected spans the prose pass redacts is withheld wholeOuverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 82/100
WingedGuardian/GENesis-AGI#4641 ·
Les mainteneurs répondent en général sous 1 jour