openscap 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/lib/openscap/version.rb +1 -1
  3. data/lib/openscap/xccdf/benchmark.rb +10 -10
  4. data/lib/openscap/xccdf/fix.rb +7 -14
  5. data/lib/openscap/xccdf/fixtext.rb +19 -0
  6. data/lib/openscap/xccdf/group.rb +6 -12
  7. data/lib/openscap/xccdf/ident.rb +4 -10
  8. data/lib/openscap/xccdf/item.rb +6 -6
  9. data/lib/openscap/xccdf/item_common.rb +1 -1
  10. data/lib/openscap/xccdf/policy.rb +3 -4
  11. data/lib/openscap/xccdf/policy_model.rb +6 -14
  12. data/lib/openscap/xccdf/profile.rb +2 -2
  13. data/lib/openscap/xccdf/reference.rb +5 -21
  14. data/lib/openscap/xccdf/rule.rb +32 -8
  15. data/lib/openscap/xccdf/ruleresult.rb +5 -7
  16. data/lib/openscap/xccdf/session.rb +11 -11
  17. data/lib/openscap/xccdf/status.rb +1 -2
  18. data/lib/openscap/xccdf/tailoring.rb +6 -12
  19. data/lib/openscap/xccdf/testresult.rb +12 -16
  20. data/lib/openscap/xccdf/value.rb +1 -2
  21. metadata +5 -27
  22. data/test/common/testcase.rb +0 -38
  23. data/test/data/arf.xml +0 -275156
  24. data/test/data/invalid.xml +0 -20
  25. data/test/data/sds-complex.xml +0 -132
  26. data/test/data/tailoring.xml +0 -31
  27. data/test/data/testresult.xml +0 -225
  28. data/test/data/xccdf.xml +0 -3047
  29. data/test/ds/arf_test.rb +0 -96
  30. data/test/ds/sds_test.rb +0 -89
  31. data/test/integration/arf_waiver_test.rb +0 -91
  32. data/test/openscap_test.rb +0 -21
  33. data/test/source_test.rb +0 -78
  34. data/test/text_test.rb +0 -19
  35. data/test/xccdf/arf_test.rb +0 -43
  36. data/test/xccdf/benchmark_test.rb +0 -201
  37. data/test/xccdf/item_test.rb +0 -82
  38. data/test/xccdf/policy_test.rb +0 -48
  39. data/test/xccdf/profile_test.rb +0 -62
  40. data/test/xccdf/session_ds_test.rb +0 -116
  41. data/test/xccdf/session_test.rb +0 -33
  42. data/test/xccdf/tailoring_test.rb +0 -30
  43. data/test/xccdf/testresult_test.rb +0 -99
  44. data/test/xccdf/value_test.rb +0 -67
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 31f300d3cdcf9b72dcc0e552f4ce9c6113d54b1f9b5316441bff1133a09106ed
4
- data.tar.gz: fdcb823bf21e22ed25cdd77f0bf534227db14af84f0f7383d7f74c65cf690932
3
+ metadata.gz: 9c8eddf3fa5a4c04f1655827ba4f4b8422f32f314a20f888b36c5ef85e2e04cf
4
+ data.tar.gz: 3e9d497efc4543111a4fee03d8db323c85b96360e31e23cd9ebc4387ec354d17
5
5
  SHA512:
