Skip to content

[LIVY-1085][TEST] Skip remaining R test paths when -DskipRTests is specified - #561

Merged
gyogal merged 1 commit into
apache:masterfrom
gyogal:LIVY-1085
Sep 23, 2026
Merged

gyogal merged 1 commit into
apache:masterfrom
gyogal:LIVY-1085

Conversation

@gyogal

@gyogal gyogal commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

What changes were proposed in this pull request?

Two R-dependent tests (SharedSessionSpec, InteractiveSessionSpec) ran a
real sparkr interpreter even with -DskipRTests=true, unlike every other
R test in the suite. Guard both with the same sys.props pattern already
used by SparkRInterpreterSpec/SparkRSessionSpec/BatchIT/InteractiveIT,
and make InteractiveSessionSpec's downstream execution_count expectation
conditional on the flag, since it depends on the skipped R statement
having incremented the session's shared statement counter.

How was this patch tested?

Verified via mvn test runs of both specs with -DskipRTests=true (R test cancels,
rest pass) and the default -DskipRTests=false on a machine with R installed.

Was this patch authored or co-authored using generative AI tooling?

Generated-by: Claude Code (claude-sonnet-5)

…ecified

Two R-dependent tests (SharedSessionSpec, InteractiveSessionSpec) ran a
real sparkr interpreter even with -DskipRTests=true, unlike every other
R test in the suite. Guard both with the same sys.props pattern already
used by SparkRInterpreterSpec/SparkRSessionSpec/BatchIT/InteractiveIT,
and make InteractiveSessionSpec's downstream execution_count expectation
conditional on the flag, since it depends on the skipped R statement
having incremented the session's shared statement counter.

Verified via mvn test runs of both specs with -DskipRTests=true (R test
cancels, rest pass) and the default -DskipRTests=false on a machine with
R installed.

Generated-by: Claude Code (claude-sonnet-5)
@roczei

roczei commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

It looks like there might still be an issue here. Could you double check this? When testing locally with the R binary renamed to R.disable, I'm still encountering errors. Here is the output:

$ mv /opt/homebrew/bin/R /opt/homebrew/bin/R.disable
$ mvn -Pthriftserver -DskipRTests=false -B verify

...
SparkRSessionSpec:
- should start in the starting or idle state (475 milliseconds)
- should eventually become the idle state (438 milliseconds)
- should execute `1 + 2` == 3 *** FAILED *** (445 milliseconds)
  JObject(List((status,JString(error)), (execution_count,JInt(0)), (ename,JString(InterpreterError)), (evalue,JString(Fail to start interpreter)), (traceback,JArray(List())))) did not equal JObject(List((status,JString(ok)), (execution_count,JInt(0)), (data,JObject(List((text/plain,JString([1] 3))))))) (SparkRSessionSpec.scala:45)
  Analysis:
  JObject(obj: List(0: (status,JString(error)) -> (status,JString(ok)), 2: (ename,JString(InterpreterError)) -> (data,JObject(List((text/plain,JString([1] 3))))), 3: (evalue,JString(Fail to start interpreter)) -> , 4: (traceback,JArray(List())) -> ))
- should execute `x = 1`, then `y = 2`, then `x + y` *** FAILED *** (444 milliseconds)
  JObject(List((status,JString(error)), (execution_count,JInt(0)), (ename,JString(InterpreterError)), (evalue,JString(Fail to start interpreter)), (traceback,JArray(List())))) did not equal JObject(List((status,JString(ok)), (execution_count,JInt(0)), (data,JObject(List((text/plain,JString())))))) (SparkRSessionSpec.scala:62)
  Analysis:
  JObject(obj: List(0: (status,JString(error)) -> (status,JString(ok)), 2: (ename,JString(InterpreterError)) -> (data,JObject(List((text/plain,JString())))), 3: (evalue,JString(Fail to start interpreter)) -> , 4: (traceback,JArray(List())) -> ))
