rspec-qbec 0.0.1.beta.0 → 0.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f65802ef75cba1e2c39d84919083fa5f129fcef1927a88f2d2a148a586fd0cfe
4
- data.tar.gz: d8a5ee644b2d896980581ff7e47260f4071f79d290c621e486fac5d25de9e9a3
3
+ metadata.gz: 64b145823d27de4d0cb99a1b624466f7c9824d7fbbf169f5478e54ceca85cd2f
4
+ data.tar.gz: 4489cbe13256839d4cf0667328425ed75fad0b8cb90cde3645497551591ea2a8
5
5
  SHA512:
6
- metadata.gz: 8d1ac8fbd82c9b7196dd6841e1f9820c5ef227fae11cc480cd1dd268d6bb7f46ea9264d63397512098614a769f82076c759fa2465de31fa5c55b08c0a7841c03
7
- data.tar.gz: 984c050fd1c5e4aca0f3ae5d713c7cfaf696e4151a308fa99a9019484c5d66c350b5c2b93fb42289d0cc6b97ce5d12378f3dba9bda3ed342181093dcf56e4744
6
+ metadata.gz: 4824d6f3c54e7bd8aecb30b66932cee744c43e01d0326dab0ab97b63770ae6a4697b431a1f7d69a0330cbb9b22130e0f36f4504bab9236e2c9af5d5a708fdb28
7
+ data.tar.gz: d5a29c17889733c71f13d5cca270b841b36c6c9186dd07842a6cede3b6c0e73b899342cc27f220b31b6bc9f35f79a90c372210d32451426c8984cf1395252972
data/README.md ADDED
@@ -0,0 +1,30 @@
1
+ RSpec::Qbec
2
+
3
+ ### Init
4
+
5
+ ```rb
6
+ # spec_helper.rb
7
+
8
+ # Example:
9
+ require 'rspec/qbec'
10
+
11
+ RSpec.configure do |config|
12
+ config.qbec_root = 'qbec/project'
13
+ end
14
+ ```
15
+
16
+
17
+ ### Example test
18
+
19
+ ```rb
20
+ let!(:cmd) { run_qbec('prod', '-c namespace') }
21
+ let!(:namespaces) { yaml(cmd[0], 'Namespaces') }
22
+
23
+ it 'have size' do
24
+ expect(namespaces.size).to eq(1)
25
+ end
26
+
27
+ it 'have name' do
28
+ expect(namespaces.metadata.name).to eq('myns')
29
+ end
30
+ ```
@@ -6,57 +6,60 @@ require 'tmpdir'
6
6
 
7
7
  module RSpec
8
8
  module Qbec
9
- def run(cmd)
10
- Open3.capture3(cmd)
11
- end
12
-
13
- def run_qbec(env = '', args = '')
14
- run("qbec --root #{RSpec.configuration.qbec_root} show #{args} #{env}")
15
- end
9
+ # Helpers for run and parse qbec output
10
+ module Helpers
11
+ def run(cmd)
12
+ Open3.capture3(cmd)
13
+ end
16
14
 
17
- def to_ostruct(object)
18
- case object
19
- when Hash
20
- OpenStruct.new(object.transform_values { |v| to_ostruct(v) })
21
- when Array
22
- object.map { |x| to_ostruct(x) }
23
- else
24
- object
15
+ def run_qbec(env = '', args = '')
16
+ run("qbec --root #{RSpec.configuration.qbec_root} show #{args} #{env}")
25
17
  end
26
- end
27
18
 
28
- def yaml(str, kind = '')
29
- matches = str.split(/(?:\n+|\A)---(?:\n+|\Z)/m)
30
- res = []
31
- matches.each do |v|
32
- res << to_ostruct(YAML.safe_load(v)) if v != ''
19
+ def to_ostruct(object)
20
+ case object
21
+ when Hash
22
+ OpenStruct.new(object.transform_values { |v| to_ostruct(v) })
23
+ when Array
24
+ object.map { |x| to_ostruct(x) }
25
+ else
26
+ object
27
+ end
33
28
  end
34
- if kind != ''
35
- kind = kind.downcase
36
- res = res.select { |v| v.kind.downcase == kind }
29
+
30
+ def yaml(str, kind = '')
31
+ matches = str.split(/(?:\n+|\A)---(?:\n+|\Z)/m)
32
+ res = []
33
+ matches.each do |v|
34
+ res << to_ostruct(YAML.safe_load(v)) if v != ''
35
+ end
36
+ if kind != ''
37
+ kind = kind.downcase
38
+ res = res.select { |v| v.kind.downcase == kind }
39
+ end
40
+ res
37
41
  end
38
- res
39
- end
40
42
 