6
- metadata.gz: a21ae53d6e42bd055058423e54615780483bec7f8c0514a55dfa953ef6e37d88256c0404135a432e964339a9e26fb0a79ba9963e51ffd0317ba28428d7a70c5a
7
- data.tar.gz: 790d230ca7fc2b54f9188f5362851d428152000d84d30f935222a323a8276838b491c640a81708f11b592d0c48dfa759f90718d7b80ae1201c9a4344b37513e4
6
+ metadata.gz: 601b6ee58372cd9f943918611c5f10df28cf1245d1149547d2889531e4b623b3787fb70cc06c1b4a17d4fca7e4202dd27dcacc7a69eba5c99d156fcc7e2529f3
7
+ data.tar.gz: 3a47312203579d8735b19032cfe427f76ede2467bbfb63b806dbd47edd79a8442ebd40fc61062fb4ece7b51742c38350e73c69d8677aafed5a5d8aef0d473db2
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenSCAP
4
- VERSION = '0.5.0'
4
+ VERSION = '0.5.1'
5
5
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'openscap/source'
4
- require 'openscap/xccdf/profile'
5
- require 'openscap/xccdf/item'
6
- require 'openscap/xccdf/item_common'
7
- require 'openscap/xccdf/value'
8
- require 'openscap/xccdf/status'
4
+ require_relative 'profile'
5
+ require_relative 'item'
6
+ require_relative 'item_common'
7
+ require_relative 'value'
8
+ require_relative 'status'
9
9
 
10
10
  module OpenSCAP
11
11
  module Xccdf
@@ -13,7 +13,7 @@ module OpenSCAP
13
13
  include ItemCommon
14
14
  attr_reader :raw
15
15
 
16
- def initialize(p)
16
+ def initialize p
17
17
  case p
18
18
  when OpenSCAP::Source
19
19
  @raw = OpenSCAP.xccdf_benchmark_import_source p.raw
@@ -35,7 +35,7 @@ module OpenSCAP
35
35
  end
36
36
 
37
37
  def status_current
38
- Status.new OpenSCAP.xccdf_benchmark_get_status_current(raw)
38
+ Status.new OpenSCAP.xccdf_benchmark_get_status_current(@raw)
39
39
  end
40
40
 
41
41
  def profiles
@@ -65,12 +65,12 @@ module OpenSCAP
65
65
  end
66
66
 
67
67
  def policy_model
68
- @policy_model ||= PolicyModel.new(self)
68
+ @policy_model ||= PolicyModel.new self
69
69
  end
70
70
 
71
71
  def schema_version
72
- pointer = OpenSCAP.xccdf_benchmark_get_schema_version(@raw)
73
- OpenSCAP.xccdf_version_info_get_version(pointer)
72
+ pointer = OpenSCAP.xccdf_benchmark_get_schema_version @raw
73
+ OpenSCAP.xccdf_version_info_get_version pointer
74
74
  end
75
75
 
76
76
  def destroy
@@ -3,37 +3,30 @@
3
3
  module OpenSCAP
4
4
  module Xccdf
5
5
  class Fix
6
- def initialize(raw)
7
- raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" \
8
- unless raw.is_a?(FFI::Pointer)
6
+ def initialize raw
7
+ raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" unless raw.is_a? FFI::Pointer
9
8
 
10
9
  @raw = raw
11
10
  end
12
11
 
13
12
  def id
14
- OpenSCAP.xccdf_fix_get_id(@raw)
13
+ OpenSCAP.xccdf_fix_get_id @raw
15
14
  end
16
15
 
17
16
  def platform
18
- OpenSCAP.xccdf_fix_get_platform(@raw)
17
+ OpenSCAP.xccdf_fix_get_platform @raw
19
18
  end
20
19
 
21
- # system is a reserved word in Rails, so didn't use it
22
20
  def fix_system
23
- OpenSCAP.xccdf_fix_get_system(@raw)
21
+ OpenSCAP.xccdf_fix_get_system @raw
24
22
  end
25
23
 
26
24
  def content
27
- OpenSCAP.xccdf_fix_get_content(@raw)
25
+ OpenSCAP.xccdf_fix_get_content @raw
28
26
  end
29
27
 
30
28
  def to_hash
31
- {
32
- id:,
33
- platform:,
34
- system: fix_system,
35
- content:
36
- }
29
+ { id:, platform:, system: fix_system, content: }
37
30
  end
38
31
  end