- should capture stdout from print *** FAILED *** (441 milliseconds)
  JObject(List((status,JString(error)), (execution_count,JInt(0)), (ename,JString(InterpreterError)), (evalue,JString(Fail to start interpreter)), (traceback,JArray(List())))) did not equal JObject(List((status,JString(ok)), (execution_count,JInt(0)), (data,JObject(List((text/plain,JString([1] "Hello World"))))))) (SparkRSessionSpec.scala:106)
  Analysis:
  JObject(obj: List(0: (status,JString(error)) -> (status,JString(ok)), 2: (ename,JString(InterpreterError)) -> (data,JObject(List((text/plain,JString([1] "Hello World"))))), 3: (evalue,JString(Fail to start interpreter)) -> , 4: (traceback,JArray(List())) -> ))
- should capture stdout from cat *** FAILED *** (449 milliseconds)
  JObject(List((status,JString(error)), (execution_count,JInt(0)), (ename,JString(InterpreterError)), (evalue,JString(Fail to start interpreter)), (traceback,JArray(List())))) did not equal JObject(List((status,JString(ok)), (execution_count,JInt(0)), (data,JObject(List((text/plain,JString(3))))))) (SparkRSessionSpec.scala:122)
  Analysis:
  JObject(obj: List(0: (status,JString(error)) -> (status,JString(ok)), 2: (ename,JString(InterpreterError)) -> (data,JObject(List((text/plain,JString(3))))), 3: (evalue,JString(Fail to start interpreter)) -> , 4: (traceback,JArray(List())) -> ))
- should report an error if accessing an unknown variable *** FAILED *** (436 milliseconds)
  "[Interpreter]Error" was not equal to "[]Error" (SparkRSessionSpec.scala:132)
  Analysis:
  "[Interpreter]Error" -> "[]Error"
SparkRInterpreterSpec:
- should execute `1 + 2` == 3 *** FAILED *** (10 milliseconds)
  java.io.IOException: Cannot run program "R": error=2, No such file or directory
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$1(SparkRInterpreterSpec.scala:44)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
  at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
  at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
  ...
  Cause: java.io.IOException: error=2, No such file or directory
  at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
  at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
  at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:244)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$1(SparkRInterpreterSpec.scala:44)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  ...
- should execute multiple statements *** FAILED *** (9 milliseconds)
  java.io.IOException: Cannot run program "R": error=2, No such file or directory
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$4(SparkRInterpreterSpec.scala:51)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
  at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
  at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
  ...
  Cause: java.io.IOException: error=2, No such file or directory
  at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
  at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
  at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:244)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$4(SparkRInterpreterSpec.scala:51)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  ...
- should execute multiple statements in one block *** FAILED *** (10 milliseconds)
  java.io.IOException: Cannot run program "R": error=2, No such file or directory
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$9(SparkRInterpreterSpec.scala:68)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
  at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
  at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
  ...
  Cause: java.io.IOException: error=2, No such file or directory
  at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
  at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
  at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:244)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$9(SparkRInterpreterSpec.scala:68)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  ...
- should get multiple outputs in one block *** FAILED *** (12 milliseconds)
  java.io.IOException: Cannot run program "R": error=2, No such file or directory
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$12(SparkRInterpreterSpec.scala:82)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
  at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
  at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
  ...
  Cause: java.io.IOException: error=2, No such file or directory
  at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
  at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
  at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:244)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$12(SparkRInterpreterSpec.scala:82)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  ...
- should capture stdout *** FAILED *** (10 milliseconds)
  java.io.IOException: Cannot run program "R": error=2, No such file or directory
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$15(SparkRInterpreterSpec.scala:93)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
  at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
  at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
  ...
  Cause: java.io.IOException: error=2, No such file or directory
  at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
  at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
  at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:244)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$15(SparkRInterpreterSpec.scala:93)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  ...
- should report an error if accessing an unknown variable *** FAILED *** (10 milliseconds)
  java.io.IOException: Cannot run program "R": error=2, No such file or directory
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$18(SparkRInterpreterSpec.scala:100)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
  at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
  at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
  ...
  Cause: java.io.IOException: error=2, No such file or directory
  at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
  at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
  at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:244)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$18(SparkRInterpreterSpec.scala:100)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  ...
