Skip to content

JSON simple

JSON simple #793

Workflow file for this run

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
name: NetBeans
on:
push:
branches:
- 'master'
- 'delivery'
- 'release*'
- 'php84-property-hooks-test'
pull_request:
# unlocked event is used as super secret restart button
types: [opened, synchronize, unlocked]
# Allows you to run this workflow manually from the Actions tab in GitHub UI
# keep in mind this will have ALL tests enabled
workflow_dispatch:
# cancel other PR workflow run in the same head-base group if it exists (e.g. during PR syncs)
# if this is not a PR run (no github.head_ref and github.base_ref defined), use an UID as group
concurrency:
group: ${{ github.head_ref || github.run_id }}-${{ github.base_ref }}
cancel-in-progress: true
defaults:
run:
shell: bash
env:
# note to self: don't remove the minus again
OPTS: >-
-Dtest-unit-sys-prop.ignore.random.failures=true
# what to build and test, see nbbuild/cluster.properties
CLUSTER_CONFIG: 'full'
# default java distribution used by the setup-java action
# see https://github.com/actions/setup-java#supported-distributions
DEFAULT_JAVA_DISTRIBUTION: 'zulu'
# labels are mapped to env vars for pipeline customization. If this is not a PR, (almost) everything will run, but with a reduced matrix.
# note: env vars don't work in the job's 'if' field but do work within jobs ( https://github.com/actions/runner/issues/1189 ), the whole expression must be duplicated
# labels for special commands:
# 'ci:all-tests' enables everything
# 'ci:no-build' disables the build job (and test jobs too)
# 'ci:dev-build' produces an artifact containing a runnable NetBeans zip distribution
# 'Java' label
test_java: ${{ contains(github.event.pull_request.labels.*.name, 'Java') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'JavaFX' label
test_javafx: ${{ contains(github.event.pull_request.labels.*.name, 'JavaFX') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'JavaDoc' or 'API Change' labels
test_javadoc: ${{ contains(github.event.pull_request.labels.*.name, 'JavaDoc') || contains(github.event.pull_request.labels.*.name, 'API Change') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'JavaScript' label
test_javascript: ${{ contains(github.event.pull_request.labels.*.name, 'JavaScript') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'PHP' label
test_php: ${{ contains(github.event.pull_request.labels.*.name, 'PHP') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'Groovy' label
test_groovy: ${{ contains(github.event.pull_request.labels.*.name, 'Groovy') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'Rust' label
test_rust: ${{ contains(github.event.pull_request.labels.*.name, 'Rust') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'Platform' label
test_platform: ${{ contains(github.event.pull_request.labels.*.name, 'Platform') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'LSP' label for enabling Language Server Protocol tests
# 'Gradle' or 'Maven' will activate lsp tests too due to test dependencies on project API (ProjectViewTest, LspBrokenReferencesImplTest, ...)
test_lsp: ${{ contains(github.event.pull_request.labels.*.name, 'LSP') || contains(github.event.pull_request.labels.*.name, 'Gradle') || contains(github.event.pull_request.labels.*.name, 'Maven') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'GraalVM' label for tests requirering GraalVM
test_graalvm: ${{ contains(github.event.pull_request.labels.*.name, 'GraalVM') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'VSCode Extension' label for building and testing the VSCode Extension
test_vscode_extension: ${{ contains(github.event.pull_request.labels.*.name, 'VSCode Extension') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'Ant', 'Gradle', 'Maven' and 'MX' labels trigger the build-tools job
test_build_tools: ${{ contains(github.event.pull_request.labels.*.name, 'Ant') || contains(github.event.pull_request.labels.*.name, 'Gradle') || contains(github.event.pull_request.labels.*.name, 'Maven') || contains(github.event.pull_request.labels.*.name, 'MX') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'git', 'subversion' and 'mercurial' labels trigger the versioning job
test_versioning: ${{ contains(github.event.pull_request.labels.*.name, 'git') || contains(github.event.pull_request.labels.*.name, 'subversion') || contains(github.event.pull_request.labels.*.name, 'mercurial') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'Java EE/Jakarta EE', 'Micronaut' and 'enterprise' labels trigger the enterprise job
test_enterprise: ${{ contains(github.event.pull_request.labels.*.name, 'Java EE/Jakarta EE') || contains(github.event.pull_request.labels.*.name, 'Micronaut') || contains(github.event.pull_request.labels.*.name, 'enterprise') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'JavaScript', 'TypeScript', 'HTML', 'CSS', 'CSL' and 'web' labels the trigger web job
test_web: ${{ contains(github.event.pull_request.labels.*.name, 'JavaScript') || contains(github.event.pull_request.labels.*.name, 'TypeScript') || contains(github.event.pull_request.labels.*.name, 'HTML') || contains(github.event.pull_request.labels.*.name, 'CSS') || contains(github.event.pull_request.labels.*.name, 'CSL') || contains(github.event.pull_request.labels.*.name, 'web') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'tests' label activates an extra step which builds all tests
test_tests: ${{ contains(github.event.pull_request.labels.*.name, 'tests') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
jobs:
# primary build job, most other jobs use the artifact produced here
# artifact is only produced once in the matrix
base-build:
name: Build Clusters on JDK ${{ matrix.java }}
if: contains(github.event.pull_request.labels.*.name, 'ci:no-build') == false
runs-on: ubuntu-latest
timeout-minutes: 40
strategy:
matrix:
java: [ '17', '21', '24-ea' ]
exclude:
- java: ${{ github.event_name == 'pull_request' && 'nothing' || '21' }}
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Checkout ${{ github.ref }} ( ${{ github.sha }} )
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: false
show-progress: false
- name: Caching dependencies
uses: actions/cache@v4
with:
path: ~/.hgexternalcache
key: ${{ runner.os }}-${{ hashFiles('*/external/binaries-list', '*/*/external/binaries-list') }}
restore-keys: ${{ runner.os }}-
- name: Build NetBeans
run: ant $OPTS -quiet -Dcluster.config=$CLUSTER_CONFIG build-nozip
- name: Prepare Artifact
if: ${{ matrix.java == '17' }}
run: tar -I 'zstd -9 -T0' -cf /tmp/build.tar.zst --exclude ".git" .
- name: Upload Workspace
if: ${{ (matrix.java == '17') && success() }}
uses: actions/upload-artifact@v4
with:
name: build
path: /tmp/build.tar.zst
compression-level: 0
retention-days: 2
if-no-files-found: error
- name: Create Dev Build
if: ${{ matrix.java == '17' && contains(github.event.pull_request.labels.*.name, 'ci:dev-build') && success() }}
run: ant $OPTS -quiet -Dcluster.config=$CLUSTER_CONFIG zip-cluster-config
- name: Upload Dev Build
if: ${{ matrix.java == '17' && contains(github.event.pull_request.labels.*.name, 'ci:dev-build') && success() }}
uses: actions/upload-artifact@v4
with:
name: dev-build_${{github.event.pull_request.number || github.run_id}}
path: nbbuild/NetBeans-*.zip
compression-level: 0
retention-days: 7
if-no-files-found: error
# nb-javac-smokecheck:
# name: "NetBeans on nb-javac"
# # Run test job only when the 'nb-javac' label is added
# if: ${{ contains(github.event.pull_request.labels.*.name, 'nb-javac') }}
# runs-on: ubuntu-latest
# steps:
#
# - name: Checkout ${{ github.ref }} ( ${{ github.sha }} )
# uses: actions/checkout@v4
# with:
# persist-credentials: false
# submodules: false
# show-progress: false
#
# - name: Set up JDK 17
# uses: actions/setup-java@v4
# with:
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
# java-version: 17
# - name: Caching dependencies
# uses: actions/cache/restore@v4
# with:
# path: ~/.hgexternalcache
# key: ${{ runner.os }}-${{ hashFiles('*/external/binaries-list', '*/*/external/binaries-list') }}
# restore-keys: ${{ runner.os }}-
# - name: Download External Binaries
# run: ant $OPTS download-all-extbins
# - name: Build NetBeans with nb-javac
# run: ant $OPTS build -Dnbjavac.class.path=java/libs.javacapi/external/*.jar
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
# - name: Test with Commit Validation
# run: ant $OPTS commit-validation -Dnbjavac.class.path=java/libs.javacapi/external/*.jar
# secondary jobs
commit-validation:
name: CV on ${{ matrix.os }}/JDK ${{ matrix.java }}
needs: base-build
runs-on: ${{ matrix.os }}
timeout-minutes: 40
strategy:
matrix:
os: [ ubuntu-latest, macos-latest, windows-latest ]
java: [ 17 ]
include:
- os: ubuntu-latest
java: 23
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
if: contains(matrix.os, 'ubuntu') && success()
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
# tar on MacOS is not aware of zstd "tar --zstd -xf build.tar.zst" doesn't work
- name: Extract on MacOS
if: contains(matrix.os, 'macos') && success()
run: unzstd -c build.tar.zst | tar -x
- name: Extract on Linux/Windows
if: contains(matrix.os, 'macos') == false && success()
run: tar --zstd -xf build.tar.zst
- name: platform/masterfs
run: .github/retry.sh ant $OPTS -f platform/masterfs test
- name: Commit Validation tests
run: .github/retry.sh ant $OPTS -Dcluster.config=$CLUSTER_CONFIG commit-validation
- name: platform/core.network
run: ant $OPTS -f platform/core.network test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: |
./*/*/build/test/*/results/TEST-*.xml
./nbbuild/build/test/commit-validation/results/TEST-*.xml
# commit related checks - some steps run even when the build is dissabled
# paperwork:
# name: Check Paperwork on Linux/JDK ${{ matrix.java }}
# needs: base-build
# if: ${{ !cancelled() }}
# runs-on: ubuntu-latest
# timeout-minutes: 60
# env:
# ANT_OPTS: -Dmetabuild.jsonurl=https://raw.githubusercontent.com/apache/netbeans-jenkins-lib/master/meta/netbeansrelease.json
# strategy:
# matrix:
# java: [ '17' ]
# steps:
#
# - name: Check PR labels
# if: ${{ github.event_name == 'pull_request' && join(github.event.pull_request.labels.*.name) == '' }}
# run: |
# echo "::error::PRs must be labeled, see: https://cwiki.apache.org/confluence/display/NETBEANS/PRs+and+You+-+A+reviewer+Guide"
# exit 1
#
# - name: Checkout ${{ github.ref }} ( ${{ github.sha }} )
# if: ${{ !cancelled() }}
# uses: actions/checkout@v4
# with:
# persist-credentials: false
# submodules: false
# show-progress: false
#
# - name: Set up JDK 23 for scripts
# if: ${{ github.event_name == 'pull_request' && !cancelled() }}
# uses: actions/setup-java@v4
# with:
# java-version: 23
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Check Commit Headers
# if: ${{ github.event_name == 'pull_request' && !cancelled() }}
# run: java --enable-preview .github/scripts/CommitHeaderChecker.java ${{ github.server_url }}/${{ github.repository }}/pull/${{ github.event.pull_request.number }}
#
# - name: Set up JDK ${{ matrix.java }}
# if: ${{ !cancelled() }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Check line endings and verify RAT report
# if: ${{ !cancelled() }}
# run: |
# nbbuild/travis/check-line-endings.sh
# ant $OPTS -quiet build-source-config
# mkdir scratch && cd scratch
# unzip -qq ../nbbuild/build/release-src*
# ant $OPTS -quiet rat -Drat-report.haltonfailure=true
#
# - name: Clean Workspace
# if: ${{ !cancelled() }}
# run: cd ..; rm -Rf netbeans; mkdir netbeans
#
# - name: Download Build
# if: ${{ needs.base-build.result == 'success' && !cancelled() }}
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# if: ${{ needs.base-build.result == 'success' && !cancelled() }}
# run: tar --zstd -xf build.tar.zst
#
# - name: Verify libs and licenses
# if: ${{ needs.base-build.result == 'success' && !cancelled() }}
# run: ant $OPTS verify-libs-and-licenses -Dverify-libs-and-licenses.haltonfailure=true
#
# - name: Run check-sigtests-release
# if: ${{ needs.base-build.result == 'success' && !cancelled() }}
# run: ant $OPTS -quiet check-sigtests-release -Dfail.on.error=true
#
# - name: Run gen-sigtests-release
# if: ${{ needs.base-build.result == 'success' && !cancelled() }}
# run: ant $OPTS -quiet gen-sigtests-release
#
#
# build-system-test:
# name: Build-System / Misc Tests on Linux/JDK ${{ matrix.java }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 100
# strategy:
# matrix:
# java: [ '17' ]
# fail-fast: false
# steps:
#
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: Test Netbeans Build System
# run: ant $OPTS -Dcluster.config=$CLUSTER_CONFIG localtest
#
# - name: harness/o.n.insane
# run: ant $OPTS -f harness/o.n.insane test
#
# - name: harness/apisupport.harness
# run: ant $OPTS -f harness/apisupport.harness test
#
# - name: harness/harness/nbjunit
# run: ant $OPTS -f harness/nbjunit test
#
# - name: harness/jellytools.platform
# run: ant $OPTS -f harness/jellytools.platform test -Dtest.config=stable
#
# - name: ergonomics/ide.ergonomics
# run: ant $OPTS -f ergonomics/ide.ergonomics test -Dtest.config=commit
#
# - name: nb/deadlock.detector
# run: ant $OPTS -f nb/deadlock.detector test
#
# - name: nb/ide.branding
# run: ant $OPTS -f nb/ide.branding test
#
# - name: nb/o.n.upgrader
# run: ant $OPTS -f nb/o.n.upgrader test
#
## - name: nb/updatecenters
## run: ant $OPTS -f nb/updatecenters test
#
# # 5-6 min
# - name: Build nbms
# run: ant $OPTS build-nbms
#
# # runs only in PRs if requested; ~18 min
# - name: Build all Tests
# if: env.test_tests == 'true' && github.event_name == 'pull_request' && success()
# run: ant -quiet -Dcluster.config=$CLUSTER_CONFIG test -Dtest.includes=NoTestsJustBuild
#
# # 13-14 min for javadoc; JDK version must be synced with nb-javac
# - name: Set up JDK 23 for javadoc
# if: env.test_javadoc == 'true' && success()
# uses: actions/setup-java@v4
# with:
# java-version: 23
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Build javadoc
# if: env.test_javadoc == 'true' && success()
# run: ant $OPTS build-javadoc
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
# build-from-src-zip:
# name: Build ${{ matrix.config }} from src.zip on JDK ${{ matrix.java }}
# # equals env.test_platform == 'true' || test_vscode_extension == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'Platform') || contains(github.event.pull_request.labels.*.name, 'VSCode Extension') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# java: [ '17' ]
# config: [ 'platform', 'release' ]
# fail-fast: false
# steps:
#
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: Restoring Cache
# uses: actions/cache/restore@v4
# with:
# path: ~/.hgexternalcache
# key: ${{ runner.os }}-${{ hashFiles('*/external/binaries-list', '*/*/external/binaries-list') }}
# restore-keys: ${{ runner.os }}-
#
# - name: Create ${{ matrix.config }}-src zip
# run: ant $OPTS -quiet build-source-config -Dcluster.config=${{ matrix.config }}
#
# - name: Extract ${{ matrix.config }}-src zip
# run: |
# mkdir tmpbuild && cd tmpbuild
# unzip -qq ../nbbuild/build/${{ matrix.config }}-src*
#
# - name: Build from ${{ matrix.config }}-src zip
# run: |
# cd tmpbuild
# ant $OPTS -quiet build -Dcluster.config=${{ matrix.config }}
#
# # extra round for VSCodeExt which is built with 'release' config
# - name: Set up node
# if: ${{ (matrix.config == 'release') && success() }}
# uses: actions/setup-node@v4
# with:
# node-version: 18
#
# - name: Build NBVSCodeExt from ${{ matrix.config }}-src zip
# if: ${{ (matrix.config == 'release') && success() }}
# run: |
# cd tmpbuild/java/java.lsp.server
# ant $OPTS build-vscode-ext -D3rdparty.modules=.*externalcodeformatter.*
# ide-modules-test:
# name: IDE Modules on Linux/JDK ${{ matrix.java }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# java: [ '17' ]
# fail-fast: false
# steps:
#
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: apisupport.project
# run: ant $OPTS -f apisupport/apisupport.project test
#
# - name: apisupport.refactoring
# run: ant $OPTS -f apisupport/apisupport.refactoring test
#
# - name: apisupport.wizards
# run: ant $OPTS -f apisupport/apisupport.wizards test
#
# - name: timers
# run: ant $OPTS -f apisupport/timers test
#
# - name: ide/api.xml
# run: ant $OPTS -f ide/api.xml test
#
# - name: ide/api.xml.ui
# run: ant $OPTS -f ide/api.xml.ui test
#
# - name: ide/bugtracking
# run: .github/retry.sh ant $OPTS -f ide/bugtracking test
#
# - name: ide/bugtracking.bridge
# run: .github/retry.sh ant $OPTS -f ide/bugtracking.bridge test
#
# - name: ide/bugtracking.commons
# run: ant $OPTS -f ide/bugtracking.commons test
#
## - name: ide/bugzilla
## run: ant $OPTS -f ide/bugzilla test
#
# - name: ide/code.analysis
# run: ant $OPTS -f ide/code.analysis test
#
# - name: ide/core.ide
# run: ant $OPTS -f ide/core.ide test
#
# - name: ide/db
# run: .github/retry.sh ant $OPTS -f ide/db test
#
# - name: ide/db.dataview
# run: ant $OPTS -f ide/db.dataview test
#
# - name: ide/db.sql.editor
# run: ant $OPTS -f ide/db.sql.editor test
#
# - name: ide/docker.api
# run: ant $OPTS -f ide/docker.api test
#
# - name: ide/docker.ui
# run: ant $OPTS -f ide/docker.ui test
#
# - name: ide/editor.bookmarks
# run: ant $OPTS -f ide/editor.bookmarks test
#
## - name: ide/editor.bracesmatching
## run: ant $OPTS -f ide/editor.bracesmatching test
#
# - name: ide/editor.document
# run: ant $OPTS -f ide/editor.document test
#
# - name: ide/editor.fold
# run: ant $OPTS -f ide/editor.fold test
#
# - name: ide/editor.fold.nbui
# run: ant $OPTS -f ide/editor.fold.nbui test
#
# - name: ide/editor.guards
# run: ant $OPTS -f ide/editor.guards test
#
# - name: ide/editor.indent
# run: ant $OPTS -f ide/editor.indent test
#
# - name: ide/editor.indent.project
# run: ant $OPTS -f ide/editor.indent.project test
#
# - name: ide/editor.macros
# run: ant $OPTS -f ide/editor.macros test
#
# - name: ide/editor.search
# run: ant $OPTS -f ide/editor.search test
#
# - name: ide/editor.settings
# run: ant $OPTS -f ide/editor.settings test
#
# - name: ide/editor.settings.storage
# run: .github/retry.sh ant $OPTS -f ide/editor.settings.storage test
#
# - name: ide/editor.structure
# run: ant $OPTS -f ide/editor.structure test
#
# - name: ide/editor.tools.storage
# run: ant $OPTS -f ide/editor.tools.storage test
#
# - name: ide/editor.util
# run: ant $OPTS -f ide/editor.util test
#
# - name: ide/extbrowser
# run: ant $OPTS -f ide/extbrowser test
#
# - name: ide/extexecution.base
# run: ant $OPTS -f ide/extexecution.base test
#
# - name: ide/gsf.testrunner.ui
# run: ant $OPTS -f ide/gsf.testrunner.ui test
#
# - name: ide/httpserver
# run: ant $OPTS -f ide/httpserver test
#
# - name: ide/hudson
# run: ant $OPTS -f ide/hudson test
#
# - name: ide/hudson.git
# run: ant $OPTS -f ide/hudson.git test
#
# - name: ide/hudson.mercurial
# run: ant $OPTS -f ide/hudson.mercurial test
#
# - name: ide/hudson.subversion
# run: ant $OPTS -f ide/hudson.subversion test
#
# - name: ide/hudson.tasklist
# run: ant $OPTS -f ide/hudson.tasklist test
#
# - name: ide/hudson.ui
# run: ant $OPTS -f ide/hudson.ui test
#
# - name: ide/javascript2.debug
# run: ant $OPTS -f ide/javascript2.debug test
#
# - name: ide/languages.hcl
# run: ant $OPTS -f ide/languages.hcl test
#
# - name: ide/languages.toml
# run: ant $OPTS -f ide/languages.toml test
#
# - name: ide/languages.yaml
# run: ant $OPTS -f ide/languages.yaml test
#
# - name: ide/lexer
# run: ant $OPTS -f ide/lexer test
#
# - name: ide/lexer.antlr4
# run: ant $OPTS -f ide/lexer.antlr4 test
#
# - name: ide/lib.terminalemulator
# run: ant $OPTS -f ide/lib.terminalemulator test
#
# - name: ide/libs.freemarker
# run: ant $OPTS -f ide/libs.freemarker test
#
# - name: ide/libs.graalsdk
# run: ant $OPTS -f ide/libs.graalsdk test
#
## - name: ide/localhistory
## run: ant $OPTS -f ide/localhistory test
#
# - name: ide/libs.truffleapi
# run: ant $OPTS -f ide/libs.truffleapi test
#
# - name: ide/notifications
# run: .github/retry.sh ant $OPTS -f ide/notifications test
#
# - name: ide/o.openidex.util
# run: ant $OPTS -f ide/o.openidex.util test
#
# - name: ide/options.editor
# run: .github/retry.sh ant $OPTS -f ide/options.editor test
#
## - name: ide/parsing.api
## run: ant $OPTS -f ide/parsing.api test
#
## - name: ide/parsing.indexing
## run: ant $OPTS -f ide/parsing.indexing test
#
# - name: ide/parsing.lucene
# run: ant $OPTS -f ide/parsing.lucene test
#
# - name: ide/project.libraries
# run: ant $OPTS -f ide/project.libraries test
#
# - name: ide/project.libraries.ui
# run: ant $OPTS -f ide/project.libraries.ui test
#
# - name: ide/projectapi
# run: ant $OPTS -f ide/projectapi test
#
# - name: ide/projectapi.nb
# run: ant $OPTS -f ide/projectapi.nb test
#
# - name: ide/projectuiapi.base
# run: ant $OPTS -f ide/projectuiapi.base test
#
# - name: ide/refactoring.api
# run: ant $OPTS -f ide/refactoring.api test
#
# - name: ide/schema2beans
# run: ant $OPTS -f ide/schema2beans test
#
# - name: ide/server
# run: ant $OPTS -f ide/server test
#
# - name: ide/spellchecker
# run: ant $OPTS -f ide/spellchecker test
#
# - name: ide/spi.editor.hints
# run: ant $OPTS -f ide/spi.editor.hints test
#
## - name: ide/spi.palette
## run: ant $OPTS -f ide/spi.palette test
#
# - name: ide/spi.tasklist
# run: ant $OPTS -f ide/spi.tasklist test
#
# - name: ide/tasklist.ui
# run: ant $OPTS -f ide/tasklist.ui test
#
# - name: ide/team.commons
# run: ant $OPTS -f ide/team.commons test
#
# - name: ide/textmate.lexer
# run: ant $OPTS -f ide/textmate.lexer test
#
# - name: ide/terminal.nb
# run: ant $OPTS -f ide/terminal.nb test
#
# - name: ide/utilities
# run: ant $OPTS -f ide/utilities test
#
# - name: ide/web.common
# run: ant $OPTS -f ide/web.common test
#
# - name: ide/web.common.ui
# run: ant $OPTS -f ide/web.common.ui test
#
# - name: ide/web.webkit.debugging
# run: ant $OPTS -f ide/web.webkit.debugging test
#
# - name: ide/xml
# run: ant $OPTS -f ide/xml test
#
# - name: ide/xml.axi
# run: ant $OPTS -f ide/xml.axi test
#
# - name: ide/xml.catalog
# run: ant $OPTS -f ide/xml.catalog test-unit
#
# - name: ide/xml.core
# run: ant $OPTS -f ide/xml.core test
#
# - name: ide/xml.lexer
# run: ant $OPTS -f ide/xml.lexer test
#
# - name: ide/xml.multiview
# run: ant $OPTS -f ide/xml.multiview test
#
# - name: ide/xml.retriever
# run: ant $OPTS -f ide/xml.retriever test
#
# - name: ide/xml.schema.completion
# run: ant $OPTS -f ide/xml.schema.completion test
#
# - name: ide/xml.schema.model
# run: ant $OPTS -f ide/xml.schema.model test
#
# - name: ide/xml.text
# run: ant $OPTS -f ide/xml.text test
#
# - name: ide/xml.text.obsolete90
# run: ant $OPTS -f ide/xml.text.obsolete90 test
#
# - name: ide/xml.wsdl.model
# run: .github/retry.sh ant $OPTS -f ide/xml.wsdl.model test
#
# - name: ide/xml.xam
# run: ant $OPTS -f ide/xml.xam test
#
# - name: ide/xml.xdm
# run: ant $OPTS -f ide/xml.xdm test
#
# - name: ide/xsl
# run: ant $OPTS -f ide/xsl test
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# build-tools:
# name: Build-Tools on Linux/JDK ${{ matrix.java }}
# # label triggers: Ant, Gradle, Maven, MX
# if: ${{ contains(github.event.pull_request.labels.*.name, 'Ant') || contains(github.event.pull_request.labels.*.name, 'Gradle') || contains(github.event.pull_request.labels.*.name, 'Maven') || contains(github.event.pull_request.labels.*.name, 'MX') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 50
# strategy:
# matrix:
# java: [ '17', '21', '23' ]
# exclude:
# - java: ${{ github.event_name == 'pull_request' && 'nothing' || '21' }}
# fail-fast: false
# steps:
#
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: java/maven
# run: ant $OPTS -f java/maven test
#
# - name: java/maven.embedder
# run: ant $OPTS -f java/maven.embedder test
#
# - name: java/maven.grammar
# run: ant $OPTS -f java/maven.grammar test
#
# - name: java/maven.hints
# run: ant $OPTS -f java/maven.hints test
#
## - name: java/maven.htmlui
## run: ant $OPTS -f java/maven.htmlui test
#
# - name: java/maven.indexer
# run: ant $OPTS -f java/maven.indexer test
#
# - name: java/maven.refactoring
# run: ant $OPTS -f java/maven.refactoring test
#
# - name: java/maven.junit
# run: ant $OPTS -f java/maven.junit test
#
# - name: java/maven.model
# run: ant $OPTS -f java/maven.model test
#
# - name: java/maven.osgi
# run: ant $OPTS -f java/maven.osgi test
#
# - name: java/api.maven
# run: ant $OPTS -f java/api.maven test
#
# - name: maven.apisupport
# run: ant $OPTS -f apisupport/maven.apisupport test
#
# - name: java/hudson.maven
# run: ant $OPTS -f java/hudson.maven test
#
# - name: ide/project.ant
# run: ant $OPTS -f ide/project.ant test
#
# - name: ide/project.ant.compat8
# run: ant $OPTS -f ide/project.ant.compat8 test
#
# - name: ide/project.ant.ui
# run: ant $OPTS -f ide/project.ant.ui test
#
## - name: java/ant.debugger
## run: ant $OPTS -f java/ant.debugger test
#
# - name: java/ant.freeform
# run: ant $OPTS -f java/ant.freeform test
#
## - name: java/ant.grammar
## run: ant $OPTS -f java/ant.grammar test
#
# # TODO next are JDK 21+ incompatibe steps
# - name: java/java.mx.project
# if: ${{ matrix.java == '17' }}
# run: .github/retry.sh ant $OPTS -f java/java.mx.project test
#
# - name: java/gradle.java
# if: ${{ matrix.java == '17' }}
# run: .github/retry.sh ant $OPTS -f java/gradle.java test
#
# - name: extide/gradle
# if: ${{ matrix.java == '17' }}
# run: ant $OPTS -f extide/gradle test
#
# - name: java/gradle.dependencies
# if: ${{ matrix.java == '17' }}
# run: ant $OPTS -f java/gradle.dependencies test
#
# - name: extide/o.apache.tools.ant.module
# if: ${{ matrix.java == '17' }}
# run: ant $OPTS -f extide/o.apache.tools.ant.module test
#
# - name: apisupport.ant
# if: ${{ matrix.java == '17' }}
# run: ant $OPTS -f apisupport/apisupport.ant test
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# platform-modules-test1:
# name: Platform Modules batch1 on Linux/JDK ${{ matrix.java }} (some on 8)
# # equals env.test_platform == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'Platform') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# java: [ '17' ]
# fail-fast: false
# steps:
#
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: platform/api.htmlui
# run: .github/retry.sh ant $OPTS -f platform/api.htmlui test
#
# - name: platform/htmlui
# run: .github/retry.sh ant $OPTS -f platform/htmlui test
#
# - name: platform/api.intent
# run: ant $OPTS -f platform/api.intent test
#
# - name: platform/api.io
# run: ant $OPTS -f platform/api.io test
#
# - name: platform/api.progress
# run: ant $OPTS -f platform/api.progress test
#
# - name: platform/api.progress.nb
# run: ant $OPTS -f platform/api.progress.nb test
#
# - name: platform/api.scripting
# run: ant $OPTS -f platform/api.scripting test
#
# - name: platform/api.search
# run: ant $OPTS -f platform/api.search test
#
# - name: platform/api.visual
# run: ant $OPTS -f platform/api.visual test
#
# - name: platform/applemenu
# run: ant $OPTS -f platform/applemenu test
#
# - name: platform/autoupdate.cli
# run: ant $OPTS -f platform/autoupdate.cli test
#
# - name: platform/autoupdate.services
# run: ant $OPTS -f platform/autoupdate.services test
#
# - name: platform/autoupdate.ui
# run: ant $OPTS -f platform/autoupdate.ui test
#
# - name: platform/core.execution
# run: ant $OPTS -f platform/core.execution test
#
# - name: platform/core.io.ui
# run: ant $OPTS -f platform/core.io.ui test
#
# - name: platform/core.kit
# run: ant $OPTS -f platform/core.kit test
#
# - name: platform/core.multiview
# run: ant $OPTS -f platform/core.multiview test
#
# - name: platform/core.netigso
# run: ant $OPTS -f platform/core.netigso test
#
# - name: platform/core.osgi
# run: ant $OPTS -f platform/core.osgi test
#
# - name: platform/core.output2
# run: ant $OPTS -f platform/core.output2 test
#
# - name: platform/core.startup
# run: .github/retry.sh ant $OPTS -f platform/core.startup test
#
# - name: platform/core.startup.base
# run: ant $OPTS -f platform/core.startup.base test
#
# - name: platform/core.ui
# run: ant $OPTS -f platform/core.ui test
#
# - name: platform/core.windows
# run: .github/retry.sh ant $OPTS -f platform/core.windows test
#
# - name: platform/editor.mimelookup
# run: ant $OPTS -f platform/editor.mimelookup test
#
# - name: platform/editor.mimelookup.impl
# run: ant $OPTS -f platform/editor.mimelookup.impl test
#
# - name: platform/favorites
# run: .github/retry.sh ant $OPTS -f platform/favorites test
#
# - name: platform/javahelp
# run: ant $OPTS -f platform/javahelp test-unit
#
# - name: platform/keyring.fallback
# run: ant $OPTS -f platform/keyring.fallback test
#
# - name: platform/keyring.impl
# run: ant $OPTS -f platform/keyring.impl test
#
# - name: platform/libs.junit4
# run: ant $OPTS -f platform/libs.junit4 test
#
# - name: platform/o.n.core
# run: ant $OPTS -f platform/o.n.core test-unit
#
# - name: platform/o.n.swing.outline
# run: ant $OPTS -f platform/o.n.swing.outline test
#
# - name: platform/o.n.swing.tabcontrol
# run: ant $OPTS -f platform/o.n.swing.tabcontrol test
#
# - name: platform/lib.uihandler
# run: .github/retry.sh ant $OPTS -f platform/lib.uihandler test
#
# - name: platform/openide.text
# run: .github/retry.sh ant $OPTS -f platform/openide.text test
#
# - name: platform/openide.util.ui
# run: ant $OPTS -f platform/openide.util.ui test
#
# # isolation required by netbinox tests
# - name: isolate platform build
# run: |
# cp -r platform/ _platform/ && cp -r harness/ _harness/ && cp nbbuild/build/nbantext.jar .
# cp -r nbbuild/netbeans/platform/ _nb_platform/ && cp -r nbbuild/netbeans/harness/ _nb_harness/
# ant $OPTS -quiet clean && rm -Rf platform/ && rm -Rf harness/
# mkdir nbbuild/build && mkdir nbbuild/netbeans
# mv _platform/ platform/ && mv _harness/ harness/ && mv nbantext.jar nbbuild/build/
# mv _nb_platform/ nbbuild/netbeans/platform/ && mv _nb_harness/ nbbuild/netbeans/harness/
#
# - name: platform/netbinox
# run: ant $OPTS -f platform/netbinox test -Dtest.config=stableBTD
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# platform-modules-test2:
# name: Platform Modules batch2 on Linux/JDK ${{ matrix.java }}
# # equals env.test_platform == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'Platform') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 90
# strategy:
# matrix:
# java: [ '17' ]
# fail-fast: false
# steps:
#
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: platform/openide.actions
# run: ant $OPTS -f platform/openide.actions test
#
# - name: platform/openide.awt
# run: ant $OPTS -f platform/openide.awt test
#
# - name: platform/openide.compat
# run: ant $OPTS -f platform/openide.compat test
#
# - name: platform/openide.dialogs
# run: ant $OPTS -f platform/openide.dialogs test
#
# - name: platform/openide.execution
# run: ant $OPTS -f platform/openide.execution test
#
# - name: platform/openide.execution.compat8
# run: ant $OPTS -f platform/openide.execution.compat8 test
#
# - name: platform/openide.explorer
# run: .github/retry.sh ant $OPTS -f platform/openide.explorer test
#
# - name: platform/openide.filesystems
# run: ant $OPTS -f platform/openide.filesystems test
#
# - name: platform/openide.filesystems.compat8
# run: ant $OPTS -f platform/openide.filesystems.compat8 test
#
# - name: platform/openide.filesystems.nb
# run: ant $OPTS -f platform/openide.filesystems.nb test
#
# - name: platform/openide.io
# run: ant $OPTS -f platform/openide.io test
#
# - name: platform/openide.loaders
# run: ant $OPTS -f platform/openide.loaders test
#
# - name: platform/openide.modules
# run: ant $OPTS -f platform/openide.modules test
#
# - name: platform/openide.nodes
# run: ant $OPTS -f platform/openide.nodes test
#
# - name: platform/openide.options
# run: ant $OPTS -f platform/openide.options test
#
# - name: platform/openide.util
# run: ant $OPTS -f platform/openide.util test
#
# - name: platform/openide.util.lookup
# run: ant $OPTS -f platform/openide.util.lookup test
#
# - name: platform/openide.windows
# run: ant $OPTS -f platform/openide.windows test
#
# - name: platform/options.api
# run: ant $OPTS -f platform/options.api test-unit
#
# - name: platform/options.keymap
# run: ant $OPTS -f platform/options.keymap test
#
# - name: platform/print
# run: ant $OPTS -f platform/print test
#
# - name: platform/progress.ui
# run: ant $OPTS -f platform/progress.ui test
#
# - name: platform/queries
# run: ant $OPTS -f platform/queries test
#
# - name: platform/sampler
# run: ant $OPTS -f platform/sampler test
#
# - name: platform/sendopts
# run: ant $OPTS -f platform/sendopts test
#
# - name: platform/settings
# run: .github/retry.sh ant $OPTS -f platform/settings test
#
# - name: platform/spi.actions
# run: ant $OPTS -f platform/spi.actions test
#
# - name: platform/spi.quicksearch
# run: ant $OPTS -f platform/spi.quicksearch test
#
# - name: platform/templatesui
# run: ant $OPTS -f platform/templatesui test
#
# - name: platform/uihandler
# run: .github/retry.sh ant $OPTS -f platform/uihandler test
#
# - name: platform/o.n.bootstrap
# run: ant $OPTS -f platform/o.n.bootstrap test
#
# - name: platform/templates
# run: ant $OPTS -f platform/templates test
#
# - name: platform/api.templates
# run: ant $OPTS -f platform/api.templates test
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# java-modules-test:
# name: Java Modules on Linux/JDK ${{ matrix.java }}
# # equals env.test_java == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'Java') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 100
# strategy:
# matrix:
# java: [ '17' ]
# fail-fast: false
# steps:
#
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: api.java
# run: ant $OPTS -f java/api.java test
#
## - name: beans
## run: ant $OPTS -f java/beans test
#
# - name: classfile
# run: ant $OPTS -f java/classfile test
#
# - name: dbschema
# run: ant $OPTS -f java/dbschema test -Dtest.config=stable
#
# - name: editor.htmlui
# run: ant $OPTS -f java/editor.htmlui test
#
# - name: java.completion
# run: ant $OPTS -f java/java.completion test
#
# - name: java.editor.base
# run: ant $OPTS -f java/java.editor.base test
#
# - name: java.editor
# run: .github/retry.sh ant $OPTS -f java/java.editor test-unit
#
# - name: java.freeform
# run: ant $OPTS -f java/java.freeform test
#
# - name: java.file.launcher
# run: ant $OPTS -f java/java.file.launcher test
#
## - name: java.kit
## run: ant $OPTS -f java/java.kit test
#
## - name: java.metrics
## run: ant $OPTS -f java/java.metrics test
#
# - name: java.module.graph
# run: ant $OPTS -f java/java.module.graph test
#
# - name: java.navigation
# run: ant $OPTS -f java/java.navigation test
#
# - name: java.openjdk.project
# run: ant $OPTS -f java/java.openjdk.project test
#
# - name: java.platform
# run: ant $OPTS -f java/java.platform test
#
# - name: java.platform.ui
# run: ant $OPTS -f java/java.platform.ui test
#
# - name: java.preprocessorbridge
# run: ant $OPTS -f java/java.preprocessorbridge test
#
# - name: java.project
# run: ant $OPTS -f java/java.project test
#
## - name: java.project.ui
## run: ant $OPTS -f java/java.project.ui test
#
# - name: java.source
# run: ant $OPTS -f java/java.source test-unit
#
## - name: java.source.ant
## run: ant $OPTS -f java/java.source.ant test
#
# - name: java.source.base
# run: ant $OPTS -f java/java.source.base test
#
# - name: java.source.compat8
# run: ant $OPTS -f java/java.source.compat8 test
#
# - name: java.source.queriesimpl
# run: ant $OPTS -f java/java.source.queriesimpl test
#
# - name: java.sourceui
# run: ant $OPTS -f java/java.sourceui test
#
# - name: java.testrunner
# run: ant $OPTS -f java/java.testrunner test
#
# - name: java.testrunner.ant
# run: ant $OPTS -f java/java.testrunner.ant test
#
## - name: javawebstart
## run: ant $OPTS -f java/javawebstart test
#
## - name: jellytools.java
## run: ant $OPTS -f java/jellytools.java test
#
# - name: jshell.support
# run: ant $OPTS -f java/jshell.support test
#
# - name: junit
# run: ant $OPTS -f java/junit test-unit
#
# - name: junit.ant.ui
# run: ant $OPTS -f java/junit.ant.ui test
#
# - name: lib.nbjavac
# run: ant $OPTS -f java/lib.nbjavac test
#
# - name: libs.nbjavacapi
# run: ant $OPTS -f java/libs.nbjavacapi test
#
## - name: performance
## run: ant $OPTS -f java/performance test
#
## - name: performance.java
## run: ant $OPTS -f java/performance.java test
#
## - name: projectimport.eclipse.core
## run: ant $OPTS -f java/projectimport.eclipse.core test
#
# - name: spellchecker.bindings.java
# run: ant $OPTS -f java/spellchecker.bindings.java test
#
# - name: testng
# run: ant $OPTS -f java/testng test
#
## - name: testng.ant
## run: ant $OPTS -f java/testng.ant test
#
## - name: testng.ui
## run: ant $OPTS -f java/testng.ui test
#
# - name: whitelist
# run: ant $OPTS -f java/whitelist test
#
# - name: xml.jaxb
# run: ant $OPTS -f java/xml.jaxb test
#
# - name: java.lexer
# run: ant $OPTS -f java/java.lexer test
#
# - name: refactoring.java
# run: ant $OPTS -f java/refactoring.java test-unit
#
# - name: form
# run: ant $OPTS -f java/form test-unit
#
# - name: javadoc
# run: ant $OPTS -f java/javadoc test
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# java-hints-test:
# name: Java Hints ${{ matrix.config }} on Linux/JDK ${{ matrix.java }}
# # equals env.test_java == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'Java') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# java: [ '17', '23' ]
# config: [ 'batch1', 'batch2' ]
# exclude:
# - java: ${{ github.event_name == 'pull_request' && 'nothing' || '23' }}
# fail-fast: false
# steps:
#
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: java.hints ${{ matrix.config }}
# run: ant $OPTS -Dtest.config=${{ matrix.config }} -f java/java.hints test
#
# - name: java.hints.declarative
# if: ${{ (matrix.config == 'batch2') && success() }}
# run: ant $OPTS -f java/java.hints.declarative test
#
# - name: spi.java.hints
# if: ${{ (matrix.config == 'batch2') && success() }}
# run: ant $OPTS -f java/spi.java.hints test
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# java-debugger-test:
# name: Java Debugger tests on Linux/JDK ${{ matrix.java }}
# # equals env.test_java == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'Java') || contains(github.event.pull_request.labels.*.name, 'debugger') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# java: [ '17', '21', '23' ]
# exclude:
# - java: ${{ github.event_name == 'pull_request' && 'nothing' || '21' }}
# fail-fast: false
# steps:
#
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: api.debugger.jpda
# run: ant $OPTS -f java/api.debugger.jpda test
#
# - name: debugger.jpda
# run: .github/retry.sh ant $OPTS -f java/debugger.jpda test
#
# - name: debugger.jpda.js
# run: ant $OPTS -f java/debugger.jpda.js test
#
# - name: debugger.jpda.projects
# run: .github/retry.sh ant $OPTS -f java/debugger.jpda.projects test
#
# - name: debugger.jpda.projectsui
# run: ant $OPTS -f java/debugger.jpda.projectsui test
#
## - name: debugger.jpda.truffle
## run: ant $OPTS -f java/debugger.jpda.truffle test
#
## - name: debugger.jpda.ui
## run: ant $OPTS -f java/debugger.jpda.ui test
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# profiler-test:
# name: Profiler on Linux/JDK ${{ matrix.java }}
# # equals env.test_java == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'Java') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# java: [ '17' ]
# fail-fast: false
# steps:
#
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: profiler
# run: ant $OPTS -f profiler/profiler test-unit
#
# - name: profiler.oql
# run: ant $OPTS -f profiler/profiler.oql test
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# webcommon-test:
# name: Web Modules on Linux/JDK ${{ matrix.java }}
# # equals env.test_web == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'JavaScript') || contains(github.event.pull_request.labels.*.name, 'TypeScript') || contains(github.event.pull_request.labels.*.name, 'HTML') || contains(github.event.pull_request.labels.*.name, 'CSS') || contains(github.event.pull_request.labels.*.name, 'CSL') || contains(github.event.pull_request.labels.*.name, 'web') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# java: [ '17' ]
# fail-fast: false
# steps:
#
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: ide/csl.api
# run: ant $OPTS -f ide/csl.api test
#
# - name: ide/csl.types
# run: ant $OPTS -f ide/csl.types test
#
# - name: ide/css.editor
# run: ant $OPTS -f ide/css.editor test
#
# - name: ide/css.lib
# run: ant $OPTS -f ide/css.lib test
#
# - name: ide/css.model
# run: ant $OPTS -f ide/css.model test
#
# - name: ide/html
# run: .github/retry.sh ant $OPTS -f ide/html test
#
# - name: ide/html.custom
# run: ant $OPTS -f ide/html.custom test
#
# - name: ide/html.editor
# run: ant $OPTS -f ide/html.editor test
#
# - name: ide/html.editor
# run: ant $OPTS -f ide/html.editor.lib test
#
# - name: ide/html.lexer
# run: ant $OPTS -f ide/html.lexer test
#
# - name: ide/html.parser
# run: ant $OPTS -f ide/html.parser test
#
# - name: ide/html.validation
# run: ant $OPTS -f ide/html.validation test
#
## - name: webcommon/cordova
## run: ant $OPTS -f webcommon/cordova test
#
# - name: webcommon/html.angular
# run: ant $OPTS -f webcommon/html.angular test-unit
#
# - name: webcommon/html.knockout
# run: ant $OPTS -f webcommon/html.knockout test-unit
#
# - name: webcommon/javascript.bower
# run: ant $OPTS -f webcommon/javascript.bower test
#
# - name: webcommon/javascript.cdnjs
# run: ant $OPTS -f webcommon/javascript.cdnjs test
#
# - name: webcommon/javascript.grunt
# run: ant $OPTS -f webcommon/javascript.grunt test
#
# - name: webcommon/javascript.karma
# run: ant $OPTS -f webcommon/javascript.karma test
#
# - name: webcommon/javascript.nodejs
# run: ant $OPTS -f webcommon/javascript.nodejs test
#
# - name: webcommon/javascript.v8debug
# run: ant $OPTS -f webcommon/javascript.v8debug test
#
# - name: webcommon/javascript2.doc
# run: ant $OPTS -f webcommon/javascript2.doc test
#
# - name: webcommon/javascript2.editor
# if: env.test_javascript == 'true' && success()
# run: ant $OPTS -f webcommon/javascript2.editor test-unit
#
# - name: webcommon/javascript2.extdoc
# run: ant $OPTS -f webcommon/javascript2.extdoc test
#
# - name: webcommon/javascript2.extjs
# run: ant $OPTS -f webcommon/javascript2.extjs test
#
# - name: webcommon/javascript2.jade
# run: ant $OPTS -f webcommon/javascript2.jade test
#
# - name: webcommon/javascript2.jquery
# run: .github/retry.sh ant $OPTS -f webcommon/javascript2.jquery test
#
# - name: webcommon/javascript2.jsdoc
# run: ant $OPTS -f webcommon/javascript2.jsdoc test
#
# - name: webcommon/javascript2.json
# run: ant $OPTS -f webcommon/javascript2.json test
#
# - name: webcommon/javascript2.knockout
# run: ant $OPTS -f webcommon/javascript2.knockout test
#
# - name: webcommon/javascript2.lexer
# run: ant $OPTS -f webcommon/javascript2.lexer test
#
# - name: webcommon/javascript2.model
# run: ant $OPTS -f webcommon/javascript2.model test
#
# - name: webcommon/javascript2.nodejs
# run: ant $OPTS -f webcommon/javascript2.nodejs test-unit
#
# - name: webcommon/javascript2.prototypejs
# run: ant $OPTS -f webcommon/javascript2.prototypejs test
#
# - name: webcommon/javascript2.requirejs
# run: ant $OPTS -f webcommon/javascript2.requirejs test-unit
#
# - name: webcommon/javascript2.sdoc
# run: ant $OPTS -f webcommon/javascript2.sdoc test
#
# - name: webcommon/languages.apacheconf
# run: ant $OPTS -f webcommon/languages.apacheconf test
#
# - name: webcommon/languages.ini
# run: ant $OPTS -f webcommon/languages.ini test
#
## - name: webcommon/lib.v8debug
## run: ant $OPTS -f webcommon/lib.v8debug test
#
# - name: webcommon/libs.graaljs
# run: ant $OPTS -f webcommon/libs.graaljs test
#
# - name: webcommon/selenium2.webclient
# run: ant $OPTS -f webcommon/selenium2.webclient test
#
# - name: webcommon/web.clientproject
# run: ant $OPTS -f webcommon/web.clientproject test-unit
#
# - name: webcommon/web.clientproject.api
# run: ant $OPTS -f webcommon/web.clientproject.api test
#
# - name: webcommon/web.inspect
# run: ant $OPTS -f webcommon/web.inspect test
#
# - name: webcommon/api.knockout
# run: ant $OPTS -f webcommon/api.knockout test
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# javafx-test:
# name: JavaFX on Linux/JDK ${{ matrix.java }}
# # equals env.test_javafx == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'JavaFX') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# java: [ '17' ]
# fail-fast: false
# steps:
#
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: platform/libs.javafx
# run: ant $OPTS -f platform/libs.javafx test
#
# - name: javafx2.editor
# run: ant $OPTS -f javafx/javafx2.editor test -Dtest.config=stable
#
## - name: javafx2.project
## run: ant $OPTS -f javafx/javafx2.project test
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# groovy-test:
# name: Groovy on Linux/JDK ${{ matrix.java }}
# # equals env.test_groovy == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'Groovy') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# java: [ '17', '21' ]
# exclude:
# - java: ${{ github.event_name == 'pull_request' && 'nothing' || '21' }}
# fail-fast: false
# steps:
#
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: groovy/groovy.editor
# run: ant $OPTS -f groovy/groovy.editor test
#
# - name: groovy/groovy.gsp
# run: ant $OPTS -f groovy/groovy.gsp test
#
# - name: groovy/groovy.support
# run: ant $OPTS -f groovy/groovy.support test
#
## - name: groovy/groovy.kit
## run: ant $OPTS -f groovy/groovy.kit test
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# rust-test:
# name: Rust on Linux/JDK ${{ matrix.java }}
# # equals env.test_rust == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'Rust') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# java: [ '17' ]
# fail-fast: false
# steps:
#
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: rust/rust.cargo
# run: ant $OPTS -f rust/rust.cargo test
#
# - name: rust/rust.grammar
# run: ant $OPTS -f rust/rust.grammar test
#
# - name: rust/rust.options
# run: ant $OPTS -f rust/rust.options test
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# enterprise-test:
# name: Enterprise on Linux/JDK ${{ matrix.java }}
# # equals env.test_enterprise == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'Java EE/Jakarta EE') || contains(github.event.pull_request.labels.*.name, 'Micronaut') || contains(github.event.pull_request.labels.*.name, 'enterprise') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# java: [ '17' ]
# fail-fast: false
# steps:
#
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: micronaut
# run: .github/retry.sh ant $OPTS -f enterprise/micronaut test
#
# - name: api.web.webmodule
# run: ant $OPTS -f enterprise/api.web.webmodule test
#
# - name: cloud.amazon
# run: ant $OPTS -f enterprise/cloud.amazon test
#
# - name: cloud.oracle
# run: ant $OPTS -f enterprise/cloud.oracle test
#
# - name: el.lexer
# run: ant $OPTS -f enterprise/el.lexer test
#
# - name: glassfish.common
# run: ant $OPTS -f enterprise/glassfish.common test
#
## TODO failing tests commented out
## Fails
## - name: glassfish.javaee
## run: ant $OPTS -f enterprise/glassfish.javaee test
#
## Fails
## - name: glassfish.tooling
## run: ant $OPTS -f enterprise/glassfish.tooling test
#
# - name: j2ee.api.ejbmodule
# run: ant $OPTS -f enterprise/j2ee.api.ejbmodule test
#
# - name: j2ee.clientproject
# run: ant $OPTS -f enterprise/j2ee.clientproject test
#
# - name: j2ee.common
# run: ant $OPTS -f enterprise/j2ee.common test
#
# - name: j2ee.core
# run: ant $OPTS -f enterprise/j2ee.core test
#
## Fails
## - name: j2ee.dd
## run: ant $OPTS -f enterprise/j2ee.dd test
#
# - name: j2ee.ddloaders
# run: ant $OPTS -f enterprise/j2ee.ddloaders test
#
## Fails + Slow
## - name: j2ee.ejbjarproject
## run: ant $OPTS -f enterprise/j2ee.ejbjarproject test
#
## Fails
## - name: j2ee.ejbverification
## run: ant $OPTS -f enterprise/j2ee.ejbverification test
#
# - name: j2ee.persistence
# run: ant $OPTS -f java/j2ee.persistence test
#
## Fails
## - name: j2eeserver
## run: ant $OPTS -f enterprise/j2eeserver test
#
# - name: j2ee.sun.appsrv
# run: ant $OPTS -f enterprise/j2ee.sun.appsrv test
#
# - name: j2ee.sun.dd
# run: ant $OPTS -f enterprise/j2ee.sun.dd test
#
## Fails
## - name: j2ee.sun.ddui
## run: ant $OPTS -f enterprise/j2ee.sun.ddui test
#
# - name: javaee.wildfly
# run: .github/retry.sh ant $OPTS -f enterprise/javaee.wildfly test
#
## Fails + Slow
## - name: jellytools.enterprise
## run: ant $OPTS -f enterprise/jellytools.enterprise test
#
# - name: jsp.lexer
# run: ant $OPTS -f enterprise/jsp.lexer test
#
# - name: maven.j2ee
# run: ant $OPTS -f enterprise/maven.j2ee test
#
## Fails
## - name: enterpirse/payara.common
## run: ant $OPTS -f enterprise/payara.common test
#
## Fails
## - name: enterpirse/payara.eecommon
## run: ant $OPTS -f enterprise/payara.eecommon test
#
## Fails
## - name: enterpirse/payara.jakartaee
## run: ant $OPTS -f enterprise/payara.jakartaee test
#
## Fails
## - name: enterpirse/payara.tooling
## run: ant $OPTS -f enterprise/payara.tooling test
#
# - name: profiler.j2ee
# run: ant $OPTS -f enterprise/profiler.j2ee test
#
# - name: spring.webmvc
# run: ant $OPTS -f enterprise/spring.webmvc test
#
# - name: spring.beans
# run: ant $OPTS -f java/spring.beans test
#
# - name: tomcat5
# run: ant $OPTS -f enterprise/tomcat5 test
#
# - name: web.beans
# run: ant $OPTS -f enterprise/web.beans test
#
## Fails + Slow
## - name: web.core.syntax
## run: ant $OPTS -f enterprise/web.core.syntax test
#
## Fails + Slow
## - name: web.debug
## run: ant $OPTS -f enterprise/web.debug test
#
## Fails
## - name: web.el
## run: ant $OPTS -f enterprise/web.el test
#
## Fails
## - name: web.freeform
## run: ant $OPTS -f enterprise/web.freeform test
#
## Fails
## - name: web.jsf.editor
## run: ant $OPTS -f enterprise/web.jsf.editor test
#
## Fails
## - name: web.jsf.navigation
## run: ant $OPTS -f enterprise/web.jsf.navigation test
#
# - name: web.jsf
# run: ant $OPTS -f enterprise/web.jsf test
#
# - name: web.jsfapi
# run: ant $OPTS -f enterprise/web.jsfapi test
#
# - name: web.jspparser
# run: ant $OPTS -f enterprise/web.jspparser test
#
## Fails
## - name: web.project
## run: ant $OPTS -f enterprise/web.project test
#
# - name: websvc.clientapi
# run: ant $OPTS -f enterprise/websvc.clientapi test
#
## Fails
## - name: websvc.customization
## run: ant $OPTS -f enterprise/websvc.customization test
#
## Fails
## - name: websvc.design
## run: ant $OPTS -f enterprise/websvc.design test
#
# - name: websvc.jaxwsapi
# run: ant $OPTS -f enterprise/websvc.jaxwsapi test
#
## Fails
## - name: websvc.jaxwsmodel
## run: ant $OPTS -f enterprise/websvc.jaxwsmodel test
#
## Fails + Slow
## - name: websvc.kit
## run: ant $OPTS -f enterprise/websvc.kit test
#
## Fails
## - name: websvc.manager
## run: ant $OPTS -f enterprise/websvc.manager test
#
# - name: websvc.projectapi
# run: ant $OPTS -f enterprise/websvc.projectapi test
#
# - name: websvc.rest
# run: ant $OPTS -f enterprise/websvc.rest test
#
## Fails + Slow
## - name: websvc.restkit
## run: ant $OPTS -f enterprise/websvc.restkit test
#
## Fails
## - name: websvc.utilities
## run: ant $OPTS -f enterprise/websvc.utilities test
#
# - name: websvc.websvcapi
# run: ant $OPTS -f enterprise/websvc.websvcapi test
#
# - name: websvc.wsstackapi
# run: ant $OPTS -f enterprise/websvc.wsstackapi test
#
## TODO fails on JDK11+ (#4904)
## - name: websvc.editor.hints
## run: ant $OPTS -f enterprise/websvc.editor.hints test
#
# - name: j2ee.dd.webservice
# run: ant $OPTS -f enterprise/j2ee.dd.webservice test
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# versioning-test:
# name: Versioning Modules on Linux/JDK ${{ matrix.java }}
# # equals env.test_versioning == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'git') || contains(github.event.pull_request.labels.*.name, 'subversion') || contains(github.event.pull_request.labels.*.name, 'mercurial') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# java: [ '17' ]
# fail-fast: false
#
# steps:
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: Setup Env
# run: echo "GIT_TEST_REPO=$HOME/git_test_repo" >> $GITHUB_ENV
#
# - name: ide/git
# run: .github/retry.sh ant $OPTS -f ide/git test-unit
#
# - name: ide/libs.git
# run: .github/retry.sh ant $OPTS -f ide/libs.git test
#
# - name: ide/versioning.masterfs
# run: ant $OPTS -f ide/versioning.masterfs test
#
# - name: ide/versioning.ui
# run: ant $OPTS -f ide/versioning.ui test
#
# - name: ide/versioning.util
# run: ant $OPTS -f ide/versioning.util test
#
# - name: ide/versioning.core
# run: ant $OPTS -f ide/versioning.core test-unit
#
# - name: ide/versioning
# run: ant $OPTS -f ide/versioning test-unit
#
# - name: ide/versioning.core test-qa-functional
# run: |
# #Prepare git repo for tests
# git init $GIT_TEST_REPO
# # Prepare config file for ide/versioning.core module
# touch ide/versioning.core/test/qa-functional/data/tck.properties
# echo "test.root = $GIT_TEST_REPO" > ide/versioning.core/test/qa-functional/data/tck.properties
# echo "test.vcs = org.netbeans.modules.versioning.DelegatingVCS" >> ide/versioning.core/test/qa-functional/data/tck.properties
# # Run functional tests for ide/versioning.core module
# ant $OPTS -f ide/versioning.core test-qa-functional
#
# - name: ide/versioning test-qa-functional
# run: |
# # Prepare config file for ide/versioning module
# touch ide/versioning/test/qa-functional/data/tck.properties
# echo "test.root = $GIT_TEST_REPO" > ide/versioning/test/qa-functional/data/tck.properties
# echo "test.vcs = org.netbeans.modules.git.GitVCS" >> ide/versioning/test/qa-functional/data/tck.properties
# # Run functional tests for ide/versioning module
# ant $OPTS -f ide/versioning test-qa-functional
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# mysql-db-test:
# name: DB Tests with MySQL on Linux/JDK ${{ matrix.java }}
# # equals env.test_enterprise == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'Java EE/Jakarta EE') || contains(github.event.pull_request.labels.*.name, 'Micronaut') || contains(github.event.pull_request.labels.*.name, 'enterprise') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# java: [ '17' ]
# fail-fast: false
#
# services:
# mysql:
# image: mysql:5.7
# env:
# MYSQL_ROOT_PASSWORD: test
# MYSQL_DATABASE: test
# ports:
# - 3306:3306
# options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
#
# steps:
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: Setup Env
# run: |
# echo "OPTS_TEST=-Dtest-unit-sys-prop.mysql.user=root -Dtest-unit-sys-prop.mysql.password=test -Dtest-unit-sys-prop.mysql.host=127.0.0.1" >> $GITHUB_ENV
# echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'test';\nFLUSH PRIVILEGES;\n" | mysql -h 127.0.0.1 --port 3306 -u root -ptest
#
# - name: ide/db.metadata.model
# run: .github/retry.sh ant $OPTS $OPTS_TEST -f ide/db.metadata.model test
#
# - name: ide/db.mysql
# run: .github/retry.sh ant $OPTS $OPTS_TEST -f ide/db.mysql test
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
php:
name: PHP on ${{ matrix.os }}/JDK ${{ matrix.java }}
# equals env.test_php == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'PHP') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ${{ matrix.os }}
timeout-minutes: 120
env:
DISPLAY: ":99.0"
strategy:
matrix:
java: [ '17' ]
os: [ 'windows-latest', 'ubuntu-latest' ]
#exclude:
# - os: ${{ github.event_name == 'pull_request' && 'nothing' || 'windows-latest' }}
fail-fast: false
defaults:
run:
# hack: shorten paths to stay below 32k char process arg limit of windows (symptom: junit jvm spawn failures)
# note 'a' is apparently a mount point, we shouldn't go below that
# note actions don't care about the defaults here, its just for 'run:', they will keep using the long path which is fine
working-directory: ${{ contains(matrix.os, 'windows') && 'D:\\a\\ws' || github.workspace }}
shell: bash
steps:
- name: Symlink short paths for windows
if: contains(matrix.os, 'windows')
run: mklink /d D:\\a\\ws ${{ github.workspace }}
working-directory: ${{ github.workspace }}
shell: cmd
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
# linux specific setup
- name: Setup PHP
if: contains(matrix.os, 'ubuntu')
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
tools: pecl
extensions: xdebug
ini-values: xdebug.mode=debug
- name: Setup Xvfb
if: contains(matrix.os, 'ubuntu')
run: Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
# - - -
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: hudson.php
run: ant $OPTS -f php/hudson.php test
- name: languages.neon
run: ant $OPTS -f php/languages.neon test
- name: php.api.annotation
run: ant $OPTS -f php/php.api.annotation test
- name: php.api.documentation
run: ant $OPTS -f php/php.api.documentation test
- name: php.api.executable
run: ant $OPTS -f php/php.api.executable test
- name: php.api.framework
run: ant $OPTS -f php/php.api.framework test
- name: php.api.phpmodule
run: ant $OPTS -f php/php.api.phpmodule test
- name: php.api.testing
run: ant $OPTS -f php/php.api.testing test
- name: php.apigen
run: ant $OPTS -f php/php.apigen test
- name: php.atoum
run: ant $OPTS -f php/php.atoum test
- name: php.code.analysis
run: ant $OPTS -f php/php.code.analysis test
- name: php.codeception
run: ant $OPTS -f php/php.codeception test
- name: php.composer
run: ant $OPTS -f php/php.composer test
# needs X fails on Windows
- name: php.dbgp
if: contains(matrix.os, 'ubuntu')
run: ant $OPTS -f php/php.dbgp test
- name: php.doctrine2
run: ant $OPTS -f php/php.doctrine2 test
# longest step (~40min)
- name: php.editor
run: ant $OPTS -Dtest.config=stable -f php/php.editor test
- name: php.editor (unreliable tests)
run: .github/retry.sh ant $OPTS -Dtest.config=unreliable -f php/php.editor test
- name: php.latte
run: ant $OPTS -f php/php.latte test
- name: php.nette.tester
run: ant $OPTS -f php/php.nette.tester test
- name: php.phpunit
run: ant $OPTS -f php/php.phpunit test
- name: php.project
run: ant $OPTS -f php/php.project test
- name: php.refactoring
run: ant $OPTS -f php/php.refactoring test
- name: php.smarty
run: ant $OPTS -f php/php.smarty test
- name: php.symfony
run: ant $OPTS -f php/php.symfony test
- name: php.symfony2
run: ant $OPTS -f php/php.symfony2 test
- name: php.twig
run: ant $OPTS -f php/php.twig test
- name: php.zend
run: ant $OPTS -f php/php.zend test
- name: php.zend2
run: ant $OPTS -f php/php.zend2 test
- name: spellchecker.bindings.php
run: ant $OPTS -f php/spellchecker.bindings.php test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
# lsp-test:
# name: LSP tests on Linux/JDK ${{ matrix.java }}
# # equals env.test_lsp == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'LSP') || contains(github.event.pull_request.labels.*.name, 'Gradle') || contains(github.event.pull_request.labels.*.name, 'Maven') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# java: [ '17' ]
# fail-fast: false
#
# steps:
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: ide/lsp.client
# run: ant $OPTS -f ide/lsp.client test
#
# - name: java/java.lsp.server
# run: .github/retry.sh ant $OPTS -f java/java.lsp.server test
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# graalvm-test:
# name: GraalVM ${{ matrix.graal }} Tests
# # equals env.test_graalvm == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'GraalVM') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# # TODO uses GraalVM 17 / 22.3.1 which is the last known release which offers all required language extensions
# # GraalVM based on JDK 21+ doesn't support the 'gu' tool anymore - extensions are now regular application dependencies
# graal: [ '22.3.1' ]
# fail-fast: false
#
# steps:
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: Setup GraalVM ${{ matrix.graal }}
# run: |
# URL=https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${{ matrix.graal }}/graalvm-ce-java17-linux-amd64-${{ matrix.graal }}.tar.gz
# curl -L $URL | tar -xz
# GRAALVM=`pwd`/graalvm-ce-java17-${{ matrix.graal }}
# echo "JAVA_HOME=$GRAALVM" >> $GITHUB_ENV
#
# - name: Setup GraalVM Languages (python, R, ruby and js)
# run: $JAVA_HOME/bin/gu install --no-progress python R ruby js
#
# - name: platform/core.network
# run: ant $OPTS -f platform/core.network test
#
# - name: platform/api.scripting
# run: ant $OPTS -f platform/api.scripting test
#
# - name: ide/libs.graalsdk
# run: ant $OPTS -f ide/libs.graalsdk test
#
# - name: webcommon/libs.graaljs
# run: ant $OPTS -f webcommon/libs.graaljs test
#
# - name: profiler/profiler.oql
# run: ant $OPTS -f profiler/profiler.oql test
#
# - name: java/nashorn.execution
# run: ant $OPTS -f java/nashorn.execution test
#
# - name: java/debugger.jpda.truffle
# run: .github/retry.sh ant $OPTS -f java/debugger.jpda.truffle test
#
# - name: Create Test Summary
# uses: test-summary/action@v2
# if: failure()
# with:
# paths: "./*/*/build/test/*/results/TEST-*.xml"
#
#
# vscode-extension-test:
# name: VSCode Extension Tests on JDK ${{ matrix.java }}
# # equals env.test_vscode_extension == 'true'
# if: ${{ contains(github.event.pull_request.labels.*.name, 'VSCode Extension') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# needs: base-build
# runs-on: ubuntu-latest
# timeout-minutes: 60
# strategy:
# matrix:
# java: [ '17' ]
# fail-fast: false
#
# steps:
# - name: Set up JDK ${{ matrix.java }}
# uses: actions/setup-java@v4
# with:
# java-version: ${{ matrix.java }}
# distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
#
# - name: Set up node
# uses: actions/setup-node@v4
# with:
# node-version: 18
#
# - name: Setup Xvfb
# run: |
# echo "DISPLAY=:99.0" >> $GITHUB_ENV
# Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
#
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: build
#
# - name: Extract
# run: tar --zstd -xf build.tar.zst
#
# - name: build-vscode-ext
# run: |
# cd java/java.lsp.server
# ant $OPTS build-vscode-ext -D3rdparty.modules=.*externalcodeformatter.*
#
# - name: test-vscode-ext
# run: |
# cd java/java.lsp.server
# env "netbeans.extra.options=-J-Dnetbeans.logger.console=true" ant $OPTS test-vscode-ext
# cleanup job depends on everything so that it is forced to run last even if a long job fails early.
# 'paperwork' is left out intentionally, since it doesn't run unit tests (hopefully doesn't need restarts)
# and shouldn't prevent cleanup on validation failure - which might be common during dev time
cleanup:
name: Cleanup Workflow Artifacts
needs:
- base-build
- commit-validation
# - build-system-test
# - build-from-src-zip
# - ide-modules-test
# - platform-modules-test1
# - platform-modules-test2
# - java-modules-test
# - java-hints-test
# - java-debugger-test
# - profiler-test
# - build-tools
# - webcommon-test
- php
# - javafx-test
# - groovy-test
# - rust-test
# - enterprise-test
# - versioning-test
# - lsp-test
# - mysql-db-test
# - graalvm-test
# - vscode-extension-test
# cleanup if the primary build job succeeded and
# * nothing else failed (allows manual restarts)
# * the workflow got cancelled
if: ${{ always() && needs.base-build.result == 'success' && (!contains(needs.*.result, 'failure') || cancelled()) }}
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Delete Workspace Artifact
uses: geekyeggo/delete-artifact@v5
with:
name: build
useGlob: false
- name: Delete Dev Build Artifact
uses: geekyeggo/delete-artifact@v5
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:dev-build') && cancelled() }}
with:
name: dev-build_${{github.event.pull_request.number || github.run_id}}
useGlob: false