chef-apply 0.4.6 → 0.4.9

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 (40) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -7
  3. data/chef-apply.gemspec +3 -3
  4. data/lib/chef_apply/version.rb +1 -1
  5. metadata +3 -38
  6. data/README.md +0 -62
  7. data/spec/fixtures/custom_config.toml +0 -2
  8. data/spec/integration/chef-run_spec.rb +0 -41
  9. data/spec/integration/fixtures/chef_help.out +0 -70
  10. data/spec/integration/fixtures/chef_version.out +0 -1
  11. data/spec/integration/spec_helper.rb +0 -55
  12. data/spec/spec_helper.rb +0 -154
  13. data/spec/support/matchers/output_to_terminal.rb +0 -36
  14. data/spec/unit/action/base_spec.rb +0 -60
  15. data/spec/unit/action/converge_target/ccr_failure_mapper_spec.rb +0 -106
  16. data/spec/unit/action/converge_target_spec.rb +0 -400
  17. data/spec/unit/action/generate_local_policy_spec.rb +0 -114
  18. data/spec/unit/action/generate_temp_cookbook/recipe_lookup_spec.rb +0 -122
  19. data/spec/unit/action/generate_temp_cookbook/temp_cookbook_spec.rb +0 -198
  20. data/spec/unit/action/generate_temp_cookbook_spec.rb +0 -73
  21. data/spec/unit/action/install_chef/minimum_chef_version_spec.rb +0 -90
  22. data/spec/unit/action/install_chef_spec.rb +0 -164
  23. data/spec/unit/cli/options_spec.rb +0 -75
  24. data/spec/unit/cli/validation_spec.rb +0 -81
  25. data/spec/unit/cli_spec.rb +0 -475
  26. data/spec/unit/config_spec.rb +0 -70
  27. data/spec/unit/file_fetcher_spec.rb +0 -40
  28. data/spec/unit/fixtures/multi-error.out +0 -2
  29. data/spec/unit/log_spec.rb +0 -37
  30. data/spec/unit/startup_spec.rb +0 -323
  31. data/spec/unit/target_host/linux_spec.rb +0 -57
  32. data/spec/unit/target_host/windows_spec.rb +0 -43
  33. data/spec/unit/target_host_spec.rb +0 -297
  34. data/spec/unit/target_resolver_spec.rb +0 -380
  35. data/spec/unit/telemeter/sender_spec.rb +0 -140
  36. data/spec/unit/telemeter_spec.rb +0 -191
  37. data/spec/unit/text/error_translation_spec.rb +0 -109
  38. data/spec/unit/ui/error_printer_spec.rb +0 -196
  39. data/spec/unit/ui/terminal_spec.rb +0 -119
  40. data/spec/unit/version_spec.rb +0 -31
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 79e301aab0d20ec072e87597869b55d24958945f0fb1cfa774841929cb5eaa80
4
- data.tar.gz: e34804469b8ed16dfc9729f3229abc60d0714358146f04ca3a494a70dcef6a96
3
+ metadata.gz: a188a9cccc61b37402d6850df1ffa3020d123b88b71d04788e14487f2f0e28b9
4
+ data.tar.gz: a9f619cb737762fd8c8e06c6152e714708c91b51e4a4de8cd373c20b81ccdb32
5
5
  SHA512:
6
- metadata.gz: 251203d054f4ee1c8319b4b12e40a2778008f603e79530750875686facc0b2a8ec72e40425a1f643e91187882224b04af6a0c6d36698f7d341a35e104ed2c036
7
- data.tar.gz: 107872f223933ca095df7e46afbf22f1260c05339531fb8c51c2e54007203e63f4e4ea4089f30abd75e2a20bd09bd1d4e56d44d21fb278e5e36e04d5db655ff7
6
+ metadata.gz: a790c11592c8e5e6d2abf3456513913cf9e0438a71dc74fb31946d3278ed1f167cb136d781d890db054cb2200794bc83cb3a9f3ed656e6e1d8d6e4624397403a
7
+ data.tar.gz: 24442c737983071f465757df9da2231c99dda4bbbfb0ab2999e60c1910e3c49bfb2cbaa4312bc091d46bf5998fa8483a9755c534edc0b8329f2a7e792046f042
data/Gemfile CHANGED
@@ -17,7 +17,7 @@
17
17
 