39
32
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenSCAP
4
+ module Xccdf
5
+ class Fixtext
6
+ def initialize(raw)
7
+ raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" unless raw.is_a?(FFI::Pointer)
8
+
9
+ @raw = raw
10
+ end
11
+
12
+ def text
13
+ Text.new(OpenSCAP.xccdf_fixtext_get_text(@raw)).text
14
+ end
15
+ end
16
+ end
17
+
18
+ attach_function :xccdf_fixtext_get_text, [:pointer], :pointer
19
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'openscap/exceptions'
4
4
  require 'openscap/xccdf'
5
- require 'openscap/xccdf/item'
5
+ require_relative 'item'
6
6
 
7
7
  module OpenSCAP
8
8
  module Xccdf
@@ -20,18 +20,12 @@ module OpenSCAP
20
20
  end
21
21
 
22
22
  def sub_items
23
- @sub_items ||= sub_items_init
24
- end
25
-
26
- private
27
-
28
- def sub_items_init
29
- collect = {}
30
- each_child do |item|
31
- collect.merge! item.sub_items
32
- collect[item.id] = item
23
+ @sub_items ||= {}.tap do |sub_items|
24
+ each_child do |item|
25
+ sub_items.merge! item.sub_items
26
+ sub_items[item.id] = item
27
+ end
33
28
  end
34
- collect
35
29
  end
36
30
  end
37
31
  end
@@ -3,20 +3,14 @@
3
3
  module OpenSCAP
4
4
  module Xccdf
5
5
  class Ident
6
- def initialize(raw)
7
- raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" \
8
- unless raw.is_a?(FFI::Pointer)
6
+ def initialize raw
7
+ raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" unless raw.is_a?(FFI::Pointer)
9
8
 
10
9
  @raw = raw
11
10
  end
12
11
 
13
- def system
14
- OpenSCAP.xccdf_ident_get_system(@raw)
15
- end
16
-
17
- def id
18
- OpenSCAP.xccdf_ident_get_id(@raw)
19
- end
12
+ def system = OpenSCAP.xccdf_ident_get_system @raw
13
+ def id = OpenSCAP.xccdf_ident_get_id @raw
20
14
  end
21
15
  end
22
16
  attach_function :xccdf_ident_get_system, [:pointer], :string
@@ -2,16 +2,16 @@
2
2
 
3
3
  require 'openscap/exceptions'
4
4
  require 'openscap/text'
5
- require 'openscap/xccdf/item_common'
6
- require 'openscap/xccdf/group'
7
- require 'openscap/xccdf/rule'
5
+ require_relative 'item_common'
6
+ require_relative 'group'
7
+ require_relative 'rule'
8
8
 
9
9
  module OpenSCAP
10
10
  module Xccdf
11
11
  class Item
12
12
  include ItemCommon # reflects OpenSCAP's struct xccdf_item (thus operates with Benchmark, Profile, Group, Rule, and Value)
13
13
 
14
- def self.build(t)
14
+ def self.build t
15
15
  raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with #{t}" \
16
16
  unless t.is_a?(FFI::Pointer)
17
17
 
@@ -26,13 +26,13 @@ module OpenSCAP
26
26
  end
27
27
  end
28
28
 
29
- def initialize(t)
29
+ def initialize t
30
30
  raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} abstract base class." if instance_of?(OpenSCAP::Xccdf::Item)
31
31
 
32
32
  @raw = t
33
33
  end
34
34
 
35
- def rationale(prefered_lang = nil, markup: false)
35
+ def rationale prefered_lang = nil, markup: false
36
36
  TextList.extract(OpenSCAP.xccdf_item_get_rationale(@raw), lang: prefered_lang, markup:)
37
37
  end
38
38
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'openscap/text'
4
- require 'openscap/xccdf/reference'
4
+ require_relative 'reference'
5
5
 
6
6
  module OpenSCAP
7
7
  module Xccdf