- should not hang when executing incomplete statements *** FAILED *** (12 milliseconds)
  java.io.IOException: Cannot run program "R": error=2, No such file or directory
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$20(SparkRInterpreterSpec.scala:109)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
  at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
  at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
  ...
  Cause: java.io.IOException: error=2, No such file or directory
  at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
  at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
  at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:244)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$20(SparkRInterpreterSpec.scala:109)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  ...
- should escape the statement *** FAILED *** (9 milliseconds)
  java.io.IOException: Cannot run program "R": error=2, No such file or directory
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$22(SparkRInterpreterSpec.scala:117)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
  at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
  at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
  ...
  Cause: java.io.IOException: error=2, No such file or directory
  at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
  at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
  at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:244)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
  at org.apache.livy.repl.SparkRInterpreter$.apply(SparkRInterpreter.scala:143)
  at org.apache.livy.repl.SparkRInterpreterSpec.createInterpreter(SparkRInterpreterSpec.scala:41)
  at org.apache.livy.repl.BaseInterpreterSpec.withInterpreter(BaseInterpreterSpec.scala:32)
  at org.apache.livy.repl.SparkRInterpreterSpec.$anonfun$new$22(SparkRInterpreterSpec.scala:117)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
  ...
Run completed in 48 seconds, 289 milliseconds.
Total number of tests run: 88
Suites: completed 12, aborted 0
Tests: succeeded 74, failed 14, canceled 0, ignored 0, pending 0
*** 14 TESTS FAILED ***
java.util.concurrent.RejectedExecutionException: Task Future(<not completed>) rejected from java.util.concurrent.ThreadPoolExecutor@7a086cd0[Shutting down, pool size = 1, active threads = 1, queued tasks = 4, completed tasks = 0]
	at java.base/java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2065)
	at java.base/java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:833)
	at java.base/java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1365)
	at java.base/java.util.concurrent.Executors$DelegatedExecutorService.execute(Executors.java:721)
	at scala.concurrent.impl.ExecutionContextImpl.execute(ExecutionContextImpl.scala:21)
	at scala.concurrent.impl.Promise$Transformation.submitWithValue(Promise.scala:462)
	at scala.concurrent.impl.Promise$DefaultPromise.submitWithValue(Promise.scala:371)
	at scala.concurrent.impl.Promise$DefaultPromise.tryComplete0(Promise.scala:295)
	at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:537)
	at scala.concurrent.ExecutionContext$parasitic$.execute(ExecutionContext.scala:222)
	at scala.concurrent.impl.Promise$Transformation.submitWithValue(Promise.scala:462)
	at scala.concurrent.impl.Promise$DefaultPromise.submitWithValue(Promise.scala:371)
	at scala.concurrent.impl.Promise$DefaultPromise.tryComplete0(Promise.scala:295)
	at scala.concurrent.impl.Promise$Transformation.handleFailure(Promise.scala:477)
	at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:539)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:840)
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Livy Project Parent POM 1.0.0-SNAPSHOT:
[INFO] 
[INFO] Livy Project Parent POM ............................ SUCCESS [  2.469 s]
[INFO] livy-api ........................................... SUCCESS [  3.750 s]
[INFO] livy-client-common ................................. SUCCESS [  2.135 s]
[INFO] livy-test-lib ...................................... SUCCESS [  2.269 s]
[INFO] multi-scala-project-root ........................... SUCCESS [  0.595 s]
[INFO] livy-core-parent ................................... SUCCESS [  0.186 s]
[INFO] livy-core_2.13 ..................................... SUCCESS [  0.974 s]
[INFO] livy-rsc ........................................... SUCCESS [ 20.546 s]
[INFO] livy-repl-parent ................................... SUCCESS [  2.416 s]
[INFO] livy-repl_2.13 ..................................... FAILURE [ 55.953 s]
[INFO] livy-server ........................................ SKIPPED
[INFO] livy-thriftserver-session .......................... SKIPPED
[INFO] livy-thriftserver .................................. SKIPPED
[INFO] livy-assembly ...................................... SKIPPED
[INFO] livy-client-http ................................... SKIPPED
[INFO] livy-scala-api-parent .............................. SKIPPED
[INFO] livy-scala-api_2.13 ................................ SKIPPED
[INFO] livy-integration-test .............................. SKIPPED
[INFO] livy-coverage-report ............................... SKIPPED
[INFO] livy-examples ...................................... SKIPPED
[INFO] livy-python-api .................................... SKIPPED
[INFO] livy-beeline ....................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:31 min
[INFO] Finished at: 2026-09-23T10:45:11+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.scalatest:scalatest-maven-plugin:2.2.0:test (test) on project livy-repl_2.13: There are test failures -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <args> -rf :livy-repl_2.13

