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 {