{"id":15026951,"url":"https://github.com/quick/nimble","last_synced_at":"2025-05-14T22:03:43.676Z","repository":{"id":37445214,"uuid":"21301381","full_name":"Quick/Nimble","owner":"Quick","description":"A Matcher Framework for Swift and Objective-C","archived":false,"fork":false,"pushed_at":"2025-04-07T00:14:07.000Z","size":13287,"stargazers_count":4837,"open_issues_count":21,"forks_count":606,"subscribers_count":84,"default_branch":"main","last_synced_at":"2025-04-30T11:03:30.846Z","etag":null,"topics":["asynchronous-expectations","bdd","failure-messages","matcher-functions","operator-overloads","swift","swift-assertions","swift-generics","testing"],"latest_commit_sha":null,"homepage":"https://quick.github.io/Nimble/documentation/nimble/","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Quick.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/funding.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["jessesquires","younata"]}},"created_at":"2014-06-28T11:28:38.000Z","updated_at":"2025-04-29T09:21:53.000Z","dependencies_parsed_at":"2023-02-12T11:30:24.585Z","dependency_job_id":"b6e7533d-ea9d-4b4d-91c3-d62ccab92128","html_url":"https://github.com/Quick/Nimble","commit_stats":{"total_commits":1445,"total_committers":138,"mean_commits":"10.471014492753623","dds":0.7460207612456747,"last_synced_commit":"23903e10c3ae693d3a1a90d4bfce88f658072bd9"},"previous_names":[],"tags_count":90,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quick%2FNimble","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quick%2FNimble/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quick%2FNimble/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quick%2FNimble/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Quick","download_url":"https://codeload.github.com/Quick/Nimble/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252840404,"owners_count":21812301,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asynchronous-expectations","bdd","failure-messages","matcher-functions","operator-overloads","swift","swift-assertions","swift-generics","testing"],"created_at":"2024-09-24T20:05:28.015Z","updated_at":"2025-05-07T08:24:19.312Z","avatar_url":"https://github.com/Quick.png","language":"Swift","readme":"# Nimble\n\n[![Build Status](https://github.com/Quick/Nimble/actions/workflows/ci-xcode.yml/badge.svg)](https://github.com/Quick/Nimble/actions/workflows/ci-xcode.yml)\n[![CocoaPods](https://img.shields.io/cocoapods/v/Nimble.svg)](https://cocoapods.org/pods/Nimble)\n[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)\n[![Platforms](https://img.shields.io/cocoapods/p/Nimble.svg)](https://cocoapods.org/pods/Nimble)\n\nUse Nimble to express the expected outcomes of Swift\nor Objective-C expressions. Inspired by\n[Cedar](https://github.com/pivotal/cedar).\n\n```swift\n// Swift\nexpect(1 + 1).to(equal(2))\nexpect(1.2).to(beCloseTo(1.1, within: 0.1))\nexpect(3) \u003e 2\nexpect(\"seahorse\").to(contain(\"sea\"))\nexpect([\"Atlantic\", \"Pacific\"]).toNot(contain(\"Mississippi\"))\nexpect(ocean.isClean).toEventually(beTruthy())\n```\n\n# Documentation\n\nNimble's documentation is now lives in [Sources/Nimble/Nimble.docc](Sources/Nimble/Nimble.docc)\nas a Documentation Catalog. You can easily browse it [quick.github.io/Nimble](https://quick.github.io/Nimble/documentation/nimble).\n\n# Installing Nimble\n\n\u003e Nimble can be used on its own, or in conjunction with its sister\n  project, [Quick](https://github.com/Quick/Quick). To install both\n  Quick and Nimble, follow [the installation instructions in the Quick\n  Documentation](https://github.com/Quick/Quick/blob/main/Documentation/en-us/InstallingQuick.md).\n\nNimble can currently be installed in one of four ways: Swift Package Manager, \nCocoaPods, Carthage or with git submodules.\n\n## Swift Package Manager\n\n### Xcode\n\nTo install Nimble via Xcode's Swift Package Manager Integration:\nSelect your project configuration, then the project tab, then the Package\nDependencies tab. Click on the \"plus\" button at the bottom of the list,\nthen follow the wizard to add Quick to your project. Specify\n`https://github.com/Quick/Nimble.git` as the url, and be sure to add\nNimble as a dependency of your unit test target, not your app target.\n\n### Package.Swift\n\nTo use Nimble with Swift Package Manager to test your applications, add Nimble\nto your `Package.Swift` and link it with your test target:\n\n```swift\n// swift-tools-version:5.7\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"MyAwesomeLibrary\",\n    products: [\n        // ...\n    ],\n    dependencies: [\n        // ...\n        .package(url:  \"https://github.com/Quick/Nimble.git\", from: \"13.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"MyAwesomeLibrary\",\n            dependencies: ...),\n        .testTarget(\n            name: \"MyAwesomeLibraryTests\",\n            dependencies: [\"MyAwesomeLibrary\", \"Nimble\"]),\n    ]\n)\n```\n\nPlease note that if you install Nimble using Swift Package Manager, then `raiseException` is not available.\n\n## CocoaPods\n\nTo use Nimble in CocoaPods to test your macOS, iOS, tvOS or watchOS applications, add\nNimble to your podfile and add the ```use_frameworks!``` line to enable Swift\nsupport for CocoaPods.\n\n```ruby\nplatform :ios, '13.0'\n\nsource 'https://github.com/CocoaPods/Specs.git'\n\n# Whatever pods you need for your app go here\n\ntarget 'YOUR_APP_NAME_HERE_Tests', :exclusive =\u003e true do\n  use_frameworks!\n  pod 'Nimble'\nend\n```\n\nFinally run `pod install`.\n\n## Carthage\n\nTo use Nimble in Carthage to test your macOS, iOS, tvOS or watchOS applications,\nadd Nimble to your `Cartfile.private`:\n\n```\ngithub \"Quick/Nimble\" ~\u003e 13.2\n```\n\nThen follow the rest of the [Carthage Quick Start](https://github.com/carthage/carthage/?tab=readme-ov-file#quick-start)\nand link Nimble with your unit tests.\n\n## Git Submodules\n\nTo use Nimble as a submodule to test your macOS, iOS or tvOS applications, follow\nthese 4 easy steps:\n\n1. Clone the Nimble repository\n2. Add Nimble.xcodeproj to the Xcode workspace for your project\n3. Link Nimble.framework to your test target\n4. Start writing expectations!\n\nFor more detailed instructions on each of these steps,\nread [How to Install Quick](https://github.com/Quick/Quick#how-to-install-quick).\nIgnore the steps involving adding Quick to your project in order to\ninstall just Nimble.\n\n# Privacy Statement\n\nNimble is a library that is only used for testing and should never be included\nin the binary submitted to App Store Connect.\n\nDespite not being shipped to Apple, Nimble does not and will never collect any\nkind of analytics or tracking.\n","funding_links":["https://github.com/sponsors/jessesquires","https://github.com/sponsors/younata"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquick%2Fnimble","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquick%2Fnimble","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquick%2Fnimble/lists"}