README.md in async-rspec-1.13.0 vs README.md in async-rspec-1.14.0
- old
+ new
@@ -30,57 +30,12 @@
require 'async/rspec'
```
## Usage
-### Leaks
+### Async Reactor
-Leaking sockets and other kinds of IOs are a problem for long running services. `Async::RSpec::Leaks` tracks all open sockets both before and after the spec. If any are left open, a `RuntimeError` is raised and the spec fails.
-
-```ruby
-RSpec.describe "leaky ios" do
- include_context Async::RSpec::Leaks
-
- # The following fails:
- it "leaks io" do
- @input, @output = IO.pipe
- end
-end
-```
-
-In some cases, the Ruby garbage collector will close IOs. In the above case, it's possible that just writing `IO.pipe` will not leak as Ruby will garbage collect the resulting IOs immediately. It's still incorrect to not close IOs, so don't depend on this behaviour.
-
-### Allocations
-
-Allocating large amounts of objects can lead to memery problems. `Async::RSpec::Memory` adds a `limit_allocations` matcher, which tracks the number of allocations and memory size for each object type and allows you to specify expected limits.
-
-```ruby
-RSpec.describe "memory allocations" do
- include_context Async::RSpec::Memory
-
- it "limits allocation counts" do
- expect do
- 6.times{String.new}
- end.to limit_allocations(String => 10) # 10 strings can be allocated
- end
-
- it "limits allocation counts (hash)" do
- expect do
- 6.times{String.new}
- end.to limit_allocations(String => {count: 10}) # 10 strings can be allocated
- end
-
- it "limits allocation size" do
- expect do
- 6.times{String.new("foo")}
- end.to limit_allocations(String => {size: 1024}) # 1 KB of strings can be allocated
- end
-end
-```
-
-### Reactor
-
Many specs need to run within a reactor. A shared context is provided which includes all the relevant bits, including the above leaks checks. If your spec fails to run in less than 10 seconds, an `Async::TimeoutError` raises to prevent your test suite from hanging.
```ruby
require 'async/io'
@@ -108,9 +63,40 @@
input.close
output.close
end
end
```
+
+### Changing Timeout
+
+You can change the timeout by specifying it as an option:
+
+```ruby
+RSpec.describe MySlowThing, timeout: 60 do
+ # ...
+end
+```
+
+### File Descriptor Leaks
+
+Leaking sockets and other kinds of IOs are a problem for long running services. `Async::RSpec::Leaks` tracks all open sockets both before and after the spec. If any are left open, a `RuntimeError` is raised and the spec fails.
+
+```ruby
+RSpec.describe "leaky ios" do
+ include_context Async::RSpec::Leaks
+
+ # The following fails:
+ it "leaks io" do
+ @input, @output = IO.pipe
+ end
+end
+```
+
+In some cases, the Ruby garbage collector will close IOs. In the above case, it's possible that just writing `IO.pipe` will not leak as Ruby will garbage collect the resulting IOs immediately. It's still incorrect to not close IOs, so don't depend on this behaviour.
+
+### Allocations
+
+This functionality was moved to [`rspec-memory`](https://github.com/socketry/rspec-memory).
## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)