diff --git a/Rx.xcworkspace/contents.xcworkspacedata b/Rx.xcworkspace/contents.xcworkspacedata
index d811d7ae..51245e48 100644
--- a/Rx.xcworkspace/contents.xcworkspacedata
+++ b/Rx.xcworkspace/contents.xcworkspacedata
@@ -10,6 +10,22 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/RxBlocking.podspec b/RxBlocking.podspec
index af1806a7..c61dd51e 100644
--- a/RxBlocking.podspec
+++ b/RxBlocking.podspec
@@ -3,7 +3,12 @@ Pod::Spec.new do |s|
s.version = "2.0.0-beta.4"
s.summary = "RxSwift Blocking operatos"
s.description = <<-DESC
- Set of blocking operators for RxSwift.
+Set of blocking operators for RxSwift. These operators are mostly intended for unit/integration tests
+with a couple of other special scenarios where they could be useful.
+
+E.g.
+
+Waiting for observable sequence to complete before exiting command line application.
DESC
s.homepage = "https://github.com/ReactiveX/RxSwift"
s.license = 'MIT'
diff --git a/RxCocoa.podspec b/RxCocoa.podspec
index 2cea7beb..a570fc33 100644
--- a/RxCocoa.podspec
+++ b/RxCocoa.podspec
@@ -3,9 +3,9 @@ Pod::Spec.new do |s|
s.version = "2.0.0-beta.4"
s.summary = "RxSwift Cocoa extensions"
s.description = <<-DESC
- * UI extensions
- * NSURL extensions
- * KVO extensions
+* UI extensions
+* NSURL extensions
+* KVO extensions
DESC
s.homepage = "https://github.com/ReactiveX/RxSwift"
s.license = 'MIT'
diff --git a/RxSwift.podspec b/RxSwift.podspec
index e81923e4..1f37fdd8 100644
--- a/RxSwift.podspec
+++ b/RxSwift.podspec
@@ -3,22 +3,22 @@ Pod::Spec.new do |s|
s.version = "2.0.0-beta.4"
s.summary = "Microsoft Reactive Extensions (Rx) for Swift and iOS/OSX platform"
s.description = <<-DESC
- This is a Swift port of [ReactiveX.io](https://github.com/ReactiveX)
+This is a Swift port of [ReactiveX.io](https://github.com/ReactiveX)
- Like the original [Rx](https://github.com/Reactive-extensions/Rx.Net), its intention is to enable easy composition of asynchronous operations and event streams.
+Like the original [Rx](https://github.com/Reactive-extensions/Rx.Net), its intention is to enable easy composition of asynchronous operations and event streams.
- It tries to port as many concepts from the original Rx as possible, but some concepts were adapted for more pleasant and performant integration with iOS/OSX environment.
+It tries to port as many concepts from the original Rx as possible, but some concepts were adapted for more pleasant and performant integration with iOS/OSX environment.
- Probably the best analogy for those who have never heard of Rx would be:
+Probably the best analogy for those who have never heard of Rx would be:
- ```
- git diff | grep bug | less # linux pipes - programs communicate by sending
- # sequences of bytes, words, lines, '\0' terminated strings...
- ```
- would become if written in RxSwift
- ```
- gitDiff().grep("bug").less // sequences of swift objects
- ```
+```
+git diff | grep bug | less # linux pipes - programs communicate by sending
+ # sequences of bytes, words, lines, '\0' terminated strings...
+```
+would become if written in RxSwift
+```
+gitDiff().grep("bug").less // sequences of swift objects
+```
DESC
s.homepage = "https://github.com/ReactiveX/RxSwift"
s.license = 'MIT'
diff --git a/RxTests.podspec b/RxTests.podspec
new file mode 100644
index 00000000..d2879eec
--- /dev/null
+++ b/RxTests.podspec
@@ -0,0 +1,59 @@
+Pod::Spec.new do |s|
+ s.name = "RxTests"
+ s.version = "2.0.0-beta.4"
+ s.summary = "RxSwift Testing extensions"
+ s.description = <<-DESC
+Unit testing extensions for RxSwift. This library contains mock schedulers, observables, and observers
+that should make unit testing your operators easy as unit testing RxSwift built-in operators.
+
+This library contains everything you need to write unit tests in the following way:
+```swift
+func testMap() {
+ let scheduler = TestScheduler(initialClock: 0)
+
+ let xs = scheduler.createHotObservable([
+ next(150, 1),
+ next(210, 0),
+ next(220, 1),
+ next(230, 2),
+ next(240, 4),
+ completed(300)
+ ])
+
+ let res = scheduler.start { xs.map { $0 * 2 } }
+
+ let correctMessages = [
+ next(210, 0 * 2),
+ next(220, 1 * 2),
+ next(230, 2 * 2),
+ next(240, 4 * 2),
+ completed(300)
+ ]
+
+ let correctSubscriptions = [
+ Subscription(200, 300)
+ ]
+
+ XCTAssertEqual(res.messages, correctMessages)
+ XCTAssertEqual(xs.subscriptions, correctSubscriptions)
+ }
+```
+
+ DESC
+ s.homepage = "https://github.com/ReactiveX/RxSwift"
+ s.license = 'MIT'
+ s.author = { "Krunoslav Zaher" => "krunoslav.zaher@gmail.com" }
+ s.source = { :git => "https://github.com/ReactiveX/RxSwift.git", :tag => s.version.to_s }
+
+ s.requires_arc = true
+
+ s.ios.deployment_target = '8.0'
+ s.osx.deployment_target = '10.9'
+ s.tvos.deployment_target = '9.0'
+
+ s.source_files = 'RxTests/**/*.swift'
+
+ s.framework = 'XCTest'
+
+ s.dependency 'RxSwift', '~> 2.0.0-beta'
+end
diff --git a/scripts/validate-podspec.sh b/scripts/validate-podspec.sh
index 59ae9b03..9089f612 100755
--- a/scripts/validate-podspec.sh
+++ b/scripts/validate-podspec.sh
@@ -25,19 +25,28 @@ mkdir -p RxTests/${VERSION}
popd
popd
+#BRANCH=develop
+BRANCH=feature\\/RxTests
+
cat RxSwift.podspec |
-sed -E "s/s.source[^\}]+\}/s.source = { :git => '\/Users\/kzaher\/Projects\/Rx', :branch => \'develop\' }/" > ~/.cocoapods/repos/master/Specs/RxSwift/${VERSION}/RxSwift.podspec
+sed -E "s/s.source[^\}]+\}/s.source = { :git => '\/Users\/kzaher\/Projects\/Rx', :branch => \'${BRANCH}\' }/" > ~/.cocoapods/repos/master/Specs/RxSwift/${VERSION}/RxSwift.podspec
cat RxCocoa.podspec |
-sed -E "s/s.source[^\}]+\}/s.source = { :git => '\/Users\/kzaher\/Projects\/Rx', :branch => \'develop\' }/" > ~/.cocoapods/repos/master/Specs/RxCocoa/${VERSION}/RxCocoa.podspec
+sed -E "s/s.source[^\}]+\}/s.source = { :git => '\/Users\/kzaher\/Projects\/Rx', :branch => \'${BRANCH}\' }/" > ~/.cocoapods/repos/master/Specs/RxCocoa/${VERSION}/RxCocoa.podspec
cat RxBlocking.podspec |
-sed -E "s/s.source[^\}]+\}/s.source = { :git => '\/Users\/kzaher\/Projects\/Rx', :branch => \'develop\' }/" > ~/.cocoapods/repos/master/Specs/RxBlocking/${VERSION}/RxBlocking.podspec
+sed -E "s/s.source[^\}]+\}/s.source = { :git => '\/Users\/kzaher\/Projects\/Rx', :branch => \'${BRANCH}\' }/" > ~/.cocoapods/repos/master/Specs/RxBlocking/${VERSION}/RxBlocking.podspec
cat RxTests.podspec |
-sed -E "s/s.source[^\}]+\}/s.source = { :git => '\/Users\/kzaher\/Projects\/Rx', :branch => \'develop\' }/" > ~/.cocoapods/repos/master/Specs/RxTests/${VERSION}/RxTests.podspec
+sed -E "s/s.source[^\}]+\}/s.source = { :git => '\/Users\/kzaher\/Projects\/Rx', :branch => \'${BRANCH}\' }/" > ~/.cocoapods/repos/master/Specs/RxTests/${VERSION}/RxTests.podspec
-pod lib lint RxSwift.podspec
-pod lib lint RxCocoa.podspec
-pod lib lint RxBlocking.podspec
-pod lib lint RxTests.podspec
\ No newline at end of file
+function validate() {
+ local PODSPEC=$1
+
+ pod lib lint $PODSPEC --verbose --no-clean
+}
+
+validate RxTests.podspec
+validate RxCocoa.podspec
+validate RxBlocking.podspec
+validate RxSwift.podspec
\ No newline at end of file