Implement isolated Build and Refresh with immutable leased snapshots

This commit is contained in:
2026-11-12 09:28:25 +01:00
parent 85a75383a0
commit e97af99412
27 changed files with 2066 additions and 15 deletions
+5 -2
View File
@@ -24,7 +24,7 @@ wrapper = ROOT / ("mvnw.cmd" if os.name == "nt" else "mvnw")
run([sys.executable, ROOT / "scripts/check-neitzellib-artifact.py"])
run([wrapper, "-B", "-ntp", "clean", "install"])
run([wrapper, "-B", "-ntp", "-pl", "designer-target-tools", "org.apache.maven.plugins:maven-dependency-plugin:3.6.1:build-classpath", "-DincludeScope=runtime", "-Dmdep.outputFile=target/runtime-classpath.txt"])
for module in ("contracts", "preview-api", "core", "kit-ui", "standalone", "target-tools"):
for module in ("contracts", "preview-api", "core", "kit-ui", "standalone", "target-tools", "maven-plugin"):
name = "designer-" + module
expected = 69 if module in ("kit-ui", "standalone") else 65
with zipfile.ZipFile(ROOT / name / "target" / (name + "-0.1.0-SNAPSHOT.jar")) as jar:
@@ -37,11 +37,14 @@ version = subprocess.run([str(target_java), "-version"], capture_output=True, te
if not re.search(r'version "21[.\"]', version.stderr):
sys.exit("Target linkage gate requires Java 21")
run([target_java, "-cp", classpath, "de.neitzel.fxdesigner.target.TargetToolInfo"])
run([wrapper, "-B", "-ntp", "-pl", "designer-standalone", "org.apache.maven.plugins:maven-dependency-plugin:3.6.1:build-classpath", "-DincludeScope=test", "-Dmdep.outputFile=target/smoke-classpath.txt"])
smoke_classpath = os.pathsep.join([str(ROOT / "designer-standalone/target/test-classes"), str(ROOT / "designer-standalone/target/classes"), (ROOT / "designer-standalone/target/smoke-classpath.txt").read_text().strip()])
run([Path(os.environ["JAVA_HOME"]) / "bin/java", "-cp", smoke_classpath, "de.neitzel.fxdesigner.build.BuildRefreshSmoke", ROOT, args.target_java_home])
run([ROOT / "designer-intellij" / ("gradlew.bat" if os.name == "nt" else "gradlew"), "-p", "designer-intellij", "--no-daemon", "-PideaHome=" + str(idea), "clean", "test", "buildPlugin", "verifyPluginProjectConfiguration"])
with zipfile.ZipFile(next((ROOT / "designer-intellij/build/distributions").glob("*.zip"))) as plugin:
names = plugin.namelist()
assert any("javafx-graphics-26-mac" in n for n in names), "Missing host JavaFX implementation"
assert not any("designer-target-tools" in n or "designer-preview-api" in n or "/fx-1.0" in n for n in names), "Target dependency in IDE host"
assert not any("designer-target-tools" in n or "designer-preview-api" in n or "designer-maven-plugin" in n or "/fx-1.0" in n for n in names), "Target dependency in IDE host"
for document in [ROOT / "README.md", ROOT / "AGENTS.md", ROOT / "THIRD-PARTY-NOTICES.md", *sorted((ROOT / "docs").rglob("*.md"))]:
content = document.read_text(encoding="utf-8")
for example in re.findall(r"```json\n(.*?)\n```", content, re.S):