You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@texera.apache.org by gi...@apache.org on 2026/08/01 07:14:21 UTC
(texera) 01/01: test(amber): extend PveResource unit test coverage (#7223)
This is an automated email from the ASF dual-hosted git repository.
github-merge-queue[bot] pushed a commit to branch gh-readonly-queue/main/pr-7223-bead35a9b17bf1758d61bb64a63c90e49b2881ef
in repository https://gitbox.apache.org/repos/asf/texera.git
commit 19a35b74a13a135efaa2a9f046f8be78d9eb0cc5
Author: Meng Wang <me...@uci.edu>
AuthorDate: Sat Aug 1 00:12:59 2026 -0700
test(amber): extend PveResource unit test coverage (#7223)
### What changes were proposed in this PR?
Extends the existing `MockTexeraDB`-backed `PveResourceSpec` to cover
the
`PveResource` endpoints that were still untested. The spec already
covered
`savePve`, `listPves`, `updatePve`, `deletePveFromDb`, and
`deleteEnvironments`,
so this adds the remaining three (5 tests), staying on the metadata /
mocked-process
path (no real virtualenv):
- `getSystemPackages` — wraps the manager's list under a `"system"` key.
- `fetchPVEs` — returns 400 when the `cuid` query parameter is missing,
and the
computing unit's environments otherwise.
- `deletePackage` — returns 200 when the uninstall succeeds and 400 when
the
target is a system package.
No production code was changed.
### Any related issues, documentation, discussions?
Closes #7179.
### How was this PR tested?
`sbt "WorkflowExecutionService/testOnly *PveResourceSpec"` — 30 passed
(25 existing
+ 5 new), run twice for determinism against the embedded Postgres with
`PveManager.runProcess` mocked (no real pip/venv). The failure path was
verified by
breaking an assertion (1 failed, non-zero exit), and
`Test/scalafmtCheck` +
`Test/scalafix --check` are clean.
### Was this PR authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Opus 4.8 [1M context])
---
.../pythonvirtualenvironment/PveResourceSpec.scala | 41 ++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/amber/src/test/scala/org/apache/texera/web/resource/pythonvirtualenvironment/PveResourceSpec.scala b/amber/src/test/scala/org/apache/texera/web/resource/pythonvirtualenvironment/PveResourceSpec.scala
index 9904e3eb35..9c6e1954fd 100644
--- a/amber/src/test/scala/org/apache/texera/web/resource/pythonvirtualenvironment/PveResourceSpec.scala
+++ b/amber/src/test/scala/org/apache/texera/web/resource/pythonvirtualenvironment/PveResourceSpec.scala
@@ -429,4 +429,45 @@ class PveResourceSpec
val resp = new PveResource().deletePveFromDb(-1, sessionUser)
resp.getStatus shouldBe Response.Status.NOT_FOUND.getStatusCode
}
+
+ "PveResource.getSystemPackages" should "wrap the manager's list under a 'system' key" in {
+ // PveManager.systemPackages is a lazy val resolved via a (mocked) `pip freeze`,
+ // so allow the process call in case this test is the first to force resolution.
+ expectProcessCalls()
+ val result = new PveResource().getSystemPackages
+ result.keySet.asScala shouldBe Set("system")
+ result.get("system") shouldBe PveManager.getSystemPackages.toList.asJava
+ }
+
+ "PveResource.fetchPVEs" should "return 400 when the cuid query parameter is missing" in {
+ val resp = new PveResource().fetchPVEs(null)
+ resp.getStatus shouldBe Response.Status.BAD_REQUEST.getStatusCode
+ }
+
+ it should "return the environments of a computing unit" in {
+ expectProcessCalls()
+ PveManager.createNewPve(testCuid, queue, testPveName)
+
+ val resp = new PveResource().fetchPVEs(Int.box(testCuid))
+ resp.getStatus shouldBe Response.Status.OK.getStatusCode
+ val pves = resp.getEntity.asInstanceOf[java.util.List[java.util.Map[String, Object]]].asScala
+ pves.map(_.get("pveName")) should contain(testPveName)
+ }
+
+ "PveResource.deletePackage" should "return 200 when the uninstall succeeds" in {
+ expectProcessCalls()
+ PveManager.createNewPve(testCuid, queue, testPveName)
+ PveManager.installUserPackages(List("colorama==0.4.6"), testCuid, queue, testPveName)
+
+ val resp = new PveResource().deletePackage(testCuid, testPveName, "colorama")
+ resp.getStatus shouldBe Response.Status.OK.getStatusCode
+ }
+
+ it should "return 400 when the package is part of the system set" in {
+ expectProcessCalls()
+ PveManager.createNewPve(testCuid, queue, testPveName)
+
+ val resp = new PveResource().deletePackage(testCuid, testPveName, "pyarrow")
+ resp.getStatus shouldBe Response.Status.BAD_REQUEST.getStatusCode
+ }
}