@@ -12,21 +12,20 @@ module OpenSCAP
12
12
  when FFI::Pointer
13
13
  @raw = p
14
14
  else
15
- raise OpenSCAP::OpenSCAPError,
16
- "Cannot initialize OpenSCAP::Xccdf::Policy with '#{p}'"
15
+ raise OpenSCAP::OpenSCAPError, "Cannot initialize OpenSCAP::Xccdf::Policy with '#{p}'"
17
16
  end
18
17
  OpenSCAP.raise! if @raw.null?
19
18
  end
20
19
 
21
20
  def id
22
- OpenSCAP.xccdf_policy_get_id raw
21
+ OpenSCAP.xccdf_policy_get_id @raw
23
22
  end
24
23
 
25
24
  def profile
26
25
  Profile.new OpenSCAP.xccdf_policy_get_profile @raw
27
26
  end
28
27
 
29
- def selects_item?(item_idref)
28
+ def selects_item? item_idref
30
29
  OpenSCAP.xccdf_policy_is_item_selected @raw, item_idref
31
30
  end
32
31
  end
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'openscap/exceptions'
4
- require 'openscap/xccdf/benchmark'
5
- require 'openscap/xccdf/policy'
4
+ require_relative 'benchmark'
5
+ require_relative 'policy'
6
6
 
7
7
  module OpenSCAP
8
8
  module Xccdf
9
9
  class PolicyModel
10
10
  attr_reader :raw
11
11
 
12
- def initialize(b)
12
+ def initialize b
13
13
  case b
14
14
  when OpenSCAP::Xccdf::Benchmark
15
15
  @raw = OpenSCAP.xccdf_policy_model_new(b.raw)
@@ -27,7 +27,9 @@ module OpenSCAP
27
27
  end
28
28
 
29
29
  def policies
30
- @policies ||= policies_init
30
+ @policies ||= {}.tap do |policies|
31
+ each_policy { |p| policies[p.id] = p }
32
+ end
31
33
  end
32
34
 
33
35
  def destroy
@@ -42,16 +44,6 @@ module OpenSCAP
42
44
  yield OpenSCAP::Xccdf::Policy.new pointer
43
45
  end
44
46
  end
45
-
46
- private
47
-
48
- def policies_init
49
- policies = {}
50
- each_policy do |policy|
51
- policies[policy.id] = policy
52
- end
53
- policies
54
- end
55
47
  end
56
48
  end
57
49
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'openscap/text'
4
- require 'openscap/xccdf/item_common'
4
+ require_relative 'item_common'
5
5
 
6
6
  module OpenSCAP
7
7
  module Xccdf
@@ -9,7 +9,7 @@ module OpenSCAP
9
9
  include ItemCommon
10
10
  attr_reader :raw
11
11
 
12
- def initialize(p)
12
+ def initialize p
13
13
  case p
14
14
  when FFI::Pointer
15
15
  @raw = p
@@ -4,31 +4,15 @@ module OpenSCAP
4
4
  module Xccdf
5
5
  class Reference
6
6
  def initialize(raw)
7
- raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" \
8
- unless raw.is_a?(FFI::Pointer)
7
+ raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" unless raw.is_a?(FFI::Pointer)
9
8
 
10
9
  @raw = raw
11
10
  end
12
11
 
13
- def title
14
- OpenSCAP.oscap_reference_get_title(@raw)
15
- end
16
-
17
- def href
18
- OpenSCAP.oscap_reference_get_href(@raw)
19
- end
20
-
21
- def html_link
22
- "<a href='#{href}'>#{title}</a>"
23
- end
24
-
25
- def to_hash
26
- {
27
- title:,
28
- href:,
29
- html_link:
30
- }
31
- end
12
+ def title = OpenSCAP.oscap_reference_get_title @raw
13
+ def href = OpenSCAP.oscap_reference_get_href @raw
14
+ def html_link = "<a href='#{href}'>#{title}</a>"
15
+ def to_hash = { title:, href:, html_link: }
32
16
  end
