inspec/test/unit/dsl/other_keywords_test.rb
eramoto 435ad68698 Sort gotten file list on test (#2812)
When testing on a filesystem used for a long time or built on a small
sized partition, the actual file order may be different from the
expected file order as below:

    1) Failure:
  inspec keyword::inspec.profile.files#test_0002_lists all profile files when calling #files [/work/git/inspec/test/unit/dsl/other_keywords_test.rb:50]:
  --- expected
  +++ actual
  @@ -1 +1 @@
  -["a_sub_dir/sub_items.conf", "items.conf"]
  +["items.conf", "a_sub_dir/sub_items.conf"]

    2) Failure:
  SourceReaders::InspecReader::with a valid profile#test_0005_retrieves all extra files [/work/git/inspec/test/unit/source_readers/inspec_test.rb:39]:
  --- expected
  +++ actual
  @@ -1 +1 @@
  -["files/a_sub_dir/sub_items.conf", "files/items.conf"]
  +["files/items.conf", "files/a_sub_dir/sub_items.conf"]

Signed-off-by: ERAMOTO Masaya <eramoto.masaya@jp.fujitsu.com>
2018-03-14 09:35:43 -04:00

63 lines
1.8 KiB
Ruby

# encoding: utf-8
# author: Dominik Richter
# author: Christoph Hartmann
require 'helper'
require 'inspec/runner_mock'
describe 'inspec keyword' do
def load(content)
runner = Inspec::Runner.new({backend: 'mock', test_collector: Inspec::RunnerMock.new})
runner.eval_with_virtual_profile(content)
end
def load_in_profile(cmd)
MockLoader.load_profile('complete-profile').runner_context.load(cmd)
end
it 'is a vailable as a global keyword' do
load('inspec') # wont raise anything
end
it 'is a vailable inside of control blocks' do
load('control 1 do inspec end') # wont raise anything
end
it 'provides version information' do
load('inspec.version').must_equal Inspec::VERSION
end
it 'is associated with resources' do
i = load('os.inspec')
i.wont_be_nil
i.backend.must_be_kind_of Train::Transports::Mock::Connection
end
it 'prints a nice to_s' do
load('inspec').to_s.must_equal 'Inspec::Backend::Class'
end
it 'prints a nice inspect line' do
load('inspec').inspect.must_equal 'Inspec::Backend::Class @transport=Train::Transports::Mock::Connection'
end
describe 'inspec.profile.files' do
it 'lists an empty array when calling #files without any files loaded' do
load('inspec.profile.files').must_equal([])
end
it 'lists all profile files when calling #files' do
load_in_profile('inspec.profile.files').sort.must_equal %w{a_sub_dir/sub_items.conf items.conf}
end
end
describe 'inspec.profile.file' do
it 'raises an error if a file was not found' do
proc { load('inspec.profile.file("test")') }.must_raise RuntimeError
end
it 'provides file contents when calling file(...)' do
load_in_profile('inspec.profile.file("items.conf")').must_equal "one\ntwo\nthree\n"
end
end
end