profile
viewpoint
Nikolay Kasyanov nikolaykasyanov Careem Berlin, Germany twitter.com/corristo

nikolaykasyanov/GitUp 1

The Git interface you've been missing all your life has finally arrived.

nikolaykasyanov/kotlin-comparable-nullability-issue 1

A project to demonstrate that nullability is inconsistent between Comparable interface and its adopters

nikolaykasyanov/openmw 1

OpenMW is an unofficial open source engine reimplementation of the game Morrowind.

nikolaykasyanov/SwiftlyBound 1

A proof-of-concept data binding framework for Swift

nikolaykasyanov/bme280-sensor 0

A Node.js I2C module for the Bosch BME280 Humidity, Barometric Pressure, and Temperature Sensor

nikolaykasyanov/cmp 0

An implementation of the MessagePack serialization format in C / msgpack.org[C]

nikolaykasyanov/CocoaPods 0

The Objective-C library dependency manager.

nikolaykasyanov/CocoaPods13Bug 0

A sample project for CocoaPods 1.3.0 resource copying bug

nikolaykasyanov/danger-rubocop 0

Danger plugin for Rubocop

startedvashpan/xcode-dev-cleaner

started time in 16 days

startedge-org/multiplatform-swiftpackage

started time in 18 days

startedPaulTaykalo/xcode-time-tracker

started time in 24 days

delete branch nikolaykasyanov/danger-swift-coverage

delete branch : target-exclude-patterns

delete time in a month

issue commentf-meloni/danger-swift-coverage

`excludedTargets` parameter default value problem

Oh I didn't see this coming, nice find.

el-hoshino

comment created time in a month

pull request commentf-meloni/danger-swift-coverage

Implement regex-based target exclusion

@f-meloni thank you ❤️

nikolaykasyanov

comment created time in a month

pull request commentf-meloni/danger-swift-coverage

Implement regex-based target exclusion

Hey, can I do anything to expedite reviewing this? Thanks in advance 🙏

nikolaykasyanov

comment created time in a month

PR opened f-meloni/danger-swift-coverage

Implement regex-based target exclusion

Hey, first of all, thanks for this plugin.

Sometimes it's not feasible to explicitly list targets one would like to exluce, that's why I implemented regular expression exclusion support alongside the existing exact match behavior.

Note: I'm getting Package.resolved changes while building, not sure if I should include them in the PR or not 🤔

+60 -16

0 comment

6 changed files

pr created time in 2 months

create barnchnikolaykasyanov/danger-swift-coverage

branch : target-exclude-patterns

created branch time in 2 months

fork nikolaykasyanov/danger-swift-coverage

Show the coverage of the modified/created files on your PRs.

fork in 2 months

startedf-meloni/danger-swift-coverage

started time in 2 months

PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent

issue commentQuick/Nimble

expect(_:file:line)/expect(_:line:expression) overload ambiguity in Xcode 12 beta 5

@ikesyo my bad, thanks for referencing.

nikolaykasyanov

comment created time in 2 months

push eventnikolaykasyanov/NimbleCompilationFailure

Nikolay Kasyanov

commit sha 731a0540fde51312a0767037760a37b17f758e50

Initial commit

view details

Nikolay Kasyanov

commit sha e18ddef5a53dbe600b9c416d3f81bd97e4da5744

Create README.md

view details

push time in 2 months

issue openedQuick/Nimble

expect(_:file:line)/expect(_:line:expression) overload ambiguity in Xcode 12 beta 5

  • [ ] I have read CONTRIBUTING and have done my best to follow them.

What did you do?

I tried to compile my project with Xcode 12 beta 5 and got the error at calls like this:

expect {
    try sut.doSomething()
}.to(throwError(expectedError))

What did you expect to happen?

I expect this code to compile.

What actually happened instead?

The code doesn't compile due to following error: "Ambigous use of expect". The mentioned expect overloads are listed by Xcode as candidates.

Environment

List the software versions you're using:

  • Quick: 3.0.0
  • Nimble: 8.1.1, 9.0.0-rc.1
  • Xcode Version: 12.0 beta 5 (12A8189h) (Open Xcode; In menubar: Xcode > About Xcode)
  • Swift Version: ?.? (Open Xcode Preferences; Components > Toolchains. If none, use Xcode Default.)

Please also mention which package manager you used and its version. Delete the other package managers in this list:

  • Cocoapods: 1.10.0.beta.1

Project that demonstrates the issue

https://github.com/nikolaykasyanov/NimbleCompilationFailure

created time in 2 months

push eventnikolaykasyanov/NimbleCompilationFailure

Nikolay Kasyanov

commit sha a4fa9c5dd26f13f9990c809eeaef5cd8301c2088

Create README.md

view details

push time in 2 months

create barnchnikolaykasyanov/NimbleCompilationFailure

branch : master

created branch time in 2 months

created repositorynikolaykasyanov/NimbleCompilationFailure

created time in 2 months

Pull request review commentRxSwiftCommunity/RxTestExt

[WIP] Introduce new `Expectation` API

