## 1.4.1 / 2015-06-18 ### Potentially breaking changes ### Bug fixes * Issue [#663][], PR [#665][]: Centos 6.4 no longer supported, upgrade in templates for `kitchen init` ([@lloydde][]) * PR [#711][]: Update to Ubuntu 14.04 and Centos 7.1 for `kitchen init` ([@fnichol][]) * PR [#734][]: Fix failing `kitchen driver discover` test ([@fnichol][]) * Issue [#732][], PR [#737][]: Generate a `chefignore` file during `kitchen init` ([@metadave][]) * Issue [#688][], PR [#728][] and [#736][]: Default WinRM username updated to `administrator` and additional errors caught for retry logic when trying to login with WinRM ([@zl4bv][], [@tyler-ball][]) ### New features ### Improvements * PR [#704][]: Don't prompt for passwords when using public key auth ([@caboteria][]) ## 1.4.0 / 2015-04-28 (*A selected roll-up of 1.4.0 pre-release changelogs*) ### Potentially breaking changes **Note::** while a huge amount of effort has gone into preserving backwards compatibility, there could be issues when running this release using certain Drivers and Provisioners, especially ones that are deeply customized. Drivers that inherit directly from `Kitchen::Driver::Base` may need to be updated, while Driver that inherit directly from `Kitchen::Driver::SSHBase` should continue to operate as before. Other libraries/addons/plugins which patch internals of Test Kitchen's code may break or work differently and would be extremely hard to preserve while adding new functionality. Sadly, this is a tradeoff. * Drivers are no longer responsible for `converge`, `setup`, `verify`, and `login` actions. The updated Driver API contract ([Driver::Base](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/driver/base.rb)) only requires implementing the `#create` and `#destroy` methods, same as before. However, for Drivers that directly inherit from `Kitchen::Driver::Base`, any custom `#converge`, `#setup`, `#verify`, or `#login_command` methods will no longer be called. ([@fnichol][]) * Drivers which inherit directly from `Kitchen::Driver::SSHBase` are now considered "Legacy Drivers" as further improvements for these Drivers may not be available in future releases. The previous behavior is preserved, i.e. the Driver's `#converge`, `#setup`, and `#verify` methods are called and all methods signatures (and relative behavior) is preserved. ([Driver::SSHBase](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/driver/ssh_base.rb), [Commit notes](https://github.com/test-kitchen/test-kitchen/commit/d816d6fd1bd21548b485ca91e0ff9303e99a6fbc)) ([@fnichol][]) * Provisioners are now self-aware, completely owning the `converge` action. The original public methods of the Base Provisioner are maintained but are now invoked with a `#call(state)` method on the Provisioner object. Provisioner authors may elect to implement the command and sandbox methods, or re-implement the `#call` method which may not call any of the previously mentioned methods. ([Provisioner::Base](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/provisioner/base.rb), [Commit notes](https://github.com/test-kitchen/test-kitchen/commit/3196675e519a2fb97af4bcac80ef11f5e37f2537)) ([@fnichol][]) * Transport are not responsible for the `login` command. ([Commit notes](https://github.com/test-kitchen/test-kitchen/commit/ae360a11d8c18ff5d1086ee19b099db1d0422024)) ([@fnichol][]) * Busser is now a plugin of type Verifier (see below for details on Verifiers). Any external code that directly creates a `Kitchen::Busser` object will fail as the class has moved to `Kitchen::Verifier::Busser`. Any external code that directly invokes Busser's `#sync_cmd` will log a warning and will **not** transfer test files (authors of plugins may now call `instance.transport(state).upload(locals, remote)` in its place). ([@fnichol][]) * Verifiers are responsible for the `verify` action. ([Commit notes](https://github.com/test-kitchen/test-kitchen/commit/d62f577003c1920259eb627cc4479c0b21e0c374)) ([@fnichol][]) * Pull request [#649][]: Preserve Busser's #setup_cmd, #run_cmd, & #sync_cmd for better backwards compatibility. ([@fnichol][]) * Pull request [#672][]: Extract WinRM-dependant code from Transport::Winrm into the winrm-transport gem, meaning that WinRM support is now a soft dependency of Test Kitchen, similar to Berkshelf and Librarian-Chef. This means the first time a Winrm Transport is requested, a `kitchen` command will crash with a UserError message instructing the user to install the winrm-transport gem. Existing projects which do not use the Winrm Transport will be unaffected and have no extra gem dependencies to manage. ([@fnichol][]) ### Bug fixes * Issue [#656][], pull request 669: Move ObjectSpace finalizer logic into CommandExtractor to close the last opened remote shell on shutdown for Winrm Transport. ([@fnichol][]) * Issue [#611][], pull request [#673][]: Ensure that secret key is deleted before converge for chef_zero and chef_solo Provisioners. ([@fnichol][]) * Issue [#389][], pull request [#674][]: Expand path for `:ssh_key` if provided in kitchen.yml for Ssh Transport. ([@fnichol][]) * Pull request [#653][]: Consider `:require_chef_omnibus = 11` to be a modern version for Chef Provisioners. ([@fnichol][]) ### New features * ChefZero Provisioner supports Windows paths and PowerShell commands and works with the WinRM Transport (default behavior for Platform names starting with `/^win/`). ([Provisioner::ChefZero](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/provisioner/chef_zero.rb)) ([@fnichol][]) * ChefSolo Provisioner supports Windows paths and PowerShell commands and works with the WinRM Transport (default behavior for Platform names starting with `/^win/`). ([Provisioner::ChefSolo](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/provisioner/chef_solo.rb)) ([@fnichol][]) * Shell Provisioner supports PowerShell scripts in addition to Bourne shell scripts ([Provisioner::Shell](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/provisioner/shell.rb)) ([@fnichol][]) * Platform operating system and shell hinting: By default, Windows platform names (case insensitive platform names starting with `/^win/`) will have `:os_type` set to `"windows"` and `:shell_type` set to `"powershell"`. By default, non-Windows platform names will have `:os_type` set to `"unix"` and `:shell_type` set to `"bourne"`. The methods `#windows_os?`, `#unix_os?`, `#powershell_shell?`, `#bourne_shell?`, and `#remote_path_join` are available for all Driver, Provisioner, Verifier, and Transport authors. ([@fnichol][]) * New plugin type: Transport, which executes commands and transfers files to remote instances. ([Transport::Base](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/transport/base.rb)) ([@afiune][], [@mwrock][], [@fnichol][]) * New Transport: WinRM: which re-uses a remote shell to execute commands and upload files over WinRM. Currently non-SSL/plaintext authentication only. ([Transport::Winrm](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/transport/winrm.rb)) ([@afiune][], [@mwrock][], [@fnichol][]) * New Transport: SSH, which re-uses one SSH connection where possible. Improvements such as keepalive, retries, and further configuration attributes are included. This replaces the more general `Kitchen:SSH` class, which remains in the codebase for plugins that call this class directly. ([Transport::Ssh](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/transport/ssh.rb)) ([@fnichol][]) * New plugin type: Verifier, which executes post-convergence tests on the instance. Busser is now a Verifier. ([Verifier::Base](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/verifier/base.rb)) ([@fnichol][]) * Add [API versioning](d8f1a7db9e506c44f321462e1fba0b1e24994070) metadata to all plugin types. ([@fnichol][]) * Pull request [#667][], pull request [#668][]: Add plugin diagnostics, exposed via `kitchen diagnose`. ([@fnichol][]) * Pull request [#675][], issue [#424][]: Add default `:compression` & `:compression_level` configuration attributes to Ssh Transport. * Pull request [#651][], issue [#592][], issue [#629][], issue [#307][]: Add :sudo_command to Provisioners, Verifiers, & ShellOut. ([@fnichol][]) #### Improvements * In addition to supporting setting `http_proxy` and `https_proxy` environment variables when `:http_proxy` and `:https_proxy` are set in Provisioner and Verifier blocks, `HTTP_PROXY` and `HTTPS_PROXY` environment variables will also be set/exported in ChefZero/ChefSolo Provisioners and Busser Verifier. ([@fnichol][]) * Pull request [#600][], pull request [#633][], issue [#85][]: Add `--log-overwrite` flag to CLI anywhere `--log-level` is accepted. By default it is true and will clear out the log every time Test Kitchen runs. To disable this behavior pass `--log-overwrite=false` or `--no-log-overwrite`. You can also configure this with the environment variable `KITCHEN_LOG_OVERWRITE`. ([@tyler-ball][]) * Refactor "non-trivial" (i.e. more than a line or two) Bourne and PowerShell code bodies into static files under support/ for better code review by domain experts. ([@fnichol][]) * Pull request [#530][], issue [#429][]: Stop uploading empty directories. ([@whiteley][]) * Pull request [#588][]: Change getchef.com to chef.io in ChefZero and ChefSolo Provisioners. ([@jdmundrawala][]) * Pull request [#658][], issue [#654][]: Updated for sh compatibility based on install.sh code which supports more platforms including Solaris. ([@scotthain][], [@curiositycasualty][], [@fnichol][]) * Pull request [#652][], pull request [#666][], issue [#556][]: Support symbol values in solo.rb & client.rb for chef_zero and chef_solo Provisioners. ([@fnichol][]) ## 1.4.0.rc.1 / 2015-03-29 ### Potentially breaking changes * Pull request [#672][]: Extract WinRM-dependant code from Transport::Winrm into the winrm-transport gem, meaning that WinRM support is now a soft dependency of Test Kitchen, similar to Berkshelf and Librarian-Chef. This means the first time a Winrm Transport is requested, a `kitchen` command will crash with a UserError message instructing the user to install the winrm-transport gem. Existing projects which do not use the Winrm Transport will be unaffected and have no extra gem dependencies to manage. ([@fnichol][]) ### Bug fixes * Issue [#656][], pull request 669: Move ObjectSpace finalizer logic into CommandExtractor to close the last opened remote shell on shutdown for Winrm Transport. ([@fnichol][]) * Issue [#611][], pull request [#673][]: Ensure that secret key is deleted before converge for chef_zero and chef_solo Provisioners. ([@fnichol][]) * Issue [#389][], pull request [#674][]: Expand path for `:ssh_key` if provided in kitchen.yml for Ssh Transport. ([@fnichol][]) * Pull request [#653][]: Consider `:require_chef_omnibus = 11` to be a modern version for Chef Provisioners. ([@fnichol][]) ### New features * Add [API versioning](d8f1a7db9e506c44f321462e1fba0b1e24994070) metadata to all plugin types. ([@fnichol][]) * Pull request [#667][], pull request [#668][]: Add plugin diagnostics, exposed via `kitchen diagnose`. ([@fnichol][]) * Pull request [#675][], issue [#424][]: Add default `:compression` & `:compression_level` configuration attributes to Ssh Transport. * Pull request [#651][], issue [#592][], issue [#629][], issue [#307][]: Add :sudo_command to Provisioners, Verifiers, & ShellOut. ([@fnichol][]) ### Improvements * Pull request [#658][], issue [#654][]: Updated for sh compatibility based on install.sh code which supports more platforms including Solaris. ([@scotthain][], [@curiositycasualty][], [@fnichol][]) * Pull request [#652][], pull request [#666][], issue [#556][]: Support symbol values in solo.rb & client.rb for chef_zero and chef_solo Provisioners. ([@fnichol][]) ## 1.4.0.beta.2 / 2015-03-25 ### Potentially breaking changes * Pull request [#649][]: Preserve Busser's #setup_cmd, #run_cmd, & #sync_cmd for better backwards compatibility. ([@fnichol][]) ### Bug fixes * Pull request [#648][]: Transport::Winrm: Truncate destination file for overwriting. ([@fnichol][]) ## 1.4.0.beta.1 / 2015-03-24 ### Potentially breaking changes **Note::** while a huge amount of effort has gone into preserving backwards compatibility, there could be issues when running this release using certain Drivers and Provisioners, especially ones that are deeply customized. Drivers that inherit directly from `Kitchen::Driver::Base` may need to be updated, while Driver that inherit directly from `Kitchen::Driver::SSHBase` should continue to operate as before. Other libraries/addons/plugins which patch internals of Test Kitchen's code may break or work differently and would be extremely hard to preserve while adding new functionality. Sadly, this is a tradeoff. * Drivers are no longer responsible for `converge`, `setup`, `verify`, and `login` actions. The updated Driver API contract ([Driver::Base](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/driver/base.rb)) only requires implementing the `#create` and `#destroy` methods, same as before. However, for Drivers that directly inherit from `Kitchen::Driver::Base`, any custom `#converge`, `#setup`, `#verify`, or `#login_command` methods will no longer be called. ([@fnichol][]) * Drivers which inherit directly from `Kitchen::Driver::SSHBase` are now considered "Legacy Drivers" as further improvements for these Drivers may not be available in future releases. The previous behavior is preserved, i.e. the Driver's `#converge`, `#setup`, and `#verify` methods are called and all methods signatures (and relative behavior) is preserved. ([Driver::SSHBase](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/driver/ssh_base.rb), [Commit notes](https://github.com/test-kitchen/test-kitchen/commit/d816d6fd1bd21548b485ca91e0ff9303e99a6fbc)) ([@fnichol][]) * Provisioners are now self-aware, completely owning the `converge` action. The original public methods of the Base Provisioner are maintained but are now invoked with a `#call(state)` method on the Provisioner object. Provisioner authors may elect to implement the command and sandbox methods, or re-implement the `#call` method which may not call any of the previously mentioned methods. ([Provisioner::Base](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/provisioner/base.rb), [Commit notes](https://github.com/test-kitchen/test-kitchen/commit/3196675e519a2fb97af4bcac80ef11f5e37f2537)) ([@fnichol][]) * Transport are not responsible for the `login` command. ([Commit notes](https://github.com/test-kitchen/test-kitchen/commit/ae360a11d8c18ff5d1086ee19b099db1d0422024)) ([@fnichol][]) * Busser is now a plugin of type Verifier (see below for details on Verifiers). Any external code that directly creates a `Kitchen::Busser` object will fail as the class has moved to `Kitchen::Verifier::Busser`. Any external code that directly invokes Busser's `#sync_cmd` will log a warning and will **not** transfer test files (authors of plugins may now call `instance.transport(state).upload(locals, remote)` in its place). ([@fnichol][]) * Verifiers are responsible for the `verify` action. ([Commit notes](https://github.com/test-kitchen/test-kitchen/commit/d62f577003c1920259eb627cc4479c0b21e0c374)) ([@fnichol][]) ### New features * ChefZero Provisioner supports Windows paths and PowerShell commands and works with the WinRM Transport (default behavior for Platform names starting with `/^win/`). ([Provisioner::ChefZero](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/provisioner/chef_zero.rb)) ([@fnichol][]) * ChefSolo Provisioner supports Windows paths and PowerShell commands and works with the WinRM Transport (default behavior for Platform names starting with `/^win/`). ([Provisioner::ChefSolo](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/provisioner/chef_solo.rb)) ([@fnichol][]) * Shell Provisioner supports PowerShell scripts in addition to Bourne shell scripts ([Provisioner::Shell](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/provisioner/shell.rb)) ([@fnichol][]) * Platform operating system and shell hinting: By default, Windows platform names (case insensitive platform names starting with `/^win/`) will have `:os_type` set to `"windows"` and `:shell_type` set to `"powershell"`. By default, non-Windows platform names will have `:os_type` set to `"unix"` and `:shell_type` set to `"bourne"`. The methods `#windows_os?`, `#unix_os?`, `#powershell_shell?`, `#bourne_shell?`, and `#remote_path_join` are available for all Driver, Provisioner, Verifier, and Transport authors. ([@fnichol][]) * New plugin type: Transport, which executes commands and transfers files to remote instances. ([Transport::Base](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/transport/base.rb)) ([@afiune][], [@mwrock][], [@fnichol][]) * New Transport: WinRM: which re-uses a remote shell to execute commands and upload files over WinRM. Currently non-SSL/plaintext authentication only. ([Transport::Winrm](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/transport/winrm.rb)) ([@afiune][], [@mwrock][], [@fnichol][]) * New Transport: SSH, which re-uses one SSH connection where possible. Improvements such as keepalive, retries, and further configuration attributes are included. This replaces the more general `Kitchen:SSH` class, which remains in the codebase for plugins that call this class directly. ([Transport::Ssh](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/transport/ssh.rb)) ([@fnichol][]) * New plugin type: Verifier, which executes post-convergence tests on the instance. Busser is now a Verifier. ([Verifier::Base](https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/verifier/base.rb)) ([@fnichol][]) #### Improvements * In addition to supporting setting `http_proxy` and `https_proxy` environment variables when `:http_proxy` and `:https_proxy` are set in Provisioner and Verifier blocks, `HTTP_PROXY` and `HTTPS_PROXY` environment variables will also be set/exported in ChefZero/ChefSolo Provisioners and Busser Verifier. ([@fnichol][]) * Pull request [#600][], pull request [#633][], issue [#85][]: Add `--log-overwrite` flag to CLI anywhere `--log-level` is accepted. By default it is true and will clear out the log every time Test Kitchen runs. To disable this behavior pass `--log-overwrite=false` or `--no-log-overwrite`. You can also configure this with the environment variable `KITCHEN_LOG_OVERWRITE`. ([@tyler-ball][]) * Refactor "non-trivial" (i.e. more than a line or two) Bourne and PowerShell code bodies into static files under support/ for better code review by domain experts. ([@fnichol][]) * Pull request [#530][], issue [#429][]: Stop uploading empty directories. ([@whiteley][]) * Pull request [#588][]: Change getchef.com to chef.io in ChefZero and ChefSolo Provisioners. ([@jdmundrawala][]) ## 1.3.1 / 2015-01-16 ### Bug fixes * Pull request [#581][], issue [#580][]: Fix omnibus install argument passing bug with missing space character. ([@fnichol][], [@tknerr][]) ### Improvements * Pull request [#579][]: Update README.md badges to use SVG. ([@miketheman][]) ## 1.3.0 / 2015-01-15 ### Upstream changes * Pull request [#558][], pull request [#557][]: Update omnibus download URL to chef.io. ([@scarolan][]) * Pull request [#531][], pull request [#521][]: Update mixlib-shellout dependency to be greater or equal to 1.2 and less than 3.0. ([@lamont-granquist][]) ### Bug fixes * Pull request [#555][], issue [#524][], issue [#343][]: (**Breaking**) Correct global YAML merge order to lowest (from highest). * Pull request [#416][]: Use `Gem::GemRunner` to install drivers with `kitchen init` generator (addresses opscode/chef-dk[#20][]). ([@mcquin][]) * Pull request [#399][]: Sleep before retrying SSH#establish_connection. ([@fnichol][]) * Pull request [#527][]: Rescue SSH authentication failures to use retry/timeout connection logic. ([@chrishenry][]) * Pull request [#363][]: Ensure that integer chef config attributes get placed in solo.rb/client.rb properly. ([@benlangfeld][], [@sethvargo][]) * Pull request [#431][]: Check for zero byte state files. ([@rhass][]) * Pull request [#554][], pull request [#543][]: Replace `/` with `-` in Instance names, allowing instance names to be used as server hostnames in most cases. ([@grubernaut][], [@fnichol][]) ### New features * Pull request [#373][]: Add new subcommand 'exec'. ([@sawanoboly][]) * Pull request [#397][]: Introduce the `:chef_zero_port` config attribute to the chef_zero provisioner. ([@jtgiri][]) * Pull request [#381][], pull request [#456][]: Add configurable defaults for chef-solo, chef-client, and chef omnibus paths. ([@sethvargo][], [@robcoward][], [@fnichol][]) * Pull request [#489][]: Introduce the `:chef_omnibus_install_options` config attribute to be able to pass additional arguments to the Chef installer script. ([@ringods][]) * Pull request [#549][]: Introduce the `:chef_zero_host` config attribute to the chef_zero provisioner. ([@jochenseeber][]) * Pull request [#454][]: Customize `:ssh_timeout` and `:ssh_retries`. ([@ekrupnik][]) * Pull request [#510][], issue [#166][]: Add support for site-cookbooks when using Librarian. ([@jstriebel][]) ### Improvements * Pull request [#427][]: Backfilling spec coverage and refactoring: technical debt edition. Epically huge, finally complete. ([@fnichol][]) * Pull request [#478][], issue [#433][], issue [#352][]: Buffer Logger output & fix Chef run output formatting. ([@fnichol][]) * Pull request [#481][]: Disable color output when no TTY is present. ([@fnichol][]) * Pull request [#526][], pull request [#462][], issue [#375][]: Die on `kitchen login` if instance is not created. ([@daniellockard][], [@fnichol][]) * Pull request [#504][]: Fix 2 tests in `SSHBase` to reflect their intent. ([@jgoldschrafe][]) * Pull request [#450][]: Update help description for CLI subcommands. ([@MarkGibbons][]) * Pull request [#477][]: Bump 'kitchen help' into new Usage section in README and add how to use "-l". ([@curiositycasualty][]) * Pull request [#567][]: Pass the template filename down to Erb for `__FILE__` et al. ([@coderanger][]) * Pull request [#498][]: Fix doc comment in `Kitchen::Loader::YAML.new`. ([@jaimegildesagredo][]) * Pull request [#507][]: Clarify comments in configuration loader. ([@martinb3][]) * Pull request [#366][]: Fix glaring "Transfering" -> "Transferring" typo. ([@srenatus][]) * Pull request [#457][]: Fix "confiuration" -> "configuration" typo in README. ([@michaelkirk][]) * Pull request [#370][]: Use Ruby 2.1 instead of 2.1.0 for CI. ([@justincampbell][]) ### Heads up * Drop Ruby 1.9.2 from TravisCI build matrix (support for Ruby 1.9.2 will be a "best effort"). ([@fnichol][]) ## 1.2.1 / 2014-02-12 ### Bug fixes * Issue [#357][], pull request [#358][]: Load needed (dynamic) dependencies for provisioners at creation time to prevent any native or dynamic code being loaded in a non-main thread (an issue on Mac with MRI Ruby 1.9/2.0). ([@fnichol][]) ### Improvements * Pull request [#358][]: Output the loaded version of Berkshelf or Librarian-Chef when converging to better help troubleshooting issues. ([@fnichol][]) ## 1.2.0 / 2014-02-11 ### Upstream changes * Pull request [#288][]: Update omnibus URL to getchef.com. ([@juliandunn][]) ### Bug fixes * Pull request [#353][]: Ensure that a chef-client failure returns non-zero exit code for chef-client-zero.rb shim script. ([@kamalim][]) * Pull request [#318][]: Upload chef clients data. ([@jtimberman][]) * Issue [#282][], issue [#316][]: [CLI] Match a specific instance before trying to find with a regexp. ([@fnichol][]) * Issue [#305][]: Ensure that `kitchen help` exits non-zero on failure. ([@fnichol][]) * Pull request [#296][]: Fixing error when using more than one helper. ([@jschneiderhan][]) * Pull request [#313][]: Allow files in subdirectories in "helpers" directory. ([@mthssdrbrg][]) * Pull request [#309][]: Add `/opt/local/bin` to instance path when installing Chef Omnibus package. Smartmachines need this otherwise curl can't find certificates. ([@someara][]) * Pull request [#283][], pull request [#287][], pull request [#310][]: Fix failing minitest test on Windows. ([@rarenerd][]) * Fix testing regressions for Ruby 1.9.2 around YAML parsing. ([@fnichol][]) ### New features * Pull request [#286][]: **Experimental** Basic shell provisioner, first non-Chef addition! Still considered experimental, that is subject to change between releases until APIs stabilize. ([@ChrisLundquist][]) * Pull request [#293][], pull request [#277][], issue [#176][]: Add `--concurrency` option to specify number of multiple actions to perform at a time. ([@ryotarai][], [@bkw][]) * Support `--concurrency` without value, defaulting to all instances and begin to deprecate `--parallel` flag. ([@fnichol][]) * Pull request [#306][], issue [#304][]: Add local & global file locations with environment variables (`KITCHEN_LOCAL_YAML` and `KITCHEN_GLOBAL_YAML`). ([@fnichol][]) * Pull request [#298][]: Base provisioner refactoring to start accommodating other provisioners. For more details, see [#298][]. ([@fnichol][]) ### Improvements * Pull request [#280][]: Add `json_attributes: true` config option to ChefZero provisioner. This option allows a user to invoke chef-client without passing the generated JSON file in the `--json-attributes` option. ([@fnichol][]) * Make `kitchen login` work without args if there is only one instance (thank goodness). ([@fnichol][]) * Issue [#285][]: Greatly improved error recovery & reporting in Kitchen::Loader::YAML. ([@fnichol][]) * Pull request [#303][]: Use SafeYAML.load to avoid YAML monkeypatch in safe_yaml. This will leave YAML loading in Test Kitchen as implementation detail and avoid polluting other Ruby objects. ([@fnichol][]) * Pull request [#302][]: CLI refactoring to remove logic from cli.rb. ([@fnichol][]) * Add Ruby 2.1.0 to TravisCI testing matrix. ([@fnichol][]) ## 1.1.1 / 2013-12-08 ### Bug fixes * Normalize driver, provisioner, & busser blocks when merging raw YAML. ([@fnichol][]) * Issue [#276][], issue [#278][]: Ensure `Busser#local_suite_files` only rejects chef data dirs. ([@fnichol][]) * Pull request [#275][]: Fix SSH 'Too many authentication failures' error. ([@zts][]) * When copying `./cookbooks`, conditionally check for `./site-cookbooks`. ([@fnichol][]) ### Improvements * Improve `kitchen diagnose` when loader data merging fails. ([@fnichol][]) ## 1.1.0 / 2013-12-04 ### Default updates * Set `Busser[:sudo]` to `true` by default (formerly set to `false` by default). ([@fnichol][]) ### Improvements * Pull request [#272][]: Drive by typo fix. ([@kisoku][]) ## 1.0.0 / 2013-12-01 ### Bug fixes * Ensure Kitchen::Busser can stream multiple files (split with ;). ([@fnichol][]) ## 1.0.0.rc.2 / 2013-11-30 ### Changes * Generate a more explict form for driver & provisioner in `kitchen init`. ([@fnichol][]) * Set `Busser[:sudo]` to `false` by default. ([@fnichol][]) ### Bug fixes * Properly handle `encrypted_data_bag_secret_key_path` under a suite. ([@fnichol][]) * Pull request [#265][]: Busser Fixes for Greybeard UNIX. ([@schisamo][]) * Pull request [#265][]: Busser config key name is `sudo` not `use_sudo`. ([@schisamo][]) ### New features * Add diagnostic facility to Test Kitchen, usable with `kitchen diagnose`. ([@fnichol][]) ### Improvements * Pull request [#266][]: Generate more a helpful error when supplying an invalid Regexp with CLI. ([@fnichol][]) * Improve logging of file transfers to instances in converge action. ([@fnichol][]) * Add feature test coverage for `kitchen list` subcommand. ([@fnichol][]) ## 1.0.0.rc.1 / 2013-11-28 ### Changes * Busser now installs into /tmp/busser by default on instances. ([@fnichol][]) * Test Kitchen now works out of /tmp/kitchen for all providers by default. ([@fnichol][]) * Remove Chef Omnibus `GEM_PATH` inclusion in Busser `GEM_PATH`. This fully isolates Busser and its runner plugins to a `GEM_HOME` and `GEM_PATH` in `/gems`. ([@fnichol][]) * Add --provisioner to `kitchen init` to override default, chef\_solo. ([@fnichol][]) ### Bug fixes * Issue [#240][], issue [#242][], pull request [#258][]: Fix Busser and Chef Zero sandboxing so that each tool is completely isolated from the Omnibus packages gems and each other. ([@fnichol][], [@schisamo][]) ### New features * Beef up Provisioners so that they resemble Drivers with user, default, inherited, and computed configuration.. * Use `chef-client -z` (local mode) with ChefZero Provisioner for Chef versions >= 11.8.0. Support older versions of Chef with a best-effort fallback shim to use chef-zero. ([@fnichol][]) * `kitchen list --debug` mode greatly improved showing rendered configuration for each Instance's Driver, Provisioner, and Busser configuration. ([@fnichol][]) * Pull request [#249][]: Add a data\_path which will be sync'd to the instance in the same manner as roles and data bags. ([@oferrigni][]) * Test Kitchen no longer requires a cookbook to run; kitchen init anywhere! ([@fnichol][]) * All settings in solo.rb (for ChefSolo) and client.rb (for ChefZero) can be modified or added with a `solo_rb:` or `client_rb:` block inside a `provisioner:` block. ([@fnichol][]) * Add :ruby_bindr in a busser config block to set Busser's alternative remote path to Ruby. ([@fnichol][]) * Busser install root can be configured and is relocatable, defaults to /tmp/busser. ([@fnichol][]) * Test Kitchen root can be configured and is relocatable, defaults to /tmp/kitchen. ([@fnichol][]) * Support installing a specific version of Busser. ([@fnichol][]) ### Improvements * Greatly simplify default .kitchen.yml. ([@fnichol][], [@sethvargo][]) * Massive internal refactoring data manipulation logic. Data code now lives in Kitchen::DataMunger and was properly TDD'ed from the ground up with a full test suite. ([@fnichol][]) * `require_chef_ommnibus` will default to `true` for all Chef provisioners and so can be omitted from .kitchen.yml files in most cases. ([@fnichol][]) * Pull request [#262][]: Use a configurable glob pattern to select Chef cookbook files. ([@fnichol][]) * Pull request [#141][]: Do not create a gitignore if there is no git repo. ([@sethvargo][]) * Improve `kitchen init` smarts for detecting gems already in Gemfile. ([@fnichol][]) * Expand all Chef-related local paths in Provisioner::ChefBase. ([@fnichol][]) * Issue [#227][]: Handle absolute paths. ([@sethvargo][]) * Cope with nil values for run\_list and attributes entries in .kitchen.yml. ([@fnichol][]) * Allow for nil values for `provisioner:`, `driver:`, & `busser:`. ([@fnichol][]) * Pull request [#253][]: Fix TravisCI badges. ([@arangamani][]) * Pull request [#254][]: Update references to test-kitchen org. ([@josephholsten][]) * Pull request [#256][]: Changed 'passed' to 'passing' in the Destroy options documentation. ([@scarolan][]) * Pull request [#259][]: Fix inconsistent date in CHANGELOG. ([@ryansouza][]) * Extract Berkshelf & Librarian-Chef resolver code to classes. ([@fnichol][]) * Full spec coverage for Suite. ([@fnichol][]) * Full spec coverage for Platform. ([@fnichol][]) * Full spec coverage for Instance. ([@fnichol][]) * Full spec coverage for Kitchen::Provisioner.for\_plugin ([@fnichol][]) ## 1.0.0.beta.4 / 2013-11-01 ### Bug fixes * Change permissions on the Chef sandbox to world readable and writable (0755) ([@fnichol][]) * Minor typographical and documentation errors ([@gmiranda23][]) * Improve error message when Berkshelf/Librarian is not present ([@fnichol][]) * Ensure busser respects the `sudo` driver configuration ([@schisamo][]) ### Improvements * Pull request [#235][]: Add Chef Solo environment support ([@ekrupnik][]) * Pull request [#231][]: Use chefignore to determine which files to copy ([@rteabeault][]) * Pull request [#222][]: Remove dependency on Celluloid and use pure Ruby threads ([@sethvargo][]) * Pull request [#218][]: Add support for `site-cookbooks` ([@hollow][]) * Pull request [#217][]: Add support for specific driver configs ([@hollow][]) * Pull request [#206][]: Add pessismestic locks on all gem requirements ([@sethvargo][]) * Pull request [#193][]: Allow users to configure ssh forwarding ([@fnordfish][]) * Pull request [#192][]: Add chef config has and proxy information ([@scotthain][]) * Pull request [#94][]: Support passing multiple instance names ([@sethvargo][]) * Drop hard dependency on `pry` gem for `kitchen console` ([@fnichol][]) * Remove bash-specific code in favor of pure sh for non-standard Unix devices ([@schisamo][]) * Make remote RUBY_BIN configurable ([@schisamo][]) * Ensure busser and Chef Zero are executed in their own the sandboxes ([@schisamo][]) ## 1.0.0.beta.3 / 2013-08-29 ### Bug fixes * Pull request [#157][]: Include definitions directory when uploading the cookbooks. ([@jasonroelofs][]) * Pull request [#178][]: Fix SSH#wait's logger call to #info. ([@ryansouza][]) * Pull request [#188][]: Truthy default_configs can now be overridden. ([@thommay][]) ### Improvements * Allow Test Kitchen to be used as a library; CWD is not enough. ([@portertech][]) * Add `kitchen list --debug` to display all merged & calculated config. ([@fnichol][]) * Add retry logic to Kitchen:SSH when initiating a connection. ([@fnichol][]) * Pull request [#147][]: Allow chef omnibus install.sh url to be configurable. ([@jrwesolo][]) * Pull request [#187][]: Add support for log file in chef solo. ([@arangamani][]) * Pull request [#179][]: Remove bundler references from README. ([@juliandunn][]) * Compute default test_base_path in Config based on kitchen_root. ([@fnichol][]) ## 1.0.0.beta.2 / 2013-07-24 ### Bug fixes * Fix backwards compatability regression in `SSHBase#wait_for_sshd`. ([@fnichol][]) ## 1.0.0.beta.1 / 2013-07-23 ### New features * Pull request [#128][]: [Breaking] Introduce Provisioners to support chef-client (chef-zero), puppet-apply, and puppet-agent. ([@fnichol][]) * Pull request [#128][]: Add `chef_zero` provisioner type as an alternative to the iplicit default `chef_solo` provisioner. ([@fnichol][]) * Pull request [#171][]: Support computed default values for Driver authors (see pull request for light documentation). ([@fnichol][]) * Pull request [#161][], issue [#129][]: Allow custom paths for roles, data\_bags, and nodes by setting `roles_path`, `data_bags_path`, and `nodes_path`. ([@gondoi][]) * Pull request [#134][]: Add cross suite helpers. ([@rteabeault][]) ### Bug fixes * Pull request [#122][]: Adding missing sudo calls to busser. ([@adamhjk][]) * Pull request [#154][], issue [#163][]: Set a more sane default PATH for installing Chef. ([@jtimberman][]) * Issue [#153][]: Assign Celluloid.logger to Kitchen.logger which won't open a file. ([@fnichol][]) * Pull request [#155][], issue [#154][]: Setting :on_black when your default terminal text color is black results in unreadable (black on black) text. Or: The NSA censors your VM names when using a terminal with a light background. ([@mconigliaro][]) * Pull request [#140][]: Make `kitchen init` generator safe to run when given an explicit `:destination_root`. ([@reset][]) * Pull request [#170][]: Add asterisk to wait_for_sshd argument. ([@saketoba][]) * Pull request [#136][]: Fixes bundler ref for 1.0. ([@patcon][]) * Pull request [#142][], issue [#137][]: Require a safe\_yaml release with correct permissions. ([@josephholsten][]) ### Improvements * Pull request [#128][]: Add Driver and Provisioner columns to `kitchen list` output. ([@fnichol][]) * Pull request [#124][], issue [#132][]: Aggressively filter "non-cookbook" files before uploading to instances. ([@fnichol][]) * Pull request [#128][]: Suite run_list is no longer required. ([@fnichol][]) * Pull request [#123][]: Swap cookbook resolution strategy from shell outs to using Ruby APIs. ([@fnichol][]) * Pull request [#128][]: SSH and SCP commands share a single connection when transfering Chef artifacts to an instance (via the new `Kitchen::SSH` class). ([@fnichol][]) * Pull request [#128][]: Add more helpful output logging (info and debug) when creating and uploading the sandbox directory of Chef artifacts. ([@fnichol][]) * Issue [#97][]: Remove red as a candidate instance color. ([@fnichol][]) * Fix ANSI color codes for bright colors. ([@fnichol][]) * Pull request [#172][]: [Breaking] Update signature of Driver.required_config block. ([@fnichol][]) * Pull request [#152][], issue [#151][]: Update the bucket name for Opscode's Bento Boxes. ([@jtimberman][]) * Pull request [#131][]: Use ssh_args for test_ssh. ([@jonsmorrow][]) ## 1.0.0.alpha.7 / 2013-05-23 ### New features * Pull request [#90][], issue [#31][]: Add a global user-level config file, located at `~/.kitchen/config.yml`. ([@thommay][]) * Pull request [#102][]: Allow a way to override remote sudo. ([@calavera][]) * Propagate default\_config from base driver classes into subclasses. ([@fnichol][]) * Pull request [#120][]: Add http and https_proxy support. ([@adamhjk][]) * Pull request [#111][]: Sink. Yeah, that one. ([@sethvargo][]) ### Bug fixes * Pull request [#99][], issue [#98][]: Ensure that destroy option is respected when --parallel is used. ([@stevendanna][]) * Pull request [#116][]: Require the 'name' attribute is present in `metadata.rb`. ([@sethvargo][]) * Pull request [#113][]: Handle case where YAML parses as nil. ([@smith][]) * Pass original exception's backtrace to InstanceFailure and ActionFailed. ([@fnichol][]) * Pull request [#112][]: Fix bug where action failures are swallowed with a nil inside an ensure. ([@manul][]) ### Improvements * Pull request [#104][]: Set the default ssh port in Driver::SSHBase. ([@calavera][]) * Pull request [#114][]: Update kitchen.yml template with provisionerless baseboxes. ([@jtimberman][]) * Pull request [#119][]: Test Kitchen works on Windows with Vagrant. ([@adamhjk][]) * Pull request [#108][]: Add version string to "Starting Kitchen" logging output. ([@fnichol][]) * Pull request [#105][]: Expand documentation around run-time switches in README. ([@grahamc][]) ## 1.0.0.alpha.6 / 2013-05-08 ### New features * Pull request [#77][]: Support encrypted data bag secrets ([@arunthampi][]) * Issue [#92][]: Support single cookbook with no dependencies and no Berksfile. ([@fnichol][]) ### Bug fixes * Fix Omnibus installation on nodes using plain sh (vs. bash). ([@fnichol][]) ### Improvements * Issue [#84][]: Fix `kitchen list` heading alignment. ([@fnichol][]) ## 1.0.0.alpha.5 / 2013-04-23 ### Improvements * Pull request [#81][]: Clean up error reporting in CLI output. ([@fnichol][]) * Pull request [#76][]: Swap out shell-based kb for Ruby-based Busser gem. ([@fnichol][]) * Pull request [#82][], issue [#61][]: Install Omnibus package via either wget or curl. ([@fnichol][]) * Catch YAML data merging errors as user errors. ([@fnichol][]) * Issue [#80][]: Add a more helpful error message when a driver could not be loaded. ([@fnichol][]) ## 1.0.0.alpha.4 / 2013-04-10 ### Bug fixes * #get_all_instances must return actors in parallel mode in CLI. ([@fnichol][], [@bryanwb][]). ### Improvements * Refactor `kitchen plugin create` to drop Bundler dependency completely. ([@fnichol][]) ## 1.0.0.alpha.3 / 2013-04-05 ### Bug fixes * Fix :require_chef_omnibus driver_config option to eliminate re-installation ([@fnichol][]) * Remove implicit Bundler dependency in `kitchen init`. ([@fnichol][]) ### New features * Add --auto-init flag to `kitchen test` (default: false) ([@fnichol][]) ### Improvements * Update base box URLs. ([@fnichol][]) * Extract .kitchen.yml to an ERB template & update box URLs. ([@fnichol][]) * Add more spec coverage. ([@fnichol][]) ## 1.0.0.alpha.2 / 2013-03-28 ### Bug fixes * Remove catch-all rescue in Driver.for_plugin (reason provided in commit message). ([@fnichol][]) ### New features * Add --log-level flag to CLI for test, create, converge, setup, verify, destroy, and login actions. The environment variable `KITCHEN_LOG` may still be used to also set the logging level. ([@fnichol][]) * Driver::SSHBase and subclass drivers now support setting a :port number in .kitchen.yml or in instance state. ([@fnichol][]) ### Improvements * Support thor 0.16.0 and 0.17.0+. ([@fnichol][]) * Support SSH config from #state & #config in Driver::SSHBase, helping drivers such as kitchen-vagrant. ([@fnichol][]) ## 1.0.0.alpha.1 / 2013-03-22 ### Bug fixes * Support (and test) for Rubygems 2.0.x and 1.8.x. ([@fnichol][]) ### New features * Pull request [#71][]: Updates to `kitchen init` to be non-interactive (add `--driver` flag), add subcommand support, and introduce `kitchen driver discover`. ([@fnichol][]) * Add `Driver#verify_dependencies` to be invoked once when Driver is loaded. ([@fnichol][]) ### Improvements * Pull request [#73][]: [Breaking] Modify `ShellOut#run_command` to take an options Hash. ([@fnichol][]) * Add :quiet option on `ShellOut#run_command`. ([@fnichol][]) * [Breaking] `Driver#login_command` returns a Driver::LoginCommand object. ([@fnichol][]) * Pull request [#74][]: Switch driver alias (-d) to (-D) in Init generator ([@reset][]) * Pull request [#64][]: Make `require_chef_omnibus: true` safe. ([@mattray][]) * Pull request [#65][]: Fix for line length and style (tailor). ([@ChrisLundquist][]) ## 1.0.0.alpha.0 / 2013-03-02 The initial release. [#20]: https://github.com/test-kitchen/test-kitchen/issues/20 [#31]: https://github.com/test-kitchen/test-kitchen/issues/31 [#61]: https://github.com/test-kitchen/test-kitchen/issues/61 [#64]: https://github.com/test-kitchen/test-kitchen/issues/64 [#65]: https://github.com/test-kitchen/test-kitchen/issues/65 [#71]: https://github.com/test-kitchen/test-kitchen/issues/71 [#73]: https://github.com/test-kitchen/test-kitchen/issues/73 [#74]: https://github.com/test-kitchen/test-kitchen/issues/74 [#76]: https://github.com/test-kitchen/test-kitchen/issues/76 [#77]: https://github.com/test-kitchen/test-kitchen/issues/77 [#80]: https://github.com/test-kitchen/test-kitchen/issues/80 [#81]: https://github.com/test-kitchen/test-kitchen/issues/81 [#82]: https://github.com/test-kitchen/test-kitchen/issues/82 [#84]: https://github.com/test-kitchen/test-kitchen/issues/84 [#85]: https://github.com/test-kitchen/test-kitchen/issues/85 [#90]: https://github.com/test-kitchen/test-kitchen/issues/90 [#92]: https://github.com/test-kitchen/test-kitchen/issues/92 [#94]: https://github.com/test-kitchen/test-kitchen/issues/94 [#97]: https://github.com/test-kitchen/test-kitchen/issues/97 [#98]: https://github.com/test-kitchen/test-kitchen/issues/98 [#99]: https://github.com/test-kitchen/test-kitchen/issues/99 [#102]: https://github.com/test-kitchen/test-kitchen/issues/102 [#104]: https://github.com/test-kitchen/test-kitchen/issues/104 [#105]: https://github.com/test-kitchen/test-kitchen/issues/105 [#108]: https://github.com/test-kitchen/test-kitchen/issues/108 [#111]: https://github.com/test-kitchen/test-kitchen/issues/111 [#112]: https://github.com/test-kitchen/test-kitchen/issues/112 [#113]: https://github.com/test-kitchen/test-kitchen/issues/113 [#114]: https://github.com/test-kitchen/test-kitchen/issues/114 [#116]: https://github.com/test-kitchen/test-kitchen/issues/116 [#119]: https://github.com/test-kitchen/test-kitchen/issues/119 [#120]: https://github.com/test-kitchen/test-kitchen/issues/120 [#122]: https://github.com/test-kitchen/test-kitchen/issues/122 [#123]: https://github.com/test-kitchen/test-kitchen/issues/123 [#124]: https://github.com/test-kitchen/test-kitchen/issues/124 [#128]: https://github.com/test-kitchen/test-kitchen/issues/128 [#129]: https://github.com/test-kitchen/test-kitchen/issues/129 [#131]: https://github.com/test-kitchen/test-kitchen/issues/131 [#132]: https://github.com/test-kitchen/test-kitchen/issues/132 [#134]: https://github.com/test-kitchen/test-kitchen/issues/134 [#136]: https://github.com/test-kitchen/test-kitchen/issues/136 [#137]: https://github.com/test-kitchen/test-kitchen/issues/137 [#140]: https://github.com/test-kitchen/test-kitchen/issues/140 [#141]: https://github.com/test-kitchen/test-kitchen/issues/141 [#142]: https://github.com/test-kitchen/test-kitchen/issues/142 [#147]: https://github.com/test-kitchen/test-kitchen/issues/147 [#151]: https://github.com/test-kitchen/test-kitchen/issues/151 [#152]: https://github.com/test-kitchen/test-kitchen/issues/152 [#153]: https://github.com/test-kitchen/test-kitchen/issues/153 [#154]: https://github.com/test-kitchen/test-kitchen/issues/154 [#155]: https://github.com/test-kitchen/test-kitchen/issues/155 [#157]: https://github.com/test-kitchen/test-kitchen/issues/157 [#161]: https://github.com/test-kitchen/test-kitchen/issues/161 [#163]: https://github.com/test-kitchen/test-kitchen/issues/163 [#166]: https://github.com/test-kitchen/test-kitchen/issues/166 [#170]: https://github.com/test-kitchen/test-kitchen/issues/170 [#171]: https://github.com/test-kitchen/test-kitchen/issues/171 [#172]: https://github.com/test-kitchen/test-kitchen/issues/172 [#176]: https://github.com/test-kitchen/test-kitchen/issues/176 [#178]: https://github.com/test-kitchen/test-kitchen/issues/178 [#179]: https://github.com/test-kitchen/test-kitchen/issues/179 [#187]: https://github.com/test-kitchen/test-kitchen/issues/187 [#188]: https://github.com/test-kitchen/test-kitchen/issues/188 [#192]: https://github.com/test-kitchen/test-kitchen/issues/192 [#193]: https://github.com/test-kitchen/test-kitchen/issues/193 [#206]: https://github.com/test-kitchen/test-kitchen/issues/206 [#217]: https://github.com/test-kitchen/test-kitchen/issues/217 [#218]: https://github.com/test-kitchen/test-kitchen/issues/218 [#222]: https://github.com/test-kitchen/test-kitchen/issues/222 [#227]: https://github.com/test-kitchen/test-kitchen/issues/227 [#231]: https://github.com/test-kitchen/test-kitchen/issues/231 [#235]: https://github.com/test-kitchen/test-kitchen/issues/235 [#240]: https://github.com/test-kitchen/test-kitchen/issues/240 [#242]: https://github.com/test-kitchen/test-kitchen/issues/242 [#249]: https://github.com/test-kitchen/test-kitchen/issues/249 [#253]: https://github.com/test-kitchen/test-kitchen/issues/253 [#254]: https://github.com/test-kitchen/test-kitchen/issues/254 [#256]: https://github.com/test-kitchen/test-kitchen/issues/256 [#258]: https://github.com/test-kitchen/test-kitchen/issues/258 [#259]: https://github.com/test-kitchen/test-kitchen/issues/259 [#262]: https://github.com/test-kitchen/test-kitchen/issues/262 [#265]: https://github.com/test-kitchen/test-kitchen/issues/265 [#266]: https://github.com/test-kitchen/test-kitchen/issues/266 [#272]: https://github.com/test-kitchen/test-kitchen/issues/272 [#275]: https://github.com/test-kitchen/test-kitchen/issues/275 [#276]: https://github.com/test-kitchen/test-kitchen/issues/276 [#277]: https://github.com/test-kitchen/test-kitchen/issues/277 [#278]: https://github.com/test-kitchen/test-kitchen/issues/278 [#280]: https://github.com/test-kitchen/test-kitchen/issues/280 [#282]: https://github.com/test-kitchen/test-kitchen/issues/282 [#283]: https://github.com/test-kitchen/test-kitchen/issues/283 [#285]: https://github.com/test-kitchen/test-kitchen/issues/285 [#286]: https://github.com/test-kitchen/test-kitchen/issues/286 [#287]: https://github.com/test-kitchen/test-kitchen/issues/287 [#288]: https://github.com/test-kitchen/test-kitchen/issues/288 [#293]: https://github.com/test-kitchen/test-kitchen/issues/293 [#296]: https://github.com/test-kitchen/test-kitchen/issues/296 [#298]: https://github.com/test-kitchen/test-kitchen/issues/298 [#302]: https://github.com/test-kitchen/test-kitchen/issues/302 [#303]: https://github.com/test-kitchen/test-kitchen/issues/303 [#304]: https://github.com/test-kitchen/test-kitchen/issues/304 [#305]: https://github.com/test-kitchen/test-kitchen/issues/305 [#306]: https://github.com/test-kitchen/test-kitchen/issues/306 [#307]: https://github.com/test-kitchen/test-kitchen/issues/307 [#309]: https://github.com/test-kitchen/test-kitchen/issues/309 [#310]: https://github.com/test-kitchen/test-kitchen/issues/310 [#313]: https://github.com/test-kitchen/test-kitchen/issues/313 [#316]: https://github.com/test-kitchen/test-kitchen/issues/316 [#318]: https://github.com/test-kitchen/test-kitchen/issues/318 [#343]: https://github.com/test-kitchen/test-kitchen/issues/343 [#352]: https://github.com/test-kitchen/test-kitchen/issues/352 [#353]: https://github.com/test-kitchen/test-kitchen/issues/353 [#357]: https://github.com/test-kitchen/test-kitchen/issues/357 [#358]: https://github.com/test-kitchen/test-kitchen/issues/358 [#363]: https://github.com/test-kitchen/test-kitchen/issues/363 [#366]: https://github.com/test-kitchen/test-kitchen/issues/366 [#370]: https://github.com/test-kitchen/test-kitchen/issues/370 [#373]: https://github.com/test-kitchen/test-kitchen/issues/373 [#375]: https://github.com/test-kitchen/test-kitchen/issues/375 [#381]: https://github.com/test-kitchen/test-kitchen/issues/381 [#389]: https://github.com/test-kitchen/test-kitchen/issues/389 [#397]: https://github.com/test-kitchen/test-kitchen/issues/397 [#399]: https://github.com/test-kitchen/test-kitchen/issues/399 [#416]: https://github.com/test-kitchen/test-kitchen/issues/416 [#424]: https://github.com/test-kitchen/test-kitchen/issues/424 [#427]: https://github.com/test-kitchen/test-kitchen/issues/427 [#429]: https://github.com/test-kitchen/test-kitchen/issues/429 [#431]: https://github.com/test-kitchen/test-kitchen/issues/431 [#433]: https://github.com/test-kitchen/test-kitchen/issues/433 [#450]: https://github.com/test-kitchen/test-kitchen/issues/450 [#454]: https://github.com/test-kitchen/test-kitchen/issues/454 [#456]: https://github.com/test-kitchen/test-kitchen/issues/456 [#457]: https://github.com/test-kitchen/test-kitchen/issues/457 [#462]: https://github.com/test-kitchen/test-kitchen/issues/462 [#477]: https://github.com/test-kitchen/test-kitchen/issues/477 [#478]: https://github.com/test-kitchen/test-kitchen/issues/478 [#481]: https://github.com/test-kitchen/test-kitchen/issues/481 [#489]: https://github.com/test-kitchen/test-kitchen/issues/489 [#498]: https://github.com/test-kitchen/test-kitchen/issues/498 [#504]: https://github.com/test-kitchen/test-kitchen/issues/504 [#507]: https://github.com/test-kitchen/test-kitchen/issues/507 [#510]: https://github.com/test-kitchen/test-kitchen/issues/510 [#521]: https://github.com/test-kitchen/test-kitchen/issues/521 [#524]: https://github.com/test-kitchen/test-kitchen/issues/524 [#526]: https://github.com/test-kitchen/test-kitchen/issues/526 [#527]: https://github.com/test-kitchen/test-kitchen/issues/527 [#530]: https://github.com/test-kitchen/test-kitchen/issues/530 [#531]: https://github.com/test-kitchen/test-kitchen/issues/531 [#543]: https://github.com/test-kitchen/test-kitchen/issues/543 [#549]: https://github.com/test-kitchen/test-kitchen/issues/549 [#554]: https://github.com/test-kitchen/test-kitchen/issues/554 [#555]: https://github.com/test-kitchen/test-kitchen/issues/555 [#556]: https://github.com/test-kitchen/test-kitchen/issues/556 [#557]: https://github.com/test-kitchen/test-kitchen/issues/557 [#558]: https://github.com/test-kitchen/test-kitchen/issues/558 [#567]: https://github.com/test-kitchen/test-kitchen/issues/567 [#579]: https://github.com/test-kitchen/test-kitchen/issues/579 [#580]: https://github.com/test-kitchen/test-kitchen/issues/580 [#581]: https://github.com/test-kitchen/test-kitchen/issues/581 [#588]: https://github.com/test-kitchen/test-kitchen/issues/588 [#592]: https://github.com/test-kitchen/test-kitchen/issues/592 [#600]: https://github.com/test-kitchen/test-kitchen/issues/600 [#611]: https://github.com/test-kitchen/test-kitchen/issues/611 [#629]: https://github.com/test-kitchen/test-kitchen/issues/629 [#633]: https://github.com/test-kitchen/test-kitchen/issues/633 [#648]: https://github.com/test-kitchen/test-kitchen/issues/648 [#649]: https://github.com/test-kitchen/test-kitchen/issues/649 [#651]: https://github.com/test-kitchen/test-kitchen/issues/651 [#652]: https://github.com/test-kitchen/test-kitchen/issues/652 [#653]: https://github.com/test-kitchen/test-kitchen/issues/653 [#654]: https://github.com/test-kitchen/test-kitchen/issues/654 [#656]: https://github.com/test-kitchen/test-kitchen/issues/656 [#658]: https://github.com/test-kitchen/test-kitchen/issues/658 [#663]: https://github.com/test-kitchen/test-kitchen/issues/663 [#665]: https://github.com/test-kitchen/test-kitchen/issues/665 [#666]: https://github.com/test-kitchen/test-kitchen/issues/666 [#667]: https://github.com/test-kitchen/test-kitchen/issues/667 [#668]: https://github.com/test-kitchen/test-kitchen/issues/668 [#672]: https://github.com/test-kitchen/test-kitchen/issues/672 [#673]: https://github.com/test-kitchen/test-kitchen/issues/673 [#674]: https://github.com/test-kitchen/test-kitchen/issues/674 [#675]: https://github.com/test-kitchen/test-kitchen/issues/675 [#688]: https://github.com/test-kitchen/test-kitchen/issues/688 [#704]: https://github.com/test-kitchen/test-kitchen/issues/704 [#711]: https://github.com/test-kitchen/test-kitchen/issues/711 [#728]: https://github.com/test-kitchen/test-kitchen/issues/728 [#732]: https://github.com/test-kitchen/test-kitchen/issues/732 [#734]: https://github.com/test-kitchen/test-kitchen/issues/734 [#736]: https://github.com/test-kitchen/test-kitchen/issues/736 [#737]: https://github.com/test-kitchen/test-kitchen/issues/737 [@ChrisLundquist]: https://github.com/ChrisLundquist [@MarkGibbons]: https://github.com/MarkGibbons [@adamhjk]: https://github.com/adamhjk [@afiune]: https://github.com/afiune [@arangamani]: https://github.com/arangamani [@arunthampi]: https://github.com/arunthampi [@benlangfeld]: https://github.com/benlangfeld [@bkw]: https://github.com/bkw [@bryanwb]: https://github.com/bryanwb [@caboteria]: https://github.com/caboteria [@calavera]: https://github.com/calavera [@chrishenry]: https://github.com/chrishenry [@coderanger]: https://github.com/coderanger [@curiositycasualty]: https://github.com/curiositycasualty [@daniellockard]: https://github.com/daniellockard [@ekrupnik]: https://github.com/ekrupnik [@fnichol]: https://github.com/fnichol [@fnordfish]: https://github.com/fnordfish [@gmiranda23]: https://github.com/gmiranda23 [@gondoi]: https://github.com/gondoi [@grahamc]: https://github.com/grahamc [@grubernaut]: https://github.com/grubernaut [@hollow]: https://github.com/hollow [@jaimegildesagredo]: https://github.com/jaimegildesagredo [@jasonroelofs]: https://github.com/jasonroelofs [@jdmundrawala]: https://github.com/jdmundrawala [@jgoldschrafe]: https://github.com/jgoldschrafe [@jochenseeber]: https://github.com/jochenseeber [@jonsmorrow]: https://github.com/jonsmorrow [@josephholsten]: https://github.com/josephholsten [@jrwesolo]: https://github.com/jrwesolo [@jschneiderhan]: https://github.com/jschneiderhan [@jstriebel]: https://github.com/jstriebel [@jtgiri]: https://github.com/jtgiri [@jtimberman]: https://github.com/jtimberman [@juliandunn]: https://github.com/juliandunn [@justincampbell]: https://github.com/justincampbell [@kamalim]: https://github.com/kamalim [@kisoku]: https://github.com/kisoku [@lamont-granquist]: https://github.com/lamont-granquist [@lloydde]: https://github.com/lloydde [@manul]: https://github.com/manul [@martinb3]: https://github.com/martinb3 [@mattray]: https://github.com/mattray [@mconigliaro]: https://github.com/mconigliaro [@mcquin]: https://github.com/mcquin [@metadave]: https://github.com/metadave [@michaelkirk]: https://github.com/michaelkirk [@miketheman]: https://github.com/miketheman [@mthssdrbrg]: https://github.com/mthssdrbrg [@mwrock]: https://github.com/mwrock [@oferrigni]: https://github.com/oferrigni [@patcon]: https://github.com/patcon [@portertech]: https://github.com/portertech [@rarenerd]: https://github.com/rarenerd [@reset]: https://github.com/reset [@rhass]: https://github.com/rhass [@ringods]: https://github.com/ringods [@robcoward]: https://github.com/robcoward [@rteabeault]: https://github.com/rteabeault [@ryansouza]: https://github.com/ryansouza [@ryotarai]: https://github.com/ryotarai [@saketoba]: https://github.com/saketoba [@sawanoboly]: https://github.com/sawanoboly [@scarolan]: https://github.com/scarolan [@schisamo]: https://github.com/schisamo [@scotthain]: https://github.com/scotthain [@sethvargo]: https://github.com/sethvargo [@smith]: https://github.com/smith [@someara]: https://github.com/someara [@srenatus]: https://github.com/srenatus [@stevendanna]: https://github.com/stevendanna [@thommay]: https://github.com/thommay [@tknerr]: https://github.com/tknerr [@tyler-ball]: https://github.com/tyler-ball [@whiteley]: https://github.com/whiteley [@zl4bv]: https://github.com/zl4bv [@zts]: https://github.com/zts