This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/struts.git


The following commit(s) were added to refs/heads/main by this push:
     new 4e84c9a42 docs: correct stale facts in CLAUDE.md (#1857)
4e84c9a42 is described below

commit 4e84c9a426409031ca37872009dfa99bc0746c8a
Author: Lukasz Lenart <[email protected]>
AuthorDate: Sun Aug 23 09:52:43 2026 +0200

    docs: correct stale facts in CLAUDE.md (#1857)
    
    Three claims had drifted away from the repo:
    
    - Testing said "JUnit 5 with AssertJ and Mockito". There is no JUnit 5 in 
this
      repository at all — parent/pom.xml declares junit:junit:4.13.2 and there 
are
      zero org.junit.jupiter imports. ~114 classes extend XWorkTestCase (JUnit 3
      style, testXxx() naming) and ~210 use org.junit.Test. This mattered: a 
Jupiter
      @Test added to an XWorkTestCase subclass is silently never collected, so 
the
      wrong guidance produced tests that look green because they never ran.
    - Project Overview pinned "Current version: 7.2.0-SNAPSHOT" while the pom 
is on
      7.4.0-SNAPSHOT. Replaced the hardcoded number with a pointer to the pom 
plus a
      note that the -SNAPSHOT value is a placeholder, not the next release 
number.
    - Pull Requests said a Jira ticket ID is required, full stop. Doc, build 
and CI
      changes take no ticket and use conventional-commit form; recent history is
      consistently docs:/build(ci):/chore:.
    
    Also mentions .claude/skills/ alongside agents and commands.
    
    🤖 Generated by AI Assistant
---
 CLAUDE.md | 25 +++++++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)

diff --git a/CLAUDE.md b/CLAUDE.md
index f880f1ec9..f1011b717 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -2,11 +2,13 @@
 
 This file provides guidance to Claude Code (claude.ai/code) when working with 
code in this repository.
 
-For detailed procedures, use the specialized agents and commands in 
`.claude/agents/` and `.claude/commands/`.
+For detailed procedures, use the specialized agents, commands and skills in 
`.claude/agents/`, `.claude/commands/` and `.claude/skills/`.
 
 ## Project Overview
 
-Apache Struts is a mature MVC web application framework for Java (originally 
WebWork 2). Current version: **7.2.0-SNAPSHOT**. Uses OGNL for value stack 
expressions and FreeMarker for UI tag templates.
+Apache Struts is a mature MVC web application framework for Java (originally 
WebWork 2). Uses OGNL for value stack expressions and FreeMarker for UI tag 
templates.
+
+**Version**: read it from the root `pom.xml` — it is `7.4.0-SNAPSHOT` as of 
2026-08-23. Do not treat the `-SNAPSHOT` value as the next release number: the 
release version is chosen at release time from the semver impact of the 
accumulated changes, so `7.4.0-SNAPSHOT` may well ship as something else. 
Released versions are git tags like `STRUTS_7_2_1`.
 
 ### Build Commands
 
@@ -72,11 +74,26 @@ triage. [`AGENTS.md`](AGENTS.md) is a shorter LLM-facing 
wrapper around the same
 
 ## Testing
 
-Tests use JUnit 5 with AssertJ assertions and Mockito for mocking. Run with 
`mvn test -DskipAssembly`.
+Run with `mvn test -DskipAssembly`.
+
+**Tests are JUnit 4 — there is no JUnit 5 anywhere in this repo.** 
`parent/pom.xml` declares
+`junit:junit:4.13.2`; there are zero `org.junit.jupiter` imports. Two styles 
coexist:
+
+- **JUnit 3 style** — ~114 classes extend `XWorkTestCase` (which extends 
`junit.framework.TestCase`).
+  Methods must be named `testXxx()`. A Jupiter `@Test` annotation added to one 
of these **silently
+  never runs** — it does not fail, it is simply not collected.
+- **JUnit 4 style** — ~210 classes use `import org.junit.Test`.
+
+Before adding a test, open the target file and match the style already there. 
AssertJ assertions and
+Mockito mocks are both available and widely used. Introducing Jupiter is a 
build-infrastructure change
+that needs its own `WW-` ticket, never a side effect of a feature.
 
 ## Pull Requests
 
-- **Title format**: `WW-XXXX Description` (Jira ticket ID required)
+- **Title format**: `WW-XXXX Description` — a Jira ticket ID is required for 
any code change.
+  Pure documentation and build/CI changes (`SECURITY.md`, `AGENTS.md`, 
`CLAUDE.md`, `.claude/`,
+  workflows) take no ticket and use conventional-commit form instead: `docs: 
...`, `build(ci): ...`,
+  `chore: ...`
 - **Link ticket in description**: `Fixes 
[WW-XXXX](https://issues.apache.org/jira/browse/WW-XXXX)`
 - **Issue tracker**: https://issues.apache.org/jira/projects/WW
 - **Never submit a PR that fixes a suspected vulnerability.** Before opening a 
PR, verify the change is not a security patch (OGNL injection, parameter

Reply via email to