Skip to content

Instantly share code, notes, and snippets.

@inamiy
Created November 3, 2016 05:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save inamiy/925644779adbfca621ea716770d3865e to your computer and use it in GitHub Desktop.
Save inamiy/925644779adbfca621ea716770d3865e to your computer and use it in GitHub Desktop.
ReactiveSwift 1.0.0-alpha.3 (RAC5) Bug: Inner signal not interrupted on outer signal disposal
diff --git Tests/ReactiveSwiftTests/SignalProducerSpec.swift Tests/ReactiveSwiftTests/SignalProducerSpec.swift
index 21362e7..a363327 100644
--- Tests/ReactiveSwiftTests/SignalProducerSpec.swift
+++ Tests/ReactiveSwiftTests/SignalProducerSpec.swift
@@ -1413,13 +1413,14 @@ class SignalProducerSpec: QuickSpec {
}
}
- describe("disposal") {
+ fdescribe("disposal") {
var completeOuter: (() -> Void)!
var disposeOuter: (() -> Void)!
var execute: ((FlattenStrategy) -> Void)!
var innerDisposable = SimpleDisposable()
var interrupted = false
+ var innerInterrupted = false
beforeEach {
execute = { strategy in
@@ -1427,8 +1428,10 @@ class SignalProducerSpec: QuickSpec {
innerDisposable = SimpleDisposable()
let innerProducer = SignalProducer<Int, NoError> { $1.add(innerDisposable) }
+ .on(interrupted: { innerInterrupted = true })
interrupted = false
+ innerInterrupted = false
let outerDisposable = outerProducer.flatten(strategy).startWithInterrupted {
interrupted = true
}
@@ -1445,10 +1448,12 @@ class SignalProducerSpec: QuickSpec {
execute(.concat)
expect(innerDisposable.isDisposed) == false
+ expect(innerInterrupted) == false
expect(interrupted) == false
disposeOuter()
expect(innerDisposable.isDisposed) == true
+ expect(innerInterrupted) == true
expect(interrupted) == true
}
@@ -1458,10 +1463,12 @@ class SignalProducerSpec: QuickSpec {
completeOuter()
expect(innerDisposable.isDisposed) == false
+ expect(innerInterrupted) == false
expect(interrupted) == false
disposeOuter()
expect(innerDisposable.isDisposed) == true
+ expect(innerInterrupted) == true
expect(interrupted) == true
}
}
@@ -1471,10 +1478,12 @@ class SignalProducerSpec: QuickSpec {
execute(.latest)
expect(innerDisposable.isDisposed) == false
+ expect(innerInterrupted) == false
expect(interrupted) == false
disposeOuter()
expect(innerDisposable.isDisposed) == true
+ expect(innerInterrupted) == true
expect(interrupted) == true
}
@@ -1484,10 +1493,12 @@ class SignalProducerSpec: QuickSpec {
completeOuter()
expect(innerDisposable.isDisposed) == false
+ expect(innerInterrupted) == false
expect(interrupted) == false
disposeOuter()
expect(innerDisposable.isDisposed) == true
+ expect(innerInterrupted) == true
expect(interrupted) == true
}
}
@@ -1497,10 +1508,12 @@ class SignalProducerSpec: QuickSpec {
execute(.merge)
expect(innerDisposable.isDisposed) == false
+ expect(innerInterrupted) == false
expect(interrupted) == false
disposeOuter()
expect(innerDisposable.isDisposed) == true
+ expect(innerInterrupted) == true
expect(interrupted) == true
}
@@ -1510,10 +1523,12 @@ class SignalProducerSpec: QuickSpec {
completeOuter()
expect(innerDisposable.isDisposed) == false
+ expect(innerInterrupted) == false
expect(interrupted) == false
disposeOuter()
expect(innerDisposable.isDisposed) == true
+ expect(innerInterrupted) == true
expect(interrupted) == true
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment