Pippin
Pippin is a collection of tools to scaffold iOS app infrastructure and assist in development tasks like writing code, testing and debugging.
Getting started with a default setup is as easy as declaring a Podfile dependency:
pod 'Pippin'and, at some point during your app launch sequence:
import Pippin
import PippinAdapters
let environment = Environment.default(
bugReportRecipients: ["[email protected]"],
touchVizRootVC: UIViewController(nibName: nil, bundle: nil) // optional
)
// Crashlytics is a special situation
environment.crashReporter = CrashlyticsAdapter(debug: true)
// other optional peripherals
environment.locator = CoreLocationAdapter(locatorDelegate: self)
environment.connectEnvironment()You've just gotten the following, with minimal boilerplate:
- logging
- crash reporting
- bug reporting
- progress indicators
- alert dialogs
- fonts
- app and launch information
- data model
- touch visualization
- launch arguments and environment variables
- an authorized
CLLocationManager(an authorizedAVCaptureDevicemay be obtained similarly)
Podspecs
There are five podspecs to deliver these tools, see each's README for more information:
Note: there are several reasons these are delivered via separate podspecs instead of one podspec with multiple podspecs. Those two spec levels are not equivalent for all functionalities.
- Issues with installing
test_specs for just one subspec.- Not supported to install a subspec using
Pod:configurations: https://github.com/CocoaPods/CocoaPods/issues/3503.
The old Pippin.podspec is now an umbrella framework that pulls in PippinCore, PippinAdapters, PippinLibrary and PippinTesting for convenience.
Example projects
These are used for testing and can be evaluated using pod try:
Contribute
Issues and pull requests are welcome!
Testing
rake test
Runs a collection of Rake tasks which themselves may be run independently:
example_smoke_testsunit_teststest_smoke_testsubspec_smoke_test
example_smoke_tests
For each project in Examples/ try to pod install and build.
unit_tests
Run the unit test suites created for any test_specs of any Pippin podspecs.
test_smoke_test
pod install and try to build the Example/Pippin.xcodeproject unit and UI test targets, which both declare dependencies on PippinLibrary and PippinTesting.
subspec_smoke_test
An integration smoke test, which generates an Xcode project for each subspec of each Pippin podspec, each in both Swift and Objective-C, to try building after pod installing that subspec. Each project is deposited under PippinTests/SmokeTests.
PippinTests/ also contains the template project source code in ObjcApp/ and SwiftApp/, plus the template Podfile.
Podspec test_specs
Pippin podspecs currently with unit tests located under Tests/:
PippinLibraryPippinTesting
Thanks!
If this project helped you, please consider leaving a tip