Quick / Nimble

A Matcher Framework for Swift and Objective-C
https://quick.github.io/Nimble/documentation/nimble/
Apache License 2.0
4.81k stars 600 forks source link

Acceptance Test Suite for verifying supported configurations #190

Closed jeffh closed 3 years ago

jeffh commented 9 years ago

Currently, breaking the setup flow for Nimble is easy because of the many supported installation methods in various configurations:

Platforms - Supporting latest and latest - 1 when possible; Assumes the same version of Xcode can be used. Simulator-only is acceptable.

Subject Target - The binary target that's being tested. Static libraries and CLI is currently unsupported. Build-processes differ between both targets that may break specific configurations.

Test Target - The target that Nimble assertions reside in. This target links directly to Nimble. CLI may be a future target.

Installation Method - How end-users install Nimble into their projects

Configurations - How end-users / consumers configure Nimble

This is a combinatorial explosion that's difficult to ensure we don't break anything. Not all combinations are possible (UI Test Bundle w/o XCTest is impossible), but there's still a lot of possible configurations. And it will only get worse as time progresses.

A good first-step is to have an acceptance test suite that pulls in the latest commit of Nimble and runs sample projects in each of those configurations. I definitely don't expect we'll get this coverage with one large PR, but it doesn't hurt to build this over time.

To be clear, these sample projects should simply check that Nimble can be linked + run with those sample projects. There shouldn't be any significant assertions other than running some Nimble code to assert that Nimble successfully links and runs in the configuration.

Question for @Quick/contributors: should this be inside the Nimble project itself or as a separate project under the Quick org? A separate project would require triggering another build as needed (which is a bit more infrastructure work to setup), although I'm leaning towards that.


Some common configurations we should support (in order of importance):

jeffh commented 9 years ago

Current work is on my repo. Checked off what's covered right now (App bundles with test bundles for iOS & OS X).