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 |