Contexts are a powerful method to make your tests clear and well organized. In the long term this practice will keep tests easy to read.
I agree with the premise, and I agree that this:
BAD
it 'has 200 status code if logged in' do| lass One | |
| 2 def original arg | |
| 3 2 | |
| 4 end | |
| 5 end | |
| 6 | |
| 7 describe "one" do | |
| 8 it 'does things' do | |
| 9 one = One.new | |
| 10 one.stub(:original) do |arg| |
| class Thing | |
| def [] a, &block | |
| block.call a | |
| end | |
| end | |
| thing = Thing.new |
| def test | |
| begin | |
| raise | |
| local = 'b' | |
| rescue | |
| ensure | |
| return defined?(local) || false | |
| end | |
| end |
| set :use_sudo, false | |
| set :ssh_options, forward_agent: true | |
| role :app, ENV['hostname'], primary: true | |
| default_run_options[:pty] = true |
| require 'benchmark' | |
| require 'stringio' | |
| sizes = [10,100,1000,10000] | |
| def measure(&block) | |
| puts Benchmark.measure { 100000.times(&block) } | |
| end | |
| sizes.each do |size| |
| 1.9.3p448 :002 > a = [-> { puts 1; true }, -> { puts 2; false}, -> { puts 3; false }] | |
| => [#<Proc:0x007fe5c41a8f68@(irb):2 (lambda)>, #<Proc:0x007fe5c41a8f18@(irb):2 (lambda)>, #<Proc:0x007fe5c41a8ef0@(irb):2 (lambda)>] | |
| 1.9.3p448 :003 > a.all?(&:call) | |
| 1 | |
| 2 | |
| => false | |
| 1.9.3p448 :004 > a = [-> { puts 1; false }, -> { puts 2; true}, -> { puts 3; false }] | |
| => [#<Proc:0x007fe5c4276620@(irb):4 (lambda)>, #<Proc:0x007fe5c42765d0@(irb):4 (lambda)>, #<Proc:0x007fe5c42765a8@(irb):4 (lambda)>] | |
| 1.9.3p448 :005 > a.any?(&:call) | |
| 1 |
The count of contributions (summary of Pull Requests, opened issues and commits) to public repos at GitHub.com from Sat, 17 Nov 2012 22:58:25 GMT till Sun, 17 Nov 2013 22:58:25 GMT.
Only first 1000 GitHub users according to the count of followers are taken. This is because of limitations of GitHub search. Sorting algo in pseudocode:
githubUsers
.filter((user) -> user.followers > 30)| require 'benchmark' | |
| array = 10000000.times.to_a | |
| puts "Any" | |
| puts Benchmark.measure { 1000.times { array.any? } } | |
| puts "Empty" | |
| puts Benchmark.measure { 1000.times { array.empty? } } |
| require 'json' | |
| class Shell | |
| def self.heroku_apps | |
| new('heroku apps').cache_at 'heroku_app_cache' | |
| end | |
| def self.ruby_version app | |
| new("heroku run \"ruby -v\" --app #{app}").cache_at "ruby_version_#{app}" | |
| end |