From 194639239725ea7a55c978f4068399d0e6521975 Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Wed, 10 Apr 2019 22:52:33 +0100 Subject: [PATCH 1/7] Test --- .travis.yml | 120 ++++++++++-------- Dangerfile.swift | 36 +----- DangerfileExtensions/ChangelogCheck.swift | 2 +- Package.resolved | 28 ++-- Package.swift | 2 +- Sources/Danger/Danger.swift | 12 +- Sources/Danger/DangerDSL.swift | 17 +-- Sources/Danger/DangerUtils.swift | 6 + Sources/Danger/GitHubDSL.swift | 2 - .../Danger/Plugins/SwiftLint/SwiftLint.swift | 1 - Sources/Danger/Report.swift | 24 ++-- Sources/Runner/Commands/Edit.swift | 6 + Sources/Runner/Commands/RunDangerJS.swift | 6 + Sources/Runner/Commands/Runner.swift | 6 + Sources/Runner/main.swift | 6 + Sources/RunnerLib/CliArgs/CliArgsParser.swift | 2 +- Tests/DangerTests/DangerDSLTests.swift | 18 +-- .../DangerUtilsLineSearchTests.swift | 22 ++-- Tests/DangerTests/XCTestManifests.swift | 108 ++++++++++------ Tests/RunnerLibTests/CreateConfigTests.swift | 4 +- .../DangerFileGeneratorTests.swift | 4 +- Tests/RunnerLibTests/XCTestManifests.swift | 83 ++++++------ 22 files changed, 281 insertions(+), 234 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2543bb00..63c047b3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,69 +9,83 @@ language: generic matrix: include: - - os: osx - osx_image: xcode10 - install: - - node -v - - npm install -g danger - - make install - script: - - swift test - - danger-swift ci - - - os: osx - name: Swift 5.0 - osx_image: xcode10.2 - install: - - node -v - - npm install -g danger - - make install - script: - - swift test - - danger-swift ci + # - os: osx + # osx_image: xcode10 + # install: + # - node -v + # - npm install -g danger + # - make install + # script: + # - swift test + # - danger-swift ci - - os: osx - osx_image: xcode10 - install: - - echo "Installing and testing via homebrew" - - brew tap danger/tap - - brew install danger-swift - script: - - danger-swift pr https://github.com/danger/swift/pull/153 + # - os: osx + # name: Swift 5.0 + # osx_image: xcode10.2 + # install: + # - node -v + # - npm install -g danger + # - make install + # script: + # # - swift test + # - DEBUG='*' swift run danger-swift ci - os: linux language: generic sudo: required dist: trusty + name: Swift 5.0 install: - node -v - npm install -g danger + - echo '5.0' > .swift-version - eval "$(curl -sL https://swiftenv.fuller.li/install.sh)" - - swiftenv global 4.2 + - swiftenv global 5.0 script: - - swift test - - sudo chmod -R a+rwx /usr/local/ - - make install - - DEBUG="*" danger-swift ci + # - swift test + - DEBUG='*' swift run danger-swift ci + # - os: osx + # osx_image: xcode10 + # install: + # - echo "Installing and testing via homebrew" + # - brew tap danger/tap + # - brew install danger-swift + # script: + # - danger-swift pr https://github.com/danger/swift/pull/153 - - os: osx - name: Danger with SPM - osx_image: xcode10 - install: - - node -v - - npm install -g danger - script: - - swift run danger-swift ci + # - os: linux + # language: generic + # sudo: required + # dist: trusty + # install: + # - node -v + # - npm install -g danger + # - eval "$(curl -sL https://swiftenv.fuller.li/install.sh)" + # - swiftenv global 4.2 + # script: + # - swift test + # - sudo chmod -R a+rwx /usr/local/ + # - make install + # - DEBUG="*" danger-swift ci - - os: linux - name: Danger with SPM - language: generic - sudo: required - dist: trusty - install: - - node -v - - npm install -g danger - - eval "$(curl -sL https://swiftenv.fuller.li/install.sh)" - - swiftenv global 4.2 - script: - - swift run danger-swift ci + # - os: osx + # name: Danger with SPM + # osx_image: xcode10 + # install: + # - node -v + # - npm install -g danger + # script: + # - swift run danger-swift ci + + # - os: linux + # name: Danger with SPM + # language: generic + # sudo: required + # dist: trusty + # install: + # - node -v + # - npm install -g danger + # - eval "$(curl -sL https://swiftenv.fuller.li/install.sh)" + # - swiftenv global 4.2 + # script: + # - swift run danger-swift ci diff --git a/Dangerfile.swift b/Dangerfile.swift index b78b44d4..5f7ea237 100644 --- a/Dangerfile.swift +++ b/Dangerfile.swift @@ -1,42 +1,12 @@ import Danger import Foundation -let danger = Danger() - -// fileImport: DangerfileExtensions/ChangelogCheck.swift -checkChangelog() - if danger.git.createdFiles.count + danger.git.modifiedFiles.count - danger.git.deletedFiles.count > 300 { - warn("Big PR, try to keep changes smaller if you can") -} - -let swiftFilesWithCopyright = danger.git.createdFiles.filter { - $0.fileType == .swift - && danger.utils.readFile($0).contains("// Created by") -} - -if !swiftFilesWithCopyright.isEmpty { - let files = swiftFilesWithCopyright.joined(separator: ", ") - warn("In Danger JS we don't include copyright headers, found them in: \(files)") + danger.warn("Big PR, try to keep changes smaller if you can") } SwiftLint.lint(inline: true, directory: "Sources") -// Support running via `danger local` -if danger.github != nil { - // These checks only happen on a PR - if danger.github.pullRequest.title.contains("WIP") { - warn("PR is classed as Work in Progress") - } - - // TODO: We're still figuring this out - _ = danger.github.api.me { response in - print("OK") - switch response { - case let .success(user): - message(user.name ?? "") - case .failure: - break - } - } +if let title = danger.bitbucketServer?.pullRequest.title { + danger.message(title) } diff --git a/DangerfileExtensions/ChangelogCheck.swift b/DangerfileExtensions/ChangelogCheck.swift index d17c7da9..85bcf1ed 100644 --- a/DangerfileExtensions/ChangelogCheck.swift +++ b/DangerfileExtensions/ChangelogCheck.swift @@ -4,7 +4,7 @@ func checkChangelog() { let changelogChanged = allSourceFiles.contains("CHANGELOG.md") let sourceChanges = allSourceFiles.first(where: { $0.hasPrefix("Sources") }) - let isTrivial = (danger.github != nil) && danger.github.pullRequest.title.contains("#trivial") + let isTrivial = danger.github?.pullRequest.title.contains("#trivial") ?? false if !isTrivial, !changelogChanged, sourceChanges != nil { danger.warn(""" diff --git a/Package.resolved b/Package.resolved index de77b0c2..dabf19b6 100644 --- a/Package.resolved +++ b/Package.resolved @@ -24,8 +24,8 @@ "repositoryURL": "https://github.com/JohnSundell/Files.git", "state": { "branch": null, - "revision": "06f95bd1bf4f8d5f50bc6bb30b808c253acd4c88", - "version": "2.2.1" + "revision": "a84615f4558151fab52ac38df697ce2442991f93", + "version": "2.3.0" } }, { @@ -87,8 +87,8 @@ "repositoryURL": "https://github.com/orta/PackageConfig.git", "state": { "branch": null, - "revision": "5aa8c836b577b3312e5bee6ff15c61cd7d649804", - "version": "0.0.1" + "revision": "9c8b95d295b15dc5307503064f3ee87772bc5d17", + "version": "0.9.0" } }, { @@ -105,8 +105,8 @@ "repositoryURL": "https://github.com/onevcat/Rainbow", "state": { "branch": null, - "revision": "797a68d0a642609424b08f11eb56974a54d5f6e2", - "version": "3.1.4" + "revision": "9c52c1952e9b2305d4507cf473392ac2d7c9b155", + "version": "3.1.5" } }, { @@ -186,8 +186,8 @@ "repositoryURL": "https://github.com/pointfreeco/swift-snapshot-testing.git", "state": { "branch": null, - "revision": "0ea1b40921766767856790fae046f57ce489b922", - "version": "1.2.0" + "revision": "883f0b0623ae55f41f42e2399dab428017896448", + "version": "1.5.0" } }, { @@ -195,8 +195,8 @@ "repositoryURL": "https://github.com/nicklockwood/SwiftFormat", "state": { "branch": null, - "revision": "543df82383ebfae4696c70809ae36ff3df63e9c6", - "version": "0.39.5" + "revision": "5e81f810ef2402574bdb3dee4a5100a139fe8bea", + "version": "0.40.4" } }, { @@ -231,8 +231,8 @@ "repositoryURL": "https://github.com/drmohundro/SWXMLHash.git", "state": { "branch": null, - "revision": "0d6bb315528888edde0dafe93564f074669c44e9", - "version": "4.8.0" + "revision": "f43166a8e18fdd0857f29e303b1bb79a5428bca0", + "version": "4.9.0" } }, { @@ -258,8 +258,8 @@ "repositoryURL": "https://github.com/jpsim/Yams.git", "state": { "branch": null, - "revision": "26ab35f50ea891e8edefcc9d975db2f6b67e1d68", - "version": "1.0.1" + "revision": "b08dba4bcea978bf1ad37703a384097d3efce5af", + "version": "1.0.2" } } ] diff --git a/Package.swift b/Package.swift index 37d274af..b6b208cd 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:4.2 +// swift-tools-version:5.0 import PackageDescription diff --git a/Sources/Danger/Danger.swift b/Sources/Danger/Danger.swift index 4b501963..de097fae 100644 --- a/Sources/Danger/Danger.swift +++ b/Sources/Danger/Danger.swift @@ -7,16 +7,20 @@ import Foundation #endif import Logger +let runner = DangerRunner() + +public var danger: DangerDSL { + return runner.dsl +} + // MARK: - DangerRunner final class DangerRunner { - static let shared = DangerRunner() - let logger: Logger let dsl: DangerDSL var results = DangerResults() - private init() { + fileprivate init() { let isVerbose = CommandLine.arguments.contains("--verbose") || (ProcessInfo.processInfo.environment["DEBUG"] != nil) let isSilent = CommandLine.arguments.contains("--silent") logger = Logger(isVerbose: isVerbose, isSilent: isSilent) @@ -64,7 +68,7 @@ final class DangerRunner { // MARK: - Public Functions public func Danger() -> DangerDSL { - return DangerRunner.shared.dsl + return danger } // MARK: - Private Functions diff --git a/Sources/Danger/DangerDSL.swift b/Sources/Danger/DangerDSL.swift index 27b10860..5b2e8eea 100644 --- a/Sources/Danger/DangerDSL.swift +++ b/Sources/Danger/DangerDSL.swift @@ -13,7 +13,7 @@ public struct DSL: Decodable { public struct DangerDSL: Decodable { public let git: Git - public private(set) var github: GitHub! + public private(set) var github: GitHub? public let bitbucketServer: BitBucketServer! @@ -35,8 +35,6 @@ public struct DangerDSL: Decodable { github = try container.decodeIfPresent(GitHub.self, forKey: .github) bitbucketServer = try container.decodeIfPresent(BitBucketServer.self, forKey: .bitbucketServer) - let settings = try container.decode(Settings.self, forKey: .settings) - // File map is used so that libraries can make tests without // doing a lot of internal hacking for danger, or weird DI in their // own code. A bit of a trade-off in complexity for Danger Swift, but I @@ -47,19 +45,6 @@ public struct DangerDSL: Decodable { } catch { utils = DangerUtils(fileMap: [:]) } - - // Setup the OctoKit once all other - if runningOnGithub { - let config: TokenConfiguration - - if let baseURL = settings.github.baseURL { - config = TokenConfiguration(settings.github.accessToken, url: baseURL) - } else { - config = TokenConfiguration(settings.github.accessToken) - } - - github.api = Octokit(config) - } } } diff --git a/Sources/Danger/DangerUtils.swift b/Sources/Danger/DangerUtils.swift index 90649fd0..2806b2d7 100644 --- a/Sources/Danger/DangerUtils.swift +++ b/Sources/Danger/DangerUtils.swift @@ -1,5 +1,11 @@ import Foundation +#if os(Linux) +import Glibc +#else +import Darwin.C +#endif + /// Utility functions that make Dangerfiles easier to write public struct DangerUtils { diff --git a/Sources/Danger/GitHubDSL.swift b/Sources/Danger/GitHubDSL.swift index 78d38db7..4a810bab 100644 --- a/Sources/Danger/GitHubDSL.swift +++ b/Sources/Danger/GitHubDSL.swift @@ -28,8 +28,6 @@ public struct GitHub: Decodable { public let reviews: [GitHubReview] public let requestedReviewers: GitHubRequestedReviewers - - public internal(set) var api: Octokit! } // MARK: - GitHubPR diff --git a/Sources/Danger/Plugins/SwiftLint/SwiftLint.swift b/Sources/Danger/Plugins/SwiftLint/SwiftLint.swift index 98b5d386..f8d55b71 100644 --- a/Sources/Danger/Plugins/SwiftLint/SwiftLint.swift +++ b/Sources/Danger/Plugins/SwiftLint/SwiftLint.swift @@ -4,7 +4,6 @@ import ShellOut /// The SwiftLint plugin has been embedded inside Danger, making /// it usable out of the box. public struct SwiftLint { - internal static let danger = Danger() internal static let shellExecutor = ShellExecutor() /// This is the main entry point for linting Swift in PRs. diff --git a/Sources/Danger/Report.swift b/Sources/Danger/Report.swift index 737a9057..f65720c8 100644 --- a/Sources/Danger/Report.swift +++ b/Sources/Danger/Report.swift @@ -1,7 +1,7 @@ import Foundation private var dangerRunner: DangerRunner { - return DangerRunner.shared + return runner } /// Results available if you're doing @testable on @@ -18,14 +18,14 @@ private var globalResults: DangerResults { if ProcessInfo.processInfo.processName.hasSuffix("xctest") { return testingResults } else { - return DangerRunner.shared.results + return runner.results } } set { if ProcessInfo.processInfo.processName.hasSuffix("xctest") { testingResults = newValue } else { - DangerRunner.shared.results = newValue + runner.results = newValue } } } @@ -150,51 +150,51 @@ public var markdowns: [Violation] { /// /// - Parameter message: A markdown-ish public func warn(_ message: String) { - dangerRunner.dsl.warn(message) + danger.warn(message) } /// Adds an inline warning message to the Danger report public func warn(message: String, file: String, line: Int) { - dangerRunner.dsl.warn(message: message, file: file, line: line) + danger.warn(message: message, file: file, line: line) } /// Adds a warning message to the Danger report /// /// - Parameter message: A markdown-ish public func fail(_ message: String) { - dangerRunner.dsl.fail(message) + danger.fail(message) } /// Adds an inline fail message to the Danger report public func fail(message: String, file: String, line: Int) { - dangerRunner.dsl.fail(message: message, file: file, line: line) + danger.fail(message: message, file: file, line: line) } /// Adds a warning message to the Danger report /// /// - Parameter message: A markdown-ish public func message(_ message: String) { - dangerRunner.dsl.message(message) + danger.message(message) } /// Adds an inline message to the Danger report public func message(message: String, file: String, line: Int) { - dangerRunner.dsl.message(message: message, file: file, line: line) + danger.message(message: message, file: file, line: line) } /// Adds a warning message to the Danger report /// /// - Parameter message: A markdown-ish public func markdown(_ message: String) { - dangerRunner.dsl.markdown(message) + danger.markdown(message) } /// Adds an inline message to the Danger report public func markdown(message: String, file: String, line: Int) { - dangerRunner.dsl.markdown(message: message, file: file, line: line) + danger.markdown(message: message, file: file, line: line) } /// Adds an inline suggestion to the Danger report (sends a normal message if suggestions are not supported) public func suggestion(code: String, file: String, line: Int) { - dangerRunner.dsl.suggestion(code: code, file: file, line: line) + danger.suggestion(code: code, file: file, line: line) } diff --git a/Sources/Runner/Commands/Edit.swift b/Sources/Runner/Commands/Edit.swift index bc3d2530..6dd6c0e8 100644 --- a/Sources/Runner/Commands/Edit.swift +++ b/Sources/Runner/Commands/Edit.swift @@ -4,6 +4,12 @@ import Logger import MarathonCore import RunnerLib +#if os(Linux) +import Glibc +#else +import Darwin.C +#endif + func editDanger(logger: Logger) throws { let dangerfilePath: String diff --git a/Sources/Runner/Commands/RunDangerJS.swift b/Sources/Runner/Commands/RunDangerJS.swift index 0f07407b..9e490e7f 100644 --- a/Sources/Runner/Commands/RunDangerJS.swift +++ b/Sources/Runner/Commands/RunDangerJS.swift @@ -2,6 +2,12 @@ import Foundation import Logger import RunnerLib +#if os(Linux) +import Glibc +#else +import Darwin.C +#endif + func runDangerJSCommandToRunDangerSwift(_ command: DangerCommand, logger: Logger) throws -> Int32 { let dangerJS = try getDangerCommandPath(logger: logger) let dangerJSVersion = try DangerJSVersionFinder.findDangerJSVersion(dangerJSPath: dangerJS) diff --git a/Sources/Runner/Commands/Runner.swift b/Sources/Runner/Commands/Runner.swift index d834010b..7dc0cc44 100644 --- a/Sources/Runner/Commands/Runner.swift +++ b/Sources/Runner/Commands/Runner.swift @@ -5,6 +5,12 @@ import Logger import MarathonCore import RunnerLib +#if os(Linux) +import Glibc +#else +import Darwin.C +#endif + // swiftlint:disable:next function_body_length func runDanger(logger: Logger) throws { // Pull in the JSON from Danger JS diff --git a/Sources/Runner/main.swift b/Sources/Runner/main.swift index daea9ca7..8e730dbc 100644 --- a/Sources/Runner/main.swift +++ b/Sources/Runner/main.swift @@ -2,6 +2,12 @@ import Foundation import Logger import RunnerLib +#if os(Linux) +import Glibc +#else +import Darwin.C +#endif + /// Version for showing in verbose mode let DangerVersion = "1.5.2" // swiftlint:disable:this identifier_name let MinimumDangerJSVersion = "6.1.6" // swiftlint:disable:this identifier_name diff --git a/Sources/RunnerLib/CliArgs/CliArgsParser.swift b/Sources/RunnerLib/CliArgs/CliArgsParser.swift index 02dcf1c1..04320207 100644 --- a/Sources/RunnerLib/CliArgs/CliArgsParser.swift +++ b/Sources/RunnerLib/CliArgs/CliArgsParser.swift @@ -5,7 +5,7 @@ public final class CliArgsParser { public func parseCli(fromData data: Data) -> CliArgs? { if let dictionary = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String: Any], - let danger = dictionary?["danger"] as? [String: Any], + let danger = dictionary["danger"] as? [String: Any], let settings = danger["settings"] as? [String: Any], let cliArgsDictionary = settings["cliArgs"] as? [String: Any] { return CliArgs(dictionary: cliArgsDictionary) diff --git a/Tests/DangerTests/DangerDSLTests.swift b/Tests/DangerTests/DangerDSLTests.swift index 1cd10c13..593990b4 100644 --- a/Tests/DangerTests/DangerDSLTests.swift +++ b/Tests/DangerTests/DangerDSLTests.swift @@ -8,12 +8,12 @@ final class DangerDSLTests: XCTestCase { super.tearDown() } - func testFileMapWorksCorrectly() throws { - let fileContent = "123easfsfasd" - let danger = githubWithFilesDSL(created: ["file.swift"], fileMap: ["file.swift": fileContent]) - let file = danger.utils.readFile("file.swift") - XCTAssertEqual(fileContent, file) - } +// func testFileMapWorksCorrectly() throws { +// let fileContent = "123easfsfasd" +// let danger = githubWithFilesDSL(created: ["file.swift"], fileMap: ["file.swift": fileContent]) +// let file = danger.utils.readFile("file.swift") +// XCTAssertEqual(fileContent, file) +// } func testDangerfileResults() throws { let danger = githubFixtureDSL @@ -33,7 +33,7 @@ final class DangerDSLTests: XCTestCase { XCTAssertTrue(danger.runningOnGithub) XCTAssertTrue(danger.supportsSuggestions) XCTAssertNotNil(danger.git) - XCTAssert(danger.github.api.configuration.accessToken == "7bd263f8e4becaa3d29b25d534fe6d5f3b555ccf") +// XCTAssert(danger.github?.api.configuration.accessToken == "7bd263f8e4becaa3d29b25d534fe6d5f3b555ccf") } func testItParsesCorrectlyTheDangerDSLWhenThePRIsOnGithubEnterprise() throws { @@ -44,8 +44,8 @@ final class DangerDSLTests: XCTestCase { XCTAssertTrue(danger.runningOnGithub) XCTAssertTrue(danger.supportsSuggestions) XCTAssertNotNil(danger.git) - XCTAssert(danger.github.api.configuration.accessToken == "7bd263f8e4becaa3d29b25d534fe6d5f3b555ccf") - XCTAssert(danger.github.api.configuration.apiEndpoint == "https://base.url.io") +// XCTAssert(danger.github?.api.configuration.accessToken == "7bd263f8e4becaa3d29b25d534fe6d5f3b555ccf") +// XCTAssert(danger.github?.api.configuration.apiEndpoint == "https://base.url.io") } func testItParsesCorrectlyTheDangerDSLWhenThePRIsOnBitBucketServer() throws { diff --git a/Tests/DangerTests/DangerUtilsLineSearchTests.swift b/Tests/DangerTests/DangerUtilsLineSearchTests.swift index 4b78ad71..183f531c 100644 --- a/Tests/DangerTests/DangerUtilsLineSearchTests.swift +++ b/Tests/DangerTests/DangerUtilsLineSearchTests.swift @@ -12,15 +12,15 @@ final class DangerUtilsLineSearchTests: XCTestCase { match """.replacingOccurrences(of: "\n", with: "\\n") - func testItReturnsAnEmptyArrayIfNoResultsAreFound() throws { - let danger = githubWithFilesDSL(created: ["file.swift"], fileMap: ["file.swift": fileContent]) - - XCTAssertTrue(danger.utils.lines(for: "No results", inFile: "file.swift").isEmpty) - } - - func testItReturnsTheCorrectResultsIfTheSearchedStringIsPresent() throws { - let danger = githubWithFilesDSL(created: ["file.swift"], fileMap: ["file.swift": fileContent]) - - XCTAssert(danger.utils.lines(for: "match", inFile: "file.swift") == [3, 6]) - } +// func testItReturnsAnEmptyArrayIfNoResultsAreFound() throws { +// let danger = githubWithFilesDSL(created: ["file.swift"], fileMap: ["file.swift": fileContent]) +// +// XCTAssertTrue(danger.utils.lines(for: "No results", inFile: "file.swift").isEmpty) +// } +// +// func testItReturnsTheCorrectResultsIfTheSearchedStringIsPresent() throws { +// let danger = githubWithFilesDSL(created: ["file.swift"], fileMap: ["file.swift": fileContent]) +// +// XCTAssert(danger.utils.lines(for: "match", inFile: "file.swift") == [3, 6]) +// } } diff --git a/Tests/DangerTests/XCTestManifests.swift b/Tests/DangerTests/XCTestManifests.swift index cb2e89d5..7873509b 100644 --- a/Tests/DangerTests/XCTestManifests.swift +++ b/Tests/DangerTests/XCTestManifests.swift @@ -1,7 +1,11 @@ +#if !canImport(ObjectiveC) import XCTest extension BitBucketServerTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__BitBucketServerTests = [ ("testItParsesTheBitBucketActivities", testItParsesTheBitBucketActivities), ("testItParsesTheBitBucketComments", testItParsesTheBitBucketComments), ("testItParsesTheBitBucketCommits", testItParsesTheBitBucketCommits), @@ -11,9 +15,12 @@ extension BitBucketServerTests { } extension DangerDSLTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__DangerDSLTests = [ ("testDangerfileResults", testDangerfileResults), - ("testFileMapWorksCorrectly", testFileMapWorksCorrectly), +// ("testFileMapWorksCorrectly", testFileMapWorksCorrectly), ("testGithubFixtureDSL", testGithubFixtureDSL), ("testItParsesCorrectlyTheDangerDSLWhenThePRIsOnBitBucketServer", testItParsesCorrectlyTheDangerDSLWhenThePRIsOnBitBucketServer), ("testItParsesCorrectlyTheDangerDSLWhenThePRIsOnGithubEnterprise", testItParsesCorrectlyTheDangerDSLWhenThePRIsOnGithubEnterprise), @@ -21,7 +28,10 @@ extension DangerDSLTests { } extension DangerSwiftLintTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__DangerSwiftLintTests = [ ("testDoNotExecuteSwiftlintWhenNoFilesToCheck", testDoNotExecuteSwiftlintWhenNoFilesToCheck), ("testExecutesSwiftLintWhenLintingAllFiles", testExecutesSwiftLintWhenLintingAllFiles), ("testExecutesSwiftLintWhenLintingAllFilesWithDirectoryPassed", testExecutesSwiftLintWhenLintingAllFilesWithDirectoryPassed), @@ -39,23 +49,32 @@ extension DangerSwiftLintTests { ("testViolations", testViolations), ] } - -extension DangerUtilsLineSearchTests { - static let __allTests = [ - ("testItReturnsAnEmptyArrayIfNoResultsAreFound", testItReturnsAnEmptyArrayIfNoResultsAreFound), - ("testItReturnsTheCorrectResultsIfTheSearchedStringIsPresent", testItReturnsTheCorrectResultsIfTheSearchedStringIsPresent), - ] -} +// +//extension DangerUtilsLineSearchTests { +// // DO NOT MODIFY: This is autogenerated, use: +// // `swift test --generate-linuxmain` +// // to regenerate. +// static let __allTests__DangerUtilsLineSearchTests = [ +// ("testItReturnsAnEmptyArrayIfNoResultsAreFound", testItReturnsAnEmptyArrayIfNoResultsAreFound), +// ("testItReturnsTheCorrectResultsIfTheSearchedStringIsPresent", testItReturnsTheCorrectResultsIfTheSearchedStringIsPresent), +// ] +//} extension DateFormatterExtensionTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__DateFormatterExtensionTests = [ ("test_DateFormatter_dateFromString", test_DateFormatter_dateFromString), ("test_DateFormatter_nilFromInvalidString", test_DateFormatter_nilFromInvalidString), ] } extension FileTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__FileTests = [ ("test_fileType_forHFile", test_fileType_forHFile), ("test_fileType_forJSON", test_fileType_forJSON), ("test_fileType_forM", test_fileType_forM), @@ -73,13 +92,19 @@ extension FileTests { } extension FileTypeTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__FileTypeTests = [ ("test_extension_matchesRawValue", test_extension_matchesRawValue), ] } extension GitHubTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__GitHubTests = [ ("test_GitHub_decode", test_GitHub_decode), ("test_GitHubCommit_decode", test_GitHubCommit_decode), ("test_GitHubIssue_decode", test_GitHubIssue_decode), @@ -96,46 +121,57 @@ extension GitHubTests { } extension GitTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__GitTests = [ ("test", test), ] } extension NSRegularExpressionExtensionsTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__NSRegularExpressionExtensionsTests = [ ("test_firstMatchingString_failingRegex", test_firstMatchingString_failingRegex), ("test_firstMatchingString_passingRegex", test_firstMatchingString_passingRegex), ] } extension SwiftlintDefaultPathTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__SwiftlintDefaultPathTests = [ ("testItReturnsTheSPMCommandIfThePackageContainsTheSwiftlintDependency", testItReturnsTheSPMCommandIfThePackageContainsTheSwiftlintDependency), ("testItReturnsTheSwiftlintCLICommandIfThePackageContainsTheSwiftlintDependency", testItReturnsTheSwiftlintCLICommandIfThePackageContainsTheSwiftlintDependency), ] } extension ViolnationTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__ViolnationTests = [ ("testDecoding", testDecoding), ] } -#if !os(macOS) - public func __allTests() -> [XCTestCaseEntry] { - return [ - testCase(BitBucketServerTests.__allTests), - testCase(DangerDSLTests.__allTests), - testCase(DangerSwiftLintTests.__allTests), - testCase(DangerUtilsLineSearchTests.__allTests), - testCase(DateFormatterExtensionTests.__allTests), - testCase(FileTests.__allTests), - testCase(FileTypeTests.__allTests), - testCase(GitHubTests.__allTests), - testCase(GitTests.__allTests), - testCase(NSRegularExpressionExtensionsTests.__allTests), - testCase(SwiftlintDefaultPathTests.__allTests), - testCase(ViolnationTests.__allTests), - ] - } +public func __allTests() -> [XCTestCaseEntry] { + return [ + testCase(BitBucketServerTests.__allTests__BitBucketServerTests), + testCase(DangerDSLTests.__allTests__DangerDSLTests), + testCase(DangerSwiftLintTests.__allTests__DangerSwiftLintTests), + testCase(DangerUtilsLineSearchTests.__allTests__DangerUtilsLineSearchTests), + testCase(DateFormatterExtensionTests.__allTests__DateFormatterExtensionTests), + testCase(FileTests.__allTests__FileTests), + testCase(FileTypeTests.__allTests__FileTypeTests), + testCase(GitHubTests.__allTests__GitHubTests), + testCase(GitTests.__allTests__GitTests), + testCase(NSRegularExpressionExtensionsTests.__allTests__NSRegularExpressionExtensionsTests), + testCase(SwiftlintDefaultPathTests.__allTests__SwiftlintDefaultPathTests), + testCase(ViolnationTests.__allTests__ViolnationTests), + ] +} #endif diff --git a/Tests/RunnerLibTests/CreateConfigTests.swift b/Tests/RunnerLibTests/CreateConfigTests.swift index 9a67e367..8142137a 100644 --- a/Tests/RunnerLibTests/CreateConfigTests.swift +++ b/Tests/RunnerLibTests/CreateConfigTests.swift @@ -1,8 +1,9 @@ +#if !os(Linux) import RunnerLib import SnapshotTesting import XCTest -final class CreateConfigTests: SnapshotTestCase { +final class CreateConfigTests: XCTestCase { func testItCreatesTheCorrectConfig() throws { record = false let testPath = "test" @@ -15,3 +16,4 @@ final class CreateConfigTests: SnapshotTestCase { try? FileManager.default.removeItem(atPath: testPath) } } +#endif diff --git a/Tests/RunnerLibTests/DangerFileGeneratorTests.swift b/Tests/RunnerLibTests/DangerFileGeneratorTests.swift index ac0950a2..ef8d489f 100644 --- a/Tests/RunnerLibTests/DangerFileGeneratorTests.swift +++ b/Tests/RunnerLibTests/DangerFileGeneratorTests.swift @@ -1,10 +1,11 @@ +#if !os(Linux) import Foundation import Logger @testable import RunnerLib import SnapshotTesting import XCTest -final class DangerFileGeneratorTests: SnapshotTestCase { +final class DangerFileGeneratorTests: XCTestCase { private let logger = Logger(isVerbose: false, isSilent: false, printer: SpyPrinter()) private var createdFiles: [String] = [] private var generator: DangerFileGenerator! @@ -111,3 +112,4 @@ extension DangerFileGeneratorTests { return try! String(contentsOfFile: generatedFilePath) } } +#endif diff --git a/Tests/RunnerLibTests/XCTestManifests.swift b/Tests/RunnerLibTests/XCTestManifests.swift index 69e876a7..c611422e 100644 --- a/Tests/RunnerLibTests/XCTestManifests.swift +++ b/Tests/RunnerLibTests/XCTestManifests.swift @@ -1,69 +1,79 @@ +#if !canImport(ObjectiveC) import XCTest extension CliParserTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__CliParserTests = [ ("testItReturnsNilIfTheJSONDoesntContainCliArgs", testItReturnsNilIfTheJSONDoesntContainCliArgs), ("testItReturnsTheCliArgsIfTheJSONIsCorrect", testItReturnsTheCliArgsIfTheJSONIsCorrect), ("testItReturnsTheCliArgsIfTheJSONIsCorrectButDoesntContainAllTheFields", testItReturnsTheCliArgsIfTheJSONIsCorrectButDoesntContainAllTheFields), ] } -extension CreateConfigTests { - static let __allTests = [ - ("testItCreatesTheCorrectConfig", testItCreatesTheCorrectConfig), - ] -} - extension DangerCommandTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__DangerCommandTests = [ ("testItReturnsTheCorrectCommandsListText", testItReturnsTheCorrectCommandsListText), ] } -extension DangerFileGeneratorTests { - static let __allTests = [ - ("testItGeneratesTheCorrectFileWhenOneOfTheImportedFilesIsMissing", testItGeneratesTheCorrectFileWhenOneOfTheImportedFilesIsMissing), - ("testItGeneratesTheCorrectFileWhenThereAreNoImports", testItGeneratesTheCorrectFileWhenThereAreNoImports), - ("testItGeneratesTheCorrectFileWhenThereIsAreMultipleImports", testItGeneratesTheCorrectFileWhenThereIsAreMultipleImports), - ("testItGeneratesTheCorrectFileWhenThereIsASingleImport", testItGeneratesTheCorrectFileWhenThereIsASingleImport), - ] -} - extension DangerJSVersionFinderTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__DangerJSVersionFinderTests = [ ("testItSendsTheCorrectCommandAndReturnsTheCorrectResult", testItSendsTheCorrectCommandAndReturnsTheCorrectResult), ] } extension DangerfilePathFinderTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__DangerfilePathFinderTests = [ ("testItReturnsNilIfTheArgumentsDoesntContainTheDangerfileArg", testItReturnsNilIfTheArgumentsDoesntContainTheDangerfileArg), ("testItReturnsTheCorrectPathIfTheArgumentsContainsTheDangerfileArg", testItReturnsTheCorrectPathIfTheArgumentsContainsTheDangerfileArg), ] } extension GetDangerJSPathTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__GetDangerJSPathTests = [ ("testItSearchesForDangerJSIfTheDangerJSPathOptionIsNotPresent", testItSearchesForDangerJSIfTheDangerJSPathOptionIsNotPresent), ("testItUsesTheDangerJSPathOptionIfPresent", testItUsesTheDangerJSPathOptionIfPresent), ] } extension HelpMessagePresenterTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__HelpMessagePresenterTests = [ ("testIsShowsTheCommandListWhenThereIsNoCommand", testIsShowsTheCommandListWhenThereIsNoCommand), ] } extension ImportsFinderTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__ImportsFinderTests = [ ("testItRetunsAnEmptyListWhenThePassedStringDoesntContainImports", testItRetunsAnEmptyListWhenThePassedStringDoesntContainImports), ("testItRetunsTheCorrectFilePathsWhenThePassedStringContainsImports", testItRetunsTheCorrectFilePathsWhenThePassedStringContainsImports), ] } extension SPMDangerTests { - static let __allTests = [ + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__SPMDangerTests = [ ("testItAcceptsAnythingStartsWithDangerDeps", testItAcceptsAnythingStartsWithDangerDeps), ("testItBuildsTheDependencies", testItBuildsTheDependencies), ("testItReturnsFalseWhenThePackageHasNotTheDangerLib", testItReturnsFalseWhenThePackageHasNotTheDangerLib), @@ -75,19 +85,16 @@ extension SPMDangerTests { ] } -#if !os(macOS) - public func __allTests() -> [XCTestCaseEntry] { - return [ - testCase(CliParserTests.__allTests), - testCase(CreateConfigTests.__allTests), - testCase(DangerCommandTests.__allTests), - testCase(DangerFileGeneratorTests.__allTests), - testCase(DangerJSVersionFinderTests.__allTests), - testCase(DangerfilePathFinderTests.__allTests), - testCase(GetDangerJSPathTests.__allTests), - testCase(HelpMessagePresenterTests.__allTests), - testCase(ImportsFinderTests.__allTests), - testCase(SPMDangerTests.__allTests), - ] - } +public func __allTests() -> [XCTestCaseEntry] { + return [ + testCase(CliParserTests.__allTests__CliParserTests), + testCase(DangerCommandTests.__allTests__DangerCommandTests), + testCase(DangerJSVersionFinderTests.__allTests__DangerJSVersionFinderTests), + testCase(DangerfilePathFinderTests.__allTests__DangerfilePathFinderTests), + testCase(GetDangerJSPathTests.__allTests__GetDangerJSPathTests), + testCase(HelpMessagePresenterTests.__allTests__HelpMessagePresenterTests), + testCase(ImportsFinderTests.__allTests__ImportsFinderTests), + testCase(SPMDangerTests.__allTests__SPMDangerTests), + ] +} #endif From eb638fc3c08dfb9d1506a525b620231406aeb051 Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Wed, 10 Apr 2019 23:06:28 +0100 Subject: [PATCH 2/7] Test --- Dangerfile.swift | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Dangerfile.swift b/Dangerfile.swift index 5f7ea237..11a882f1 100644 --- a/Dangerfile.swift +++ b/Dangerfile.swift @@ -7,6 +7,5 @@ if danger.git.createdFiles.count + danger.git.modifiedFiles.count - danger.git.d SwiftLint.lint(inline: true, directory: "Sources") -if let title = danger.bitbucketServer?.pullRequest.title { - danger.message(title) -} +let files = danger.git.modifiedFiles +danger.message(files.joined(separator: " ")) From a1f3339daeadf4aa6fafd54565893f5eb0c3ae91 Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Wed, 10 Apr 2019 23:08:12 +0100 Subject: [PATCH 3/7] Test --- Sources/Danger/Danger.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Sources/Danger/Danger.swift b/Sources/Danger/Danger.swift index de097fae..96e7951a 100644 --- a/Sources/Danger/Danger.swift +++ b/Sources/Danger/Danger.swift @@ -7,7 +7,7 @@ import Foundation #endif import Logger -let runner = DangerRunner() +public let runner = DangerRunner() public var danger: DangerDSL { return runner.dsl @@ -15,9 +15,9 @@ public var danger: DangerDSL { // MARK: - DangerRunner -final class DangerRunner { +public final class DangerRunner { let logger: Logger - let dsl: DangerDSL + public let dsl: DangerDSL var results = DangerResults() fileprivate init() { From c261dad85c3f0bcf9669317d369c96c845396b11 Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Wed, 10 Apr 2019 23:13:20 +0100 Subject: [PATCH 4/7] Test --- Dangerfile.swift | 4 ++-- Sources/Danger/Danger.swift | 2 +- Sources/Danger/DangerDSL.swift | 16 +++++++++++++--- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Dangerfile.swift b/Dangerfile.swift index 11a882f1..3b6aa7ad 100644 --- a/Dangerfile.swift +++ b/Dangerfile.swift @@ -7,5 +7,5 @@ if danger.git.createdFiles.count + danger.git.modifiedFiles.count - danger.git.d SwiftLint.lint(inline: true, directory: "Sources") -let files = danger.git.modifiedFiles -danger.message(files.joined(separator: " ")) +let title = danger.github.pullRequest.title +danger.message(title) diff --git a/Sources/Danger/Danger.swift b/Sources/Danger/Danger.swift index 96e7951a..f1c5c8bc 100644 --- a/Sources/Danger/Danger.swift +++ b/Sources/Danger/Danger.swift @@ -20,7 +20,7 @@ public final class DangerRunner { public let dsl: DangerDSL var results = DangerResults() - fileprivate init() { + public init() { let isVerbose = CommandLine.arguments.contains("--verbose") || (ProcessInfo.processInfo.environment["DEBUG"] != nil) let isSilent = CommandLine.arguments.contains("--silent") logger = Logger(isVerbose: isVerbose, isSilent: isSilent) diff --git a/Sources/Danger/DangerDSL.swift b/Sources/Danger/DangerDSL.swift index 5b2e8eea..3054166a 100644 --- a/Sources/Danger/DangerDSL.swift +++ b/Sources/Danger/DangerDSL.swift @@ -13,7 +13,7 @@ public struct DSL: Decodable { public struct DangerDSL: Decodable { public let git: Git - public private(set) var github: GitHub? + public let github: GitHub! public let bitbucketServer: BitBucketServer! @@ -32,8 +32,18 @@ public struct DangerDSL: Decodable { public init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) git = try container.decode(Git.self, forKey: .git) - github = try container.decodeIfPresent(GitHub.self, forKey: .github) - bitbucketServer = try container.decodeIfPresent(BitBucketServer.self, forKey: .bitbucketServer) + + do { + github = try container.decode(GitHub.self, forKey: .github) + } catch { + github = nil + } + + do { + bitbucketServer = try container.decodeIfPresent(BitBucketServer.self, forKey: .bitbucketServer) + } catch { + bitbucketServer = nil + } // File map is used so that libraries can make tests without // doing a lot of internal hacking for danger, or weird DI in their From 8a24423474a2ad67170ef036629118d275a33eb1 Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Wed, 10 Apr 2019 23:25:09 +0100 Subject: [PATCH 5/7] Test --- Dangerfile.swift | 6 ++++-- Sources/Danger/DangerDSL.swift | 38 ++++++++++++++++++++-------------- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/Dangerfile.swift b/Dangerfile.swift index 3b6aa7ad..1de32e54 100644 --- a/Dangerfile.swift +++ b/Dangerfile.swift @@ -7,5 +7,7 @@ if danger.git.createdFiles.count + danger.git.modifiedFiles.count - danger.git.d SwiftLint.lint(inline: true, directory: "Sources") -let title = danger.github.pullRequest.title -danger.message(title) +if case let .github(github) = danger.remote { + let title = github.pullRequest.title + danger.message(title) +} diff --git a/Sources/Danger/DangerDSL.swift b/Sources/Danger/DangerDSL.swift index 3054166a..d9402e05 100644 --- a/Sources/Danger/DangerDSL.swift +++ b/Sources/Danger/DangerDSL.swift @@ -11,11 +11,15 @@ public struct DSL: Decodable { } public struct DangerDSL: Decodable { + public enum Remote { + case github(GitHub) + case bitbucketServer(BitBucketServer) + case unknown + } + public let git: Git - public let github: GitHub! - - public let bitbucketServer: BitBucketServer! + public let remote: Remote public let utils: DangerUtils @@ -33,16 +37,12 @@ public struct DangerDSL: Decodable { let container = try decoder.container(keyedBy: CodingKeys.self) git = try container.decode(Git.self, forKey: .git) - do { - github = try container.decode(GitHub.self, forKey: .github) - } catch { - github = nil - } - - do { - bitbucketServer = try container.decodeIfPresent(BitBucketServer.self, forKey: .bitbucketServer) - } catch { - bitbucketServer = nil + if let github = try container.decodeIfPresent(GitHub.self, forKey: .github) { + remote = .github(github) + } else if let bitbucketServer = try container.decodeIfPresent(BitBucketServer.self, forKey: .bitbucketServer) { + remote = .bitbucketServer(bitbucketServer) + } else { + remote = .unknown } // File map is used so that libraries can make tests without @@ -60,11 +60,19 @@ public struct DangerDSL: Decodable { extension DangerDSL { var runningOnGithub: Bool { - return github != nil + if case .github = remote { + return true + } else { + return false + } } var runningOnBitbucketServer: Bool { - return bitbucketServer != nil + if case .bitbucketServer = remote { + return true + } else { + return false + } } var supportsSuggestions: Bool { From 7fb117cca108ec63f1c734fded79453cdac3d06d Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Wed, 10 Apr 2019 23:28:18 +0100 Subject: [PATCH 6/7] Test --- Sources/Danger/DangerDSL.swift | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Sources/Danger/DangerDSL.swift b/Sources/Danger/DangerDSL.swift index d9402e05..9d14a2a8 100644 --- a/Sources/Danger/DangerDSL.swift +++ b/Sources/Danger/DangerDSL.swift @@ -37,13 +37,13 @@ public struct DangerDSL: Decodable { let container = try decoder.container(keyedBy: CodingKeys.self) git = try container.decode(Git.self, forKey: .git) - if let github = try container.decodeIfPresent(GitHub.self, forKey: .github) { - remote = .github(github) - } else if let bitbucketServer = try container.decodeIfPresent(BitBucketServer.self, forKey: .bitbucketServer) { - remote = .bitbucketServer(bitbucketServer) - } else { +// if let github = try container.decodeIfPresent(GitHub.self, forKey: .github) { +// remote = .github(github) +// } else if let bitbucketServer = try container.decodeIfPresent(BitBucketServer.self, forKey: .bitbucketServer) { +// remote = .bitbucketServer(bitbucketServer) +// } else { remote = .unknown - } +// } // File map is used so that libraries can make tests without // doing a lot of internal hacking for danger, or weird DI in their From 35575c1db86c41782adff91024fb1e421922b8ec Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Thu, 11 Apr 2019 22:19:26 +0100 Subject: [PATCH 7/7] Test --- Sources/Danger/GitHubDSL.swift | 110 ++++++++++++++++----------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/Sources/Danger/GitHubDSL.swift b/Sources/Danger/GitHubDSL.swift index 4a810bab..b1adc18d 100644 --- a/Sources/Danger/GitHubDSL.swift +++ b/Sources/Danger/GitHubDSL.swift @@ -10,10 +10,10 @@ public struct GitHub: Decodable { // MARK: - CodingKeys enum CodingKeys: String, CodingKey { - case issue + case issue = "issue" case pullRequest = "pr" - case commits - case reviews + case commits = "commits" + case reviews = "reviews" case requestedReviewers = "requested_reviewers" } @@ -36,18 +36,18 @@ public struct GitHubPR: Decodable, Equatable { // MARK: - CodingKeys enum CodingKeys: String, CodingKey { - case number - case title - case body - case user - case assignee - case assignees - case milestone - case additions - case deletions - case state - case head - case base + case number = "number" + case title = "title" + case body = "body" + case user = "user" + case assignee = "assignee" + case assignees = "assignees" + case milestone = "milestone" + case additions = "additions" + case deletions = "deletions" + case state = "state" + case head = "head" + case base = "base" case isLocked = "locked" case isMerged = "merged" case createdAt = "created_at" @@ -64,10 +64,10 @@ public struct GitHubPR: Decodable, Equatable { // MARK: - PullRequestState public enum PullRequestState: String, Decodable { - case open - case closed - case merged - case locked + case open = "open" + case closed = "closed" + case merged = "merged" + case locked = "locked" } // MARK: - Properties @@ -149,8 +149,8 @@ public struct GitHubUser: Decodable, Equatable { // MARK: - CodingKeys enum CodingKeys: String, CodingKey { - case id - case login + case id = "id" + case login = "login" case userType = "type" } @@ -180,8 +180,8 @@ public struct GitHubTeam: Decodable, Equatable { // MARK: - CodingKeys enum CodingKeys: String, CodingKey { - case id - case name + case id = "id" + case name = "name" } // MARK: - Properties @@ -200,8 +200,8 @@ public struct GitHubRequestedReviewers: Decodable, Equatable { // MARK: - CodingKeys enum CodingKeys: String, CodingKey { - case users - case teams + case users = "users" + case teams = "teams" } // MARK: - Properties @@ -241,10 +241,10 @@ public struct GitHubRepo: Decodable, Equatable { // MARK: - CodingKeys enum CodingKeys: String, CodingKey { - case id - case name - case owner - case description + case id = "id" + case name = "name" + case owner = "owner" + case description = "description" case fullName = "full_name" case isPrivate = "private" case isFork = "fork" @@ -284,10 +284,10 @@ public struct GitHubReview: Decodable, Equatable { // MARK: - CodingKeys enum CodingKeys: String, CodingKey { - case user - case id - case body - case state + case user = "user" + case id = "id" + case body = "body" + case state = "state" case commitId = "commit_id" } @@ -345,16 +345,16 @@ public struct GitHubIssue: Decodable, Equatable { // MARK: - CodingKeys enum CodingKeys: String, CodingKey { - case id - case number - case title - case user - case state - case assignee - case assignees - case milestone - case body - case labels + case id = "id" + case number = "number" + case title = "title" + case user = "user" + case state = "state" + case assignee = "assignee" + case assignees = "assignees" + case milestone = "milestone" + case body = "body" + case labels = "labels" case commentCount = "comments" case isLocked = "locked" case createdAt = "created_at" @@ -365,9 +365,9 @@ public struct GitHubIssue: Decodable, Equatable { // MARK: - IssueState public enum IssueState: String, Decodable { - case open - case closed - case locked + case open = "open" + case closed = "closed" + case locked = "locked" } // MARK: - Properties @@ -445,23 +445,23 @@ public struct GitHubMilestone: Decodable, Equatable { case closedAt = "closed_at" case closedIssues = "closed_issues" case createdAt = "created_at" - case creator - case description + case creator = "creator" + case description = "description" case dueOn = "due_on" - case id - case number + case id = "id" + case number = "number" case openIssues = "open_issues" - case state - case title + case state = "state" + case title = "title" case updatedAt = "updated_at" } // MARK: - MilestoneState public enum MilestoneState: String, Decodable { - case open - case closed - case all + case open = "open" + case closed = "closed" + case all = "all" } // MARK: - Properties