mirror of
https://github.com/inspec/inspec
synced 2024-11-27 07:00:39 +00:00
3ae50adae9
``` 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 ```
45 lines
1 KiB
Ruby
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
|