Bladeren bron

test(docker): include gcode_viewer/ in the test image so the packaging assertion actually runs

  Dockerfile.test only COPYed backend/ and pyproject.toml, so the
  integration test at tests/integration/test_gcode_viewer.py:63
  silently pytest.skip'd in every Docker run with "gcode_viewer/
  index.html not present at /app/gcode_viewer/index.html".

  That was deliberate fallback behaviour for unit-test environments
  where the assets are intentionally absent, but in CI it meant the
  #1218 packaging regression (3D Preview returning {"detail":"Not
  Found"} because the embedded PrettyGCode viewer wasn't bundled into
  the prod image) had no test guarding against a recurrence — the
  test that was supposed to catch it was the one being skipped.

  Add COPY gcode_viewer/ ./gcode_viewer/ to the backend-test stage,
  matching the path the production Dockerfile uses (static_dir.parent
  / "gcode_viewer" = /app/gcode_viewer/) so the assertion runs against
  the same layout the app sees at runtime. Path-anchored comment in
  the Dockerfile so a future maintainer doesn't strip the COPY as
  unused.
maziggy 4 dagen geleden
bovenliggende
commit
07ea69c3f0
1 gewijzigde bestanden met toevoegingen van 6 en 0 verwijderingen
  1. 6 0
      Dockerfile.test

+ 6 - 0
Dockerfile.test

@@ -17,6 +17,12 @@ RUN pip install --no-cache-dir -r requirements.txt -r requirements-dev.txt
 COPY backend/ ./backend/
 COPY backend/ ./backend/
 COPY pyproject.toml ./
 COPY pyproject.toml ./
 
 
+# Embedded GCode viewer assets — required so the @app.get("/gcode-viewer/...")
+# packaging-regression test in tests/integration/test_gcode_viewer.py actually
+# runs instead of pytest-skipping with "index.html not present". Path matches
+# the production Dockerfile (static_dir.parent / "gcode_viewer" = /app/gcode_viewer/).
+COPY gcode_viewer/ ./gcode_viewer/
+
 # Create necessary directories
 # Create necessary directories
 RUN mkdir -p /app/data /app/logs /app/archive
 RUN mkdir -p /app/data /app/logs /app/archive