+import Foundation+import RxSwift+import RxTest++extension Expectation {+    func matchTimeline(_ expectedEvents: [Recorded<Event<Element>>], predicate: (Event<Element>, Event<Element>) -> Bool) {+        evaluate { actualEvents in+            let match = actualEvents.elementsEqual(expectedEvents) { actual, expected in+                actual.time == expected.time+                    && predicate(actual.value, expected.value)+            }+            +            guard !match else { return .success("match given timeline") }+            return .failure(expected: "<\(marble(for: expectedEvents))>",+                            actual: "<\(marble(for: actualEvents))>")

Marbles ❤️

mosamer

comment created time in 2 months

Pull request review commentRxSwiftCommunity/RxTestExt

[WIP] Introduce new `Expectation` API

+import Foundation+import RxTest++public extension Expectation {+    /// Expects a testable observer to eventually complete+    func complete() {+        evaluate { events in+            guard let terminating = events.last,+                  terminating.value.isCompleted else {+                return .customFailure(message: "expected to complete")+            }+            return .success("complete")+        }+    }+    +    /// Expects a testable observer to complete at a given time+    /// - Parameter expectedTime: Expected complete time+    func complete(at expectedTime: TestTime) {+        evaluate { events in+            guard let terminating = events.last,+                  terminating.value.isCompleted else {+                return .customFailure(message: "expected to complete @\(expectedTime)")+            }+            guard terminating.time == expectedTime else {+                return .failure(expected: "to complete @\(expectedTime)", actual: "completed @\(terminating.time)")+            }+            return .success("complete @\(expectedTime)")+        }+    }+    +    /// Expects a testable observer to complete after a given number of next events+    /// - Parameter expectedCount: Count of events before complete+    func complete(after expectedCount: Int) {+        evaluate { events in+            guard let terminating = events.last,+                  terminating.value.isCompleted else {+                return .failure(expected: "to complete after <\(expectedCount)> events", actual: "no complete events")+            }+            +            let actualCount = events.dropLast().count+            guard actualCount == expectedCount else {+                return .failure(expected: "to complete after <\(expectedCount)> events", actual: "complete after <\(actualCount)> events")+            }+            return .success("complete after <\(expectedCount)> events")

after ... values might be more appropriate here, as event can be anything, value, competion or error.

mosamer

comment created time in 2 months

Pull request review commentRxSwiftCommunity/RxTestExt

[WIP] Introduce new `Expectation` API

+import XCTest+import RxSwift+import RxTest++public struct Assertion<T> {+    struct Location {+        let file: StaticString+        let line: UInt+    }

IIRC Xcode 12 is adding a similar type, I wonder how the interop may look like.

mosamer

comment created time in 2 months

Pull request review commentRxSwiftCommunity/RxTestExt

[WIP] Introduce new `Expectation` API

+import Foundation+import RxTest++public extension Expectation {+    /// Expects a testable observer to eventually complete+    func complete() {+        evaluate { events in+            guard let terminating = events.last,+                  terminating.value.isCompleted else {+                return .customFailure(message: "expected to complete")+            }+            return .success("complete")+        }+    }+    +    /// Expects a testable observer to complete at a given time+    /// - Parameter expectedTime: Expected complete time+    func complete(at expectedTime: TestTime) {+        evaluate { events in+            guard let terminating = events.last,+                  terminating.value.isCompleted else {+                return .customFailure(message: "expected to complete @\(expectedTime)")+            }+            guard terminating.time == expectedTime else {+                return .failure(expected: "to complete @\(expectedTime)", actual: "completed @\(terminating.time)")+            }+            return .success("complete @\(expectedTime)")+        }+    }+    +    /// Expects a testable observer to complete after a given number of next events+    /// - Parameter expectedCount: Count of events before complete+    func complete(after expectedCount: Int) {+        evaluate { events in+            guard let terminating = events.last,+                  terminating.value.isCompleted else {+                return .failure(expected: "to complete after <\(expectedCount)> events", actual: "no complete events")+            }+            +            let actualCount = events.dropLast().count

Isn't this just events.count - 1?

mosamer

comment created time in 2 months

Pull request review commentRxSwiftCommunity/RxTestExt

[WIP] Introduce new `Expectation` API

+import Foundation+import XCTest++/// Assertion evaluation result+public enum Evaluation {+    /// Evaluation passed+    case success(_ message: String)+    /// Evaluation failed+    ///+    /// Failure message with predefined format is used+    case failure(expected: CustomStringConvertible, actual: CustomStringConvertible)

Do we need to be this strict, though? In my experience String(describing:) works good enough for tests and it automatically uses Custom[Debug]StringConvertible under the hood when it's adopted.

mosamer

comment created time in 2 months

Pull request review commentRxSwiftCommunity/RxTestExt

[WIP] Introduce new `Expectation` API

-import XCTest-import RxSwift+import Foundation

Is it needed for @available?

mosamer

comment created time in 2 months

PullRequestReviewEvent
PullRequestReviewEvent

issue commenthome-assistant/frontend

Add new integration screen partially cut off in landscape on iPhone

Just noticed "Add support for safe area insets" in Home Assistant Core 0.114.0 release notes, seems like the issue have been addressed 🎉

SeanPM5

comment created time in 3 months

more