YanDisk v1.0.1: тёмная иконка по теме системы, вкладки (Скриншоты скрыт, Файлы→Доступные мне), синк по умолчанию 'В облаке', ПРАВКИ.md
- Иконка: AppIconDark.icns + переключение Dock-иконки по effectiveAppearance (KVO)
- Сайдбар: убран 'Скриншоты', 'Файлы' → 'Доступные мне' (заглушка), первая вкладка — все файлы и папки
- SyncPolicyStore.globalMode по умолчанию .cloudOnly ('В облаке')
- build.sh/smoke_test.sh: SDKROOT из Xcode (фикс SDK-конфликта тулчейна 6.3.3/SDK 6.4)
- ПРАВКИ.md: полный аудит и план доработок
This commit is contained in:
Executable
+53
@@ -0,0 +1,53 @@
|
||||
#!/bin/bash
|
||||
# Smoke-тесты логики без запуска GUI
|
||||
set -euo pipefail
|
||||
ROOT="$(cd "$(dirname "$0")" && pwd)"
|
||||
cd "$ROOT"
|
||||
|
||||
# SDK из CommandLineTools может не совпадать с тулчейном — берём SDK из Xcode.
|
||||
export SDKROOT="$(xcrun --sdk macosx --show-sdk-path 2>/dev/null || echo "${SDKROOT:-}")"
|
||||
|
||||
echo "1) build"
|
||||
swift build -c release >/dev/null
|
||||
|
||||
echo "2) OAuth parse"
|
||||
swift -e '
|
||||
import Foundation
|
||||
func parse(_ input: String) -> String? {
|
||||
let trimmed = input.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||
if trimmed.isEmpty { return nil }
|
||||
if trimmed.contains("access_token=") {
|
||||
let parts = trimmed.replacingOccurrences(of: "#", with: "&").replacingOccurrences(of: "?", with: "&").split(separator: "&")
|
||||
for part in parts {
|
||||
let kv = part.split(separator: "=", maxSplits: 1)
|
||||
if kv.count == 2, kv[0] == "access_token" { return String(kv[1]) }
|
||||
}
|
||||
}
|
||||
if trimmed.range(of: "^[A-Za-z0-9_\\-]{16,}$", options: .regularExpression) != nil { return trimmed }
|
||||
return nil
|
||||
}
|
||||
assert(parse("0c4181a7c2cf4521964a72ff57a34a07") == "0c4181a7c2cf4521964a72ff57a34a07")
|
||||
assert(parse("https://oauth.yandex.ru/verification_code#access_token=abc123&token_type=bearer") == "abc123")
|
||||
print("ok")
|
||||
'
|
||||
|
||||
echo "3) API path encoding"
|
||||
swift -e '
|
||||
import Foundation
|
||||
func diskPath(_ path: String) -> String {
|
||||
if path.hasPrefix("disk:") || path.hasPrefix("trash:") { return path }
|
||||
let normalized = path.hasPrefix("/") ? path : "/" + path
|
||||
return "disk:\(normalized)"
|
||||
}
|
||||
assert(diskPath("/Фото") == "disk:/Фото")
|
||||
assert(diskPath("Фото") == "disk:/Фото")
|
||||
assert(diskPath("trash:/x") == "trash:/x")
|
||||
print("ok")
|
||||
'
|
||||
|
||||
echo "4) app bundle"
|
||||
APP="$ROOT/.build/YandexDisk.app"
|
||||
test -x "$APP/Contents/MacOS/YandexDiskClient"
|
||||
plutil -lint "$APP/Contents/Info.plist"
|
||||
codesign -dv "$APP" 2>&1 | head -5
|
||||
echo "ALL SMOKE TESTS PASSED"
|
||||
Reference in New Issue
Block a user