fix(release): prepare 1.8 disclosures and licensed resources
Replace the unclear CLM source, align release and privacy disclosures, complete third-party notices, and keep the expanded test suites deterministic for release validation.
This commit is contained in:
@@ -5,16 +5,18 @@ import XCTest
|
||||
@testable import OSGKeyboard
|
||||
|
||||
final class OpenSourceLicenseCatalogTests: XCTestCase {
|
||||
func testIOSCatalogIncludesRimeAndDictionaryDataOnly() {
|
||||
func testIOSCatalogIncludesRimeDictionariesIconsAndCuratedSpeechData() {
|
||||
let entries = OpenSourceLicenseCatalog.entries(for: .iOS)
|
||||
let ids = Set(entries.map(\.id))
|
||||
|
||||
XCTAssertTrue(ids.contains("material-icons"))
|
||||
XCTAssertTrue(ids.contains("librime-static"))
|
||||
XCTAssertTrue(ids.contains("rime-pinyin-simp"))
|
||||
XCTAssertTrue(ids.contains("jieba"))
|
||||
XCTAssertTrue(ids.contains("phrase-pinyin-data"))
|
||||
XCTAssertTrue(ids.contains("pinyin-data"))
|
||||
XCTAssertTrue(ids.contains("english-typing-lexicon"))
|
||||
XCTAssertTrue(ids.contains("osg-ai-tech-lexicon"))
|
||||
XCTAssertFalse(ids.contains("mlx-audio-swift"))
|
||||
}
|
||||
|
||||
@@ -22,7 +24,15 @@ final class OpenSourceLicenseCatalogTests: XCTestCase {
|
||||
let entries = OpenSourceLicenseCatalog.entries(for: .macOS)
|
||||
let ids = Set(entries.map(\.id))
|
||||
|
||||
XCTAssertEqual(ids, ["mlx-audio-swift"])
|
||||
XCTAssertEqual(ids, [
|
||||
"mlx-audio-swift",
|
||||
"mlx-swift",
|
||||
"mlx-swift-lm",
|
||||
"osg-ai-tech-lexicon",
|
||||
"qwen3-asr-mlx",
|
||||
"swift-huggingface",
|
||||
"swift-transformers",
|
||||
])
|
||||
}
|
||||
|
||||
func testBundledDictionaryLicensesKeepCopyrightNotices() throws {
|
||||
@@ -46,4 +56,39 @@ final class OpenSourceLicenseCatalogTests: XCTestCase {
|
||||
XCTAssertTrue(entry.licenseText.contains("leveldb.txt"))
|
||||
XCTAssertTrue(entry.licenseText.contains("yaml-cpp.txt"))
|
||||
}
|
||||
|
||||
func testMaterialIconsUseGoogleAttributionAndFullApacheLicense() throws {
|
||||
let entry = try XCTUnwrap(
|
||||
OpenSourceLicenseCatalog.entries(for: .iOS)
|
||||
.first { $0.id == "material-icons" }
|
||||
)
|
||||
|
||||
XCTAssertTrue(entry.licenseText.contains("Copyright 2014 Google LLC"))
|
||||
XCTAssertTrue(entry.licenseText.contains("TERMS AND CONDITIONS FOR USE"))
|
||||
}
|
||||
|
||||
func testMacMLXAndQwenNoticesContainUpstreamAttribution() throws {
|
||||
let entries = OpenSourceLicenseCatalog.entries(for: .macOS)
|
||||
let mlxAudio = try XCTUnwrap(entries.first { $0.id == "mlx-audio-swift" })
|
||||
let mlxSwift = try XCTUnwrap(entries.first { $0.id == "mlx-swift" })
|
||||
let transformers = try XCTUnwrap(entries.first { $0.id == "swift-transformers" })
|
||||
let qwen = try XCTUnwrap(entries.first { $0.id == "qwen3-asr-mlx" })
|
||||
|
||||
XCTAssertTrue(mlxAudio.licenseText.contains("Copyright (c) 2025 Prince Canuma"))
|
||||
XCTAssertTrue(mlxSwift.licenseText.contains("Copyright (c) 2023 ml-explore"))
|
||||
XCTAssertTrue(transformers.licenseText.contains("Copyright 2022 Hugging Face SAS."))
|
||||
XCTAssertTrue(qwen.licenseText.contains("Qwen3-ASR-0.6B-4bit"))
|
||||
XCTAssertTrue(qwen.licenseText.contains("Apache License"))
|
||||
}
|
||||
|
||||
func testCuratedLexiconNoticeDoesNotRelicenseApplication() throws {
|
||||
let entry = try XCTUnwrap(
|
||||
OpenSourceLicenseCatalog.entries(for: .iOS)
|
||||
.first { $0.id == "osg-ai-tech-lexicon" }
|
||||
)
|
||||
|
||||
XCTAssertTrue(entry.licenseText.contains("data subset"))
|
||||
XCTAssertTrue(entry.licenseText.contains("source-available"))
|
||||
XCTAssertTrue(entry.licenseText.contains("not distributed under the MIT License"))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user