diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 830e5f2dc..70957ff41 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -21,7 +21,7 @@ jobs:
uses: actions/checkout@v2
- name: Create test env
env:
- ENV_PATH: "kDriveTests/Env.swift"
+ ENV_PATH: "kDriveTestShared/Env.swift"
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
USER_ID: ${{ secrets.USER_ID }}
INVITE_USER_ID: ${{ secrets.INVITE_USER_ID }}
@@ -30,6 +30,8 @@ jobs:
touch $ENV_PATH
echo -e "enum Env {\n static let token = \"$ACCESS_TOKEN\"\n\n static let driveId = 420132\n\n static let userId = $USER_ID\n\n static let inviteUserId = $INVITE_USER_ID\n\n static let inviteMail = \"$INVITE_EMAIL\"\n\n static let inviteTeam = 0\n\n static let commonDocumentsId = 3\n}" > $ENV_PATH
- name: Build
- run: tuist install && tuist build --generate kDrive
- - name: Test
- run: tuist test kDrive --test-targets kDriveTests/DriveApiTests
+ run: tuist install && tuist generate && tuist build --clean kDrive
+ - name: Test Local
+ run: tuist generate && tuist test kDriveTests
+ - name: Test API
+ run: tuist generate && tuist test kDriveAPITests --test-targets kDriveAPITests/DriveApiTests
diff --git a/.gitignore b/.gitignore
index 7fd4b0278..ca6d36877 100644
--- a/.gitignore
+++ b/.gitignore
@@ -71,3 +71,4 @@ release/
kDriveTests/Env.swift
kDriveAPITests/Env.swift
kDriveUITests/Env.swift
+kDriveTestShared/Env.swift
diff --git a/.mise.toml b/.mise.toml
index 1b1ca60cd..670fa8f30 100644
--- a/.mise.toml
+++ b/.mise.toml
@@ -1,5 +1,5 @@
[tools]
-tuist = '4.12.1'
+tuist = '4.41.0'
periphery = '2.21.1'
swiftformat = '0.54.5'
swiftlint = '0.57.0'
diff --git a/Project.swift b/Project.swift
index 5036116a1..7ac81dae1 100644
--- a/Project.swift
+++ b/Project.swift
@@ -21,7 +21,11 @@ import ProjectDescription
import ProjectDescriptionHelpers
let project = Project(name: "kDrive",
- packages: [],
+ options: .options(
+ automaticSchemesOptions: .enabled(
+ targetSchemesGrouping: .notGrouped
+ )
+ ),
targets: [
.target(name: "kDrive",
destinations: Constants.destinations,
@@ -48,13 +52,17 @@ let project = Project(name: "kDrive",
.target(name: "kDriveCore"),
.target(name: "kDriveShareExtension"),
.target(name: "kDriveActionExtension"),
- .external(name: "FloatingPanel"),
- .external(name: "Lottie"),
+ .external(name: "CocoaLumberjackSwift"),
+ .external(name: "CocoaLumberjack"),
.external(name: "DropDown"),
+ .external(name: "FloatingPanel"),
+ .external(name: "Highlightr"),
.external(name: "HorizonCalendar"),
.external(name: "Kvitto"),
- .external(name: "Highlightr"),
+ .external(name: "Lottie"),
.external(name: "MarkdownKit"),
+ .external(name: "RealmSwift"),
+ .external(name: "Realm"),
.sdk(name: "StoreKit", type: .framework, status: .required)
],
settings: .settings(base: Constants.baseSettings),
@@ -76,7 +84,16 @@ let project = Project(name: "kDrive",
"kDriveTests/**/*.json"
],
dependencies: [
- .target(name: "kDrive")
+ .target(name: "kDrive"),
+ .target(name: "kDriveCore"),
+ .external(name: "Alamofire"),
+ .external(name: "InfomaniakCoreCommonUI"),
+ .external(name: "InfomaniakCoreUIKit"),
+ .external(name: "InfomaniakCore"),
+ .external(name: "InfomaniakDI"),
+ .external(name: "InfomaniakLogin"),
+ .external(name: "RealmSwift"),
+ .external(name: "Realm")
],
settings: .settings(base: Constants.testSettings)),
.target(name: "kDriveAPITests",
@@ -90,7 +107,13 @@ let project = Project(name: "kDrive",
"kDriveTestShared/**"
],
dependencies: [
- .target(name: "kDrive")
+ .target(name: "kDrive"),
+ .target(name: "kDriveCore"),
+ .external(name: "InfomaniakCore"),
+ .external(name: "InfomaniakDI"),
+ .external(name: "InfomaniakLogin"),
+ .external(name: "RealmSwift"),
+ .external(name: "Realm")
],
settings: .settings(base: Constants.testSettings)),
.target(name: "kDriveUITests",
@@ -133,24 +156,25 @@ let project = Project(name: "kDrive",
.external(name: "Alamofire"),
.external(name: "Algorithms"),
.external(name: "Atlantis"),
- .external(name: "MQTTNIO"),
- .external(name: "InfomaniakCore"),
- .external(name: "InfomaniakCoreDB"),
+ .external(name: "CocoaLumberjackSwift"),
+ .external(name: "CocoaLumberjack"),
+ .external(name: "DifferenceKit"),
+ .external(name: "InfomaniakConcurrency"),
.external(name: "InfomaniakCoreCommonUI"),
+ .external(name: "InfomaniakCoreDB"),
.external(name: "InfomaniakCoreSwiftUI"),
.external(name: "InfomaniakCoreUIKit"),
- .external(name: "InfomaniakLogin"),
+ .external(name: "InfomaniakCore"),
.external(name: "InfomaniakDI"),
- .external(name: "InfomaniakConcurrency"),
- .external(name: "RealmSwift"),
+ .external(name: "InfomaniakLogin"),
.external(name: "Kingfisher"),
- .external(name: "DifferenceKit"),
- .external(name: "CocoaLumberjackSwift"),
+ .external(name: "LocalizeKit"),
.external(name: "MaterialOutlinedTextField"),
- .external(name: "SwiftRegex"),
+ .external(name: "MQTTNIO"),
+ .external(name: "RealmSwift"),
.external(name: "Sentry-Dynamic"),
- .external(name: "VersionChecker"),
- .external(name: "LocalizeKit")
+ .external(name: "SwiftRegex"),
+ .external(name: "VersionChecker")
]),
.target(name: "kDriveFileProvider",
destinations: Constants.destinations,
@@ -170,7 +194,13 @@ let project = Project(name: "kDrive",
headers: .headers(project: "kDriveFileProvider/**"),
entitlements: "kDriveFileProvider/FileProvider.entitlements",
dependencies: [
- .target(name: "kDriveCore")
+ .target(name: "kDriveCore"),
+ .external(name: "CocoaLumberjackSwift"),
+ .external(name: "CocoaLumberjack"),
+ .external(name: "InfomaniakCore"),
+ .external(name: "InfomaniakDI"),
+ .external(name: "InfomaniakLogin"),
+ .external(name: "RealmSwift")
],
settings: .settings(
base: Constants.fileProviderSettings,
diff --git a/Tuist/Package.swift b/Tuist/Package.swift
index be1b55181..b01b5762b 100644
--- a/Tuist/Package.swift
+++ b/Tuist/Package.swift
@@ -1,5 +1,5 @@
-// swift-tools-version: 5.9
-import PackageDescription
+// swift-tools-version: 5.10
+@preconcurrency import PackageDescription
#if TUIST
import ProjectDescription
@@ -7,8 +7,19 @@ import ProjectDescriptionHelpers
let packageSettings = PackageSettings(
productTypes: [
- "RealmSwift": .staticLibrary,
- "Realm": .staticLibrary
+ "Alamofire": .framework,
+ "Atlantis": .staticFramework,
+ "CocoaLumberjackSwift": .framework,
+ "CocoaLumberjack": .framework,
+ "InfomaniakDI": .framework,
+ "InfomaniakLogin": .framework,
+ "InfomaniakCore": .framework,
+ "InfomaniakCoreCommonUI": .framework,
+ "InfomaniakCoreUIKit": .framework,
+ "Kingfisher": .framework,
+ "Lottie": .framework,
+ "RealmSwift": .framework,
+ "Realm": .framework
]
)
diff --git a/Tuist/ProjectDescriptionHelpers/ExtensionTarget.swift b/Tuist/ProjectDescriptionHelpers/ExtensionTarget.swift
index 29445bbf3..20c693a22 100644
--- a/Tuist/ProjectDescriptionHelpers/ExtensionTarget.swift
+++ b/Tuist/ProjectDescriptionHelpers/ExtensionTarget.swift
@@ -109,7 +109,11 @@ public extension Target {
.external(name: "FloatingPanel"),
.external(name: "Lottie"),
.external(name: "DropDown"),
- .external(name: "HorizonCalendar")
+ .external(name: "HorizonCalendar"),
+ .external(name: "Realm"),
+ .external(name: "RealmSwift"),
+ .external(name: "CocoaLumberjack"),
+ .external(name: "CocoaLumberjackSwift")
],
settings: settings)
}
diff --git a/kDriveAPITests/kDriveCore/DriveApiTests.swift b/kDriveAPITests/kDriveCore/DriveApiTests.swift
index 35299af7a..5d4a5745d 100644
--- a/kDriveAPITests/kDriveCore/DriveApiTests.swift
+++ b/kDriveAPITests/kDriveCore/DriveApiTests.swift
@@ -640,21 +640,6 @@ final class DriveApiTests: XCTestCase {
// MARK: Miscellaneous
- func testSearchFiles() async throws {
- let (testDirectory, file) = try await initOfficeFile(testName: "Search files")
- let files = try await currentApiFetcher.searchFiles(
- drive: proxyDrive,
- query: "officeFile",
- fileExtensions: [],
- categories: [],
- belongToAllCategories: true,
- sortType: .newer
- ).validApiResponse.data
- let fileFound = files.contains { $0.id == file.id }
- XCTAssertTrue(fileFound, "File created should be in response")
- tearDownTest(directory: testDirectory)
- }
-
func testUndoAction() async throws {
let (testDirectory, file) = try await initOfficeFile(testName: "Undo action")
let directory = try await createTestDirectory(name: "test", parentDirectory: testDirectory)
diff --git a/kDriveCore/VideoPlayer/VideoPlayer.swift b/kDriveCore/VideoPlayer/VideoPlayer.swift
index 215f6beaa..fffd882b0 100644
--- a/kDriveCore/VideoPlayer/VideoPlayer.swift
+++ b/kDriveCore/VideoPlayer/VideoPlayer.swift
@@ -18,7 +18,6 @@
import AVKit
import Combine
-import FloatingPanel
import InfomaniakCore
import InfomaniakDI
import kDriveResources
diff --git a/kDriveAPITests/Env.sample.swift b/kDriveTestShared/Env.sample.swift
similarity index 100%
rename from kDriveAPITests/Env.sample.swift
rename to kDriveTestShared/Env.sample.swift
diff --git a/kDriveTests/Env.sample.swift b/kDriveTests/Env.sample.swift
deleted file mode 100644
index 33ce6855b..000000000
--- a/kDriveTests/Env.sample.swift
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- Infomaniak kDrive - iOS App
- Copyright (C) 2021 Infomaniak Network SA
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
- */
-
-// Use this template to create your `Env` file. You will need to remove "_Sample" from the name.
-enum Env_Sample {
- // Set your token here
- static let token = ""
-
- // Drive de test dev infomaniak
- static let driveId = 140_946
-
- // Set your user ID here
- static let userId = 0
-
- // Set the user ID to invite
- static let inviteUserId = 0
-
- // Set the email to invite
- static let inviteMail = "email@example.com"
-
- // Set the team to invite
- static let inviteTeam = 0
-
- static let commonDocumentsId = 3
-}
diff --git a/kDriveTests/StateRestoration/UTSceneRestorationMetadata.swift b/kDriveTests/StateRestoration/UTSceneRestorationMetadata.swift
index deec6a26f..8651e8c54 100644
--- a/kDriveTests/StateRestoration/UTSceneRestorationMetadata.swift
+++ b/kDriveTests/StateRestoration/UTSceneRestorationMetadata.swift
@@ -90,7 +90,7 @@ final class UTSceneRestorationMetadata: XCTestCase {
XCTAssertEqual(metadata["filesIds"] as? [Int], [1337])
XCTAssertEqual(metadata["currentIndex"] as? Int, Int(0))
XCTAssertEqual(metadata["normalFolderHierarchy"] as? Bool, true)
- XCTAssertEqual(metadata["presentationOrigin"] as? PresentationOrigin, .activities)
+ XCTAssertEqual(metadata["presentationOrigin"] as? String, PresentationOrigin.activities.rawValue)
}
@MainActor func testFileDetailViewController() {
diff --git a/kDriveTests/kDriveCore/Drive/ITDrive.swift b/kDriveTests/kDriveCore/Drive/ITDrive.swift
index 373d73d55..fc6bd4335 100644
--- a/kDriveTests/kDriveCore/Drive/ITDrive.swift
+++ b/kDriveTests/kDriveCore/Drive/ITDrive.swift
@@ -40,6 +40,7 @@ final class ITDrive: XCTestCase {
}
let decoder = JSONDecoder()
+ decoder.keyDecodingStrategy = .convertFromSnakeCase
// WHEN
do {
@@ -62,6 +63,7 @@ final class ITDrive: XCTestCase {
}
let decoder = JSONDecoder()
+ decoder.keyDecodingStrategy = .convertFromSnakeCase
// WHEN
do {