inspec 0.17.0 → 0.17.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2454963fda63c4f4fbac8878277b21c1fc41d43a
4
- data.tar.gz: acdaf6cd9432ff53d73a3140344c831d8fe7fa2f
3
+ metadata.gz: 92931c330ebe81c9d87899956cec70d7c395854b
4
+ data.tar.gz: 93b49fae335d4c153393eca778a0973a46bebb9f
5
5
  SHA512:
6
- metadata.gz: b08a2835b8f86afca3167418009b38dbdd3196db983d26c4f72cf049cf66deb8efc7e35c58710417e1ffb72ef055755dcb76746e812018a6c6e15a7ee8c45f96
7
- data.tar.gz: a815b5c316027b14c308642943e57aa8a88e176e7e5abcbb9d658c1e3b3a5626ba66f23fd292df0c5c5f258b7c3a4c339f203e38428c786ac202ba763d63a240
6
+ metadata.gz: e78120e5ec5764f3a9a6ce35db482adf9a8304ba13dac930a181984ace5d5cb4e0b8898e9cf26f17e495a382df1acdfc7ce5f97042a7342302a6c6e5d20a2ca3
7
+ data.tar.gz: 37bc84c9da07415c800a24af962008098c2b2f8711ac3c1f093ec09f3482a37c4aaa8ff531a52d51f9b9a8377d3485f9b2675c44a7d1bfa29a8d740b60c84130
@@ -1,7 +1,14 @@
1
1
  # Change Log
2
2
 