33
17
  end
34
18
  attach_function :oscap_reference_get_href, [:pointer], :string
@@ -1,15 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'openscap/exceptions'
4
- require 'openscap/xccdf/item'
5
- require 'openscap/xccdf/fix'
6
- require 'openscap/xccdf/ident'
4
+ require_relative 'item'
5
+ require_relative 'fix'
6
+ require_relative 'fixtext'
7
+ require_relative 'ident'
7
8
 
8
9
  module OpenSCAP
9
10
  module Xccdf
10
11
  class Rule < Item
11
12
  def severity
12
- severity = OpenSCAP.xccdf_rule_get_severity(@raw)
13
+ severity = OpenSCAP.xccdf_rule_get_severity @raw
13
14
  severity_mapping = {
14
15
  xccdf_level_not_defined: 'Not defined',
15
16
  xccdf_unknown: 'Unknown',
@@ -21,12 +22,30 @@ module OpenSCAP
21
22
  severity_mapping[severity] || severity_mapping[:xccdf_unknown]
22
23
  end
23
24
 
24
- def fixes
25
- fixes = []
25
+ def each_fix(&)
26
26
  OpenSCAP._iterate over: OpenSCAP.xccdf_rule_get_fixes(@raw), as: 'xccdf_fix' do |pointer|
27
- fixes << OpenSCAP::Xccdf::Fix.new(pointer)
27
+ yield OpenSCAP::Xccdf::Fix.new pointer
28
+ end
29
+ end
30
+
31
+ def each_fixtext(&)
32
+ OpenSCAP._iterate over: OpenSCAP.xccdf_rule_get_fixtexts(@raw), as: 'xccdf_fixtext' do |pointer|
33
+ yield OpenSCAP::Xccdf::Fixtext.new pointer
34
+ end
35
+ end
36
+
37
+ def fixtexts
38
+ @fixtexts ||= [].tap do |fixtexts|
39
+ each_fixtext { |ft| fixtexts << ft }
40
+ end
41
+ end
42
+
43
+ def fixes
44
+ @fixes ||= [].tap do |fixes|
45
+ each_fix do |fix|
46
+ fixes << fix
47
+ end
28
48
  end
29
- fixes
30
49
  end
31
50
 
32
51
  def idents
@@ -52,6 +71,11 @@ module OpenSCAP
52
71
  attach_function :xccdf_fix_iterator_next, [:pointer], :pointer
53
72
  attach_function :xccdf_fix_iterator_free, [:pointer], :void
54
73
 
74
+ attach_function :xccdf_rule_get_fixtexts, [:pointer], :pointer
75
+ attach_function :xccdf_fixtext_iterator_has_more, [:pointer], :bool
76
+ attach_function :xccdf_fixtext_iterator_next, [:pointer], :pointer
77
+ attach_function :xccdf_fixtext_iterator_free, [:pointer], :void
78
+
55
79
  attach_function :xccdf_rule_get_idents, [:pointer], :pointer
56
80
  attach_function :xccdf_ident_iterator_has_more, [:pointer], :bool
57
81
  attach_function :xccdf_ident_iterator_next, [:pointer], :pointer
@@ -6,7 +6,7 @@ require 'openscap/text'
6
6
  module OpenSCAP
7
7
  module Xccdf
8
8
  class RuleResult
9
- def initialize(t)
9
+ def initialize t
10
10
  case t
11
11
  when FFI::Pointer
12
12
  @rr = t
@@ -20,11 +20,10 @@ module OpenSCAP
20
20
  end
21
21
 
22
22
  def result
23
- OpenSCAP.xccdf_test_result_type_get_text \
24
- OpenSCAP.xccdf_rule_result_get_result(@rr)
23
+ OpenSCAP.xccdf_test_result_type_get_text OpenSCAP.xccdf_rule_result_get_result(@rr)
25
24
  end
26
25
 
27
- def override!(param)
26
+ def override! param
28
27
  validate_xccdf_result! param[:new_result]
29
28
  t = OpenSCAP::Text.new
30
29
  t.text = param[:raw_text]
@@ -41,7 +40,7 @@ module OpenSCAP
41
40
 
42
41
  private
43
42
 
44
- def validate_xccdf_result!(result_label)
43
+ def validate_xccdf_result! result_label
45
44
  if OpenSCAP::XccdfResult[result_label] > OpenSCAP::XccdfResult[:fixed]
46
45
  raise OpenSCAPError, "Could not recognize result type: '#{result_label}'"
47
46
  end
@@ -63,6 +62,5 @@ module OpenSCAP
63
62
  :notselected,
64
63
  :informational,
65
64
  :fixed)