18
18
  source "https://rubygems.org"
19
19
  gemspec
20
- # NOTE: do not submit PRs to add pry as a dep, add to your Gemfile.local
20
+
21
21
  group :development do
22
22
  gem "chefstyle"
23
23
  gem "rake", ">= 10.1.0"
@@ -37,9 +37,3 @@ group :debug do
37
37
  gem "pry-stack_explorer"
38
38
  gem "rb-readline"
39
39
  end
40
-
41
- instance_eval(ENV["GEMFILE_MOD"]) if ENV["GEMFILE_MOD"]
42
-
43
- # If you want to load debugging tools into the bundle exec sandbox,
44
- # add these additional dependencies into Gemfile.local
45
- eval_gemfile(__FILE__ + ".local") if File.exist?(__FILE__ + ".local")
@@ -31,10 +31,10 @@ Gem::Specification.new do |spec|
31
31
  spec.license = "Apache-2.0"
32
32
  spec.required_ruby_version = ">= 2.5.0"
33
33
 
34
- spec.files = %w{Rakefile LICENSE README.md warning.txt} +
34
+ spec.files = %w{Rakefile LICENSE warning.txt} +
35
35
  Dir.glob("Gemfile*") + # Includes Gemfile and locks
36
36
  Dir.glob("*.gemspec") +
37
- Dir.glob("{bin,i18n,lib,spec}/**/*", File::FNM_DOTMATCH).reject { |f| File.directory?(f) }
37
+ Dir.glob("{bin,i18n,lib}/**/*", File::FNM_DOTMATCH).reject { |f| File.directory?(f) }
38
38
  spec.bindir = "bin"
39
39
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
40
40
  spec.require_paths = ["lib"]
@@ -48,7 +48,7 @@ Gem::Specification.new do |spec|
48
48
  # localization gem...
49
49
  spec.add_dependency "toml-rb" # This isn't ideal because mixlib-config uses 'tomlrb'
50
50
  # but that library does not support a dumper
51
- spec.add_dependency "train", "~> 3.0" # remote connection management over ssh, winrm
51
+ spec.add_dependency "train-core", "~> 3.0" # remote connection management over ssh, winrm
52
52
  spec.add_dependency "train-winrm" # winrm transports were pulled out into this plugin
53
53
  spec.add_dependency "pastel" # A color library
54
54
  spec.add_dependency "tty-spinner" # Pretty output for status updates in the CLI
@@ -16,5 +16,5 @@
16
16
  #
17
17
 
18
18
  module ChefApply
19
- VERSION = "0.4.6".freeze
19
+ VERSION = "0.4.9".freeze
20
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-apply
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
4
+ version: 0.4.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chef Software, Inc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-04 00:00:00.000000000 Z
11
+ date: 2019-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mixlib-cli
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: train
98
+ name: train-core
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
@@ -236,7 +236,6 @@ extra_rdoc_files: []
236
236
  files:
237
237
  - Gemfile
238
238
  - LICENSE
239
- - README.md
240
239
  - Rakefile
241
240
  - bin/chef-run
242
241
  - chef-apply.gemspec
@@ -280,40 +279,6 @@ files:
280
279
  - lib/chef_apply/ui/terminal.rb
281
280
  - lib/chef_apply/ui/terminal/job.rb
282
281
  - lib/chef_apply/version.rb