3
- ## [0.17.0](https://github.com/chef/inspec/tree/0.17.0) (2016-03-31)
4
- [Full Changelog](https://github.com/chef/inspec/compare/v0.16.4...0.17.0)
3
+ ## [0.17.1](https://github.com/chef/inspec/tree/0.17.1) (2016-03-31)
4
+ [Full Changelog](https://github.com/chef/inspec/compare/v0.17.0...0.17.1)
5
+
6
+ **Merged pull requests:**
7
+
8
+ - add inspec objects \(not exposed by default\) [\#608](https://github.com/chef/inspec/pull/608) ([arlimus](https://github.com/arlimus))
9
+
10
+ ## [v0.17.0](https://github.com/chef/inspec/tree/v0.17.0) (2016-03-31)
11
+ [Full Changelog](https://github.com/chef/inspec/compare/v0.16.4...v0.17.0)
5
12
 
6
13
  **Implemented enhancements:**
7
14
 
@@ -15,6 +22,7 @@
15
22
 
16
23
  **Merged pull requests:**
17
24
 
25
+ - 0.17.0 [\#604](https://github.com/chef/inspec/pull/604) ([arlimus](https://github.com/arlimus))
18
26
  - add file uid and gid accessors [\#603](https://github.com/chef/inspec/pull/603) ([arlimus](https://github.com/arlimus))
19
27
  - fix errors introduced in \#593 [\#594](https://github.com/chef/inspec/pull/594) ([chris-rock](https://github.com/chris-rock))
20
28
  - Updated documentation and examples to include tags and references [\#593](https://github.com/chef/inspec/pull/593) ([aaronlippold](https://github.com/aaronlippold))
@@ -0,0 +1,11 @@
1
+ # encoding: utf-8
2
+
3
+ module Inspec
4
+ autoload :Control, 'inspec/objects/control'
5
+ autoload :EachLoop, 'inspec/objects/each_loop'
6
+ autoload :List, 'inspec/objects/list'
7
+ autoload :OrTest, 'inspec/objects/or_test'
8
+ autoload :RubyHelper, 'inspec/objects/ruby_helper'
9
+ autoload :Test, 'inspec/objects/test'
10
+ autoload :Value, 'inspec/objects/value'
11
+ end
@@ -0,0 +1,35 @@
1
+ # encoding:utf-8
2
+
3
+ module Inspec
4
+ class Control
5
+ attr_accessor :id, :title, :desc, :impact, :tests
6
+ def initialize
7
+ @tests = []
8
+ end
9
+
10
+ def add_test(t)
11
+ @tests.push(t)
12
+ end
13
+
14
+ def to_hash
15
+ { id: id, title: title, desc: desc, impact: impact, tests: tests.map(&:to_hash) }
16
+ end
17
+
18
+ def to_ruby
19
+ res = ["control #{id.inspect} do"]
20
+ res.push " title #{title.inspect}" unless title.to_s.empty?
21
+ res.push " desc #{desc.inspect}" unless desc.to_s.empty?
22
+ res.push " impact #{impact}" unless impact.nil?
23
+ tests.each { |t| res.push(indent(t.to_ruby, 2)) }
24
+ res.push 'end'
25
+ res.join("\n")
26
+ end
27
+
28
+ private
29
+
30
+ def indent(txt, d)
31
+ dt = ' '*d
32
+ dt + txt.gsub("\n", "\n"+dt)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,32 @@
1
+ # encoding:utf-8
2
+
3
+ module Inspec
4
+ class EachLoop < List
5
+ attr_reader :tests
6
+ def initialize
7
+ super
8
+ @tests = []
9
+ end
10
+
11
+ def add_test(t = nil)
12
+ t ||= Test.new
13
+ t.qualifier[0] = ['entry']
14
+ @tests.push(t)
15
+ t
16
+ end
17
+
18
+ def negate!
19
+ @tests.each(&:negate!)
20
+ end
21
+
22
+ def to_hash
23
+ { qualifier: qualifier, test: @test }
24
+ end
25
+
26
+ def to_ruby
27
+ obj = super
28
+ all_tests = @tests.map(&:to_ruby).join("\n")
29
+ format("%s.each do |entry|\n %s\nend", obj, all_tests)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,15 @@
1
+ # encoding:utf-8
2
+
3
+ module Inspec
4
+ class List < Value
5
+ def map
6
+ fail 'Inspec::List.map needs to be called with a block' unless block_given?
7
+ t = List.new
8
+ t.qualifier = [['x']]
9
+ yield(t)
10
+ return if t.qualifier == [['x']]
11
+ @qualifier.push(['map', "{ |x| #{t.to_ruby} }"])
12
+ self
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,22 @@
1
+ # encoding:utf-8
2
+
3
+ module Inspec
4
+ class OrTest
5
+ def initialize(tests)
6
+ @tests = tests
7
+ end
8
+
9
+ def skip
10
+ nil
11
+ end
12
+
13
+ def to_ruby
14
+ format("describe.one do\n %s\nend",
15
+ @tests.map(&:to_ruby).join("\n"))
16
+ end
17
+
18
+ def to_hash
19
+ { describe_one: @tests.map(&:to_hash) }
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ module Inspec
4
+ module RubyHelper
5
+ def ruby_qualifier(q)
6
+ if q.length <= 1
7
+ q[0]
8
+ elsif q[0] == 'map' && q.length == 2
9
+ q[0] + ' ' + q[1]
10
+ else
11
+ q[0] + '(' + q[1..-1].map(&:inspect).join(', ') + ')'
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,78 @@
1
+ # encoding:utf-8
2
+
3
+ module Inspec
4
+ class Test
5
+ attr_accessor :qualifier, :matcher, :expectation, :skip, :negated, :variables
6
+ include RubyHelper
7
+
8
+ def initialize
9
+ @qualifier = []
10
+ @negated = false
11
+ @variables = []
12
+ end
13
+
14
+ def negate!
15
+ @negated = !@negated
16
+ end
17
+
18
+ def to_ruby
19
+ return rb_skip if !skip.nil?
20
+ rb_describe
21
+ end
22
+
23
+ def to_hash
24
+ { qualifier: qualifier, matcher: matcher, expectation: expectation, skip: skip, negated: negated }
25
+ end
26
+
27
+ def resource
28
+ @resource ||=
29
+ if qualifier.empty? || qualifier[0].empty? || qualifier[0][0].empty?
30
+ nil
31
+ else
32
+ qualifier[0][0]
33
+ end
34
+ end
35
+
36
+ def remove_expectation
37
+ remove_instance_variable(:@expectation)
38
+ end
39
+
40
+ private
41
+
42
+ def describe_chain
43
+ return nil if @qualifier.empty?
44
+
45
+ resource = (@qualifier.length > 1) ? @qualifier[0..-2] : [@qualifier[0]]
46
+ res = resource.map { |q| ruby_qualifier(q) }.join('.')
47
+ xres = nil
48
+
49
+ if @qualifier.length > 1
50
+ last = @qualifier[-1]
51
+ if last.length == 1
52
+ xres = last[0]
53
+ else
54
+ res += '.' + ruby_qualifier(last)
55
+ end
56
+ end
57
+
58
+ [res, xres]
59
+ end
60
+
61
+ def rb_describe
62
+ vars = variables.map(&:to_ruby).join("\n")
63
+ vars += "\n" unless vars.empty?
64
+ res, xtra = describe_chain
65
+ itsy = xtra.nil? ? 'it' : 'its(' + xtra.to_sym.inspect + ')'
66
+ naughty = @negated ? '_not' : ''
67
+ xpect = defined?(@expectation) ? expectation.inspect : ''
68
+ format("%sdescribe %s do\n %s { should%s %s %s }\nend",
69
+ vars, res, itsy, naughty, matcher, xpect)
70
+ end
71
+
72
+ def rb_skip
73
+ dc = describe_chain
74
+ obj = dc.nil? ? skip.inspect : dc[0]
75
+ format("describe %s do\n skip %s\nend", obj, skip.inspect)
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,27 @@
1
+ # encoding:utf-8
2
+
3
+ module Inspec
4
+ class Value
5
+ include ::Inspec::RubyHelper
6
+
7
+ attr_accessor :qualifier
8
+ attr_accessor :skip
9
+ attr_accessor :variable
10
+
11
+ def initialize(qualifiers = [])
12
+ @qualifier = qualifiers
13
+ @variable = nil
14
+ end
15
+
16
+ def to_ruby
17
+ res = @variable.nil? ? '' : "#{@variable} = "
18
+ res + @qualifier.map { |x| ruby_qualifier(x) }.join('.')
19
+ end
20
+
21
+ def name_variable(cache = [])
22
+ @variable = Array('a'..'z').find { |x| !cache.include?(x) }
23
+ cache.push(@variable)
24
+ @variable
25
+ end
26
+ end
27
+ end
@@ -3,5 +3,5 @@
3
3
  # author: Christoph Hartmann
4
4
 
5
5
  module Inspec
6
- VERSION = '0.17.0'.freeze
6
+ VERSION = '0.17.1'.freeze
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.17.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominik Richter
@@ -246,6 +246,14 @@ files:
246
246
  - lib/inspec/fetcher.rb
247
247
  - lib/inspec/log.rb
248
248
  - lib/inspec/metadata.rb
249
+ - lib/inspec/objects.rb
250
+ - lib/inspec/objects/control.rb
251
+ - lib/inspec/objects/each_loop.rb
252
+ - lib/inspec/objects/list.rb
253
+ - lib/inspec/objects/or_test.rb
254
+ - lib/inspec/objects/ruby_helper.rb
255
+ - lib/inspec/objects/test.rb
256
+ - lib/inspec/objects/value.rb
249
257
  - lib/inspec/plugins.rb
250
258
  - lib/inspec/plugins/cli.rb
251
259
  - lib/inspec/plugins/fetcher.rb