oscal 0.2.3 → 0.4.0

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 (99) hide show
  1. checksums.yaml +4 -4
  2. data/lib/oscal/v1_2_1/all_models.rb +16379 -0
  3. data/lib/oscal/v1_2_1.rb +109 -0
  4. data/lib/oscal/version.rb +1 -1
  5. data/lib/oscal/version_registry.rb +183 -0
  6. data/lib/oscal/versioned.rb +88 -0
  7. data/lib/oscal.rb +93 -3
  8. metadata +38 -111
  9. data/.docker/Dockerfile +0 -19
  10. data/.docker/Makefile +0 -43
  11. data/.docker/docker-compose.yml +0 -14
  12. data/.docker/readme.md +0 -61
  13. data/.github/workflows/rake.yml +0 -15
  14. data/.github/workflows/release.yml +0 -24
  15. data/.gitignore +0 -13
  16. data/.gitmodules +0 -3
  17. data/.hound.yml +0 -5
  18. data/.rspec +0 -2
  19. data/.rubocop.yml +0 -10
  20. data/.ruby-version +0 -1
  21. data/CODE_OF_CONDUCT.md +0 -84
  22. data/Gemfile +0 -16
  23. data/LICENSE +0 -25
  24. data/Makefile +0 -1
  25. data/README.adoc +0 -115
  26. data/Rakefile +0 -19
  27. data/bin/console +0 -30
  28. data/bin/rspec +0 -27
  29. data/bin/setup +0 -8
  30. data/docker-compose.yml +0 -1
  31. data/exe/convert2oscalyaml.rb +0 -560
  32. data/lib/oscal/add.rb +0 -26
  33. data/lib/oscal/address.rb +0 -22
  34. data/lib/oscal/address_line.rb +0 -11
  35. data/lib/oscal/alter.rb +0 -22
  36. data/lib/oscal/assembly.rb +0 -120
  37. data/lib/oscal/assessment_plan.rb +0 -28
  38. data/lib/oscal/assessment_result.rb +0 -230
  39. data/lib/oscal/attribute_type_hash.rb +0 -81
  40. data/lib/oscal/back_matter.rb +0 -20
  41. data/lib/oscal/base64_object.rb +0 -11
  42. data/lib/oscal/base_class.rb +0 -50
  43. data/lib/oscal/catalog.rb +0 -63
  44. data/lib/oscal/choice.rb +0 -11
  45. data/lib/oscal/citation.rb +0 -22
  46. data/lib/oscal/combine.rb +0 -11
  47. data/lib/oscal/common_utils.rb +0 -35
  48. data/lib/oscal/constraint.rb +0 -20
  49. data/lib/oscal/control.rb +0 -28
  50. data/lib/oscal/custom.rb +0 -22
  51. data/lib/oscal/datatypes.rb +0 -50
  52. data/lib/oscal/document_id.rb +0 -11
  53. data/lib/oscal/email_address.rb +0 -11
  54. data/lib/oscal/exclude_control.rb +0 -22
  55. data/lib/oscal/external_id.rb +0 -11
  56. data/lib/oscal/group.rb +0 -33
  57. data/lib/oscal/guideline.rb +0 -11
  58. data/lib/oscal/hash_object.rb +0 -11
  59. data/lib/oscal/import_object.rb +0 -22
  60. data/lib/oscal/include_control.rb +0 -22
  61. data/lib/oscal/insert_control.rb +0 -22
  62. data/lib/oscal/link.rb +0 -11
  63. data/lib/oscal/list.rb +0 -160
  64. data/lib/oscal/location.rb +0 -31
  65. data/lib/oscal/location_uuid.rb +0 -11
  66. data/lib/oscal/logger.rb +0 -12
  67. data/lib/oscal/matching.rb +0 -11
  68. data/lib/oscal/member_of_organization.rb +0 -11
  69. data/lib/oscal/merge.rb +0 -20
  70. data/lib/oscal/metadata_block.rb +0 -36
  71. data/lib/oscal/modify.rb +0 -22
  72. data/lib/oscal/parameter.rb +0 -31
  73. data/lib/oscal/parsing_functions.rb +0 -19
  74. data/lib/oscal/part.rb +0 -24
  75. data/lib/oscal/party.rb +0 -36
  76. data/lib/oscal/party_uuid.rb +0 -11
  77. data/lib/oscal/profile.rb +0 -37
  78. data/lib/oscal/property.rb +0 -11
  79. data/lib/oscal/remove.rb +0 -11
  80. data/lib/oscal/resource.rb +0 -29
  81. data/lib/oscal/responsible_party.rb +0 -24
  82. data/lib/oscal/revision.rb +0 -23
  83. data/lib/oscal/rlink.rb +0 -20
  84. data/lib/oscal/role.rb +0 -22
  85. data/lib/oscal/select.rb +0 -20
  86. data/lib/oscal/serializer.rb +0 -76
  87. data/lib/oscal/set_parameter.rb +0 -31
  88. data/lib/oscal/telephone_number.rb +0 -11
  89. data/lib/oscal/test.rb +0 -11
  90. data/lib/oscal/url.rb +0 -11
  91. data/lib/oscal/value.rb +0 -37
  92. data/lib/oscal/with_id.rb +0 -40
  93. data/oscal.gemspec +0 -30
  94. data/sig/oscal.rbs +0 -4
  95. data/spec/oscal/assessment_plan_spec.rb +0 -21
  96. data/spec/oscal/catalog_spec.rb +0 -42
  97. data/spec/oscal_spec.rb +0 -18
  98. data/spec/sample_inputs/import-ap.json +0 -4
  99. data/spec/spec_helper.rb +0 -15