41
- def yaml_several(str, template)
42
- match = str.match(/#{regexp_source(template)}\n(.+?)\n(# Source|\z)/m)
43
- return if match.nil?
43
+ def yaml_several(str, template)
44
+ match = str.match(/#{regexp_source(template)}\n(.+?)\n(# Source|\z)/m)
45
+ return if match.nil?
44
46
 
45
- str_ar = match[1].split('---')
46
- yamls = str_ar.each_with_object([]) do |el, res|
47
- res << to_ostruct(YAML.safe_load(el))
47
+ str_ar = match[1].split('---')
48
+ yamls = str_ar.each_with_object([]) do |el, res|
49
+ res << to_ostruct(YAML.safe_load(el))
50
+ end
51
+ yamls.reject { |el| el == false }.compact
48
52
  end
49
- yamls.reject { |el| el == false }.compact
50
- end
51
53
 
52
- def write_file(str)
53
- file_path = ''
54
- loop do
55
- file_path = Dir.tmpdir + "/qbec_#{DateTime.now.strftime('%Q')}"
56
- break unless File.exist?(file_path)
54
+ def write_file(str)
55
+ file_path = ''
56
+ loop do
57
+ file_path = Dir.tmpdir + "/qbec_#{DateTime.now.strftime('%Q')}.yml"
58
+ break unless File.exist?(file_path)
59
+ end
60
+ File.open(file_path, 'w') { |file| file.write(str) }
61
+ file_path
57
62
  end
58
- File.open(file_path, 'w') { |file| file.write(str) }
59
- file_path
60
63
  end
61
64
  end
62
65
  end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Monkeypatch OpensSTruct for transofrm into hashes
4
+ class OpenStruct
5
+ def deep_to_h
6
+ to_h.transform_values do |v|
7
+ v.is_a?(OpenStruct) ? v.deep_to_h : v
8
+ end
9
+ end
10
+ end
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RSpec
4
+ # Qbec module with version
4
5
  module Qbec
5
- VERSION = ::Gem::Version.new('0.0.1.beta.0')
6
+ VERSION = ::Gem::Version.new('0.0.3')
6
7
 
7
8
  def self.version
8
9
  VERSION
data/lib/rspec/qbec.rb CHANGED
@@ -5,7 +5,7 @@ require 'rspec/qbec/version'
5
5
  require 'rspec/qbec/helper'
6
6
 
7
7
  RSpec.configure do |config|
8
- config.include(RSpec::Qbec)
8
+ config.include(RSpec::Qbec::Helpers)
9
9
 
10
10
  config.add_setting(:qbec_root, default: 'qbec')
11
11
  end
data/rspec-qbec.gemspec CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require 'rspec/qbec/version'
@@ -10,13 +12,14 @@ Gem::Specification.new do |spec|
10
12
  spec.email = 'stammru@gmail.com'
11
13
 
12
14
  spec.summary = 'Helpers for qbec run'
13
- spec.description = 'RSpec::Wait enables time-resilient expectations in your RSpec test suite.' # rubocop:disable Metrics/LineLength
15
+ spec.description = 'RSpec::Qbec add helpers to run and read from qbec'
14
16
  spec.homepage = 'https://github.com/stamm/rspec-qbec'
15
17
  spec.license = 'MIT'
16
18
 
17
19
  spec.files = `git ls-files -z`.split("\x0")
18
20
  spec.test_files = spec.files.grep(/^spec/)
19
21
 
22
+ spec.require_paths = ['lib']
20
23
 
21
24
  spec.add_runtime_dependency 'rspec', '~> 3'
22
25
  spec.add_development_dependency 'bundler'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-qbec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.beta.0
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rustam Zagirov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-21 00:00:00.000000000 Z
11
+ date: 2022-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -52,15 +52,17 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- description: RSpec::Wait enables time-resilient expectations in your RSpec test suite.
55
+ description: RSpec::Qbec add helpers to run and read from qbec
56
56
  email: stammru@gmail.com
57
57
  executables: []
58
58
  extensions: []
59
59
  extra_rdoc_files: []
60
60
  files:
61
61
  - ".gitignore"
62
+ - README.md
62
63
  - lib/rspec/qbec.rb
63
64
  - lib/rspec/qbec/helper.rb
65
+ - lib/rspec/qbec/openstruct.rb
64
66
  - lib/rspec/qbec/version.rb
65
67
  - rspec-qbec.gemspec
66
68
  homepage: https://github.com/stamm/rspec-qbec
@@ -78,11 +80,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
78
80
  version: '0'
79
81
  required_rubygems_version: !ruby/object:Gem::Requirement
80
82
  requirements:
81
- - - ">"
83
+ - - ">="
82
84
  - !ruby/object:Gem::Version
83
- version: 1.3.1
85
+ version: '0'
84
86
  requirements: []
85
- rubygems_version: 3.1.2
87
+ rubygems_version: 3.1.6
86
88
  signing_key:
87
89
  specification_version: 4
88
90
  summary: Helpers for qbec run