66
- attach_function :xccdf_rule_result_override,
67
- [:pointer, XccdfResult, :string, :string, :pointer], :bool
65
+ attach_function :xccdf_rule_result_override, [:pointer, XccdfResult, :string, :string, :pointer], :bool
68
66
  end
@@ -3,7 +3,7 @@
3
3
  module OpenSCAP
4
4
  module Xccdf
5
5
  class Session
6
- def initialize(input_filename)
6
+ def initialize input_filename
7
7
  raise OpenSCAPError, 'No filename specified!' unless input_filename
8
8
 
9
9
  @input_filename = input_filename
@@ -12,25 +12,25 @@ module OpenSCAP
12
12
  end
13
13
 
14
14
  def sds?
15
- OpenSCAP.xccdf_session_is_sds(@s)
15
+ OpenSCAP.xccdf_session_is_sds @s
16
16
  end
17
17
 
18
- def load(opts = {})
18
+ def load opts = {}
19
19
  o = {
20
20
  datastream_id: nil,
21
21
  component_id: nil
22
- }.merge(opts)
22
+ }.merge opts
23
23
  if sds?
24
- OpenSCAP.xccdf_session_set_datastream_id(@s, o[:datastream_id])
25
- OpenSCAP.xccdf_session_set_component_id(@s, o[:component_id])
24
+ OpenSCAP.xccdf_session_set_datastream_id @s, o[:datastream_id]
25
+ OpenSCAP.xccdf_session_set_component_id @s, o[:component_id]
26
26
  end
27
27
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_load(@s).zero?
28
28
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_load_check_engine_plugins(@s).zero?
29
29
  end
30
30
 
31
- def profile=(p)
31
+ def profile= p
32
32
  @profile = p
33
- raise OpenSCAPError, "No profile '#{p}' found" if OpenSCAP.xccdf_session_set_profile_id(@s, p) == false
33
+ raise OpenSCAPError, "No profile '#{p}' found" unless OpenSCAP.xccdf_session_set_profile_id(@s, p)
34
34
  end
35
35
 
36
36
  def evaluate
@@ -49,13 +49,13 @@ module OpenSCAP
49
49
  oval_results: false,
50
50
  oval_variables: false,
51
51
  engines_results: false
52
- }.merge!(opts)
52
+ }.merge! opts
53
53
  export_targets o
54
54
  export
55
55
  end
56
56
 
57
57
  def destroy
58
- OpenSCAP.xccdf_session_free(@s)
58
+ OpenSCAP.xccdf_session_free @s
59
59
  @s = nil
60
60
  end
61
61
 
@@ -68,7 +68,7 @@ module OpenSCAP
68
68
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_export_arf(@s).zero?
69
69
  end
70
70
 
71
- def export_targets(opts = {})
71
+ def export_targets opts = {}
72
72
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_set_arf_export(@s, opts[:rds_file])
73
73
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_set_xccdf_export(@s, opts[:xccdf_file])
74
74
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_set_report_export(@s, opts[:report_file])
@@ -4,8 +4,7 @@ module OpenSCAP
4
4
  module Xccdf
