Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Code not actually asserting in RSpec?

Tags:

ruby

rspec

I'm new to Ruby and in various open source software I've noticed a number of "statements" in some RSpec descriptions that appear not to accomplish what they intended, like they wanted to make an assertion, but didn't. Are these coding errors or is there some RSpec or Ruby magic I'm missing? (Likelihood of weirdly overloaded operators?)

The examples, with #??? added to the suspect lines:

(rubinius/spec/ruby/core/array/permutation_spec.rb)

it "returns no permutations when the given length has no permutations" do
  @numbers.permutation(9).entries.size == 0        #???
  @numbers.permutation(9) { |n| @yielded << n }
  @yielded.should == []
end

(discourse/spec/models/topic_link_spec.rb)

it 'works' do
  # ensure other_topic has a post
  post

  url = "http://#{test_uri.host}/t/#{other_topic.slug}/#{other_topic.id}"

  topic.posts.create(user: user, raw: 'initial post')
  linked_post = topic.posts.create(user: user, raw: "Link to another topic: #{url}")

  TopicLink.extract_from(linked_post)

  link = topic.topic_links.first
  expect(link).to be_present
  expect(link).to be_internal
  expect(link.url).to eq(url)
  expect(link.domain).to eq(test_uri.host)

  link.link_topic_id == other_topic.id       #???
  expect(link).not_to be_reflection

  ...

(chef/spec/unit/chef_fs/parallelizer.rb)

context "With :ordered => false (unordered output)" do
  it "An empty input produces an empty output" do
    parallelize([], :ordered => false) do
      sleep 10
    end.to_a == []                        #???
    expect(elapsed_time).to be < 0.1
  end

(bosh/spec/external/aws_bootstrap_spec.rb)

it "configures ELBs" do
  load_balancer = elb.load_balancers.detect { |lb| lb.name == "cfrouter" }
  expect(load_balancer).not_to be_nil
  expect(load_balancer.subnets.sort {|s1, s2| s1.id <=> s2.id }).to eq([cf_elb1_subnet, cf_elb2_subnet].sort {|s1, s2| s1.id <=> s2.id })
  expect(load_balancer.security_groups.map(&:name)).to eq(["web"])

  config = Bosh::AwsCliPlugin::AwsConfig.new(aws_configuration_template)
  hosted_zone = route53.hosted_zones.detect { |zone| zone.name == "#{config.vpc_generated_domain}." }
  record_set = hosted_zone.resource_record_sets["\\052.#{config.vpc_generated_domain}.", 'CNAME'] # E.g. "*.midway.cf-app.com."
  expect(record_set).not_to be_nil
  record_set.resource_records.first[:value] == load_balancer.dns_name   #???
  expect(record_set.ttl).to eq(60)
end
like image 508
Peter Dillinger Avatar asked Dec 12 '25 21:12

Peter Dillinger


1 Answers

I don't think there is any special behavior. I think you've found errors in the test code.

like image 65
Keith Bennett Avatar answered Dec 15 '25 11:12

Keith Bennett



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!