@gyogal

gyogal commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor Author

@roczei Thanks for reviewing the PR and testing it locally! To clarify the test behavior: the R tests are only skipped when skipRTests is explicitly set to true (or just specified as -DskipRTests), but when it is set to false or not specified at all, the R tests are run even though the R interpreter is not available.

@roczei

roczei commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Sorry, I have no idea why I was testing it with false. It works completely fine in this case -DskipRTests=true:

$ mv /opt/homebrew/bin/R /opt/homebrew/bin/R.disable
$ mvn -Pthriftserver -DskipRTests=true -B verify

[INFO] 
[INFO] --- apache-rat:0.12:check (default) @ livy-beeline ---
[INFO] Enabled default license matchers.
[INFO] Will parse SCM ignores for exclusions...
[INFO] Finished adding exclusions from SCM ignore files.
[INFO] 61 implicit excludes (use -debug for more details).
[INFO] Loading excludes from file /Users/roczei/github/upstream/livy/.rat-excludes, using character set UTF-8
[INFO] Exclude: DEPENDENCIES
[INFO] 1 resources included (use -debug for more details)
[INFO] Rat check: Summary over all files. Unapproved: 0, unknown: 0, generated: 0, approved: 1 licenses.
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Livy Project Parent POM 1.0.0-SNAPSHOT:
[INFO] 
[INFO] Livy Project Parent POM ............................ SUCCESS [  3.801 s]
[INFO] livy-api ........................................... SUCCESS [  5.835 s]
[INFO] livy-client-common ................................. SUCCESS [  2.328 s]
[INFO] livy-test-lib ...................................... SUCCESS [  2.489 s]
[INFO] multi-scala-project-root ........................... SUCCESS [  0.642 s]
[INFO] livy-core-parent ................................... SUCCESS [  0.202 s]
[INFO] livy-core_2.13 ..................................... SUCCESS [  1.019 s]
[INFO] livy-rsc ........................................... SUCCESS [ 27.660 s]
[INFO] livy-repl-parent ................................... SUCCESS [  2.537 s]
[INFO] livy-repl_2.13 ..................................... SUCCESS [01:06 min]
[INFO] livy-server ........................................ SUCCESS [03:08 min]
[INFO] livy-thriftserver-session .......................... SUCCESS [ 11.087 s]
[INFO] livy-thriftserver .................................. SUCCESS [04:08 min]
[INFO] livy-assembly ...................................... SUCCESS [  4.877 s]
[INFO] livy-client-http ................................... SUCCESS [  9.636 s]
[INFO] livy-scala-api-parent .............................. SUCCESS [  0.700 s]
[INFO] livy-scala-api_2.13 ................................ SUCCESS [ 18.156 s]
[INFO] livy-integration-test .............................. SUCCESS [18:23 min]
[INFO] livy-coverage-report ............................... SUCCESS [  2.185 s]
[INFO] livy-examples ...................................... SUCCESS [  2.802 s]
[INFO] livy-python-api .................................... SUCCESS [  2.129 s]
[INFO] livy-beeline ....................................... SUCCESS [  2.275 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  28:28 min
[INFO] Finished at: 2026-09-23T16:23:58+02:00

@gyogal

gyogal commented Sep 23, 2026

Copy link
Copy Markdown
Contributor Author

Thank you @roczei! Appreciate you checking out the PR and testing it on your machine!

@gyogal
gyogal merged commit c7af437 into apache:master Sep 23, 2026
6 checks passed
@gyogal
gyogal deleted the LIVY-1085 branch September 23, 2026 16:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants