Quick / Nimble

A Matcher Framework for Swift and Objective-C

Home Page:https://quick.github.io/Nimble/documentation/nimble/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Discussion about the project setup and Carthage usage

stonko1994 opened this issue · comments

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

Note

This is not a bug report, but I would like to kick off a discussion about the current project setup and the usage of Carthage.

Motivation:
I'm currently trying to add visionOS support to the Quick ecosystem. This includes Nimble, CwlPreconditionTesting and CwlCatchException.

I found some inconsistencies depending on which package manager is used. When using SPM, the dependencies to the Cwl* packages are included through transitive dependencies as expected.
However, when using CocoaPods, there is no dependency on any Cwl* package. Instead, it uses the Carhtage checkout files, included in git. CwlPreconditionTesting and CwlCatchException would have CocoaPods and Carthage support.

The problem which comes with this becomes visible in #948. In this PR, the dependencies were updated as usual. However, it required an additional 'revert' commit (b03a82) to fix build issues.

These additional required changes are not documented and are hard to figure out. In an ideal scenario, one could update and use the dependencies without touching them.

Proposal:
It feels weird to include the Carthage/Checkouts folder in git history when everything should be prepared for use through transitive dependencies. Therefore, to improve the developer experience and simplify contribution, I suggest switching to transitive dependencies for CocoaPods and Carthage as well.


Environment

List the software versions you're using:

  • Quick: 7.,0.2
  • Nimble: 13.0.0
  • Xcode Version: 15.1 Beta 2
  • Swift Version: 5.9

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

  • Cocoapods: 1.14.2
  • Carthage: 0.39.1
  • Swift Package Manager 5.9.0

It feels weird to include the Carthage/Checkouts folder in git history when everything should be prepared for use through transitive dependencies. Therefore, to improve the developer experience and simplify contribution, I suggest switching to transitive dependencies for CocoaPods and Carthage as well.

100% agree. It's definitely weird/non-standard to include the Carthage/Checkouts folder in git. Doing some spelunking, it appears we used to directly embed the source code, and pulling them in through Carthage was just a way to simplify keeping them updated. It would definitely be worthwhile to fix this and pull these in transitively.