cocoapods-deintegrate 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (314) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +16 -19
  3. data/cocoapods_deintegrate.gemspec +1 -1
  4. data/lib/cocoapods_deintegrate.rb +1 -1
  5. data/lib/pod/command/deintegrate.rb +27 -15
  6. data/spec/command/deintegrate_spec.rb +47 -1
  7. data/spec/fixtures/Project/Frameworks/Podfile +12 -0
  8. data/spec/fixtures/Project/Frameworks/Podfile.lock +42 -0
  9. data/spec/fixtures/Project/Frameworks/Pods/Headers/Private/QueryKit/QKAttribute.h +210 -0
  10. data/spec/fixtures/Project/Frameworks/Pods/Headers/Private/QueryKit/QKQuerySet.h +155 -0
  11. data/spec/fixtures/Project/Frameworks/Pods/Headers/Private/QueryKit/QueryKit.h +19 -0
  12. data/spec/fixtures/Project/Frameworks/Pods/Headers/Private/Quick/NSString+QCKSelectorName.h +17 -0
  13. data/spec/fixtures/Project/Frameworks/Pods/Headers/Private/Quick/QCKDSL.h +211 -0
  14. data/spec/fixtures/Project/Frameworks/Pods/Headers/Private/Quick/Quick.h +13 -0
  15. data/spec/fixtures/Project/Frameworks/Pods/Headers/Private/Quick/QuickConfiguration.h +30 -0
  16. data/spec/fixtures/Project/Frameworks/Pods/Headers/Private/Quick/QuickSpec.h +48 -0
  17. data/spec/fixtures/Project/Frameworks/Pods/Headers/Public/QueryKit/QKAttribute.h +210 -0
  18. data/spec/fixtures/Project/Frameworks/Pods/Headers/Public/QueryKit/QKQuerySet.h +155 -0
  19. data/spec/fixtures/Project/Frameworks/Pods/Headers/Public/QueryKit/QueryKit.h +19 -0
  20. data/spec/fixtures/Project/Frameworks/Pods/Headers/Public/Quick/NSString+QCKSelectorName.h +17 -0
  21. data/spec/fixtures/Project/Frameworks/Pods/Headers/Public/Quick/QCKDSL.h +211 -0
  22. data/spec/fixtures/Project/Frameworks/Pods/Headers/Public/Quick/Quick.h +13 -0
  23. data/spec/fixtures/Project/Frameworks/Pods/Headers/Public/Quick/QuickConfiguration.h +30 -0
  24. data/spec/fixtures/Project/Frameworks/Pods/Headers/Public/Quick/QuickSpec.h +48 -0
  25. data/spec/fixtures/Project/Frameworks/Pods/Manifest.lock +42 -0
  26. data/spec/fixtures/Project/Frameworks/Pods/Pods.xcodeproj/project.pbxproj +995 -0
  27. data/spec/fixtures/Project/Frameworks/Pods/QueryKit/LICENSE +23 -0
  28. data/spec/fixtures/Project/Frameworks/Pods/QueryKit/QueryKit/Attribute.swift +124 -0
  29. data/spec/fixtures/Project/Frameworks/Pods/QueryKit/QueryKit/Expression.swift +41 -0
  30. data/spec/fixtures/Project/Frameworks/Pods/QueryKit/QueryKit/ObjectiveC/QKAttribute.h +210 -0
  31. data/spec/fixtures/Project/Frameworks/Pods/QueryKit/QueryKit/ObjectiveC/QKAttribute.m +315 -0
  32. data/spec/fixtures/Project/Frameworks/Pods/QueryKit/QueryKit/ObjectiveC/QKAttribute.swift +13 -0
  33. data/spec/fixtures/Project/Frameworks/Pods/QueryKit/QueryKit/ObjectiveC/QKQuerySet.h +155 -0
  34. data/spec/fixtures/Project/Frameworks/Pods/QueryKit/QueryKit/ObjectiveC/QKQuerySet.m +314 -0
  35. data/spec/fixtures/Project/Frameworks/Pods/QueryKit/QueryKit/ObjectiveC/QKQuerySet.swift +28 -0
  36. data/spec/fixtures/Project/Frameworks/Pods/QueryKit/QueryKit/Predicate.swift +21 -0
  37. data/spec/fixtures/Project/Frameworks/Pods/QueryKit/QueryKit/QueryKit.h +19 -0
  38. data/spec/fixtures/Project/Frameworks/Pods/QueryKit/QueryKit/QuerySet.swift +237 -0
  39. data/spec/fixtures/Project/Frameworks/Pods/QueryKit/README.md +151 -0
  40. data/spec/fixtures/Project/Frameworks/Pods/Quick/LICENSE +201 -0
  41. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/Callsite.swift +28 -0
  42. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/Configuration/Configuration.swift +147 -0
  43. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/Configuration/QuickConfiguration.h +30 -0
  44. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/Configuration/QuickConfiguration.m +83 -0
  45. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/DSL/DSL.swift +227 -0
  46. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/DSL/QCKDSL.h +211 -0
  47. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/DSL/QCKDSL.m +70 -0
  48. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/DSL/World+DSL.swift +100 -0
  49. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/Example.swift +103 -0
  50. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/ExampleGroup.swift +97 -0
  51. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/ExampleMetadata.swift +22 -0
  52. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/Failure.swift +16 -0
  53. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/Filter.swift +29 -0
  54. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/Hooks/Closures.swift +35 -0
  55. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/Hooks/ExampleHooks.swift +36 -0
  56. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/Hooks/SuiteHooks.swift +34 -0
  57. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/NSString+QCKSelectorName.h +17 -0
  58. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/NSString+QCKSelectorName.m +33 -0
  59. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/Quick.h +13 -0
  60. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/QuickSpec.h +48 -0
  61. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/QuickSpec.m +142 -0
  62. data/spec/fixtures/Project/Frameworks/Pods/Quick/Quick/World.swift +197 -0
  63. data/spec/fixtures/Project/Frameworks/Pods/Quick/README.md +979 -0
  64. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject-QueryKit/Info.plist +26 -0
  65. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject-QueryKit/Pods-TestProject-QueryKit-Private.xcconfig +9 -0
  66. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject-QueryKit/Pods-TestProject-QueryKit-dummy.m +5 -0
  67. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject-QueryKit/Pods-TestProject-QueryKit-prefix.pch +5 -0
  68. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject-QueryKit/Pods-TestProject-QueryKit-umbrella.h +9 -0
  69. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject-QueryKit/Pods-TestProject-QueryKit.modulemap +6 -0
  70. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject-QueryKit/Pods-TestProject-QueryKit.xcconfig b/data/spec/fixtures/Project/Frameworks/Pods/Target Support → Files/Pods-TestProject-QueryKit/Pods-TestProject-QueryKit.xcconfig +0 -0
  71. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject/Info.plist +26 -0
  72. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject/Pods-TestProject-acknowledgements.markdown +30 -0
  73. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject/Pods-TestProject-acknowledgements.plist +60 -0
  74. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject/Pods-TestProject-dummy.m +5 -0
  75. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject/Pods-TestProject-environment.h +74 -0
  76. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject/Pods-TestProject-frameworks.sh +55 -0
  77. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject/Pods-TestProject-resources.sh +74 -0
  78. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject/Pods-TestProject-umbrella.h +6 -0
  79. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject/Pods-TestProject.debug.xcconfig +9 -0
  80. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject/Pods-TestProject.modulemap +6 -0
  81. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProject/Pods-TestProject.release.xcconfig +9 -0
  82. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests-Quick/Info.plist +26 -0
  83. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests-Quick/Pods-TestProjectTests-Quick-Private.xcconfig +9 -0
  84. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests-Quick/Pods-TestProjectTests-Quick-dummy.m +5 -0
  85. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests-Quick/Pods-TestProjectTests-Quick-prefix.pch +5 -0
  86. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests-Quick/Pods-TestProjectTests-Quick-umbrella.h +11 -0
  87. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests-Quick/Pods-TestProjectTests-Quick.modulemap +6 -0
  88. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests-Quick/Pods-TestProjectTests-Quick.xcconfig +2 -0
  89. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests/Info.plist +26 -0
  90. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests-acknowledgements.markdown +208 -0
  91. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests-acknowledgements.plist +238 -0
  92. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests-dummy.m +5 -0
  93. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests-environment.h +14 -0
  94. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests-frameworks.sh +55 -0
  95. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests-resources.sh +74 -0
  96. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests-umbrella.h +6 -0
  97. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests.debug.xcconfig +9 -0
  98. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests.modulemap +6 -0
  99. data/spec/fixtures/Project/Frameworks/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests.release.xcconfig +9 -0
  100. data/spec/fixtures/Project/Frameworks/TestProject.xcodeproj/project.pbxproj +557 -0
  101. data/spec/fixtures/Project/Frameworks/TestProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  102. data/spec/fixtures/Project/Frameworks/TestProject.xcworkspace/contents.xcworkspacedata +10 -0
  103. data/spec/fixtures/Project/Frameworks/TestProject/AppDelegate.swift +46 -0
  104. data/spec/fixtures/Project/Frameworks/TestProject/Base.lproj/LaunchScreen.xib +41 -0
  105. data/spec/fixtures/Project/Frameworks/TestProject/Base.lproj/Main.storyboard +25 -0
  106. data/spec/fixtures/Project/Frameworks/TestProject/Images.xcassets/AppIcon.appiconset/Contents.json +38 -0
  107. data/spec/fixtures/Project/Frameworks/TestProject/Info.plist +40 -0
  108. data/spec/fixtures/Project/Frameworks/TestProject/ViewController.swift +25 -0
  109. data/spec/fixtures/Project/Frameworks/TestProjectTests/Info.plist +24 -0
  110. data/spec/fixtures/Project/Frameworks/TestProjectTests/TestProjectTests.swift +36 -0
  111. data/spec/fixtures/Project/None/TestProject.xcodeproj/project.pbxproj +420 -0
  112. data/spec/fixtures/Project/None/TestProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  113. data/spec/fixtures/Project/None/TestProject/AppDelegate.swift +46 -0
  114. data/spec/fixtures/Project/None/TestProject/Base.lproj/LaunchScreen.xib +41 -0
  115. data/spec/fixtures/Project/None/TestProject/Base.lproj/Main.storyboard +25 -0
  116. data/spec/fixtures/Project/None/TestProject/Images.xcassets/AppIcon.appiconset/Contents.json +38 -0
  117. data/spec/fixtures/Project/None/TestProject/Info.plist +40 -0
  118. data/spec/fixtures/Project/None/TestProject/ViewController.swift +25 -0
  119. data/spec/fixtures/Project/None/TestProjectTests/Info.plist +24 -0
  120. data/spec/fixtures/Project/None/TestProjectTests/TestProjectTests.swift +36 -0
  121. data/spec/fixtures/Project/StaticLibraries/Podfile +12 -0
  122. data/spec/fixtures/Project/StaticLibraries/Podfile.lock +13 -0
  123. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/LICENSE +19 -0
  124. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/README.md +308 -0
  125. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/EXPBackwardCompatibility.h +42 -0
  126. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/EXPBackwardCompatibility.m +17 -0
  127. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/EXPBlockDefinedMatcher.h +25 -0
  128. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/EXPBlockDefinedMatcher.m +60 -0
  129. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/EXPDefines.h +17 -0
  130. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/EXPDoubleTuple.h +13 -0
  131. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/EXPDoubleTuple.m +42 -0
  132. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/EXPExpect.h +45 -0
  133. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/EXPExpect.m +214 -0
  134. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/EXPFloatTuple.h +13 -0
  135. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/EXPFloatTuple.m +42 -0
  136. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/EXPMatcher.h +20 -0
  137. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/EXPUnsupportedObject.h +11 -0
  138. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/EXPUnsupportedObject.m +20 -0
  139. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/Expecta.h +27 -0
  140. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/Expecta.m +15 -0
  141. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/ExpectaSupport.h +64 -0
  142. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/ExpectaSupport.m +187 -0
  143. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/NSObject+Expecta.h +14 -0
  144. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/NSValue+Expecta.h +8 -0
  145. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/NSValue+Expecta.m +21 -0
  146. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatcherHelpers.h +4 -0
  147. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatcherHelpers.m +9 -0
  148. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beCloseTo.h +7 -0
  149. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beCloseTo.m +49 -0
  150. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beFalsy.h +3 -0
  151. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beFalsy.m +24 -0
  152. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beGreaterThan.h +6 -0
  153. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beGreaterThan.m +20 -0
  154. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beGreaterThanOrEqualTo.h +6 -0
  155. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beGreaterThanOrEqualTo.m +20 -0
  156. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beIdenticalTo.h +10 -0
  157. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beIdenticalTo.m +24 -0
  158. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beInTheRangeOf.h +6 -0
  159. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beInTheRangeOf.m +30 -0
  160. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beInstanceOf.h +7 -0
  161. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beInstanceOf.m +27 -0
  162. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beKindOf.h +5 -0
  163. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beKindOf.m +27 -0
  164. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beLessThan.h +6 -0
  165. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beLessThan.m +20 -0
  166. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beLessThanOrEqualTo.h +6 -0
  167. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beLessThanOrEqualTo.m +20 -0
  168. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beNil.h +5 -0
  169. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beNil.m +16 -0
  170. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beSubclassOf.h +5 -0
  171. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beSubclassOf.m +27 -0
  172. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beSupersetOf.h +4 -0
  173. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beSupersetOf.m +57 -0
  174. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beTruthy.h +3 -0
  175. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beTruthy.m +24 -0
  176. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beginWith.h +5 -0
  177. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+beginWith.m +49 -0
  178. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+conformTo.h +3 -0
  179. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+conformTo.m +33 -0
  180. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+contain.h +5 -0
  181. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+contain.m +38 -0
  182. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+endWith.h +3 -0
  183. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+endWith.m +49 -0
  184. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+equal.h +5 -0
  185. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+equal.m +24 -0
  186. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+haveCountOf.h +10 -0
  187. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+haveCountOf.m +36 -0
  188. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+notify.h +4 -0
  189. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+notify.m +63 -0
  190. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+raise.h +4 -0
  191. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+raise.m +30 -0
  192. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+raiseWithReason.h +3 -0
  193. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+raiseWithReason.m +35 -0
  194. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+respondTo.h +3 -0
  195. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers+respondTo.m +28 -0
  196. data/spec/fixtures/Project/StaticLibraries/Pods/Expecta/src/matchers/EXPMatchers.h +24 -0
  197. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPBackwardCompatibility.h +42 -0
  198. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPBlockDefinedMatcher.h +25 -0
  199. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPDefines.h +17 -0
  200. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPDoubleTuple.h +13 -0
  201. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPExpect.h +45 -0
  202. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPFloatTuple.h +13 -0
  203. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatcher.h +20 -0
  204. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatcherHelpers.h +4 -0
  205. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+beCloseTo.h +7 -0
  206. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+beFalsy.h +3 -0
  207. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThan.h +6 -0
  208. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h +6 -0
  209. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+beIdenticalTo.h +10 -0
  210. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+beInTheRangeOf.h +6 -0
  211. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+beInstanceOf.h +7 -0
  212. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+beKindOf.h +5 -0
  213. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+beLessThan.h +6 -0
  214. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+beLessThanOrEqualTo.h +6 -0
  215. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+beNil.h +5 -0
  216. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+beSubclassOf.h +5 -0
  217. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+beSupersetOf.h +4 -0
  218. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+beTruthy.h +3 -0
  219. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+beginWith.h +5 -0
  220. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+conformTo.h +3 -0
  221. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+contain.h +5 -0
  222. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+endWith.h +3 -0
  223. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+equal.h +5 -0
  224. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+haveCountOf.h +10 -0
  225. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+notify.h +4 -0
  226. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+raise.h +4 -0
  227. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+raiseWithReason.h +3 -0
  228. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers+respondTo.h +3 -0
  229. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPMatchers.h +24 -0
  230. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/EXPUnsupportedObject.h +11 -0
  231. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/Expecta.h +27 -0
  232. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/ExpectaSupport.h +64 -0
  233. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/NSObject+Expecta.h +14 -0
  234. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/Expecta/NSValue+Expecta.h +8 -0
  235. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Private/NSAttributedString+CCLFormat/NSAttributedString+CCLFormat.h +21 -0
  236. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPBackwardCompatibility.h +42 -0
  237. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPBlockDefinedMatcher.h +25 -0
  238. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPDefines.h +17 -0
  239. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPDoubleTuple.h +13 -0
  240. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPExpect.h +45 -0
  241. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPFloatTuple.h +13 -0
  242. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatcher.h +20 -0
  243. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatcherHelpers.h +4 -0
  244. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+beCloseTo.h +7 -0
  245. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+beFalsy.h +3 -0
  246. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThan.h +6 -0
  247. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h +6 -0
  248. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+beIdenticalTo.h +10 -0
  249. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+beInTheRangeOf.h +6 -0
  250. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+beInstanceOf.h +7 -0
  251. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+beKindOf.h +5 -0
  252. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+beLessThan.h +6 -0
  253. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+beLessThanOrEqualTo.h +6 -0
  254. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+beNil.h +5 -0
  255. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+beSubclassOf.h +5 -0
  256. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+beSupersetOf.h +4 -0
  257. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+beTruthy.h +3 -0
  258. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+beginWith.h +5 -0
  259. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+conformTo.h +3 -0
  260. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+contain.h +5 -0
  261. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+endWith.h +3 -0
  262. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+equal.h +5 -0
  263. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+haveCountOf.h +10 -0
  264. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+notify.h +4 -0
  265. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+raise.h +4 -0
  266. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+raiseWithReason.h +3 -0
  267. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers+respondTo.h +3 -0
  268. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPMatchers.h +24 -0
  269. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/EXPUnsupportedObject.h +11 -0
  270. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/Expecta.h +27 -0
  271. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/ExpectaSupport.h +64 -0
  272. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/NSObject+Expecta.h +14 -0
  273. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/Expecta/NSValue+Expecta.h +8 -0
  274. data/spec/fixtures/Project/StaticLibraries/Pods/Headers/Public/NSAttributedString+CCLFormat/NSAttributedString+CCLFormat.h +21 -0
  275. data/spec/fixtures/Project/StaticLibraries/Pods/Manifest.lock +13 -0
  276. data/spec/fixtures/Project/StaticLibraries/Pods/NSAttributedString+CCLFormat/LICENSE +23 -0
  277. data/spec/fixtures/Project/StaticLibraries/Pods/NSAttributedString+CCLFormat/NSAttributedString+CCLFormat.h +21 -0
  278. data/spec/fixtures/Project/StaticLibraries/Pods/NSAttributedString+CCLFormat/NSAttributedString+CCLFormat.m +51 -0
  279. data/spec/fixtures/Project/StaticLibraries/Pods/NSAttributedString+CCLFormat/README.md +57 -0
  280. data/spec/fixtures/Project/StaticLibraries/Pods/Pods.xcodeproj/project.pbxproj +943 -0
  281. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProject-NSAttributedString+CCLFormat/Pods-TestProject-NSAttributedString+CCLFormat-Private.xcconfig +5 -0
  282. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProject-NSAttributedString+CCLFormat/Pods-TestProject-NSAttributedString+CCLFormat-dummy.m +5 -0
  283. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProject-NSAttributedString+CCLFormat/Pods-TestProject-NSAttributedString+CCLFormat-prefix.pch +5 -0
  284. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProject-NSAttributedString+CCLFormat/Pods-TestProject-NSAttributedString+CCLFormat.xcconfig b/data/spec/fixtures/Project/StaticLibraries/Pods/Target Support → Files/Pods-TestProject-NSAttributedString+CCLFormat/Pods-TestProject-NSAttributedString+CCLFormat.xcconfig +0 -0
  285. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProject/Pods-TestProject-acknowledgements.markdown +30 -0
  286. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProject/Pods-TestProject-acknowledgements.plist +60 -0
  287. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProject/Pods-TestProject-dummy.m +5 -0
  288. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProject/Pods-TestProject-environment.h +14 -0
  289. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProject/Pods-TestProject-resources.sh +74 -0
  290. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProject/Pods-TestProject.debug.xcconfig +6 -0
  291. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProject/Pods-TestProject.release.xcconfig +6 -0
  292. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProjectTests-Expecta/Pods-TestProjectTests-Expecta-Private.xcconfig +5 -0
  293. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProjectTests-Expecta/Pods-TestProjectTests-Expecta-dummy.m +5 -0
  294. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProjectTests-Expecta/Pods-TestProjectTests-Expecta-prefix.pch +5 -0
  295. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProjectTests-Expecta/Pods-TestProjectTests-Expecta.xcconfig +1 -0
  296. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests-acknowledgements.markdown +26 -0
  297. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests-acknowledgements.plist +56 -0
  298. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests-dummy.m +5 -0
  299. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests-environment.h +14 -0
  300. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests-resources.sh +74 -0
  301. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests.debug.xcconfig +6 -0
  302. data/spec/fixtures/Project/StaticLibraries/Pods/Target Support Files/Pods-TestProjectTests/Pods-TestProjectTests.release.xcconfig +6 -0
  303. data/spec/fixtures/Project/StaticLibraries/TestProject.xcodeproj/project.pbxproj +525 -0
  304. data/spec/fixtures/Project/StaticLibraries/TestProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  305. data/spec/fixtures/Project/StaticLibraries/TestProject.xcworkspace/contents.xcworkspacedata +10 -0
  306. data/spec/fixtures/Project/StaticLibraries/TestProject/AppDelegate.swift +46 -0
  307. data/spec/fixtures/Project/StaticLibraries/TestProject/Base.lproj/LaunchScreen.xib +41 -0
  308. data/spec/fixtures/Project/StaticLibraries/TestProject/Base.lproj/Main.storyboard +25 -0
  309. data/spec/fixtures/Project/StaticLibraries/TestProject/Images.xcassets/AppIcon.appiconset/Contents.json +38 -0
  310. data/spec/fixtures/Project/StaticLibraries/TestProject/Info.plist +40 -0
  311. data/spec/fixtures/Project/StaticLibraries/TestProject/ViewController.swift +25 -0
  312. data/spec/fixtures/Project/StaticLibraries/TestProjectTests/Info.plist +24 -0
  313. data/spec/fixtures/Project/StaticLibraries/TestProjectTests/TestProjectTests.swift +36 -0
  314. metadata +620 -7