5
5
  class Status
6
6
  def initialize(raw)
7
- raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" \
8
- unless raw.is_a?(FFI::Pointer)
7
+ raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{raw}'" unless raw.is_a?(FFI::Pointer)
9
8
 
10
9
  @raw = raw
11
10
  end
@@ -19,24 +19,18 @@ module OpenSCAP
19
19
  end
20
20
 
21
21
  def profiles
22
- @profiles ||= profiles_init
22
+ @profiles ||= {}.tap do |profiles|
23
+ OpenSCAP._iterate over: OpenSCAP.xccdf_tailoring_get_profiles(@raw), as: 'xccdf_profile' do |pointer|
24
+ profile = OpenSCAP::Xccdf::Profile.new pointer
25
+ profiles[profile.id] = profile
26
+ end
27
+ end
23
28
  end
24
29
 
25
30
  def destroy
26
31
  OpenSCAP.xccdf_tailoring_free @raw
27
32
  @raw = nil
28
33
  end
29
-
30
- private
31
-
32
- def profiles_init
33
- profiles = {}
34
- OpenSCAP._iterate over: OpenSCAP.xccdf_tailoring_get_profiles(@raw), as: 'xccdf_profile' do |pointer|
35
- profile = OpenSCAP::Xccdf::Profile.new pointer
36
- profiles[profile.id] = profile
37
- end
38
- profiles
39
- end
40
34
  end
41
35
  end
42
36
 
@@ -10,7 +10,7 @@ module OpenSCAP
10
10
  class TestResult
11
11
  attr_reader :rr, :raw
12
12
 
13
- def initialize(t)
13
+ def initialize t
14
14
  case t
15
15
  when OpenSCAP::Source
16
16
  @raw = OpenSCAP.xccdf_result_import_source(t.raw)
@@ -25,15 +25,23 @@ module OpenSCAP
25
25
  end
26
26
 
27
27
  def id
28
- OpenSCAP.xccdf_result_get_id(@raw)
28
+ OpenSCAP.xccdf_result_get_id @raw
29
29
  end
30
30
 
31
31
  def profile
32
- OpenSCAP.xccdf_result_get_profile(@raw)
32
+ OpenSCAP.xccdf_result_get_profile @raw
33
33
  end
34
34
 
35
35
  def score
36
- @score ||= score_init
36
+ @score ||= {}.tap do |scores|
37
+ OpenSCAP._iterate over: OpenSCAP.xccdf_result_get_scores(@raw), as: 'xccdf_score' do |s|
38
+ scores[OpenSCAP.xccdf_score_get_system(s)] = {
39
+ system: OpenSCAP.xccdf_score_get_system(s),
40
+ value: OpenSCAP.xccdf_score_get_score(s),
41
+ max: OpenSCAP.xccdf_score_get_maximum(s)
42
+ }
43
+ end
44
+ end
37
45
  end
38
46
 
39
47
  def score!(benchmark)
@@ -63,18 +71,6 @@ module OpenSCAP
63
71
  @rr[rr.id] = rr
64
72
  end
65
73
  end
66
-
67
- def score_init
68
- scores = {}
69
- OpenSCAP._iterate over: OpenSCAP.xccdf_result_get_scores(@raw), as: 'xccdf_score' do |s|
70
- scores[OpenSCAP.xccdf_score_get_system(s)] = {
71
- system: OpenSCAP.xccdf_score_get_system(s),
72
- value: OpenSCAP.xccdf_score_get_score(s),
73
- max: OpenSCAP.xccdf_score_get_maximum(s)
74
- }
75
- end
76
- scores
77
- end
78
74
  end
79
75
  end
80
76
 
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'openscap/exceptions'
4
- require 'openscap/xccdf/item'
3
+ require_relative 'item'
5
4
 
6
5
  module OpenSCAP
7
6
  module Xccdf