You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Cross-language refusal tests read two different env var spellings: CLDK_TEST_PYTHON_NEO4J_URI vs CLDK_TEST_NEO4J_PYTHON_URI #362
Found by running the Java suite with what I believed was every gate satisfied, seeing two skips remain, and only then noticing the transposition. The whole point of #360 was that a silently skipped module hid five legs of rot; a variable name that is nearly right is the same failure mode in miniature.
Scope boundary
In scope: one spelling, both suites, and the skip reason quoting the variable it actually reads.
Out of scope: the CLDK_TEST_NEO4J_* (read-only) and CLDK_TEST_NEO4J_WRITE_* (disposable) families, which are consistent and whose separation is deliberate (#324).
Definition of done
Setting one documented set of variables satisfies the cross-language refusal gate in every suite that has one.
A third spelling in the same family, found while running the Java suite: the application name is CLDK_TEST_NEO4J_JAVA_APP for Java and CLDK_TEST_NEO4J_APP for TypeScript and Python.
Setting the TypeScript spelling against the Java suite is silent and looks like it worked: 563 passed / 75 skipped instead of 636 passed / 2 skipped. Nothing fails; 73 tests just quietly do not run. That is worse than the transposition this issue was opened for, because the run still ends green.
So the family is:
concept
Java
TypeScript / Python
application under test
CLDK_TEST_NEO4J_JAVA_APP
CLDK_TEST_NEO4J_APP
a graph of another language, to prove refusal
CLDK_TEST_PYTHON_NEO4J_URI
CLDK_TEST_NEO4J_PYTHON_URI
Both belong in the same fix, and the terminal-summary hook from #360 should report a suite that skipped for want of an application name, not only one that skipped for want of a write URI.
Surveyed every CLDK_TEST_* variable the suites actually read. There are five inconsistencies, not the two this issue was opened for.
concept
Java
TypeScript / Python
application name
CLDK_TEST_NEO4J_JAVA_APP
CLDK_TEST_NEO4J_APP
cross-language graph URI
CLDK_TEST_PYTHON_NEO4J_URI
CLDK_TEST_NEO4J_PYTHON_URI
its user / password / app
CLDK_TEST_PYTHON_NEO4J_{USER,PASSWORD,APP}
CLDK_TEST_NEO4J_PYTHON_{USER,PASSWORD,APP}
scale fixture app
CLDK_TEST_NEO4J_JAVA_SCALE_APP
—
default when unset
none, so the suite skips
odoo-slim-19 / superset-frontend
The last row is its own footgun and is arguably worse than the transposition. Python and TypeScript default their application name, so pointing CLDK_TEST_NEO4J_URI at a graph that does not hold that application skips silently — the run ends green having verified nothing. Java has no default and skips loudly by comparison.
Proposed resolution
One spelling per concept: CLDK_TEST_NEO4J_APP, CLDK_TEST_NEO4J_SCALE_APP, and the CLDK_TEST_NEO4J_PYTHON_* family for the cross-language refusal graph — keeping the CLDK_TEST_NEO4J_ prefix throughout so the family sorts together and a transposition is visually obvious.
A retired spelling that is still set becomes an error, not a shrug. Anyone with CLDK_TEST_NEO4J_JAVA_APP in their shell history would otherwise get exactly the silent skip this issue is about. A few lines in tests/conftest.py that fail the run naming the old variable and its replacement costs nothing and removes the failure mode permanently.
Open question worth a ruling: whether the defaults should go away entirely. A default application name is convenient locally and is the reason a mis-pointed URI reads as success. My inclination is to drop them and require the name, since these suites already require a URI with no default for the same reason (#324).
Sequencing: this lands after #354, which is in flight and editing the same Java live-test files.
Activity
rahlk commentedon Sep 7, 2026
A third spelling in the same family, found while running the Java suite: the application name is
CLDK_TEST_NEO4J_JAVA_APPfor Java andCLDK_TEST_NEO4J_APPfor TypeScript and Python.Setting the TypeScript spelling against the Java suite is silent and looks like it worked: 563 passed / 75 skipped instead of 636 passed / 2 skipped. Nothing fails; 73 tests just quietly do not run. That is worse than the transposition this issue was opened for, because the run still ends green.
So the family is:
CLDK_TEST_NEO4J_JAVA_APPCLDK_TEST_NEO4J_APPCLDK_TEST_PYTHON_NEO4J_URICLDK_TEST_NEO4J_PYTHON_URIBoth belong in the same fix, and the terminal-summary hook from #360 should report a suite that skipped for want of an application name, not only one that skipped for want of a write URI.
rahlk commentedon Sep 7, 2026
Surveyed every
CLDK_TEST_*variable the suites actually read. There are five inconsistencies, not the two this issue was opened for.CLDK_TEST_NEO4J_JAVA_APPCLDK_TEST_NEO4J_APPCLDK_TEST_PYTHON_NEO4J_URICLDK_TEST_NEO4J_PYTHON_URICLDK_TEST_PYTHON_NEO4J_{USER,PASSWORD,APP}CLDK_TEST_NEO4J_PYTHON_{USER,PASSWORD,APP}CLDK_TEST_NEO4J_JAVA_SCALE_APPodoo-slim-19/superset-frontendThe last row is its own footgun and is arguably worse than the transposition. Python and TypeScript default their application name, so pointing
CLDK_TEST_NEO4J_URIat a graph that does not hold that application skips silently — the run ends green having verified nothing. Java has no default and skips loudly by comparison.Proposed resolution
CLDK_TEST_NEO4J_APP,CLDK_TEST_NEO4J_SCALE_APP, and theCLDK_TEST_NEO4J_PYTHON_*family for the cross-language refusal graph — keeping theCLDK_TEST_NEO4J_prefix throughout so the family sorts together and a transposition is visually obvious.CLDK_TEST_NEO4J_JAVA_APPin their shell history would otherwise get exactly the silent skip this issue is about. A few lines intests/conftest.pythat fail the run naming the old variable and its replacement costs nothing and removes the failure mode permanently.Open question worth a ruling: whether the defaults should go away entirely. A default application name is convenient locally and is the reason a mis-pointed URI reads as success. My inclination is to drop them and require the name, since these suites already require a URI with no default for the same reason (#324).
Sequencing: this lands after #354, which is in flight and editing the same Java live-test files.