You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by to...@apache.org on 2022/05/18 08:22:00 UTC
[lucene] branch branch_9x updated: LUCENE-10531: Add @RequiresGUI test group for GUI tests (backport #893)
This is an automated email from the ASF dual-hosted git repository.
tomoko pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/lucene.git
The following commit(s) were added to refs/heads/branch_9x by this push:
new 50e0b7fc674 LUCENE-10531: Add @RequiresGUI test group for GUI tests (backport #893)
50e0b7fc674 is described below
commit 50e0b7fc67444c6ae72277902148d92857c2cf73
Author: Tomoko Uchida <to...@gmail.com>
AuthorDate: Wed May 18 09:26:06 2022 +0900
LUCENE-10531: Add @RequiresGUI test group for GUI tests (backport #893)
---
.github/actions/gradle-caches/action.yml | 15 ++++++++
.github/workflows/distribution.yml | 41 ++++++++++++++++++++++
.github/workflows/gradle-precommit.yml | 25 +++----------
.github/workflows/hunspell.yml | 24 ++++++-------
dev-tools/scripts/smokeTestRelease.py | 3 ++
gradle/testing/randomization.gradle | 13 ++++---
.../AbstractLuceneDistributionTest.java | 18 ++++++++++
.../apache/lucene/distribution/TestScripts.java | 3 +-
8 files changed, 103 insertions(+), 39 deletions(-)
diff --git a/.github/actions/gradle-caches/action.yml b/.github/actions/gradle-caches/action.yml
new file mode 100644
index 00000000000..488e504c2c1
--- /dev/null
+++ b/.github/actions/gradle-caches/action.yml
@@ -0,0 +1,15 @@
+name: "Set up caches"
+description: "Set up cached resources"
+
+runs:
+ using: "composite"
+ steps:
+ - name: Cache/Restore cached gradle files
+ uses: actions/cache@v2
+ with:
+ path: |
+ ~/.gradle/caches
+ ~/.gradle/jdks
+ key: ${{ runner.os }}-gradle-caches-${{ hashFiles('versions.lock', '**/gradle-wrapper.properties') }}
+ restore-keys: |
+ ${{ runner.os }}-gradle-caches-
diff --git a/.github/workflows/distribution.yml b/.github/workflows/distribution.yml
new file mode 100644
index 00000000000..4a1f011d9c3
--- /dev/null
+++ b/.github/workflows/distribution.yml
@@ -0,0 +1,41 @@
+name: Distribution tests
+
+on:
+ # Allow manual triggers for testing the action.
+ workflow_dispatch:
+
+ pull_request:
+ branches:
+ - 'main'
+
+ push:
+ branches:
+ - 'main'
+ - 'branch_9x'
+
+jobs:
+ test:
+ name: Run distribution tests
+
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ # we run the distribution tests on all major OSs.
+ os: [ubuntu-latest, macos-latest, windows-latest]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up JDK
+ uses: actions/setup-java@v2
+ with:
+ distribution: 'temurin'
+ java-version: 17
+ java-package: jdk
+ - name: Prepare caches
+ uses: ./.github/actions/gradle-caches
+
+ - name: Initialize gradle settings (${{ matrix.os }})
+ run: ./gradlew localSettings
+
+ - name: Run all distribution tests including GUI tests (${{ matrix.os }})
+ run: ./gradlew -p lucene/distribution.tests test
diff --git a/.github/workflows/gradle-precommit.yml b/.github/workflows/gradle-precommit.yml
index 5ac35c2e993..1618998e047 100644
--- a/.github/workflows/gradle-precommit.yml
+++ b/.github/workflows/gradle-precommit.yml
@@ -33,17 +33,8 @@ jobs:
java-version: ${{ matrix.java }}
java-package: jdk
- - name: Grant execute permission for gradlew
- run: chmod +x gradlew
-
- - uses: actions/cache@v2
- with:
- path: |
- ~/.gradle/caches
- key: ${{ runner.os }}-gradle-precommit-${{ hashFiles('versions.lock') }}
- restore-keys: |
- ${{ runner.os }}-gradle-precommit-
- ${{ runner.os }}-gradle-
+ - name: Prepare caches
+ uses: ./.github/actions/gradle-caches
- name: Initialize gradle settings
run: ./gradlew localSettings --max-workers 2
@@ -77,14 +68,8 @@ jobs:
java-version: ${{ matrix.java }}
java-package: jdk
- - uses: actions/cache@v2
- with:
- path: |
- ~/.gradle/caches
- key: ${{ runner.os }}-gradle-precommit-${{ hashFiles('versions.lock') }}
- restore-keys: |
- ${{ runner.os }}-gradle-precommit-
- ${{ runner.os }}-gradle-
+ - name: Prepare caches
+ uses: ./.github/actions/gradle-caches
- name: Initialize gradle settings
run: ./gradlew localSettings --max-workers 2
@@ -94,5 +79,3 @@ jobs:
- name: Run gradle tests
run: ./gradlew test "-Ptask.times=true" --max-workers 2
-
- # - uses: gradle/wrapper-validation-action@v1
diff --git a/.github/workflows/hunspell.yml b/.github/workflows/hunspell.yml
index f7e01574551..2dfe9a85ca1 100644
--- a/.github/workflows/hunspell.yml
+++ b/.github/workflows/hunspell.yml
@@ -16,21 +16,19 @@ jobs:
steps:
- uses: actions/checkout@v2
- - name: Set up JDK 11
- uses: actions/setup-java@v1
- with:
- java-version: 11
- - name: Grant execute permission for gradlew
- run: chmod +x gradlew
- - uses: actions/cache@v2
+
+ - name: Set up JDK
+ uses: actions/setup-java@v2
with:
- path: |
- ~/.gradle/caches
- key: ${{ runner.os }}-gradle-solrj-${{ hashFiles('versions.lock') }}
- restore-keys: |
- ${{ runner.os }}-gradle-solrj-
- ${{ runner.os }}-gradle-
+ distribution: 'temurin'
+ java-version: 17
+ java-package: jdk
+
+ - name: Prepare caches
+ uses: ./.github/actions/gradle-caches
+
- name: Initialize gradle settings
run: ./gradlew localSettings
+
- name: Run regular and regression tests
run: ./gradlew -p lucene/analysis/common check testRegressions
diff --git a/dev-tools/scripts/smokeTestRelease.py b/dev-tools/scripts/smokeTestRelease.py
index 4d558df16d3..03976f1de7d 100755
--- a/dev-tools/scripts/smokeTestRelease.py
+++ b/dev-tools/scripts/smokeTestRelease.py
@@ -1135,6 +1135,9 @@ def smokeTest(java, baseURL, gitRevision, version, tmpDir, isSigned, local_keys,
# coverage.
testArgs = '-Dtests.nightly=true %s' % testArgs
+ # We also enable GUI tests in smoke tests (LUCENE-10531)
+ testArgs = '-Dtests.gui=true %s' % testArgs
+
if FORCE_CLEAN:
if os.path.exists(tmpDir):
raise RuntimeError('temp dir %s exists; please remove first' % tmpDir)
diff --git a/gradle/testing/randomization.gradle b/gradle/testing/randomization.gradle
index 5f862f087ec..aa5125fe2cb 100644
--- a/gradle/testing/randomization.gradle
+++ b/gradle/testing/randomization.gradle
@@ -90,11 +90,16 @@ allprojects {
[propName: 'tests.monster', value: false, description: "Enables or disables @Monster tests."],
[propName: 'tests.awaitsfix', value: null, description: "Enables or disables @AwaitsFix tests."],
[propName: 'tests.badapples', value: null, description: "Enables or disables @BadApple tests."],
+ [propName: 'tests.gui',
+ value: { ->
+ return rootProject.ext.isCIBuild
+ },
+ description: "Enables or disables @RequiresGUI tests."],
[propName: 'tests.file.encoding',
- value: { ->
- RandomPicks.randomFrom(new Random(projectSeedLong), ["US-ASCII", "ISO-8859-1", "UTF-8"])
- },
- description: "Sets the default file.encoding on test JVM.", buildOnly: true],
+ value: { ->
+ RandomPicks.randomFrom(new Random(projectSeedLong), ["US-ASCII", "ISO-8859-1", "UTF-8"])
+ },
+ description: "Sets the default file.encoding on test JVM.", buildOnly: true],
// Test data file used.
[propName: 'tests.linedocsfile', value: 'europarl.lines.txt.gz', description: "Test data file path."],
// miscellaneous; some of them very weird.
diff --git a/lucene/distribution.tests/src/test/org/apache/lucene/distribution/AbstractLuceneDistributionTest.java b/lucene/distribution.tests/src/test/org/apache/lucene/distribution/AbstractLuceneDistributionTest.java
index 0a1868f27ec..af1fd91e312 100644
--- a/lucene/distribution.tests/src/test/org/apache/lucene/distribution/AbstractLuceneDistributionTest.java
+++ b/lucene/distribution.tests/src/test/org/apache/lucene/distribution/AbstractLuceneDistributionTest.java
@@ -17,7 +17,12 @@
package org.apache.lucene.distribution;
import com.carrotsearch.randomizedtesting.RandomizedTest;
+import com.carrotsearch.randomizedtesting.annotations.TestGroup;
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -47,6 +52,19 @@ public abstract class AbstractLuceneDistributionTest extends RandomizedTest {
/** Resolved and validated {@link #DISTRIBUTION_PROPERTY}. */
private static Path distributionPath;
+ // --------------------------------------------------------------------
+ // Test groups, system properties and other annotations modifying tests
+ // --------------------------------------------------------------------
+
+ public static final String SYSPROP_REQUIRES_GUI = "tests.gui";
+
+ /** Annotation for tests that requires GUI (physical or virtual display). */
+ @Documented
+ @Inherited
+ @Retention(RetentionPolicy.RUNTIME)
+ @TestGroup(enabled = false, sysProperty = SYSPROP_REQUIRES_GUI)
+ public @interface RequiresGUI {}
+
/** Ensure Lucene classes are not directly visible. */
@BeforeClass
public static void checkLuceneNotInClasspath() {
diff --git a/lucene/distribution.tests/src/test/org/apache/lucene/distribution/TestScripts.java b/lucene/distribution.tests/src/test/org/apache/lucene/distribution/TestScripts.java
index 26565b0cf89..6db60a7202d 100644
--- a/lucene/distribution.tests/src/test/org/apache/lucene/distribution/TestScripts.java
+++ b/lucene/distribution.tests/src/test/org/apache/lucene/distribution/TestScripts.java
@@ -38,6 +38,7 @@ import org.junit.Test;
/** Verify that scripts included in the distribution work. */
public class TestScripts extends AbstractLuceneDistributionTest {
@Test
+ @RequiresGUI
public void testLukeCanBeLaunched() throws Exception {
Path distributionPath;
if (randomBoolean()) {
@@ -69,7 +70,7 @@ public class TestScripts extends AbstractLuceneDistributionTest {
execute(
launcher,
0,
- 60,
+ 120,
(outputBytes) -> {
// We know it's UTF-8 because we set file.encoding explicitly.
var output = Files.readString(outputBytes, StandardCharsets.UTF_8);