283
- - spec/fixtures/custom_config.toml
284
- - spec/integration/chef-run_spec.rb
285
- - spec/integration/fixtures/chef_help.out
286
- - spec/integration/fixtures/chef_version.out
287
- - spec/integration/spec_helper.rb
288
- - spec/spec_helper.rb
289
- - spec/support/matchers/output_to_terminal.rb
290
- - spec/unit/action/base_spec.rb
291
- - spec/unit/action/converge_target/ccr_failure_mapper_spec.rb
292
- - spec/unit/action/converge_target_spec.rb
293
- - spec/unit/action/generate_local_policy_spec.rb
294
- - spec/unit/action/generate_temp_cookbook/recipe_lookup_spec.rb
295
- - spec/unit/action/generate_temp_cookbook/temp_cookbook_spec.rb
296
- - spec/unit/action/generate_temp_cookbook_spec.rb
297
- - spec/unit/action/install_chef/minimum_chef_version_spec.rb
298
- - spec/unit/action/install_chef_spec.rb
299
- - spec/unit/cli/options_spec.rb
300
- - spec/unit/cli/validation_spec.rb
301
- - spec/unit/cli_spec.rb
302
- - spec/unit/config_spec.rb
303
- - spec/unit/file_fetcher_spec.rb
304
- - spec/unit/fixtures/multi-error.out
305
- - spec/unit/log_spec.rb
306
- - spec/unit/startup_spec.rb
307
- - spec/unit/target_host/linux_spec.rb
308
- - spec/unit/target_host/windows_spec.rb
309
- - spec/unit/target_host_spec.rb
310
- - spec/unit/target_resolver_spec.rb
311
- - spec/unit/telemeter/sender_spec.rb
312
- - spec/unit/telemeter_spec.rb
313
- - spec/unit/text/error_translation_spec.rb
314
- - spec/unit/ui/error_printer_spec.rb
315
- - spec/unit/ui/terminal_spec.rb
316
- - spec/unit/version_spec.rb
317
282
  - warning.txt
318
283
  homepage: https://github.com/chef/chef-apply
319
284
  licenses:
