diff --git a/.gitignore b/.gitignore index df11f9a..4edfb0a 100644 --- a/.gitignore +++ b/.gitignore @@ -167,7 +167,7 @@ test-out-2/mic.wav test-out-2/recording.wav test-out-2/system.wav build_assets/native-capture-helper -build_assets/ClosedRoomNativeCapture.app/Contents/MacOS/ClosedRoomNativeCapture +build_assets/ClosedRoomNativeCapture.app/ update-uv-dependences-llm-local-server docs/assets/Screenshot 2026-06-26 alle 16.23.57.heic docs/assets/Screenshot 2026-06-26 alle 16.24.33.heic diff --git a/build_assets/ClosedRoomNativeCapture.app/Contents/Info.plist b/build_assets/ClosedRoomNativeCapture.app/Contents/Info.plist deleted file mode 100644 index 1b34b21..0000000 --- a/build_assets/ClosedRoomNativeCapture.app/Contents/Info.plist +++ /dev/null @@ -1,29 +0,0 @@ - - - - - CFBundleIdentifier - com.closedroom.nativecapture - CFBundleName - ClosedRoom Native Capture - CFBundleDisplayName - ClosedRoom Native Capture - CFBundleExecutable - ClosedRoomNativeCapture - CFBundlePackageType - APPL - CFBundleVersion - 1.0.0 - CFBundleShortVersionString - 1.0.0 - LSUIElement - - NSMicrophoneUsageDescription - ClosedRoom uses the microphone to record your voice for local transcription. - NSScreenCaptureUsageDescription - ClosedRoom records screen and system audio to capture computer audio. - NSAudioCaptureUsageDescription - ClosedRoom records computer audio to transcribe meetings and local audio sources. - - diff --git a/test/test_build_generated_assets_contract.py b/test/test_build_generated_assets_contract.py new file mode 100644 index 0000000..6ce1fc9 --- /dev/null +++ b/test/test_build_generated_assets_contract.py @@ -0,0 +1,57 @@ +from __future__ import annotations + +import subprocess +from pathlib import Path +import unittest + + +ROOT = Path(__file__).parents[1] +HELPER_APP = "build_assets/ClosedRoomNativeCapture.app" + + +class GeneratedBuildAssetsContractTests(unittest.TestCase): + def test_native_helper_app_is_generated_and_ignored(self) -> None: + tracked = subprocess.run( + ["git", "ls-files", "--error-unmatch", f"{HELPER_APP}/Contents/Info.plist"], + cwd=ROOT, + capture_output=True, + text=True, + check=False, + ) + ignored = subprocess.run( + ["git", "check-ignore", "-q", f"{HELPER_APP}/Contents/Info.plist"], + cwd=ROOT, + check=False, + ) + + self.assertNotEqual( + tracked.returncode, + 0, + "generated native helper Info.plist must not be tracked", + ) + self.assertEqual( + ignored.returncode, + 0, + "generated native helper app must remain ignored", + ) + + def test_build_regenerates_and_embeds_native_helper_app(self) -> None: + build_script = (ROOT / "build.sh").read_text(encoding="utf-8") + + self.assertIn( + 'NATIVE_HELPER_APP="$BUILD_ASSETS/ClosedRoomNativeCapture.app"', + build_script, + ) + self.assertIn('rm -rf "$NATIVE_HELPER_APP"', build_script) + self.assertIn( + 'cat > "$NATIVE_HELPER_APP/Contents/Info.plist" <