This is an automated email from the ASF dual-hosted git repository.
epugh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new 22fd58c29c1 SOLR-18566: Fixing BATs for PicoCLI migration (#5204)
22fd58c29c1 is described below
commit 22fd58c29c1bf773dbd010b4be67c11e3d079c9c
Author: Jalaz Kumar <[email protected]>
AuthorDate: Fri Nov 6 22:33:02 2026 +0530
SOLR-18566: Fixing BATs for PicoCLI migration (#5204)
---
.../unreleased/SOLR-18566-picocli-bats-fixed.yml | 11 +++++++++++
solr/core/src/java/org/apache/solr/cli/AuthTool.java | 2 ++
solr/packaging/build.gradle | 20 --------------------
solr/packaging/test/bats_helper.bash | 10 ++++++++++
solr/packaging/test/test_basic_auth.bats | 4 ++--
solr/packaging/test/test_help.bats | 17 +++++++++--------
solr/packaging/test/test_post.bats | 2 +-
solr/packaging/test/test_stream.bats | 4 ++--
.../deployment-guide/pages/cli/solr-auth.adoc | 7 ++-----
9 files changed, 39 insertions(+), 38 deletions(-)
diff --git a/changelog/unreleased/SOLR-18566-picocli-bats-fixed.yml
b/changelog/unreleased/SOLR-18566-picocli-bats-fixed.yml
new file mode 100644
index 00000000000..b31bdd01859
--- /dev/null
+++ b/changelog/unreleased/SOLR-18566-picocli-bats-fixed.yml
@@ -0,0 +1,11 @@
+title: >
+ Run Full Integration Tests Suite on the picocli CLI
+type: fixed
+authors:
+ - name: Jalaz Kumar
+ nick: jaykay12
+ - name: Eric Pugh
+ nick: epugh
+links:
+ - name: SOLR-18566
+ url: https://issues.apache.org/jira/browse/SOLR-18566
diff --git a/solr/core/src/java/org/apache/solr/cli/AuthTool.java
b/solr/core/src/java/org/apache/solr/cli/AuthTool.java
index b63a0d545dd..4b905585e5d 100644
--- a/solr/core/src/java/org/apache/solr/cli/AuthTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/AuthTool.java
@@ -177,6 +177,8 @@ public class AuthTool extends ToolBase {
names = {"--solr-include-file"},
paramLabel = "FILE",
required = true,
+ // Supplied by bin/solr from SOLR_INCLUDE; hidden since a user-supplied
duplicate is rejected.
+ hidden = true,
description =
"The Solr include file which contains overridable environment
variables for configuring Solr configurations. Defaults to solr.in.sh or
solr.in.cmd.")
private String solrIncludeFile;
diff --git a/solr/packaging/build.gradle b/solr/packaging/build.gradle
index dedb2783018..23cfa089997 100644
--- a/solr/packaging/build.gradle
+++ b/solr/packaging/build.gradle
@@ -347,29 +347,9 @@ task integrationTests(type: BatsTask) {
configureBatsTask(it, 'test-output', false)
}
-// The same suites run against the experimental picocli CLI. Deliberately a
curated list rather
-// than the whole suite, so the run stays short. A change that ports another
tool to picocli
-// should add that tool's .bats file here.
task integrationTestsPicocli(type: BatsTask) {
description = 'Runs the BATS suites for the migrated commands against the
experimental picocli CLI.'
configureBatsTask(it, 'test-output-picocli', true)
- // A suite belongs here only when every command it invokes has been
migrated, not merely the
- // command under test. test_auth.bats, for example, uses `solr assert` to
wait for startup, so
- // it cannot join until the assert command is migrated. test_help.bats
asserts the exact wording
- // of the commons-cli help output, which the picocli implementation words
differently.
- testFiles = [
- 'test/test_version.bats',
- 'test/test_status.bats',
- 'test/test_create.bats',
- 'test/test_delete_collection.bats',
- 'test/test_zk.bats',
- 'test/test_auth.bats',
- 'test/test_modules.bats',
- 'test/test_security_manager.bats',
- 'test/test_healthcheck.bats',
- 'test/test_postlogs.bats',
- 'test/test_extraction.bats',
- ]
}
abstract class BatsTask extends Exec {
diff --git a/solr/packaging/test/bats_helper.bash
b/solr/packaging/test/bats_helper.bash
index d684724a2e5..5e3054d73e6 100644
--- a/solr/packaging/test/bats_helper.bash
+++ b/solr/packaging/test/bats_helper.bash
@@ -115,3 +115,13 @@ wait_for() {
return 1 # Timeout reached
}
+
+# Utility function for asserting between the commons-cli wording ($1), or,
when running against the picocli CLI, the picocli wording ($2)
+# TODO: Remove this once commons-cli cleanup happens
+assert_output_for_cli() {
+ if [ -n "${SOLR_PICOCLI:-}" ]; then
+ assert_output --partial "$2"
+ else
+ assert_output --partial "$1"
+ fi
+}
diff --git a/solr/packaging/test/test_basic_auth.bats
b/solr/packaging/test/test_basic_auth.bats
index ab4932a7f5a..b85a168833b 100644
--- a/solr/packaging/test/test_basic_auth.bats
+++ b/solr/packaging/test/test_basic_auth.bats
@@ -25,7 +25,7 @@ setup() {
# The auth command exports some system variables that are injected as basic
auth username and password,
# however that defeats our test so fake that out via --solr-include-file
param specifing a bogus path.
- solr auth enable --type basicAuth --credentials name:password
--solr-include-file /force/credentials/to/be/supplied
+ SOLR_INCLUDE=/force/credentials/to/be/supplied solr auth enable --type
basicAuth --credentials name:password
solr assert --credentials name:password --cloud
http://localhost:${SOLR_PORT} --timeout 5000
}
@@ -74,7 +74,7 @@ run solr create -c COLL_NAME
assert_output --partial '1 files indexed.'
# Test postlogs
- run solr postlogs -u name:password --solr-url http://localhost:${SOLR_PORT}
--name COLL_NAME -rootdir ${SOLR_LOGS_DIR}/solr.log
+ run solr postlogs -u name:password --solr-url http://localhost:${SOLR_PORT}
--name COLL_NAME --rootdir ${SOLR_LOGS_DIR}/solr.log
assert_output --partial 'Committed'
# Test export
diff --git a/solr/packaging/test/test_help.bats
b/solr/packaging/test/test_help.bats
index 54bab9fe85b..fe426d752c5 100644
--- a/solr/packaging/test/test_help.bats
+++ b/solr/packaging/test/test_help.bats
@@ -23,24 +23,24 @@ setup() {
@test "solr help flag prints help" {
run -1 solr --help
- assert_output --partial 'Usage: solr COMMAND OPTIONS'
+ assert_output_for_cli 'Usage: solr COMMAND OPTIONS' 'usage: bin/solr'
refute_output --partial 'ERROR'
}
@test "solr with no flags prints help" {
run -1 solr
- assert_output --partial 'Usage: solr COMMAND OPTIONS'
+ assert_output_for_cli 'Usage: solr COMMAND OPTIONS' 'usage: bin/solr'
refute_output --partial 'ERROR'
}
@test "start help flag prints help" {
run solr start --help
- assert_output --partial 'Usage: solr start'
+ assert_output_for_cli 'Usage: solr start' 'usage: bin/solr start'
refute_output --partial 'ERROR'
}
@test "start h flag prints help" {
run solr start -h
- assert_output --partial 'Usage: solr start'
+ assert_output_for_cli 'Usage: solr start' 'usage: bin/solr start'
refute_output --partial 'ERROR: Hostname is required when using the -h
option!'
}
@@ -48,13 +48,14 @@ setup() {
@test "stop help flag prints help" {
run solr stop --help
- assert_output --partial 'Usage: solr stop'
+ assert_output_for_cli 'Usage: solr stop' 'usage: bin/solr stop'
refute_output --partial 'ERROR'
}
@test "restart help flag prints help" {
+ [ -z "${SOLR_PICOCLI:-}" ] || skip "restart is not migrated to picocli yet"
run solr restart --help
- assert_output --partial 'Usage: solr restart'
+ assert_output_for_cli 'Usage: solr restart' 'usage: bin/solr restart'
refute_output --partial 'ERROR'
}
@@ -85,13 +86,13 @@ setup() {
@test "zk help flag prints help" {
run solr zk --help
assert_output --partial 'usage:'
- assert_output --partial 'bin/solr zk ls'
+ assert_output_for_cli 'bin/solr zk ls' 'usage: bin/solr zk'
refute_output --partial 'ERROR'
}
@test "auth help flag prints help" {
run solr auth --help
- assert_output --partial 'bin/solr auth enable'
+ assert_output_for_cli 'bin/solr auth enable' 'usage: bin/solr auth'
refute_output --partial 'ERROR'
}
diff --git a/solr/packaging/test/test_post.bats
b/solr/packaging/test/test_post.bats
index 3c90e7d1451..7306044da60 100644
--- a/solr/packaging/test/test_post.bats
+++ b/solr/packaging/test/test_post.bats
@@ -39,7 +39,7 @@ teardown() {
@test "Check help command" {
run solr post
- assert_output --partial 'Missing required option: c'
+ assert_output_for_cli "Missing required option: c" "Missing required option:
'--name=name'"
run solr post -h
assert_output --partial 'usage: bin/solr post'
diff --git a/solr/packaging/test/test_stream.bats
b/solr/packaging/test/test_stream.bats
index b1a9a27c7cc..fd0a5201169 100644
--- a/solr/packaging/test/test_stream.bats
+++ b/solr/packaging/test/test_stream.bats
@@ -19,8 +19,8 @@ load bats_helper
setup_file() {
common_clean_setup
- solr start -e techproducts
- solr auth enable --type basicAuth --credentials name:password
--solr-include-file /force/credentials/to/be/supplied
+ solr start -e techproducts --solr-home "${SOLR_HOME}"
+ SOLR_INCLUDE=/force/credentials/to/be/supplied solr auth enable --type
basicAuth --credentials name:password
}
teardown_file() {
diff --git
a/solr/solr-ref-guide/modules/deployment-guide/pages/cli/solr-auth.adoc
b/solr/solr-ref-guide/modules/deployment-guide/pages/cli/solr-auth.adoc
index 31a64352cf5..7a7ceb3484e 100644
--- a/solr/solr-ref-guide/modules/deployment-guide/pages/cli/solr-auth.adoc
+++ b/solr/solr-ref-guide/modules/deployment-guide/pages/cli/solr-auth.adoc
@@ -34,8 +34,8 @@ See xref:cli/index.adoc[] to enable this implementation and
for its known limita
....
bin/solr auth [-hv] --auth-conf-dir=DIR [--block-unknown=true|false]
- [--prompt=true|false] [-s=<solrConnection>]
--solr-include-file=FILE
- [--solr-url=<solrUrl>] [--type=TYPE] [-u=<credentials>]
+ [--prompt=true|false] [-s=<solrConnection>]
[--solr-url=<solrUrl>]
+ [--type=TYPE] [-u=<credentials>]
[--update-include-file-only=true|false] [-z=<zkHost>]
enable|disable
....
@@ -66,9 +66,6 @@ Updates or enables/disables authentication. Must be run on
the Solr server itsel
*-s*, *--solr-connection*=_<solrConnection>_::
Zookeeper or HTTP(s) connection string; unnecessary if SOLR_CONNECTION is
defined in solr.in.sh; otherwise, defaults to localhost:9983.
-*--solr-include-file*=_FILE_::
- *(required)* The Solr include file which contains overridable environment
variables for configuring Solr configurations. Defaults to solr.in.sh or
solr.in.cmd.
-
*--solr-url*=_<solrUrl>_::
Base Solr URL, which can be used to determine the zk-host if --zk-host is
not known