inspec/lib/inspec/expect.rb
Dominik Richter 3ae50adae9 feature: conditional OR via describe.one
```
describe.one do
  describe command("uname -r").stdout do
    it { should_not match /x86_64/ }
  end
  describe test_sth_for_x64_processors do
    ...
  end
end
```
2016-02-25 14:30:23 +01:00

45 lines
1 KiB
Ruby

# encoding: utf-8
# copyright: 2016, Chef Software Inc.
# author: Dominik Richter
# author: Christoph Hartmann
require 'rspec/expectations'
module Inspec
class Expect
attr_reader :calls, :value, :block
def initialize(value, &block)
@value = value
@block = block
@calls = []
end
def to(*args, &block)
@calls.push([:to, args, block, caller])
end
def not_to(*args, &block)
@calls.push([:not_to, args, block, caller])
end
def example_group
that = self
opts = { 'caller' => calls[0][3] }
if !calls[0][3].nil? && !calls[0][3].empty? &&
(m = calls[0][3][0].match(/^([^:]*):(\d+):/))
opts['file_path'] = m[0]
opts['line_number'] = m[1]
end
RSpec::Core::ExampleGroup.describe(that.value, opts) do
that.calls.each do |method, args, block, clr|
it(nil, caller: clr) do
x = expect(that.value, &that.block).method(method)
x.call(*args, &block)
end
end
end
end
end
end