@@ -0,0 +1,979 @@
1
+ ![](http://f.cl.ly/items/0r1E192C1R0b2g2Q3h2w/QuickLogo_Color.png)
2
+
3
+ Quick is a behavior-driven development framework for Swift and Objective-C.
4
+ Inspired by [RSpec](https://github.com/rspec/rspec), [Specta](https://github.com/specta/specta), and [Ginkgo](https://github.com/onsi/ginkgo).
5
+
6
+ [![Build Status](https://travis-ci.org/Quick/Quick.svg)](https://travis-ci.org/Quick/Quick)
7
+
8
+ ![](https://raw.githubusercontent.com/Quick/Assets/master/Screenshots/QuickSpec%20screenshot.png)
9
+
10
+ ```swift
11
+ // Swift
12
+
13
+ import Quick
14
+ import Nimble
15
+
16
+ class TableOfContentsSpec: QuickSpec {
17
+ override func spec() {
18
+ describe("the table of contents below") {
19
+ it("has everything you need to get started") {
20
+ let sections = TableOfContents().sections
21
+ expect(sections).to(contain("Quick: Examples and Example Groups"))
22
+ expect(sections).to(contain("Nimble: Assertions using expect(...).to"))
23
+ expect(sections).to(contain("How to Install Quick"))
24
+ }
25
+
26
+ context("if it doesn't have what you're looking for") {
27
+ it("needs to be updated") {
28
+ let you = You(awesome: true)
29
+ expect{you.submittedAnIssue}.toEventually(beTruthy())
30
+ }
31
+ }
32
+ }
33
+ }
34
+ }
35
+ ```
36
+
37
+ # How to Use Quick
38
+
39
+ <!-- START doctoc generated TOC please keep comment here to allow auto update -->
40
+ <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
41
+
42
+ - [Quick: Examples and Example Groups](#quick-examples-and-example-groups)
43
+ - [Examples Using `it`](#examples-using-it)
44
+ - [Example Groups Using `describe` and `context`](#example-groups-using-describe-and-context)
45
+ - [Describing Classes and Methods Using `describe`](#describing-classes-and-methods-using-describe)
46
+ - [Sharing Setup/Teardown Code Using `beforeEach` and `afterEach`](#sharing-setupteardown-code-using-beforeeach-and-aftereach)
47
+ - [Specifying Conditional Behavior Using `context`](#specifying-conditional-behavior-using-context)
48
+ - [Temporarily Disabling Examples or Groups Using `pending`](#temporarily-disabling-examples-or-groups-using-pending)
49
+ - [Shorthand syntax](#shorthand-syntax)
50
+ - [Global Setup/Teardown Using `beforeSuite` and `afterSuite`](#global-setupteardown-using-beforesuite-and-aftersuite)
51
+ - [Sharing Examples](#sharing-examples)
52
+ - [Using Quick in Objective-C: The Optional Shorthand Syntax](#using-quick-in-objective-c-the-optional-shorthand-syntax)
53
+ - [Caveat: Your Test Target Must Include At Least One Swift File](#caveat-your-test-target-must-include-at-least-one-swift-file)
54
+ - [Nimble: Assertions Using `expect(...).to`](#nimble-assertions-using-expectto)
55
+ - [Testing UIKit with Quick](#testing-uikit-with-quick)
56
+ - [How to Install Quick](#how-to-install-quick)
57
+ - [1. Clone the Quick and Nimble repositories](#1-clone-the-quick-and-nimble-repositories)
58
+ - [2. Add `Quick.xcodeproj` and `Nimble.xcodeproj` to your test target](#2-add-quickxcodeproj-and-nimblexcodeproj-to-your-test-target)
59
+ - [3. Link `Quick.framework` and `Nimble.framework`](#3-link-quickframework-and-nimbleframework)
60
+ - [4. Start writing specs!](#4-start-writing-specs!)
61
+ - [Including Quick in a Git Repository Using Submodules](#including-quick-in-a-git-repository-using-submodules)
62
+ - [Adding Quick as a Git Submodule](#adding-quick-as-a-git-submodule)
63
+ - [Updating the Quick Submodule](#updating-the-quick-submodule)
64
+ - [Cloning a Repository that Includes a Quick Submodule](#cloning-a-repository-that-includes-a-quick-submodule)
65
+ - [How to Install Quick using Beta CocoaPods](#how-to-install-quick-using-beta-cocoapods)
66
+ - [How to Install Quick File Templates](#how-to-install-quick-file-templates)
67
+ - [Using Alcatraz](#using-alcatraz)
68
+ - [Manually via the Rakefile](#manually-via-the-rakefile)
69
+ - [Who Uses Quick](#who-uses-quick)
70
+ - [License](#license)
71
+
72
+ <!-- END doctoc generated TOC please keep comment here to allow auto update -->
73
+
74
+ ## Quick: Examples and Example Groups
75
+
76
+ Quick uses a special syntax to define **examples** and **example groups**.
77
+
78
+ ### Examples Using `it`
79
+
80
+ Examples, defined with the `it` function, use assertions to demonstrate
81
+ how code should behave. These are like "tests" in XCTest.
82
+
83
+ `it` takes two parameters: the name of the example, and a closure.
84
+ The examples below specify how the `Dolphin` class should behave.
85
+ A new dolphin should be smart and friendly:
86
+
87
+ ```swift
88
+ // Swift
89
+
90
+ import Quick
91
+ import Nimble
92
+
93
+ class DolphinSpec: QuickSpec {
94
+ override func spec() {
95
+ it("is friendly") {
96
+ expect(Dolphin().isFriendly).to(beTruthy())
97
+ }
98
+
99
+ it("is smart") {
100
+ expect(Dolphin().isSmart).to(beTruthy())
101
+ }
102
+ }
103
+ }
104
+ ```
105
+
106
+ ```objc
107
+ // Objective-C
108
+
109
+ #import <Quick/Quick.h>
110
+ #import <Nimble/Nimble.h>
111
+
112
+ QuickSpecBegin(DolphinSpec)
113
+
114
+ it(@"is friendly", ^{
115
+ expect(@([[Dolphin new] isFriendly])).to(beTruthy());
116
+ });
117
+
118
+ it(@"is smart", ^{
119
+ expect(@([[Dolphin new] isSmart])).to(beTruthy());
120
+ });
121
+
122
+ QuickSpecEnd
123
+ ```
124
+
125
+ > Descriptions can use any character, including characters from languages
126
+ besides English, or even emoji! :v: :sunglasses:
127
+
128
+ ### Example Groups Using `describe` and `context`
129
+
130
+ Example groups are logical groupings of examples. Example groups can share
131
+ setup and teardown code.
132
+
133
+ #### Describing Classes and Methods Using `describe`
134
+
135
+ To specify the behavior of the `Dolphin` class's `click` method--in
136
+ other words, to test the method works--several `it` examples can be
137
+ grouped together using the `describe` function. Grouping similar
138
+ examples together makes the spec easier to read:
139
+
140
+ ```swift
141
+ // Swift
142
+
143
+ import Quick
144
+ import Nimble
145
+
146
+ class DolphinSpec: QuickSpec {
147
+ override func spec() {
148
+ describe("a dolphin") {
149
+ describe("its click") {
150
+ it("is loud") {
151
+ let click = Dolphin().click()
152
+ expect(click.isLoud).to(beTruthy())
153
+ }
154
+
155
+ it("has a high frequency") {
156
+ let click = Dolphin().click()
157
+ expect(click.hasHighFrequency).to(beTruthy())
158
+ }
159
+ }
160
+ }
161
+ }
162
+ }
163
+ ```
164
+
165
+ ```objc
166
+ // Objective-C
167
+
168
+ #import <Quick/Quick.h>
169
+ #import <Nimble/Nimble.h>
170
+
171
+ QuickSpecBegin(DolphinSpec)
172
+
173
+ describe(@"a dolphin", ^{
174
+ describe(@"its click", ^{
175
+ it(@"is loud", ^{
176
+ Click *click = [[Dolphin new] click];
177
+ expect(@(click.isLoud)).to(beTruthy());
178
+ });
179
+
180
+ it(@"has a high frequency", ^{
181
+ Click *click = [[Dolphin new] click];
182
+ expect(@(click.hasHighFrequency)).to(beTruthy());
183
+ });
184
+ });
185
+ });
186
+
187
+ QuickSpecEnd
188
+ ```
189
+
190
+ #### Sharing Setup/Teardown Code Using `beforeEach` and `afterEach`
191
+
192
+ Example groups don't just make the examples clearer, they're also useful
193
+ for sharing setup and teardown code among examples in a group.
194
+
195
+ In the example below, the `beforeEach` function is used to create a brand
196
+ new instance of a dolphin and its click before each example in the group.
197
+ This ensures that both are in a "fresh" state for every example:
198
+
199
+ ```swift
200
+ // Swift
201
+
202
+ import Quick
203
+ import Nimble
204
+
205
+ class DolphinSpec: QuickSpec {
206
+ override func spec() {
207
+ describe("a dolphin") {
208
+ var dolphin: Dolphin?
209
+ beforeEach {
210
+ dolphin = Dolphin()
211
+ }
212
+
213
+ describe("its click") {
214
+ var click: Click?
215
+ beforeEach {
216
+ click = dolphin!.click()
217
+ }
218
+
219
+ it("is loud") {
220
+ expect(click!.isLoud).to(beTruthy())
221
+ }
222
+
223
+ it("has a high frequency") {
224
+ expect(click!.hasHighFrequency).to(beTruthy())
225
+ }
226
+ }
227
+ }
228
+ }
229
+ }
230
+ ```
231
+
232
+ ```objc
233
+ // Objective-C
234
+
235
+ #import <Quick/Quick.h>
236
+ #import <Nimble/Nimble.h>
237
+
238
+ QuickSpecBegin(DolphinSpec)
239
+
240
+ describe(@"a dolphin", ^{
241
+ __block Dolphin *dolphin = nil;
242
+ beforeEach(^{
243
+ dolphin = [Dolphin new];
244
+ });
245
+
246
+ describe(@"its click", ^{
247
+ __block Click *click = nil;
248
+ beforeEach(^{
249
+ click = [dolphin click];
250
+ });
251
+
252
+ it(@"is loud", ^{
253
+ expect(@(click.isLoud)).to(beTruthy());
254
+ });
255
+
256
+ it(@"has a high frequency", ^{
257
+ expect(@(click.hasHighFrequency)).to(beTruthy());
258
+ });
259
+ });
260
+ });
261
+
262
+ QuickSpecEnd
263
+ ```
264
+
265
+ Sharing setup like this might not seem like a big deal with the
266
+ dolphin example, but for more complicated objects, it saves a lot
267
+ of typing!
268
+
269
+ To execute code *after* each example, use `afterEach`.
270
+
271
+ #### Specifying Conditional Behavior Using `context`
272
+
273
+ Dolphins use clicks for echolocation. When they approach something
274
+ particularly interesting to them, they release a series of clicks in
275
+ order to get a better idea of what it is.
276
+
277
+ The tests need to show that the `click` method behaves differently in
278
+ different circumstances. Normally, the dolphin just clicks once. But when
279
+ the dolphin is close to something interesting, it clicks several times.
280
+
281
+ This can be expressed using `context` functions: one `context` for the
282
+ normal case, and one `context` for when the dolphin is close to
283
+ something interesting:
284
+
285
+ ```swift
286
+ // Swift
287
+
288
+ import Quick
289
+ import Nimble
290
+
291
+ class DolphinSpec: QuickSpec {
292
+ override func spec() {
293
+ describe("a dolphin") {
294
+ var dolphin: Dolphin?
295
+ beforeEach { dolphin = Dolphin() }
296
+
297
+ describe("its click") {
298
+ context("when the dolphin is not near anything interesting") {
299
+ it("is only emitted once") {
300
+ expect(dolphin!.click().count).to(equal(1))
301
+ }
302
+ }
303
+
304
+ context("when the dolphin is near something interesting") {
305
+ beforeEach {
306
+ let ship = SunkenShip()
307
+ Jamaica.dolphinCove.add(ship)
308
+ Jamaica.dolphinCove.add(dolphin)
309
+ }
310
+
311
+ it("is emitted three times") {
312
+ expect(dolphin!.click().count).to(equal(3))
313
+ }
314
+ }
315
+ }
316
+ }
317
+ }
318
+ }
319
+ ```
320
+
321
+ ```objc
322
+ // Objective-C
323
+
324
+ #import <Quick/Quick.h>
325
+ #import <Nimble/Nimble.h>
326
+
327
+ QuickSpecBegin(DolphinSpec)
328
+
329
+ describe(@"a dolphin", ^{
330
+ __block Dolphin *dolphin = nil;
331
+ beforeEach(^{ dolphin = [Dolphin new]; });
332
+
333
+ describe(@"its click", ^{
334
+ context(@"when the dolphin is not near anything interesting", ^{
335
+ it(@"is only emitted once", ^{
336
+ expect(@([[dolphin click] count])).to(equal(@1));
337
+ });
338
+ });
339
+
340
+ context(@"when the dolphin is near something interesting", ^{
341
+ beforeEach(^{
342
+ [[Jamaica dolphinCove] add:[SunkenShip new]];
343
+ [[Jamaica dolphinCove] add:dolphin];
344
+ });
345
+
346
+ it(@"is emitted three times", ^{
347
+ expect(@([[dolphin click] count])).to(equal(@3));
348
+ });
349
+ });
350
+ });
351
+ });
352
+
353
+ QuickSpecEnd
354
+ ```
355
+
356
+ ### Temporarily Disabling Examples or Groups Using `pending`
357
+
358
+ For examples that don't pass yet, use `pending`. Pending examples
359
+ are not run, but are printed out along with the test results.
360
+
361
+ The example below marks the cases in which the dolphin is close to
362
+ something interesting as "pending"--perhaps that functionality hasn't
363
+ been implemented yet, but these tests have been written as reminders
364
+ that it should be soon:
365
+
366
+ ```swift
367
+ // Swift
368
+
369
+ pending("when the dolphin is near something interesting") {
370
+ // ...none of the code in this closure will be run.
371
+ }
372
+ ```
373
+
374
+ ```objc
375
+ // Objective-C
376
+
377
+ pending(@"when the dolphin is near something interesting", ^{
378
+ // ...none of the code in this closure will be run.
379
+ });
380
+ ```
381
+
382
+ #### Shorthand syntax
383
+
384
+ Examples and groups can also be marked as pending by using
385
+ `xdescribe`, `xcontext`, and `xit`:
386
+
387
+ ```swift
388
+ // Swift
389
+
390
+ xdescribe("its click") {
391
+ // ...none of the code in this closure will be run.
392
+ }
393
+
394
+ xcontext("when the dolphin is not near anything interesting") {
395
+ // ...none of the code in this closure will be run.
396
+ }
397
+
398
+ xit("is only emitted once") {
399
+ // ...none of the code in this closure will be run.
400
+ }
401
+ ```
402
+
403
+ ```objc
404
+ // Objective-C
405
+
406
+ xdescribe(@"its click", ^{
407
+ // ...none of the code in this closure will be run.
408
+ });
409
+
410
+ xcontext(@"when the dolphin is not near anything interesting", ^{
411
+ // ...none of the code in this closure will be run.
412
+ });
413
+
414
+ xit(@"is only emitted once", ^{
415
+ // ...none of the code in this closure will be run.
416
+ });
417
+ ```
418
+
419
+ ### Global Setup/Teardown Using `beforeSuite` and `afterSuite`
420
+
421
+ Some test setup needs to be performed before *any* examples are
422
+ run. For these cases, use `beforeSuite` and `afterSuite`.
423
+
424
+ In the example below, a database of all the creatures in the ocean is
425
+ created before any examples are run. That database is torn down once all
426
+ the examples have finished:
427
+
428
+ ```swift
429
+ // Swift
430
+
431
+ import Quick
432
+
433
+ class DolphinSpec: QuickSpec {
434
+ override func spec() {
435
+ beforeSuite {
436
+ OceanDatabase.createDatabase(name: "test.db")
437
+ OceanDatabase.connectToDatabase(name: "test.db")
438
+ }
439
+
440
+ afterSuite {
441
+ OceanDatabase.teardownDatabase(name: "test.db")
442
+ }
443
+
444
+ describe("a dolphin") {
445
+ // ...
446
+ }
447
+ }
448
+ }
449
+ ```
450
+
451
+ ```objc
452
+ // Objective-C
453
+
454
+ #import <Quick/Quick.h>
455
+
456
+ QuickSpecBegin(DolphinSpec)
457
+
458
+ beforeSuite(^{
459
+ [OceanDatabase createDatabase:@"test.db"];
460
+ [OceanDatabase connectToDatabase:@"test.db"];
461
+ });
462
+
463
+ afterSuite(^{
464
+ [OceanDatabase teardownDatabase:@"test.db"];
465
+ });
466
+
467
+ describe(@"a dolphin", ^{
468
+ // ...
469
+ });
470
+
471
+ QuickSpecEnd
472
+ ```
473
+
474
+ > You can specify as many `beforeSuite` and `afterSuite` as you like. All
475
+ `beforeSuite` closures will be executed before any tests run, and all
476
+ `afterSuite` closures will be executed after all the tests are finished.
477
+ There is no guarantee as to what order these closures will be executed in.
478
+
479
+ ### Sharing Examples
480
+
481
+ In some cases, the same set of specifications apply to multiple objects.
482
+
483
+ For example, consider a protocol called `Edible`. When a dolphin
484
+ eats something `Edible`, the dolphin becomes happy. `Mackerel` and
485
+ `Cod` are both edible. Quick allows you to easily test that a dolphin is
486
+ happy to eat either one.
487
+
488
+ The example below defines a set of "shared examples" for "something edible",
489
+ and specifies that both mackerel and cod behave like "something edible":
490
+
491
+ ```swift
492
+ // Swift
493
+
494
+ import Quick
495
+ import Nimble
496
+
497
+ class EdibleSharedExamplesConfiguration: QuickConfiguration {
498
+ override class func configure(configuration: Configuration) {
499
+ sharedExamples("something edible") { (sharedExampleContext: SharedExampleContext) in
500
+ it("makes dolphins happy") {
501
+ let dolphin = Dolphin(happy: false)
502
+ let edible = sharedExampleContext()["edible"]
503
+ dolphin.eat(edible)
504
+ expect(dolphin.isHappy).to(beTruthy())
505
+ }
506
+ }
507
+ }
508
+ }
509
+
510
+ class MackerelSpec: QuickSpec {
511
+ override func spec() {
512
+ var mackerel: Mackerel! = nil
513
+ beforeEach {
514
+ mackerel = Mackerel()
515
+ }
516
+
517
+ itBehavesLike("something edible") { ["edible": mackerel] }
518
+ }
519
+ }
520
+
521
+ class CodSpec: QuickSpec {
522
+ override func spec() {
523
+ var cod: Cod! = nil
524
+ beforeEach {
525
+ cod = Cod()
526
+ }
527
+
528
+ itBehavesLike("something edible") { ["edible": cod] }
529
+ }
530
+ }
531
+ ```
532
+
533
+ ```objc
534
+ // Objective-C
535
+
536
+ #import <Quick/Quick.h>
537
+ #import <Nimble/Nimble.h>
538
+
539
+ QuickConfigurationBegin(EdibleSharedExamplesConfiguration)
540
+
541
+ + (void)configure:(Configuration *configuration) {
542
+ sharedExamples(@"something edible", ^(QCKDSLSharedExampleContext exampleContext) {
543
+ it(@"makes dolphins happy") {
544
+ Dolphin *dolphin = [[Dolphin alloc] init];
545
+ dolphin.happy = NO;
546
+ id<Edible> edible = exampleContext()[@"edible"];
547
+ [dolphin eat:edible];
548
+ expect(dolphin.isHappy).to(beTruthy())
549
+ }
550
+ });
551
+ }
552
+
553
+ QuickConfigurationEnd
554
+
555
+ QuickSpecBegin(MackerelSpec)
556
+
557
+ __block Mackerel *mackerel = nil;
558
+ beforeEach(^{
559
+ mackerel = [[Mackerel alloc] init];
560
+ });
561
+
562
+ itBehavesLike(@"someting edible", ^{ return @{ @"edible": mackerel }; });
563
+
564
+ QuickSpecEnd
565
+
566
+ QuickSpecBegin(CodSpec)
567
+
568
+ __block Mackerel *cod = nil;
569
+ beforeEach(^{
570
+ cod = [[Cod alloc] init];
571
+ });
572
+
573
+ itBehavesLike(@"someting edible", ^{ return @{ @"edible": cod }; });
574
+
575
+ QuickSpecEnd
576
+ ```
577
+
578
+ Shared examples can include any number of `it`, `context`, and
579
+ `describe` blocks. They save a *lot* of typing when running
580
+ the same tests against several different kinds of objects.
581
+
582
+ In some cases, you won't need any additional context. In Swift, you can
583
+ simply use `sharedExampleFor` closures that take no parameters. This
584
+ might be useful when testing some sort of global state:
585
+
586
+ ```swift
587
+ // Swift
588
+
589
+ import Quick
590
+
591
+ sharedExamplesFor("everything under the sea") {
592
+ // ...
593
+ }
594
+
595
+ itBehavesLike("everything under the sea")
596
+ ```
597
+
598
+ > In Objective-C, you'll have to pass a block that takes a
599
+ `QCKDSLSharedExampleContext`, even if you don't plan on using that
600
+ argument. Sorry, but that's the way the cookie crumbles!
601
+ :cookie: :bomb:
602
+
603
+ ## Using Quick in Objective-C: The Optional Shorthand Syntax
604
+
605
+ Quick works equally well in both Swift and Objective-C.
606
+
607
+ Importing Quick in an Objective-C file defines macros named `it` and
608
+ `itShouldBehaveLike`, as well as functions like `context()`, `describe()`, etc.
609
+ If the project you are testing also defines symbols with these names, you may
610
+ encounter confusing build failures. In that case, you can avoid namespace
611
+ collision by turning off Quick's optional "shorthand" syntax:
612
+
613
+ ```objc
614
+ #define QUICK_DISABLE_SHORT_SYNTAX 1
615
+
616
+ #import <Quick/Quick.h>
617
+
618
+ QuickSpecBegin(DolphinSpec)
619
+ // ...
620
+ QuickSpecEnd
621
+ ```
622
+
623
+ You must define the `QUICK_DISABLE_SHORT_SYNTAX` macro *before*
624
+ importing the Quick header.
625
+
626
+ ### Caveat: Your Test Target Must Include At Least One Swift File
627
+
628
+ The Swift stdlib will not be linked into your test target, and thus
629
+ Quick will fail to execute properly, if you test target does not contain
630
+ *at least one* Swift file. If it does not, your tests will exit
631
+ prematurely with the following error:
632
+
633
+ ```
634
+ *** Test session exited(82) without checking in. Executable cannot be
635
+ loaded for some other reason, such as a problem with a library it
636
+ depends on or a code signature/entitlements mismatch.
637
+ ```
638
+
639
+ To fix the problem, add a blank file called `SwiftSpec.swift` to your test target:
640
+
641
+ ```swift
642
+ // SwiftSpec.swift
643
+
644
+ import Quick
645
+ ```
646
+
647
+ > For more details on this issue, see https://github.com/Quick/Quick/issues/164.
648
+
649
+ ## Nimble: Assertions Using `expect(...).to`
650
+
651
+ Quick provides an easy language to define examples and example groups. Within those
652
+ examples, [Nimble](https://github.com/Quick/Nimble) provides a simple
653
+ language to define expectations--that is, to assert that code behaves a
654
+ certain way, and to display a test failure if it doesn't.
655
+
656
+ Nimble expectations use the `expect(...).to` syntax:
657
+
658
+ ```swift
659
+ // Swift
660
+
661
+ import Nimble
662
+
663
+ expect(person.greeting).to(equal("Oh, hi."))
664
+ expect(person.greeting).notTo(equal("Hello!"))
665
+ expect(person.isHappy).toEventually(beTruthy())
666
+ ```
667
+
668
+ ```objc
669
+ // Objective-C
670
+
671
+ #import <Nimble/Nimble.h>
672
+
673
+ expect(person.greeting).to(equal(@"Oh, hi."));
674
+ expect(person.greeting).notTo(equal(@"Hello!"));
675
+ expect(@(person.isHappy)).toEventually(beTruthy());
676
+ ```
677
+
678
+ You can find much more detailed documentation on
679
+ [Nimble](https://github.com/Quick/Nimble), including a
680
+ full set of available matchers and details on how to perform asynchronous tests,
681
+ in [the project's README](https://github.com/Quick/Nimble).
682
+
683
+ ## Testing UIKit with Quick
684
+
685
+ Quick can be used for testing UIKit interaction as well. Say, for example, we have a `DolphinTableViewController` that displays one cell with label `Bottlenose`. We want to test that the cell gets displayed when the view is loaded. Additionally, we would like to delete the row upon selecting it. An approach might be:
686
+
687
+ ```swift
688
+ // Swift
689
+
690
+ import UIKit
691
+ import Quick
692
+ import Nimble
693
+
694
+ class DolphinTableViewControllerSpecs: QuickSpec {
695
+ override func spec() {
696
+ var viewController: DolphinTableViewController!
697
+
698
+ beforeEach {
699
+ viewController = DolphinTableViewController()
700
+ }
701
+
702
+ describe("viewDidLoad") {
703
+ beforeEach {
704
+ // Accessing the view property causes the UIKit framework to trigger the necessary methods to render the view.
705
+ viewController.view
706
+ }
707
+
708
+
709
+ it("loads the table view with one cell") {
710
+ let tableView = viewController.tableView
711
+
712
+ var indexPath = NSIndexPath(forRow: 0, inSection: 0)
713
+ var cell = viewController.tableView(tableView, cellForRowAtIndexPath: indexPath)
714
+
715
+ expect(cell.textLabel?.text).to(equal("Bottlenose"))
716
+ }
717
+ }
718
+
719
+ describe("didSelectRowAtIndexPath") {
720
+ beforeEach {
721
+ // Causes the UIKit framework to trigger the necessary methods to render the view and perform viewWillAppear: and viewDidAppear: callbacks
722
+ viewController.beginAppearanceTransition(true, animated: false)
723
+ viewController.endAppearanceTransition()
724
+ }
725
+
726
+ it("deletes the selected row and reloads the tableView's data") {
727
+ let tableView = viewController.tableView
728
+ let indexPath = NSIndexPath(forRow: 0, inSection: 0)
729
+
730
+ viewController.tableView(tableView, didSelectRowAtIndexPath: indexPath)
731
+
732
+ var cell = viewController.tableView(tableView, cellForRowAtIndexPath: indexPath)
733
+ expect(cell.textLabel?.text).to(beNil())
734
+ }
735
+ }
736
+ }
737
+ }
738
+ ```
739
+
740
+ ```objc
741
+ // Objective-C
742
+
743
+ #import <UIKit/UIKit.h>
744
+ #import <Quick/Quick.h>
745
+ #import <Nimble/Nimble.h>
746
+
747
+ QuickSpecBegin(DolphinTableViewControllerSpec)
748
+
749
+ describe(@"viewDidLoad", ^{
750
+ __block DolphinTableViewController *viewController = nil;
751
+
752
+ beforeEach(^{
753
+ viewController = [[DolphinTableViewController alloc] init];
754
+ });
755
+
756
+ it(@"loads the table view with three types of dolphin", ^{
757
+ beforeEach(^{
758
+ // Accessing the view property causes the UIKit framework to trigger the necessary methods to render the view.
759
+ [viewController view];
760
+ });
761
+
762
+ UITableView *tableView = [viewController tableView];
763
+ NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
764
+ UITableViewCell *cell = [viewController tableView:tableView cellForRowAtIndexPath:indexPath];
765
+
766
+ expect(@([[cell textLabel] text])).to(equal(@"Bottlenose"));
767
+ });
768
+ }
769
+
770
+ describe(@"didSelectRowAtIndexPath", ^{
771
+ __block DolphinTableViewController *viewController = nil;
772
+
773
+ beforeEach(^{
774
+ // Causes the UIKit framework to trigger the necessary methods to render the view and perform viewWillAppear: and
775
+ viewController = [[DolphinTableViewController alloc] init];
776
+ [viewController beginAppearanceTransition:YES animated:NO];
777
+ [viewController endAppearanceTransition];
778
+ });
779
+
780
+ it(@"deletes the selected row and reloads the tableView's data", ^{
781
+ UITableView *tableView = [viewController tableView];
782
+ NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
783
+
784
+ [viewController tableView:tableView didSelectRowAtIndexPath:indexPath];
785
+
786
+ UITableViewCell *cell = [viewController tableView:tableView cellForRowAtIndexPath:indexPath];
787
+
788
+ expect(@([[cell textLabel] text])).to(beNil());
789
+ });
790
+ }
791
+
792
+ QuickSpecEnd
793
+ ```
794
+
795
+ ## How to Install Quick
796
+
797
+ > This module is beta software, it currently supports Xcode 6 Beta 4.
798
+
799
+ Quick provides the syntax to define examples and example groups. Nimble
800
+ provides the `expect(...).to` assertion syntax. You may use either one,
801
+ or both, in your tests.
802
+
803
+ To use Quick and Nimble to test your iOS or OS X applications, follow these 4 easy steps:
804
+
805
+ 1. [Clone the Quick and Nimble repositories](#1-clone-the-quick-and-nimble-repositories)
806
+ 2. [Add `Quick.xcodeproj` and `Nimble.xcodeproj` to your test target](#2-add-quickxcodeproj-and-nimblexcodeproj-to-your-test-target)
807
+ 3. [Link `Quick.framework` and `Nimble.framework`](#3-link-quickframework-and-nimbleframework)
808
+ 4. Start writing specs!
809
+
810
+ Example projects with this complete setup is available in the
811
+ [`Examples`](https://github.com/modocache/Quick/tree/master/Examples) directory.
812
+
813
+ ### 1. Clone the Quick and Nimble repositories
814
+
815
+ ```sh
816
+ git clone git@github.com:Quick/Quick.git Vendor/Quick
817
+ git clone git@github.com:Quick/Nimble.git Vendor/Nimble
818
+ ```
819
+
820
+ ### 2. Add `Quick.xcodeproj` and `Nimble.xcodeproj` to your test target
821
+
822
+ Right-click on the group containing your application's tests and
823
+ select `Add Files To YourApp...`.
824
+
825
+ ![](http://cl.ly/image/3m110l2s0a18/Screen%20Shot%202014-06-08%20at%204.25.59%20AM.png)
826
+
827
+ Next, select `Quick.xcodeproj`, which you downloaded in step 1.
828
+
829
+ ![](http://cl.ly/image/431F041z3g1P/Screen%20Shot%202014-06-08%20at%204.26.49%20AM.png)
830
+
831
+ Once you've added the Quick project, you should see it in Xcode's project
832
+ navigator, grouped with your tests.
833
+
834
+ ![](http://cl.ly/image/0p0k2F2u2O3I/Screen%20Shot%202014-06-08%20at%204.27.29%20AM%20copy.png)
835
+
836
+ Follow the same steps for `Nimble.xcodeproj`.
837
+
838
+ ### 3. Link `Quick.framework` and `Nimble.framework`
839
+
840
+ Link the `Quick.framework` during your test target's
841
+ `Link Binary with Libraries` build phase. You should see two
842
+ `Quick.frameworks`; one is for OS X, and the other is for iOS.
843
+
844
+ ![](http://cl.ly/image/2L0G0H1a173C/Screen%20Shot%202014-06-08%20at%204.27.48%20AM.png)
845
+
846
+ Do the same for the `Nimble.framework`.
847
+
848
+ ### 4. Start writing specs!
849
+
850
+ If you run into any problems, please file an issue.
851
+
852
+ ## Including Quick in a Git Repository Using Submodules
853
+
854
+ The best way to include Quick in a Git repository is by using Git
855
+ submodules. Git submodules are great because:
856
+
857
+ 1. They track exactly which version of Quick is being used
858
+ 2. It's easy to update Quick to the latest--or any other--version
859
+
860
+ ### Adding Quick as a Git Submodule
861
+
862
+ To use Git submodules, follow the same steps as above, except instead of
863
+ cloning the Quick and Nimble repositories, add them to your project as
864
+ submodules:
865
+
866
+ ```sh
867
+ mkdir Vendor # you can keep your submodules in their own directory
868
+ git submodule add git@github.com:Quick/Quick.git Vendor/Quick
869
+ git submodule add git@github.com:Quick/Nimble.git Vendor/Nimble
870
+ git submodule update --init --recursive
871
+ ```
872
+
873
+ ### Updating the Quick Submodule
874
+
875
+ If you ever want to update the Quick submodule to latest version, enter
876
+ the Quick directory and pull from the master repository:
877
+
878
+ ```sh
879
+ cd Vendor/Quick
880
+ git pull --rebase origin master
881
+ ```
882
+
883
+ Your Git repository will track changes to submodules. You'll want to
884
+ commit the fact that you've updated the Quick submodule:
885
+
886
+ ```sh
887
+ git commit -m "Updated Quick submodule"
888
+ ```
889
+
890
+ ### Cloning a Repository that Includes a Quick Submodule
891
+
892
+ After other people clone your repository, they'll have to pull down the
893
+ submodules as well. They can do so by running the `git submodule update`
894
+ command:
895
+
896
+ ```sh
897
+ git submodule update --init --recursive
898
+ ```
899
+
900
+ You can read more about Git submodules
901
+ [here](http://git-scm.com/book/en/Git-Tools-Submodules). To see examples
902
+ of Git submodules in action, check out any of the repositories linked to
903
+ in the ["Who Uses Quick"](#who-uses-quick) section of this guide.
904
+
905
+ ## How to Install Quick using Beta CocoaPods
906
+
907
+ If you would like to use Quick with CocoaPods today, you will need to use
908
+ rubygem's [Bundler](http://bundler.io) to use the swift branch of CocoaPods. This
909
+ can be done by including a Gemfile that looks like this:
910
+
911
+ ```ruby
912
+ source 'https://rubygems.org'
913
+
914
+ gem 'cocoapods', :git => 'https://github.com/CocoaPods/CocoaPods.git', :branch => 'swift'
915
+ gem 'cocoapods-core', :git => 'https://github.com/CocoaPods/Core.git'
916
+ gem 'xcodeproj', :git => 'https://github.com/CocoaPods/Xcodeproj.git'
917
+ gem 'claide', :git => 'https://github.com/CocoaPods/CLAide.git'
918
+ ```
919
+
920
+ Then run `bundle install` to start using Swift CocoaPods for just this project.
921
+ Then in your Podfile, add the following to your test target.
922
+
923
+ ```
924
+ pod 'Quick', :git => 'https://github.com/Quick/Quick', :tag => 'v0.2.1'
925
+ ```
926
+
927
+ Finally, run `bundle exec pod install`. The `bundle exec` ensures you're using
928
+ the Swift CocoaPods version from your Gemfile.
929
+
930
+ ## How to Install Quick File Templates
931
+
932
+ The Quick repository includes file templates for both Swift and
933
+ Objective-C specs.
934
+
935
+ ### Using Alcatraz
936
+
937
+ Quick templates can be installed via [Alcatraz](https://github.com/supermarin/Alcatraz),
938
+ a package manager for Xcode. Just search for the templates from the
939
+ Package Manager window.
940
+
941
+ ![](http://f.cl.ly/items/3T3q0G1j0b2t1V0M0T04/Screen%20Shot%202014-06-27%20at%202.01.10%20PM.png)
942
+
943
+ ### Manually via the Rakefile
944
+
945
+ To manually install the templates, just clone the repository and
946
+ run the `templates:install` rake task:
947
+
948
+ ```sh
949
+ $ git clone git@github.com:Quick/Quick.git
950
+ $ rake templates:install
951
+ ```
952
+
953
+ Uninstalling is easy, too:
954
+
955
+ ```sh
956
+ $ rake templates:uninstall
957
+ ```
958
+
959
+ ## Who Uses Quick
960
+
961
+ Quick is used by many companies, open-source projects, and individuals,
962
+ including [GitHub](https://github.com/github) and
963
+ [ReactiveCocoa](https://github.com/ReactiveCocoa). See examples below:
964
+
965
+ - https://github.com/ReactiveCocoa/ReactiveCocoa
966
+ - https://github.com/github/Archimedes
967
+ - https://github.com/libgit2/objective-git
968
+ - https://github.com/jspahrsummers/RXSwift
969
+ - https://github.com/artsy/eidolon
970
+ - https://github.com/AshFurrow/Moya
971
+ - https://github.com/nerdyc/Squeal
972
+ - https://github.com/pepibumur/SugarRecord
973
+
974
+ > Add an issue or [tweet](https://twitter.com/modocache) if you'd like to be added to this list.
975
+
976
+ ## License
977
+
978
+ Apache 2.0 license. See the `LICENSE` file for details.
979
+