From b1db2870c157b261434166805140c1e85224d5a3 Mon Sep 17 00:00:00 2001 From: yilsem Date: Wed, 7 Oct 2026 18:12:14 +0300 Subject: [PATCH] ci(gitea): run the approval-gate tests on the Windows runner This fork had no CI on Gitea (Actions was off; the upstream .github workflows do not run here). Add one job that runs the protected instruction-file gate tests and the file-write safety tests on the Windows runner. Seven upstream tests that cannot pass on Windows (POSIX paths, symlink privilege, POSIX stat) are deselected by name and listed in the job log. Kart: turkservis-20261007-1421-2 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01EwSpve9HuXMy7dHf4RDMzX --- .gitea/workflows/ci.yml | 88 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 .gitea/workflows/ci.yml diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..531cc61 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,88 @@ +# AITURK IDE ajan CI (kart turkservis-20261007-1421-2). +# +# Bu depo bir yukari akis catalidir; .github/workflows altindaki GitHub is akislari Gitea'da kosmaz. .gitea/workflows +# klasoru var oldugu surece Gitea yalniz buradaki is akislarini okur. +# +# Ne kosar: korumali talimat dosyasi onay kapisinin testleri (insana sorulamayan kosuda aninda BLOCKED, gec onayin +# uygulanmamasi, yolo ile kapinin acilmamasi) ve dosya yazma guvenligi testleri. Kosucu Windows'tur (etiket +# windows-latest; 7 Ekim 2026'da cevrimici kosucu hermes-laptop-windows): urunun hedefi Windows x64'tur ve hata +# Windows asama kosusunda gorulmustur. +# +# Ne sayilmaz (durustluk notu): tests/tools/test_file_write_safety.py icindeki 7 test Windows'ta bu degisiklikten +# bagimsiz olarak gecemez; yukari akis bunlari POSIX icin yazmistir (/etc, /private/etc, /boot yollari; yonetici +# ayricaligi isteyen symlink; POSIX stat alanlari). Asagida adlariyla deselect edilir; degismemis 58dbb4523b +# commit'inde de ayni 7 test kaliyordu (7 Ekim 2026 olcumu). Tam yukari akis test takimi burada KOSMAZ. +name: ci + +on: + push: + branches: + - aiturk/main + - fix/ide-windows-vcruntime + workflow_dispatch: + +permissions: + contents: read + +jobs: + approval-gate-windows: + runs-on: windows-latest + timeout-minutes: 40 + steps: + - name: Kaynagi al + uses: actions/checkout@v4 + with: + github-server-url: https://gitea.twinpay.one + + - name: Ortami kur + shell: powershell + run: | + $ErrorActionPreference = 'Stop' + "kosucu: $env:COMPUTERNAME / $env:USERNAME" + "checkout SHA: $(git rev-parse HEAD) / beklenen: $env:GITHUB_SHA" + $py = $null + $launcher = Get-Command py -ErrorAction SilentlyContinue + if ($launcher) { $py = (& $launcher.Source -3 -c 'import sys; print(sys.executable)').Trim() } + if (-not $py) { + $cmd = Get-Command python -ErrorAction SilentlyContinue + if ($cmd -and $cmd.Source -notlike '*\WindowsApps\*') { $py = $cmd.Source } + } + if (-not $py) { throw 'Python bulunamadi' } + "onyukleme python: $py" + & $py -m pip install --quiet --disable-pip-version-check --target "$env:RUNNER_TEMP\uvboot" uv + if ($LASTEXITCODE -ne 0) { throw 'uv kurulamadi' } + $env:PYTHONPATH = "$env:RUNNER_TEMP\uvboot" + & $py -m uv venv --python 3.11 "$env:RUNNER_TEMP\ci-venv" + if ($LASTEXITCODE -ne 0) { throw 'venv olusturulamadi' } + & $py -m uv pip install --python "$env:RUNNER_TEMP\ci-venv\Scripts\python.exe" -e . pytest + if ($LASTEXITCODE -ne 0) { throw 'bagimliliklar kurulamadi' } + $env:PYTHONPATH = '' + & "$env:RUNNER_TEMP\ci-venv\Scripts\python.exe" --version + + - name: Onay kapisi testleri + shell: powershell + run: | + $ErrorActionPreference = 'Continue' + $env:PYTHONDONTWRITEBYTECODE = '1' + $env:PYTHONUTF8 = '1' + $venv = "$env:RUNNER_TEMP\ci-venv\Scripts\python.exe" + $f = 'tests/tools/test_file_write_safety.py' + $sayilmayan = @( + "${f}::TestCheckSensitivePathMacOSBypass::test_etc_hosts_blocked", + "${f}::TestCheckSensitivePathMacOSBypass::test_private_etc_hosts_blocked", + "${f}::TestCheckSensitivePathMacOSBypass::test_private_etc_ssh_config_blocked", + "${f}::TestCheckSensitivePathMacOSBypass::test_private_var_blocked", + "${f}::TestCheckSensitivePathMacOSBypass::test_boot_still_blocked", + "${f}::TestAtomicWrite::test_patch_routes_through_atomic_write", + "${f}::TestProtectedInstructionFiles::test_symlink_to_protected_file_is_gated" + ) + $deselect = @() + foreach ($t in $sayilmayan) { $deselect += '--deselect'; $deselect += $t } + "CI OZETI: Windows'ta sayilmayan (deselect) test sayisi: $($sayilmayan.Count)" + $sayilmayan | ForEach-Object { " sayilmadi: $_" } + & $venv -m pytest tests/tools/test_protected_instruction_unattended.py $f ` + tests/tools/test_computer_use_approval_isolation.py tests/cli/test_cli_approval_ui.py ` + tests/cli/test_single_query_session_finalize.py @deselect -q -p no:cacheprovider -rf + $kod = $LASTEXITCODE + "pytest cikis kodu: $kod" + exit $kod