Hello community, here is the log from the commit of package rubygem-mixlib-cli for openSUSE:Factory checked in at 2019-03-04 09:20:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-mixlib-cli (Old) and /work/SRC/openSUSE:Factory/.rubygem-mixlib-cli.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-mixlib-cli" Mon Mar 4 09:20:07 2019 rev:10 rq:679522 version:2.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-mixlib-cli/rubygem-mixlib-cli.changes 2016-07-12 23:52:34.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.rubygem-mixlib-cli.new.28833/rubygem-mixlib-cli.changes 2019-03-04 09:20:10.068603221 +0100 @@ -1,0 +2,6 @@ +Mon Jan 14 13:46:16 UTC 2019 - Stephan Kulow <co...@suse.com> + +- updated to version 2.0.1 + no changelog found + +------------------------------------------------------------------- Old: ---- mixlib-cli-1.7.0.gem New: ---- mixlib-cli-2.0.1.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-mixlib-cli.spec ++++++ --- /var/tmp/diff_new_pack.TALLwz/_old 2019-03-04 09:20:10.804603088 +0100 +++ /var/tmp/diff_new_pack.TALLwz/_new 2019-03-04 09:20:10.808603088 +0100 @@ -1,7 +1,7 @@ # # spec file for package rubygem-mixlib-cli # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -24,16 +24,16 @@ # Name: rubygem-mixlib-cli -Version: 1.7.0 +Version: 2.0.1 Release: 0 %define mod_name mixlib-cli %define mod_full_name %{mod_name}-%{version} BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildRequires: %{ruby >= 2.5} BuildRequires: %{rubygem gem2rpm} -BuildRequires: %{ruby} BuildRequires: ruby-macros >= 5 -Url: https://www.chef.io -Source: http://rubygems.org/gems/%{mod_full_name}.gem +Url: https://www.github.com/mixlib-cli +Source: https://rubygems.org/gems/%{mod_full_name}.gem Source1: gem2rpm.yml Summary: A simple mixin for CLI interfaces, including option parsing License: Apache-2.0 @@ -48,7 +48,7 @@ %install %gem_install \ - --doc-files="LICENSE README.md" \ + --doc-files="LICENSE" \ -f %gem_packages ++++++ mixlib-cli-1.7.0.gem -> mixlib-cli-2.0.1.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gemfile new/Gemfile --- old/Gemfile 2016-07-06 15:58:04.000000000 +0200 +++ new/Gemfile 1970-01-01 01:00:00.000000000 +0100 @@ -1,3 +0,0 @@ -source "https://rubygems.org" - -gemspec diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NOTICE new/NOTICE --- old/NOTICE 2016-07-06 15:58:04.000000000 +0200 +++ new/NOTICE 2019-01-04 20:07:04.000000000 +0100 @@ -4,7 +4,7 @@ Developed at Chef (http://www.chef.io). - * Copyright 2009-2016, Chef Software, Inc. <le...@chef.io> + * Copyright 2009-2018, Chef Software, Inc. <le...@chef.io> Mixin::CLI incorporates code from Chef. The Chef notice file follows: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/README.md new/README.md --- old/README.md 2016-07-06 15:58:04.000000000 +0200 +++ new/README.md 1970-01-01 01:00:00.000000000 +0100 @@ -1,109 +0,0 @@ -# Mixlib::CLI - -[![Build Status Master](https://travis-ci.org/chef/mixlib-cli.svg?branch=master)](https://travis-ci.org/chef/mixlib-cli) [![Gem Version](https://badge.fury.io/rb/mixlib-cli.svg)](https://badge.fury.io/rb/mixlib-cli) - -Mixlib::CLI provides a class-based command line option parsing object, like the one used in Chef, Ohai and Relish. To use in your project: - -```ruby -require 'rubygems' -require 'mixlib/cli' - -class MyCLI - include Mixlib::CLI - - option :config_file, - :short => "-c CONFIG", - :long => "--config CONFIG", - :default => 'config.rb', - :description => "The configuration file to use" - - option :log_level, - :short => "-l LEVEL", - :long => "--log_level LEVEL", - :description => "Set the log level (debug, info, warn, error, fatal)", - :required => true, - :in => ['debug', 'info', 'warn', 'error', 'fatal'], - :proc => Proc.new { |l| l.to_sym } - - option :help, - :short => "-h", - :long => "--help", - :description => "Show this message", - :on => :tail, - :boolean => true, - :show_options => true, - :exit => 0 - -end - -# ARGV = [ '-c', 'foo.rb', '-l', 'debug' ] -cli = MyCLI.new -cli.parse_options -cli.config[:config_file] # 'foo.rb' -cli.config[:log_level] # :debug -``` - -If you are using this in conjunction with Mixlib::Config, you can do something like this (building on the above definition): - -```ruby -class MyConfig - extend(Mixlib::Config) - - log_level :info - config_file "default.rb" -end - -class MyCLI - def run(argv=ARGV) - parse_options(argv) - MyConfig.merge!(config) - end -end - -c = MyCLI.new -# ARGV = [ '-l', 'debug' ] -c.run -MyConfig[:log_level] # :debug -``` - -Available arguments to 'option': - -- `:short`: The short option, just like from optparse. Example: "-l LEVEL" -- `:long`: The long option, just like from optparse. Example: "--level LEVEL" -- `:description`: The description for this item, just like from optparse. -- `:default`: A default value for this option -- `:required`: Prints a message informing the user of the missing requirement, and exits. Default is false. -- `:on`: Set to :tail to appear at the end, or `:head`: to appear at the top. -- `:boolean:`: If this option takes no arguments, set this to true. -- `:show_options`: If you want the option list printed when this option is called, set this to true. -- `:exit`: Exit your program with the exit code when this option is specified. Example: 0 -- `:proc`: If set, the configuration value will be set to the return value of this proc. -- `:in`: An array containing the list of accepted values - -If you need access to the leftover options that aren't captured in the config, you can get at them through +cli_arguments+ (referring to the above definition of MyCLI). - -```ruby -# ARGV = [ '-c', 'foo.rb', '-l', 'debug', 'file1', 'file2', 'file3' ] -cli = MyCLI.new -cli.parse_options -cli.cli_arguments # [ 'file1', 'file2', 'file3' ] -``` - -## LICENSE: - -- Copyright:: Copyright (c) 2008-2016 Chef Software, Inc. -- License:: Apache License, Version 2.0 - -```text -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Rakefile new/Rakefile --- old/Rakefile 2016-07-06 15:58:04.000000000 +0200 +++ new/Rakefile 1970-01-01 01:00:00.000000000 +0100 @@ -1,33 +0,0 @@ -require "bundler" -require "rubygems" -require "rubygems/package_task" -require "rdoc/task" -require "rspec/core/rake_task" - -Bundler::GemHelper.install_tasks - -task :default => :spec - -desc "Run specs" -RSpec::Core::RakeTask.new(:spec) do |spec| - spec.pattern = "spec/**/*_spec.rb" -end - -gem_spec = eval(File.read("mixlib-cli.gemspec")) - -RDoc::Task.new do |rdoc| - rdoc.rdoc_dir = "rdoc" - rdoc.title = "mixlib-cli #{gem_spec.version}" - rdoc.rdoc_files.include("README*") - rdoc.rdoc_files.include("lib/**/*.rb") -end - -begin - require "chefstyle" - require "rubocop/rake_task" - RuboCop::RakeTask.new(:style) do |task| - task.options += ["--display-cop-names", "--no-color"] - end -rescue LoadError - puts "chefstyle/rubocop is not available. gem install chefstyle to do style checking." -end Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/mixlib/cli/version.rb new/lib/mixlib/cli/version.rb --- old/lib/mixlib/cli/version.rb 2016-07-06 15:58:04.000000000 +0200 +++ new/lib/mixlib/cli/version.rb 2019-01-04 20:07:04.000000000 +0100 @@ -1,5 +1,5 @@ module Mixlib module CLI - VERSION = "1.7.0" + VERSION = "2.0.1".freeze end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/mixlib/cli.rb new/lib/mixlib/cli.rb --- old/lib/mixlib/cli.rb 2016-07-06 15:58:04.000000000 +0200 +++ new/lib/mixlib/cli.rb 2019-01-04 20:07:04.000000000 +0100 @@ -1,6 +1,6 @@ # -# Author:: Adam Jacob (<a...@opscode.com>) -# Copyright:: Copyright (c) 2008 Opscode, Inc. +# Author:: Adam Jacob (<a...@chef.io>) +# Copyright:: Copyright (c) 2008-2016 Chef Software, Inc. # License:: Apache License, Version 2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -41,7 +41,7 @@ module InheritMethods def inherited(receiver) - receiver.options = deep_dup(self.options) + receiver.options = deep_dup(options) receiver.extend(Mixlib::CLI::InheritMethods) end @@ -210,7 +210,7 @@ config_opts[:exit] ||= nil config_opts[:in] ||= nil - if config_opts.has_key?(:default) + if config_opts.key?(:default) defaults_container[config_key] = config_opts[:default] end end @@ -231,7 +231,7 @@ # Deal with any required values options.each do |opt_key, opt_value| - if opt_value[:required] && !config.has_key?(opt_key) + if opt_value[:required] && !config.key?(opt_key) reqarg = opt_value[:short] || opt_value[:long] puts "You must supply #{reqarg}!" puts @opt_parser @@ -241,7 +241,7 @@ unless opt_value[:in].kind_of?(Array) raise(ArgumentError, "Options config key :in must receive an Array") end - if !opt_value[:in].include?(config[opt_key]) + if config[opt_key] && !opt_value[:in].include?(config[opt_key]) reqarg = opt_value[:short] || opt_value[:long] puts "#{reqarg}: #{config[opt_key]} is not included in the list ['#{opt_value[:in].join("', '")}'] " puts @opt_parser @@ -308,12 +308,13 @@ def build_option_arguments(opt_setting) arguments = Array.new - arguments << opt_setting[:short] if opt_setting.has_key?(:short) - arguments << opt_setting[:long] if opt_setting.has_key?(:long) - if opt_setting.has_key?(:description) - description = opt_setting[:description] + arguments << opt_setting[:short] if opt_setting.key?(:short) + arguments << opt_setting[:long] if opt_setting.key?(:long) + if opt_setting.key?(:description) + description = opt_setting[:description].dup description << " (required)" if opt_setting[:required] description << " (included in ['#{opt_setting[:in].join("', '")}'])" if opt_setting[:in] + opt_setting[:description] = description arguments << description end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2016-07-06 15:58:04.000000000 +0200 +++ new/metadata 2019-01-04 20:07:04.000000000 +0100 @@ -1,91 +1,26 @@ --- !ruby/object:Gem::Specification name: mixlib-cli version: !ruby/object:Gem::Version - version: 1.7.0 + version: 2.0.1 platform: ruby authors: - Chef Software, Inc. autorequire: bindir: bin cert_chain: [] -date: 2016-07-06 00:00:00.000000000 Z -dependencies: -- !ruby/object:Gem::Dependency - name: rake - requirement: !ruby/object:Gem::Requirement - requirements: - - - "<" - - !ruby/object:Gem::Version - version: '11.0' - type: :development - prerelease: false - version_requirements: !ruby/object:Gem::Requirement - requirements: - - - "<" - - !ruby/object:Gem::Version - version: '11.0' -- !ruby/object:Gem::Dependency - name: rspec - requirement: !ruby/object:Gem::Requirement - requirements: - - - "~>" - - !ruby/object:Gem::Version - version: '2.14' - type: :development - prerelease: false - version_requirements: !ruby/object:Gem::Requirement - requirements: - - - "~>" - - !ruby/object:Gem::Version - version: '2.14' -- !ruby/object:Gem::Dependency - name: rdoc - requirement: !ruby/object:Gem::Requirement - requirements: - - - ">=" - - !ruby/object:Gem::Version - version: '0' - type: :development - prerelease: false - version_requirements: !ruby/object:Gem::Requirement - requirements: - - - ">=" - - !ruby/object:Gem::Version - version: '0' -- !ruby/object:Gem::Dependency - name: chefstyle - requirement: !ruby/object:Gem::Requirement - requirements: - - - "~>" - - !ruby/object:Gem::Version - version: '0.3' - type: :development - prerelease: false - version_requirements: !ruby/object:Gem::Requirement - requirements: - - - "~>" - - !ruby/object:Gem::Version - version: '0.3' +date: 2019-01-04 00:00:00.000000000 Z +dependencies: [] description: A simple mixin for CLI interfaces, including option parsing email: i...@chef.io executables: [] extensions: [] -extra_rdoc_files: -- README.md -- LICENSE -- NOTICE +extra_rdoc_files: [] files: -- Gemfile - LICENSE - NOTICE -- README.md -- Rakefile - lib/mixlib/cli.rb - lib/mixlib/cli/version.rb -- mixlib-cli.gemspec -- spec/mixlib/cli_spec.rb -- spec/spec_helper.rb -homepage: https://www.chef.io +homepage: https://www.github.com/mixlib-cli licenses: - Apache-2.0 metadata: {} @@ -97,7 +32,7 @@ requirements: - - ">=" - !ruby/object:Gem::Version - version: '0' + version: '2.5' required_rubygems_version: !ruby/object:Gem::Requirement requirements: - - ">=" @@ -105,7 +40,7 @@ version: '0' requirements: [] rubyforge_project: -rubygems_version: 2.4.5.1 +rubygems_version: 2.7.6 signing_key: specification_version: 4 summary: A simple mixin for CLI interfaces, including option parsing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mixlib-cli.gemspec new/mixlib-cli.gemspec --- old/mixlib-cli.gemspec 2016-07-06 15:58:04.000000000 +0200 +++ new/mixlib-cli.gemspec 1970-01-01 01:00:00.000000000 +0100 @@ -1,27 +0,0 @@ -$:.unshift(File.dirname(__FILE__) + "/lib") -require "mixlib/cli/version" - -Gem::Specification.new do |s| - s.name = "mixlib-cli" - s.version = Mixlib::CLI::VERSION - s.platform = Gem::Platform::RUBY - s.has_rdoc = true - s.extra_rdoc_files = ["README.md", "LICENSE", "NOTICE"] - s.summary = "A simple mixin for CLI interfaces, including option parsing" - s.description = s.summary - s.author = "Chef Software, Inc." - s.email = "i...@chef.io" - s.homepage = "https://www.chef.io" - s.license = "Apache-2.0" - - # Uncomment this to add a dependency - #s.add_dependency "mixlib-log" - s.add_development_dependency "rake", "< 11.0" - s.add_development_dependency "rspec", "~> 2.14" - s.add_development_dependency "rdoc" - s.add_development_dependency "chefstyle", "~> 0.3" - - s.require_path = "lib" - s.files = %w{LICENSE README.md Gemfile Rakefile NOTICE} + Dir.glob("*.gemspec") + - Dir.glob("{lib,spec}/**/*", File::FNM_DOTMATCH).reject { |f| File.directory?(f) } -end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/mixlib/cli_spec.rb new/spec/mixlib/cli_spec.rb --- old/spec/mixlib/cli_spec.rb 2016-07-06 15:58:04.000000000 +0200 +++ new/spec/mixlib/cli_spec.rb 1970-01-01 01:00:00.000000000 +0100 @@ -1,345 +0,0 @@ -# -# Author:: Adam Jacob (<a...@opscode.com>) -# Copyright:: Copyright (c) 2008 Opscode, Inc. -# License:: Apache License, Version 2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -require File.expand_path(File.join(File.dirname(__FILE__), "..", "spec_helper")) - -describe Mixlib::CLI do - after(:each) do - TestCLI.options = {} - TestCLI.banner("Usage: #{$0} (options)") - end - - describe "class method" do - describe "option" do - it "should allow you to set a config option with a hash" do - TestCLI.option(:config_file, :short => "-c CONFIG").should == { :short => "-c CONFIG" } - end - end - - describe "options" do - it "should return the current options hash" do - TestCLI.option(:config_file, :short => "-c CONFIG") - TestCLI.options.should == { :config_file => { :short => "-c CONFIG" } } - end - end - - describe "options=" do - it "should allow you to set the full options with a single hash" do - TestCLI.options = { :config_file => { :short => "-c CONFIG" } } - TestCLI.options.should == { :config_file => { :short => "-c CONFIG" } } - end - end - - describe "banner" do - it "should have a default value" do - TestCLI.banner.should =~ /^Usage: (.+) \(options\)$/ - end - - it "should allow you to set the banner" do - TestCLI.banner("Usage: foo") - TestCLI.banner.should == "Usage: foo" - end - end - end - - context "when configured with default single-config-hash behavior" do - - before(:each) do - @cli = TestCLI.new - end - - describe "initialize" do - it "should set the banner to the class defined banner" do - @cli.banner.should == TestCLI.banner - end - - it "should set the options to the class defined options, plus defaults" do - TestCLI.option(:config_file, :short => "-l LOG") - cli = TestCLI.new - cli.options.should == { - :config_file => { - :short => "-l LOG", - :on => :on, - :boolean => false, - :required => false, - :proc => nil, - :show_options => false, - :exit => nil, - :in => nil, - }, - } - end - - it "should set the default config value for any options that include it" do - TestCLI.option(:config_file, :short => "-l LOG", :default => :debug) - @cli = TestCLI.new - @cli.config[:config_file].should == :debug - end - end - - describe "opt_parser" do - - it "should set the banner in opt_parse" do - @cli.opt_parser.banner.should == @cli.banner - end - - it "should present the arguments in the banner" do - TestCLI.option(:config_file, :short => "-l LOG") - @cli = TestCLI.new - @cli.opt_parser.to_s.should =~ /-l LOG/ - end - - it "should honor :on => :tail options in the banner" do - TestCLI.option(:config_file, :short => "-l LOG") - TestCLI.option(:help, :short => "-h", :boolean => true, :on => :tail) - @cli = TestCLI.new - @cli.opt_parser.to_s.split("\n").last.should =~ /-h/ - end - - it "should honor :on => :head options in the banner" do - TestCLI.option(:config_file, :short => "-l LOG") - TestCLI.option(:help, :short => "-h", :boolean => true, :on => :head) - @cli = TestCLI.new - @cli.opt_parser.to_s.split("\n")[1].should =~ /-h/ - end - - it "should present the arguments in alphabetical order in the banner" do - TestCLI.option(:alpha, :short => "-a ALPHA") - TestCLI.option(:beta, :short => "-b BETA") - TestCLI.option(:zeta, :short => "-z ZETA") - @cli = TestCLI.new - output_lines = @cli.opt_parser.to_s.split("\n") - output_lines[1].should =~ /-a ALPHA/ - output_lines[2].should =~ /-b BETA/ - output_lines[3].should =~ /-z ZETA/ - end - - end - - describe "parse_options" do - it "should set the corresponding config value for non-boolean arguments" do - TestCLI.option(:config_file, :short => "-c CONFIG") - @cli = TestCLI.new - @cli.parse_options([ "-c", "foo.rb" ]) - @cli.config[:config_file].should == "foo.rb" - end - - it "should set the corresponding config value according to a supplied proc" do - TestCLI.option(:number, - :short => "-n NUMBER", - :proc => Proc.new { |config| config.to_i + 2 } - ) - @cli = TestCLI.new - @cli.parse_options([ "-n", "2" ]) - @cli.config[:number].should == 4 - end - - it "should pass the existing value to two-argument procs" do - TestCLI.option(:number, - :short => "-n NUMBER", - :proc => Proc.new { |value, existing| existing ||= []; existing << value; existing } - ) - @cli = TestCLI.new - @cli.parse_options([ "-n", "2", "-n", "3" ]) - @cli.config[:number].should == %w{2 3} - end - - it "should set the corresponding config value to true for boolean arguments" do - TestCLI.option(:i_am_boolean, :short => "-i", :boolean => true) - @cli = TestCLI.new - @cli.parse_options([ "-i" ]) - @cli.config[:i_am_boolean].should == true - end - - it "should set the corresponding config value to false when a boolean is prefixed with --no" do - TestCLI.option(:i_am_boolean, :long => "--[no-]bool", :boolean => true) - @cli = TestCLI.new - @cli.parse_options([ "--no-bool" ]) - @cli.config[:i_am_boolean].should == false - end - - it "should exit if a config option has :exit set" do - TestCLI.option(:i_am_exit, :short => "-x", :boolean => true, :exit => 0) - @cli = TestCLI.new - lambda { @cli.parse_options(["-x"]) }.should raise_error(SystemExit) - end - - it "should exit if a required option is missing" do - TestCLI.option(:require_me, :short => "-r", :boolean => true, :required => true) - @cli = TestCLI.new - lambda { @cli.parse_options([]) }.should raise_error(SystemExit) - end - - it "should exit if option is not included in the list" do - TestCLI.option(:inclusion, :short => "-i val", :in => %w{one two}) - @cli = TestCLI.new - lambda { @cli.parse_options(["-i", "three"]) }.should raise_error(SystemExit) - end - - it "should raise ArgumentError if options key :in is not an array" do - TestCLI.option(:inclusion, :short => "-i val", :in => "foo") - @cli = TestCLI.new - lambda { @cli.parse_options(["-i", "three"]) }.should raise_error(ArgumentError) - end - - it "should not exit if option is included in the list" do - TestCLI.option(:inclusion, :short => "-i val", :in => %w{one two}) - @cli = TestCLI.new - @cli.parse_options(["-i", "one"]) - @cli.config[:inclusion].should == "one" - end - - it "should change description if :in key is specified" do - TestCLI.option(:inclusion, :short => "-i val", :in => %w{one two}, :description => "desc") - @cli = TestCLI.new - @cli.parse_options(["-i", "one"]) - @cli.options[:inclusion][:description].should == "desc (included in ['one', 'two'])" - end - - it "should not exit if a required option is specified" do - TestCLI.option(:require_me, :short => "-r", :boolean => true, :required => true) - @cli = TestCLI.new - @cli.parse_options(["-r"]) - @cli.config[:require_me].should == true - end - - it "should not exit if a required boolean option is specified and false" do - TestCLI.option(:require_me, :long => "--[no-]req", :boolean => true, :required => true) - @cli = TestCLI.new - @cli.parse_options(["--no-req"]) - @cli.config[:require_me].should == false - end - - it "should not exit if a required option is specified and empty" do - TestCLI.option(:require_me, :short => "-r VALUE", :required => true) - @cli = TestCLI.new - @cli.parse_options(["-r", ""]) - @cli.config[:require_me].should == "" - end - - it "should preserve all of the commandline arguments, ARGV" do - TestCLI.option(:config_file, :short => "-c CONFIG") - @cli = TestCLI.new - argv_old = ARGV.dup - ARGV.replace ["-c", "foo.rb"] - @cli.parse_options() - ARGV.should == ["-c", "foo.rb"] - ARGV.replace argv_old - end - - it "should preserve and return any un-parsed elements" do - TestCLI.option(:party, :short => "-p LOCATION") - @cli = TestCLI.new - @cli.parse_options([ "easy", "-p", "opscode", "hard" ]).should == %w{easy hard} - @cli.cli_arguments.should == %w{easy hard} - end - end - end - - context "when configured to separate default options" do - before do - TestCLI.use_separate_default_options true - TestCLI.option(:defaulter, :short => "-D SOMETHING", :default => "this is the default") - @cli = TestCLI.new - end - - it "sets default values on the `default` hash" do - @cli.parse_options([]) - @cli.default_config[:defaulter].should == "this is the default" - @cli.config[:defaulter].should be_nil - end - - it "sets parsed values on the `config` hash" do - @cli.parse_options(%w{-D not-default}) - @cli.default_config[:defaulter].should == "this is the default" - @cli.config[:defaulter].should == "not-default" - end - - end - - context "when subclassed" do - before do - TestCLI.options = { :arg1 => { :boolean => true } } - end - - it "should retain previously defined options from parent" do - class T1 < TestCLI - option :arg2, :boolean => true - end - T1.options[:arg1].should be_a(Hash) - T1.options[:arg2].should be_a(Hash) - TestCLI.options[:arg2].should be_nil - end - - it "should not be able to modify parent classes options" do - class T2 < TestCLI - option :arg2, :boolean => true - end - T2.options[:arg1][:boolean] = false - T2.options[:arg1][:boolean].should be_false - TestCLI.options[:arg1][:boolean].should be_true - end - - it "should pass its options onto child" do - class T3 < TestCLI - option :arg2, :boolean => true - end - class T4 < T3 - option :arg3, :boolean => true - end - 3.times do |i| - T4.options["arg#{i + 1}".to_sym].should be_a(Hash) - end - end - - it "should also work with an option that's an array" do - class T5 < TestCLI - option :arg2, :default => [] - end - - class T6 < T5 - end - - T6.options[:arg2].should be_a(Hash) - end - - end - -end - -# option :config_file, -# :short => "-c CONFIG", -# :long => "--config CONFIG", -# :default => 'config.rb', -# :description => "The configuration file to use" -# -# option :log_level, -# :short => "-l LEVEL", -# :long => "--log_level LEVEL", -# :description => "Set the log level (debug, info, warn, error, fatal)", -# :required => true, -# :proc => nil -# -# option :help, -# :short => "-h", -# :long => "--help", -# :description => "Show this message", -# :on => :tail, -# :boolean => true, -# :show_options => true, -# :exit => 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/spec_helper.rb new/spec/spec_helper.rb --- old/spec/spec_helper.rb 2016-07-06 15:58:04.000000000 +0200 +++ new/spec/spec_helper.rb 1970-01-01 01:00:00.000000000 +0100 @@ -1,15 +0,0 @@ -$TESTING = true -$:.push File.join(File.dirname(__FILE__), "..", "lib") - -require "mixlib/cli" - -class TestCLI - include Mixlib::CLI -end - -RSpec.configure do |config| - config.filter_run :focus => true - config.run_all_when_everything_filtered = true - config.treat_symbols_as_metadata_keys_with_true_values = true - config.warnings = true -end