@@ -1,19 +0,0 @@
1
- module Oscal
2
- module ParsingFunctions
3
- def sym2str(key)
4
- if key.is_a?(Symbol)
5
- key.to_s.gsub("-", "_").gsub("class", "klass")
6
- elsif key.is_a?(String)
7
- key
8
- end
9
- end
10
-
11
- def str2sym(var)
12
- if var.is_a?(String)
13
- var.gsub("-", "_").gsub("class", "klass").to_sym
14
- elsif var.is_a?(Symbol)
15
- var
16
- end
17
- end
18
- end
19
- end
data/lib/oscal/part.rb DELETED
@@ -1,24 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class Part < Oscal::BaseClass
5
- KEY = %i(id name ns klass title props prose parts links)
6
-
7
- attr_accessor *KEY
8
-
9
- attr_serializable *KEY
10
-
11
- def set_value(key_name, val)
12
- case key_name
13
- when "props"
14
- Property.wrap(val)
15
- when "parts"
16
- Part.wrap(val)
17
- when "links"
18
- Link.wrap(val)
19
- else
20
- val
21
- end
22
- end
23
- end
24
- end
data/lib/oscal/party.rb DELETED
@@ -1,36 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class Party < Oscal::BaseClass
5
- KEY = %i(uuid type name short_name external_ids props links
6
- email_addresses telephone_numbers addresses location_uuids
7
- member_of_organizations remakrs)
8
-
9
- attr_accessor *KEY
10
-
11
- attr_serializable *KEY
12
-
13
- def set_value(key_name, val)
14
- case key_name
15
- when "external_ids"
16
- ExternalId.wrap(val)
17
- when "props"
18
- Property.wrap(val)
19
- when "links"
20
- Link.wrap(val)
21
- when "email_addresses"
22
- EmailAddress.wrap(val)
23
- when "telephone_numbers"
24
- TelephoneNumber.wrap(val)
25
- when "addresses"
26
- Address.wrap(val)
27
- when "location_uuids"
28
- LocationUuid.wrap(val)
29
- when "member_of_organizations"
30
- MemberOfOrganization.wrap(val)
31
- else
32
- val
33
- end
34
- end
35
- end
36
- end
@@ -1,11 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class PartyUuid < Oscal::BaseClass
5
- KEY = %i(val)
6
-
7
- attr_accessor *KEY
8
-
9
- attr_serializable *KEY
10
- end
11
- end
data/lib/oscal/profile.rb DELETED
@@ -1,37 +0,0 @@
1
- require_relative "serializer"
2
- require_relative "common_utils"
3
-
4
- module Oscal
5
- class Profile
6
- include Serializer
7
- include CommonUtils
8
-
9
- KEY = %i(uuid metadata imports merge modify back_matter)
10
- attr_accessor *KEY
11
-
12
- attr_serializable *KEY
13
-
14
- def initialize(uuid, metadata, imports, merge, modify, back_matter)
15
- @uuid = uuid
16
- @metadata = MetadataBlock.new(metadata)
17
- @imports = ImportObject.wrap(imports) if imports
18
- @merge = Merge.wrap(merge) if merge
19
- @modify = Modify.wrap(modify) if modify
20
- @back_matter = BackMatter.wrap(back_matter) if back_matter
21
- end
22
-
23
- def self.load_from_yaml(path)
24
- yaml_data = safe_load_yaml(path)
25
- yaml_profile = yaml_data["profile"]
26
-
27
- uuid = yaml_profile["uuid"]
28
- metadata = yaml_profile["metadata"]
29
- imports = yaml_profile["imports"]
30
- merge = yaml_profile["merge"]
31
- modify = yaml_profile["modify"]
32
- back_matter = yaml_profile["back-matter"]
33
-
34
- Profile.new(uuid, metadata, imports, merge, modify, back_matter)
35
- end
36
- end
37
- end
@@ -1,11 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class Property < Oscal::BaseClass
5
- KEY = %i(name uuid ns value klass remarks)
6
-
7
- attr_accessor *KEY
8
-
9
- attr_serializable *KEY
10
- end
11
- end
data/lib/oscal/remove.rb DELETED
@@ -1,11 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class Remove < Oscal::BaseClass
5
- KEY = %i(by_name by_class by_id by_item_name by_ns)
6
-
7
- attr_accessor *KEY
8
-
9
- attr_serializable *KEY
10
- end
11
- end
@@ -1,29 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class Resource < Oscal::BaseClass
5
- KEY = %i(uuid title description props docuement_ids citation rlinks
6
- base64 remarks)
7
-
8
- attr_accessor *KEY
9
-
10
- attr_serializable *KEY
11
-
12
- def set_value(key_name, val)
13
- case key_name
14
- when "props"
15
- Property.wrap(val)
16
- when "document_ids"
17
- DocumentId.wrap(val)
18
- when "citation"
19
- Citation.wrap(val)
20
- when "rlinks"
21
- Rlink.wrap(val)
22
- when "base64"
23
- Base64Object.wrap(val)
24
- else
25
- val
26
- end
27
- end
28
- end
29
- end
@@ -1,24 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class ResponsibleParty < Oscal::BaseClass
5
- KEY = %i(role_id party_uuids props links remakrs)
6
-
7
- attr_accessor *KEY
8
-
9
- attr_serializable *KEY
10
-
11
- def set_value(key_name, val)
12
- case key_name
13
- when "party_uuids"
14
- PartyUuid.wrap(val)
15
- when "props"
16
- Property.wrap(val)
17
- when "links"
18
- Link.wrap(val)
19
- else
20
- val
21
- end
22
- end
23
- end
24
- end
@@ -1,23 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class Revision < Oscal::BaseClass
5
- KEY = %i(title published last_modified version oscal_version
6
- props links remarks)
7
-
8
- attr_accessor *KEY
9
-
10
- attr_serializable *KEY
11
-
12
- def set_value(key_name, val)
13
- case key_name
14
- when "props"
15
- Property.wrap(val)
16
- when "links"
17
- Link.wrap(val)
18
- else
19
- val
20
- end
21
- end
22
- end
23
- end
data/lib/oscal/rlink.rb DELETED
@@ -1,20 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class Rlink < Oscal::BaseClass
5
- KEY = %i(href media_type hashes)
6
-
7
- attr_accessor *KEY
8
-
9
- attr_serializable *KEY
10
-
11
- def set_value(key_name, val)
12
- case key_name
13
- when "hashes"
14
- HashObject.wrap(val)
15
- else
16
- val
17
- end
18
- end
19
- end
20
- end
data/lib/oscal/role.rb DELETED
@@ -1,22 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class Role < Oscal::BaseClass
5
- KEY = %i(id title short_name description props links remakrs)
6
-
7
- attr_accessor *KEY
8
-
9
- attr_serializable *KEY
10
-
11
- def set_value(key_name, val)
12
- case key_name
13
- when "props"
14
- Property.wrap(val)
15
- when "links"
16
- Link.wrap(val)
17
- else
18
- val
19
- end
20
- end
21
- end
22
- end
data/lib/oscal/select.rb DELETED
@@ -1,20 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class Select < Oscal::BaseClass
5
- KEY = %i(how_many choice)
6
-
7
- attr_accessor *KEY
8
-
9
- attr_serializable *KEY
10
-
11
- def set_value(key_name, val)
12
- case key_name
13
- when "choice"
14
- Choice.wrap(val)
15
- else
16
- val
17
- end
18
- end
19
- end
20
- end
@@ -1,76 +0,0 @@
1
- require "yaml"
2
- require "json"
3
-
4
- module Oscal
5
- module Serializer
6
- def to_h
7
- instance_variables.each_with_object({}) do |var, hash|
8
- var_name = var.to_s.delete("@")
9
- hash[var_name] = instance_variable_get(var)
10
- end
11
- end
12
-
13
- def to_json(*args)
14
- to_h.to_json(*args)
15
- end
16
-
17
- def to_yaml
18
- to_h.to_yaml
19
- end
20
-
21
- def to_xml(builder)
22
- raise NotImplementedError, "#{self.class}#to_xml not implemented!"
23
- end
24
-
25
- def self.included(klass)
26
- klass.extend(ClassMethods)
27
- end
28
-
29
- module ClassMethods
30
- def from_h(data)
31
- new(*data.values_at(*attribute_names))
32
- end
33
-
34
- def from_json(json_string)
35
- data = JSON.parse(json_string)
36
- from_h(data)
37
- end
38
-
39
- def from_yaml(yaml_string)
40
- data = YAML.safe_load(yaml_string)
41
- from_h(data)
42
- end
43
-
44
- def from_xml(xml_element)
45
- raise NotImplementedError, "#{self}#from_xml not implemented!"
46
- end
47
-
48
- # Psych >= 4 requires permitted_classes to load such classes
49
- # https://github.com/ruby/psych/issues/533
50
- def safe_load_yaml(path)
51
- YAML.load_file(
52
- path,
53
- permitted_classes: [::Time, ::Date, ::DateTime],
54
- )
55
- rescue ArgumentError
56
- YAML.load_file(path)
57
- end
58
-
59
- private
60
-
61
- def attribute_names
62
- @attribute_names ||= []
63
- end
64
-
65
- def attr_serializable(*attrs)
66
- attrs.each do |attr|
67
- attribute_names << attr.to_sym
68
- define_method(attr) { instance_variable_get("@#{attr}") }
69
- define_method("#{attr}=") do |value|
70
- instance_variable_set("@#{attr}", value)
71
- end
72
- end
73
- end
74
- end
75
- end
76
- end
@@ -1,31 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class SetParameter < Oscal::BaseClass
5
- KEY = %i(param_id klass depneds_on props links label usage
6
- constraints guidelines values select)
7
-
8
- attr_accessor *KEY
9
-
10
- attr_serializable *KEY
11
-
12
- def set_value(key_name, val)
13
- case key_name
14
- when "props"
15
- Property.wrap(val)
16
- when "links"
17
- Link.wrap(val)
18
- when "constraints"
19
- Constraint.wrap(val)
20
- when "guidelines"
21
- Guideline.wrap(val)
22
- when "values"
23
- Value.wrap(val)
24
- when "select"
25
- Select.wrap(val)
26
- else
27
- val
28
- end
29
- end
30
- end
31
- end
@@ -1,11 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class TelephoneNumber < Oscal::BaseClass
5
- KEY = %i(type number)
6
-
7
- attr_accessor *KEY
8
-
9
- attr_serializable *KEY
10
- end
11
- end
data/lib/oscal/test.rb DELETED
@@ -1,11 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class Test < Oscal::BaseClass
5
- KEY = %i(expression remarks)
6
-
7
- attr_accessor *KEY
8
-
9
- attr_serializable *KEY
10
- end
11
- end
data/lib/oscal/url.rb DELETED
@@ -1,11 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class Url < Oscal::BaseClass
5
- KEY = %i(val)
6
-
7
- attr_accessor *KEY
8
-
9
- attr_serializable *KEY
10
- end
11
- end
data/lib/oscal/value.rb DELETED
@@ -1,37 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class Value < Oscal::BaseClass
5
- include Serializer
6
-
7
- KEY = %i(val)
8
- attr_accessor *KEY
9
-
10
- attr_serializable *KEY
11
-
12
- def self.wrap(obj)
13
- return obj if obj.is_a? Value
14
- return Value.new(obj) unless obj.is_a? Array
15
-
16
- obj.map do |x|
17
- Value.wrap(x)
18
- end
19
- end
20
-
21
- def initialize(options = {})
22
- unless options.is_a? Hash
23
- options = { "val" => options }
24
- end
25
-
26
- options.each_pair.each do |key, val|
27
- key_name = key.gsub("-", "_")
28
-
29
- unless KEY.include?(key_name.to_sym)
30
- raise UnknownAttributeError.new("Unknown key `#{key}` in Value")
31
- end
32
-
33
- self.send("#{key_name}=", val)
34
- end
35
- end
36
- end
37
- end
data/lib/oscal/with_id.rb DELETED
@@ -1,40 +0,0 @@
1
- require_relative "base_class"
2
-
3
- module Oscal
4
- class WithId < Oscal::BaseClass
5
- include Serializer
6
-
7
- KEY = %i(val)
8
-
9
- attr_accessor *KEY
10
-
11
- attr_serializable *KEY
12
-
13
- def self.wrap(obj)
14
- return obj if obj.is_a? WithId
15
- return WithId.new(obj) unless obj.is_a? Array
16
-
17
- obj.map do |x|
18
- WithId.wrap(x)
19
- end
20
- end
21
-
22
- def initialize(options = {})
23
- klass = self.class
24
-
25
- unless options.is_a? Hash
26
- options = { KEY.first.to_s => options }
27
- end
28
-
29
- options.each_pair.each do |key, val|
30
- key_name = key.gsub("-", "_")
31
-
32
- unless KEY.include?(key_name.to_sym)
33
- raise UnknownAttributeError.new("Unknown key `#{key}` in #{klass.name}")
34
- end
35
-
36
- send("#{key_name}=", val)
37
- end
38
- end
39
- end
40
- end
data/oscal.gemspec DELETED
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/oscal/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "oscal"
7
- spec.version = Oscal::VERSION
8
- spec.authors = ["Ribose Inc."]
9
- spec.email = ["open.source@ribose.com"]
10
-
11
- spec.summary = "Interact with OSCAL models"
12
- spec.description = "Ruby library and parser for OSCAL models"
13
- spec.homepage = "https://github.com/metanorma/oscal-ruby/"
14
- spec.license = "BSD-2-Clause"
15
-
16
- spec.metadata["homepage_uri"] = spec.homepage
17
- spec.metadata["source_code_uri"] = "https://github.com/metanorma/oscal-ruby/"
18
- spec.metadata["changelog_uri"] = "https://github.com/metanorma/oscal-ruby/CHANGELOG"
19
-
20
- spec.files = `git ls-files`.split("\n")
21
- spec.executables = `git ls-files -- exe/*`.split("\n").map do |f|
22
- File.basename(f)
23
- end
24
- spec.bindir = "exe"
25
- spec.require_paths = ["lib"]
26
- spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
27
-
28
- spec.add_dependency "yaml"
29
- spec.metadata["rubygems_mfa_required"] = "true"
30
- end
data/sig/oscal.rbs DELETED
@@ -1,4 +0,0 @@
1
- module Oscal
2
- VERSION: String
3
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../spec_helper"
4
-
5
- RSpec.describe Oscal::AssessmentPlan::AssessmentPlan do
6
- let(:fields) do
7
- {
8
- uuid: "4d56d1ab-d91e-4f7a-9055-1883c4e580b8",
9
- metadata: {},
10
- import_ssp: { href: "./ssp.json" },
11
- reviewed_controls: { control_selections: [] },
12
- }
13
- end
14
- subject { described_class.new(fields) }
15
-
16
- describe "#to_json" do
17
- it "generates a json representation of the assessment plan" do
18
- expect(subject.to_json).to eq(JSON.generate(fields))
19
- end
20
- end
21
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../spec_helper"
4
-
5
- RSpec.describe Oscal::Catalog do
6
- let(:subject) do
7
- Oscal::Catalog.load_from_yaml(
8
- "spec/oscal-content/examples/catalog/yaml/basic-catalog.yaml",
9
- )
10
- end
11
-
12
- it "parses oscal-content YAML" do
13
- expect(subject.class).to be Oscal::Catalog
14
- expect(subject.groups.first.groups.first.controls.first.parts.first.prose).to eq(
15
- "To establish a management framework to initiate and " \
16
- "control the implementation and operation of information security " \
17
- "within the organization.",
18
- )
19
- end
20
-
21
- it "gets all controls" do
22
- expect(subject.class).to be Oscal::Catalog
23
- expect(subject.get_all_controls.count).to eq(4)
24
- end
25
-
26
- it "find object by id" do
27
- obj = subject.find_object_by_id("s2.1_smt")
28
- expect(obj.to_s).to match(/Oscal::Part/)
29
- expect(obj.prose).to eq(
30
- "To limit access to information and information processing facilities.",
31
- )
32
- end
33
-
34
- it "find object by uuid" do
35
- uuid = "74c8ba1e-5cd4-4ad1-bbfd-d888e2f6c724"
36
- obj = subject.find_object_by_id(
37
- uuid, subject, :uuid
38
- )
39
- expect(obj.to_s).to match(/Oscal::Catalog/)
40
- expect(obj.uuid).to eq(uuid)
41
- end
42
- end
data/spec/oscal_spec.rb DELETED
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Oscal do
4
- it "has a version number" do
5
- expect(Oscal::VERSION).not_to be nil
6
- end
7
-
8
- it "allows setting a new logger" do
9
- logger = double(Logger)
10
- Oscal::ParsingLogger.logger = logger
11
-
12
- class LoggerTest
13
- include Oscal::ParsingLogger
14
- end
15
-
16
- expect(LoggerTest.new.get_logger).to eq logger
17
- end
18
- end
@@ -1,4 +0,0 @@
1
- {
2
- "href": "../3-implementation/ssp.oscal.xml",
3
- "remarks": "These are valid remarks."
4
- }
data/spec/spec_helper.rb DELETED
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "oscal"
4
-
5
- RSpec.configure do |config|
6
- # Enable flags like --only-failures and --next-failure
7
- config.example_status_persistence_file_path = ".rspec_status"
8
-
9
- # Disable RSpec exposing methods globally on `Module` and `main`
10
- config.disable_monkey_patching!
11
-
12
- config.expect_with :rspec do |c|
13
- c.syntax = :expect
14
- end
15
- end