Files
YanDisk/smoke_test.sh
T
akhmed 19e8360712 v1.0.2: Избранное (метка + вкладка), Доступные мне (реестр публичных ссылок)
- Избранное: правый клик → «В избранное», звезда в строке, метки в UserDefaults, вкладка подгружает ресурсы по путям
- Доступные мне: кнопка «+» добавляет публичную ссылку; метаданные через официальный GET /v1/disk/public/resources; открытие/копирование/удаление
- Ограничение платформы задокументировано (ПРАВКИ.md): REST API не отдаёт список shared-with-me
- smoke_test: фикс пути бандла
2026-09-15 22:12:49 +03:00

54 lines
1.9 KiB
Bash
Executable File

#!/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/YanDisk.app"
test -x "$APP/Contents/MacOS/YanDisk"
plutil -lint "$APP/Contents/Info.plist"
codesign -dv "$APP" 2>&1 | head -5
echo "ALL SMOKE TESTS PASSED"