diff --git a/AGENTS.md b/AGENTS.md index 77ea18a9d4..6fe4580db4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -68,6 +68,21 @@ export WORKSPACE=$(pwd) - **Aggregator module**: `com.avaloq.tools.ddk.xtext.test` - **UI tests**: Require virtual display (xvfb on Linux) or `-XstartOnFirstThread` (macOS) +### macOS developer setup + +SWT on Cocoa requires the Display to be created on the main thread. UI tests +therefore need `-XstartOnFirstThread`. There are two contexts: + +- **`mvn verify` / CI**: the `macosx` profile in `ddk-parent/pom.xml` (activated + on `family=mac`) adds the flag automatically. No setup required. +- **Running launches from Eclipse**: add `-XstartOnFirstThread` to your JRE's + default VM arguments — `Window > Preferences > Java > Installed JREs > [your + JDK] > Edit > Default VM arguments`. PDE launches with `append.args=true` + inherit this on macOS only. The flag is not hardcoded in the `.launch` files + because the JVM on Windows and Linux rejects it as an "Unrecognized VM + option". This matches Eclipse Platform's own UI test launches (which omit + the flag and rely on the same JRE-default-args mechanism). + ### Aggregator pattern — important The project runs **all tests through one aggregator module**, not per-`.test`-module. `ddk-parent/pom.xml` sets `true` on `tycho-surefire-plugin` globally; only `com.avaloq.tools.ddk.xtext.test` overrides it with its own full tycho-surefire configuration. Inside that module, `src/com/avaloq/tools/ddk/xtext/AllTests.java` is a JUnit 5 `@Suite` that `@SelectClasses` from ~14 per-module `*TestSuite` classes (`ExportTestSuite`, `CheckCoreTestSuite`, `TypeSystemTestSuite`, `CheckUiTestSuite`, etc.). Those other `.test` bundles are on `xtext.test`'s OSGi classpath via `Require-Bundle`, so their test classes get discovered and executed inside the single Eclipse runtime spun up for `xtext.test`. diff --git a/ddk-parent/pom.xml b/ddk-parent/pom.xml index a32edb44c7..2f0db41189 100644 --- a/ddk-parent/pom.xml +++ b/ddk-parent/pom.xml @@ -425,5 +425,19 @@ x86_64 + + macosx + + + mac + + + + macosx + cocoa + aarch64 + ${runtime.javaOptions} -XstartOnFirstThread + +