data/README.md DELETED
@@ -1,62 +0,0 @@
1
- # Chef Apply
2
- [![Gem Version](https://badge.fury.io/rb/chef-apply.svg)](https://badge.fury.io/rb/chef-apply)
3
-
4
- The ad-hoc execution tool for the Chef ecosystem.
5
-
6
- **Umbrella Project**: [Workstation](https://github.com/chef/chef-oss-practices/blob/master/projects/chef-workstation.md)
7
-
8
- * **[Project State](https://github.com/chef/chef-oss-practices/blob/master/repo-management/repo-states.md):** Active
9
- * **Issues [Response Time Maximum](https://github.com/chef/chef-oss-practices/blob/master/repo-management/repo-states.md):** 14 days
10
- * **Pull Request [Response Time Maximum](https://github.com/chef/chef-oss-practices/blob/master/repo-management/repo-states.md):** 14 days
11
-
12
- ## Installation
13
-
14
- Add this line to your application's Gemfile:
15
-
16
- ```ruby
17
- gem 'chef-apply'
18
- ```
19
-
20
- And then execute:
21
-
22
- $ bundle
23
-
24
- Or install it yourself as:
25
-
26
- $ gem install chef-apply
27
-
28
-
29
- ## Contributing/Development
30
-
31
- Please read our [Community Contributions Guidelines](https://docs.chef.io/community_contributions.html), and ensure you are signing all your commits with DCO sign-off.
32
-
33
- The general development process is:
34
-
35
- 1. Fork this repo and clone it to your workstation.
36
- 2. Create a feature branch for your change.
37
- 3. Write code and tests.
38
- 4. Push your feature branch to GitHub and open a pull request against master.
39
-
40
- Once your repository is set up, you can start working on the code. We do utilize RSpec for test driven development, so you'll need to get a development environment running. Follow the above procedure ("Installing from Git") to get your local copy of the source running.
41
-
42
- # License
43
-
44
- | | |
45
- |:---------------------|:-----------------------------------------|
46
- | **Copyright:** | Copyright 2018, Chef Software, Inc.
47
- | **License:** | Apache License, Version 2.0
48
-
49
- ```
50
- Licensed under the Apache License, Version 2.0 (the "License");
51
- you may not use this file except in compliance with the License.
52
- You may obtain a copy of the License at
53
-
54
- http://www.apache.org/licenses/LICENSE-2.0
55
-
56
- Unless required by applicable law or agreed to in writing, software
57
- distributed under the License is distributed on an "AS IS" BASIS,
58
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
59
- See the License for the specific language governing permissions and
60
- limitations under the License.
61
- ```
62
-
@@ -1,2 +0,0 @@
1
- [telemetry]
2
- dev = true
@@ -1,41 +0,0 @@
1
- #
2
- # Copyright:: Copyright (c) 2018 Chef Software Inc.
3
- # License:: Apache License, Version 2.0
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- require "spec_helper"
19
- require "integration/spec_helper"
20
- require "chef_apply/cli"
21
- require "chef_apply/version"
22
-
23
- RSpec.describe "chef_appl" do
24
- context "help output" do
25
- context "at the top level" do
26
- ["-h", "--help", ""].each do |arg|
27
- it "#{arg} displays correct help" do
28
- expect { run_cli_with(arg) }.to output(fixture_content("chef_help")).to_stdout
29
- end
30
- end
31
- end
32
- end
33
-
34
- context "version output" do
35
- ["-v", "--version"].each do |arg|
36
- it "#{arg} displays correct version" do
37
- expect { run_cli_with(arg) }.to output(fixture_content("chef_version")).to_stdout
38
- end
39
- end
40
- end
41
- end
@@ -1,70 +0,0 @@
1
- Chef Run is a tool to execute ad-hoc tasks using Chef.
2
-
3
- chef-run <TARGET[S]> <RESOURCE> <RESOURCE_NAME> [PROPERTIES] [FLAGS]
4
-
5
- Runs a single <RESOURCE> on the specified <TARGET[S]>.
6
- [PROPERTIES] should be specified as key=value.
7
-
8
- For example:
9
-
10
- chef-run web01 service nginx action=restart
11
- chef-run web01,web02 service nginx action=restart
12
- chef-run web0[1:2] service nginx action=restart
13
-
14
- chef-run <TARGET[S]> <RECIPE> [FLAGS]
15
-
16
- Runs a single recipe located at <RECIPE> on the specified <TARGET[S]>.
17
-
18
- For example:
19
-
20
- chef-run web01 path/to/cookbook/recipe.rb
21
- chef-run web01,web02 path/to/cookbook
22
- chef-run web0[1:2] cookbook_name
23
- chef-run web01 cookbook_name::recipe_name
24
-
25
- ARGUMENTS:
26
- <TARGET[S]> The hosts or IPs to target. Can also be an SSH or WinRM URLs
27
- in the form:
28
-
29
- ssh://[USERNAME]@example.com[:PORT]
30
- <RESOURCE> A Chef resource, such as 'user' or 'package'
31
- <RESOURCE_NAME> The name, usually used to specify what 'thing' to set up with
32
- the resource. For example, given resource 'user', 'name' would be
33
- the name of the user you wanted to create.
34
- <RECIPE> The recipe to converge. This can be provided as one of:
35
- 1. Full path to a recipe file
36
- 2. Cookbook name. First we check the working directory for this
37
- cookbook, then we check in the chef repository path. If a
38
- cookbook is found we run the default recipe.
39
- 3. This behaves similarly to 'cookbook name' above, but it also allows
40
- you to specify which recipe to use from the cookbook.
41
-
42
- FLAGS:
43
- --chef-license ACCEPTANCE Accept the license for this product and any contained products ('accept', 'accept-no-persist', or 'accept-silent')
44
- -c, --config PATH Location of config file. Default: $HOME/.chef-workstation/config.toml
45
- --cookbook-repo-paths PATH Comma separated list of cookbook repository paths.
46
- -h, --help Show help and usage for `chef-run`
47
- -i, --identity-file PATH SSH identity file to use when connecting. Keys loaded into ssh-agent will also be used.
48
- --[no-]install Install Chef client on the target host(s) if it is not installed.
49
- This defaults to enabled - the installation will be performed
50
- if there is no Chef client on the target(s).
51
- --password <PASSWORD> Password to use for authentication to the target(s). The same
52
- password will be used for all targets.
53
- -p, --protocol <PROTOCOL> The protocol to use for connecting to targets.
54
- The default is 'ssh', and it can be changed in config.toml by
55
- setting 'connection.default_protocol' to a supported option.
56
- --[no-]ssl Use SSL for WinRM. Current default: false
57
- --[no-]ssl-verify Verify peer certificate when using SSL for WinRM
58
- Use --ssl-no-verify when using SSL for WinRM and
59
- the remote host is using a self-signed certificate.
60
- Current default: true
61
- --[no-]sudo Whether to use root permissions on the target. Default: true
62
- --sudo-command <COMMAND> Command to use for administrative/root access. Defaults to 'sudo'.
63
- --sudo-options 'OPTIONS...' Options to use with the sudo command. If there are multiple flags,
64
- quote them. For example: --sudo-options '-H -P -s'
65
- --sudo-password <PASSWORD> Password to use with the sudo command. This must be provided if
66
- password is required for sudo on the target(s). The same sudo password
67
- will be used for all targets.
68
- --user <USER> Username to use for authentication to the target(s). The same
69
- username will be used for all targets.
70
- -v, --version Show the current version of Chef Run.
@@ -1 +0,0 @@
1
- chef-run: $VERSION
@@ -1,55 +0,0 @@
1
- #
2
- # Copyright:: Copyright (c) 2018 Chef Software Inc.
3
- # License:: Apache License, Version 2.0
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- require "chef_apply/startup"
19
- require "chef_apply/version"
20
-
21
- # Create the chef configuration directory and touch the config
22
- # file.
23
- # this makes sure our output doesn't include
24
- # an extra line telling us that it's created,
25
- # causing the first integration test to execute to fail on
26
- # CI.
27
- # TODO this is not ideal... let's look at
28
- # testing the output correctly in both cases,
29
- # possible forcing a specific test that will also create
30
- # the directory to run first.
31
- dir = File.join(Dir.home, ".chef-workstation")
32
- conf = File.join(dir, "config.toml")
33
- FileUtils.mkdir_p(dir) unless Dir.exist?(dir)
34
- FileUtils.touch(conf) unless File.exist?(conf)
35
-
36
- # Simple wrapper that runs the CLI and prevents it
37
- # from aborting all tests with a SystemExit.
38
- # We could shell out, but this will run a little faster as we
39
- # accumulate more things to test - and will work better to get
40
- # accurate simplecov coverage reporting.
41
- # usage:
42
- # expect {run_with_cli("blah")}.to output("blah").to_stdout
43
- def run_cli_with(args)
44
- ChefApply::Startup.new(args.split(" ")).run
45
- rescue SystemExit
46
- end
47
-
48
- def fixture_content(name)
49
- content = File.read(File.join("spec/integration/fixtures", "#{name}.out"))
50
- # Replace $VERSION if present - this is updated automatically, so we can't include
51
- # the literal version value in the fixture without
52
- # having expeditor update it there too...
53
- content.gsub("$VERSION", ChefApply::VERSION)
54
- .gsub("$HOME", Dir.home)
55
- end
@@ -1,154 +0,0 @@
1
- #
2
- # Copyright:: Copyright (c) 2018 Chef Software Inc.
3
- # License:: Apache License, Version 2.0
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- require "bundler/setup"
19
- require "simplecov"
20
- require "rspec/expectations"
21
- require "support/matchers/output_to_terminal"
22
-
23
- # class << Kernel
24
- # alias :_require :require
25
- # def require(*args)
26
- #
27
- # show = false
28
- # args.each do |a|
29
- # if a =~ /chef_apply.*/
30
- # show = true
31
- # break
32
- # end
33
- # end
34
- #
35
- # $stderr.puts "from #{File.basename(caller[1])}: require: %s" % [args.inspect] if show
36
- # _require(*args)
37
- # end
38
- #
39
- # alias :_load :load
40
- # def load(*args)
41
- # show = false
42
- # args.each do |a|
43
- # if a =~ /chef_apply.*/
44
- # show = true
45
- # break
46
- # end
47
- # end
48
- # $stderr.puts "from #{File.basename(caller[1])}: load: %s" % [args.inspect] if show
49
- # _load(*args)
50
- # end
51
- #
52
- # end
53
- #
54
- # module Kernel
55
- # def require(*args)
56
- # Kernel.require(*args)
57
- # end
58
- # def load(*args)
59
- # Kernel.load(*args)
60
- # end
61
- # end
62
-
63
- RemoteExecResult = Struct.new(:exit_status, :stdout, :stderr)
64
-
65
- class ChefApply::MockReporter
66
- def update(msg); ChefApply::UI::Terminal.output msg; end
67
-
68
- def success(msg); ChefApply::UI::Terminal.output "SUCCESS: #{msg}"; end
69
-
70
- def error(msg); ChefApply::UI::Terminal.output "FAILURE: #{msg}"; end
71
- end
72
-
73
- RSpec::Matchers.define :exit_with_code do |expected_code|
74
- actual_code = nil
75
- match do |block|
76
- begin
77
- block.call
78
- rescue SystemExit => e
79
- actual_code = e.status
80
- end
81
- actual_code && actual_code == expected_code
82
- end
83
-
84
- failure_message do |block|
85
- result = actual.nil? ? " did not call exit" : " called exit(#{actual_code})"
86
- "expected exit(#{expected_code}) but it #{result}."
87
- end
88
-
89
- failure_message_when_negated do |block|
90
- "expected exit(#{expected_code}) but it did."
91
- end
92
-
93
- description do
94
- "expect exit(#{expected_code})"
95
- end
96
-
97
- supports_block_expectations do
98
- true
99
- end
100
- end
101
- # TODO would read better to make this a custom matcher.
102
- # Simulates a recursive string lookup on the Text object
103
- #
104
- # assert_string_lookup("tree.tree.tree.leaf", "a returned string")
105
- # TODO this can be more cleanly expressed as a custom matcher...
106
- def assert_string_lookup(key, retval = "testvalue")
107
- it "should look up string #{key}" do
108
- top_level_method, *call_seq = key.split(".")
109
- terminal_method = call_seq.pop
110
- tmock = double
111
- # Because ordering is important
112
- # (eg calling errors.hello is different from hello.errors),
113
- # we need to add this individually instead of using
114
- # `receive_messages`, which doesn't appear to give a way to
115
- # guarantee ordering
116
- expect(ChefApply::Text).to receive(top_level_method)
117
- .and_return(tmock)
118
- call_seq.each do |m|
119
- expect(tmock).to receive(m).ordered.and_return(tmock)
120
- end
121
- expect(tmock).to receive(terminal_method)
122
- .ordered.and_return(retval)
123
- subject.call
124
- end
125
- end
126
-
127
- RSpec.configure do |config|
128
- # Enable flags like --only-failures and --next-failure
129
- config.example_status_persistence_file_path = ".rspec_status"
130
- config.run_all_when_everything_filtered = true
131
- config.filter_run :focus
132
-
133
- # Disable RSpec exposing methods globally on `Module` and `main`
134
- config.disable_monkey_patching!
135
-
136
- config.expect_with :rspec do |c|
137
- c.syntax = :expect
138
- end
139
-
140
- config.mock_with :rspec do |mocks|
141
- mocks.verify_partial_doubles = true
142
- end
143
-
144
- config.before(:all) do
145
- ChefApply::Log.setup File::NULL, :error
146
- ChefApply::UI::Terminal.init(File.open(File::NULL, "w"))
147
- end
148
- end
149
-
150
- if ENV["CIRCLE_ARTIFACTS"]
151
- dir = File.join(ENV["CIRCLE_ARTIFACTS"], "coverage")
152
- SimpleCov.coverage_dir(dir)
153
- end
154
- SimpleCov.start