diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/unit_tests.yaml new file mode 100644 index 00000000..87cc7200 --- /dev/null +++ b/.github/workflows/unit_tests.yaml @@ -0,0 +1,34 @@ +name: Run tests GA + +on: + - push + - pull_request + +jobs: + test: + runs-on: ubuntu-latest + defaults: + run: + working-directory: hammer-cli + strategy: + fail-fast: false + matrix: + ruby: + - '2.7' + - '3.0' + - '3.1' + + steps: + - name: Get hammer-cli + uses: actions/checkout@v2 + with: + path: hammer-cli + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + bundler-cache: true + working-directory: hammer-cli + - name: Run tests + run: | + bundle exec rake test diff --git a/.packit.yaml b/.packit.yaml new file mode 100644 index 00000000..34c81688 --- /dev/null +++ b/.packit.yaml @@ -0,0 +1,44 @@ +# See the documentation for more information: +# https://packit.dev/docs/configuration/ + +specfile_path: rubygem-hammer_cli.spec + +# add or remove files that should be synced +files_to_sync: + - rubygem-hammer_cli.spec + - .packit.yaml + +# name in upstream package repository or registry (e.g. in PyPI) +upstream_package_name: hammer_cli +# downstream (Fedora) RPM package name +downstream_package_name: rubygem-hammer_cli + +actions: + post-upstream-clone: + - "wget https://raw.githubusercontent.com/theforeman/foreman-packaging/rpm/develop/packages/foreman/rubygem-hammer_cli/rubygem-hammer_cli.spec -O rubygem-hammer_cli.spec" + - "a2x -d manpage -f manpage -D man/ man/hammer.1.asciidoc" + - "gzip -f9 man/hammer.1" + - "sed -i '/^%global prereleasesource pre.develop$/d' rubygem-hammer_cli.spec" + - "sed -i '/^%global prerelease %{?prereleasesource:.}%{?prereleasesource}$/d' rubygem-hammer_cli.spec" + get-current-version: + - ruby -rrubygems -e 'puts Gem::Specification::load(Dir.glob("*.gemspec").first).version' + create-archive: + - gem build hammer_cli.gemspec + - bash -c "ls -1t ./hammer_cli-*.gem | head -n 1" + +jobs: + - job: copr_build + trigger: pull_request + targets: + centos-stream-8: + additional_modules: "foreman-devel:el8" + additional_repos: + - https://yum.theforeman.org/releases/nightly/el8/x86_64/ + - https://yum.theforeman.org/plugins/nightly/el8/x86_64/ + module_hotfixes: true + +srpm_build_deps: + - wget + - asciidoc + - gzip + - rubygems diff --git a/.tx/config b/.tx/config index 27a0c7dc..6ed5d59b 100644 --- a/.tx/config +++ b/.tx/config @@ -1,8 +1,9 @@ [main] -host = https://www.transifex.com +host = https://app.transifex.com -[foreman.hammer-cli] +[o:foreman:p:foreman:r:hammer-cli] file_filter = locale//hammer-cli.edit.po source_file = locale/hammer-cli.pot source_lang = en type = PO +resource_name = hammer-cli diff --git a/Gemfile b/Gemfile index fd799238..d4d5af68 100644 --- a/Gemfile +++ b/Gemfile @@ -5,13 +5,13 @@ gemspec gem 'gettext', '>= 3.1.3', '< 4.0.0' group :test do - gem 'rake', '~> 10.1.0' + gem 'rake' gem 'thor' - gem 'minitest', '4.7.4' + gem 'minitest', '~> 5.18' gem 'minitest-spec-context' gem 'simplecov' gem 'mocha' - gem 'ci_reporter', '>= 1.6.3', "< 2.0.0", :require => false + gem 'ci_reporter_minitest', '~> 1.0', :require => false end # load local gemfile @@ -19,3 +19,4 @@ end local_gemfile = File.join(File.dirname(__FILE__), file_name) self.instance_eval(Bundler.read_file(local_gemfile)) if File.exist?(local_gemfile) end +#test diff --git a/Rakefile b/Rakefile index b5a45a5b..3836e6bc 100644 --- a/Rakefile +++ b/Rakefile @@ -11,6 +11,7 @@ Rake::TestTask.new do |t| t.libs.push "lib" t.test_files = Dir.glob('test/**/*_test.rb') t.verbose = true + t.warning = ENV.key?('RUBY_WARNINGS') end file "man/hammer.1.gz" => "man/hammer.1.asciidoc" do |t| diff --git a/bin/hammer b/bin/hammer index ec8a1d1b..5570f614 100755 --- a/bin/hammer +++ b/bin/hammer @@ -1,4 +1,4 @@ -#! /usr/bin/env ruby +#!/usr/bin/env ruby require 'rubygems' require 'clamp' @@ -56,12 +56,7 @@ end # load user's settings require 'hammer_cli/settings' -CFG_PATH = ['~/.hammer/', '/etc/hammer/', "#{::RbConfig::CONFIG['sysconfdir']}/hammer/"].uniq -HammerCLI::Settings.load_from_paths CFG_PATH - -CFG_PATH_LOCAL = ['./config/'] - -HammerCLI::Settings.load_from_paths CFG_PATH_LOCAL +HammerCLI::Settings.load_from_defaults if preparser.config if File.file? preparser.config diff --git a/config/cli_config.template.yml b/config/cli_config.template.yml index 5eace3b3..b1b855c6 100644 --- a/config/cli_config.template.yml +++ b/config/cli_config.template.yml @@ -7,7 +7,7 @@ # Location of shell history file :history_file: '~/.hammer/history' # Mark translated strings with X characters (for developers) - #:mark_translated: false + # :mark_translated: false # Hide headers from output of list actions # :no_headers: true # Choose capitalization for JSON/YAML output. @@ -17,7 +17,7 @@ # Enable/disable color output of logger in Clamp commands :watch_plain: false -# Forece relaod of Apipie cache with every Hammer invocation +# Force reload of Apipie cache with every Hammer invocation :reload_cache: false # Directory where the logs are stored. The default is /var/log/hammer/ and the log file is named hammer.log @@ -75,5 +75,5 @@ # Certs from the local storage are used only when neither :ssl_ca_file: nor :ssl_ca_path: is cofigured. #:local_ca_store_path: '~/.hammer/certs' - # Allows setting the SSL version to use when making API calls + # Allows setting the SSL version to use when making API calls #:ssl_version: 'TLSv1_2' diff --git a/doc/commands_extension.md b/doc/commands_extension.md index ab66981e..a630dfde 100644 --- a/doc/commands_extension.md +++ b/doc/commands_extension.md @@ -16,11 +16,11 @@ Each command can be easily extended with one ore more `HammerCLI::CommandExtensi child option_params end # Extend hash with data returned from server before it is printed - before_print do |data| + before_print do |data, command_object, command_class| # data modifications end # Extend command's output definition - output do |definition| + output do |definition, command_object, command_class| # output definition modifications end # Extend command's help definition @@ -28,19 +28,19 @@ Each command can be easily extended with one ore more `HammerCLI::CommandExtensi # help modifications end # Extend hash with headers before request is sent - request_headers do |headers| + request_headers do |headers, command_object, command_class| # headers modifications end # Extend hash with options before request is sent - request_options do |options| + request_options do |options, command_object, command_class| # options modifications end # Extend hash with params before request is sent - request_params do |params| + request_params do |params, command_object, command_class| # params modifications end # Extend option sources - option_sources do |sources, command| + option_sources do |sources, command_object, command_class| # no need to call super method # simply add your sources to sources variable end @@ -63,6 +63,8 @@ __NOTE:__ - `request_*` extensions are applied before sending a request to the server - `option`, `output`, `help` extensions are applied right away after the command is extended with `extend_with` - `before_print` extensions are applied right away after the server returns the data + - `request_*`, `output`, `before_print` extensions have access to the command object + after the command with the extension was initialized #### Example ```ruby diff --git a/doc/creating_commands.md b/doc/creating_commands.md index e50b358e..b97c72c1 100644 --- a/doc/creating_commands.md +++ b/doc/creating_commands.md @@ -190,6 +190,23 @@ To define an option family, use the following DSL: end ``` +You can also add additional options for automatically built ones: +```ruby + # ... + build_options + # If --resource-id option comes from the API params and you want to add options + # with searchables such as --resource-name, --resource-label + option_family(associate: 'resource') do + child '--resource-name', 'RESOURCE', _('Resource desc'), attribute_name: :option_resource_name + child '--resource-label', 'RESOURCE', _('Resource desc'), attribute_name: :option_resource_label + end + # $ hammer command --help: + # ... + # Options: + # --resource[-id|-name|-label] Resource desc + # ... +``` + ##### Example ```ruby diff --git a/doc/release_notes.md b/doc/release_notes.md index 457412c8..03145d7e 100644 --- a/doc/release_notes.md +++ b/doc/release_notes.md @@ -1,5 +1,80 @@ Release notes ============= +### 3.9.0 (2023-11-29) +* Use strings for ruby versions in gha ([PR #380](https://github.com/theforeman/hammer-cli/pull/380)) +* Update packit +* Update rel-eng +* Bump to 3.9.0-develop + +### 3.8.0 (2023-08-25) +* Consider false values in string#format, [#36588](http://projects.theforeman.org/issues/36588) +* Drop unicode gem ([PR #376](https://github.com/theforeman/hammer-cli/pull/376)) +* Improve regex for keyvaluelist normalizer, [#36258](http://projects.theforeman.org/issues/36258) +* Fix minitest ([PR #375](https://github.com/theforeman/hammer-cli/pull/375)) +* Add ga to run tests on ruby 3+ +* Wrap commands with class.new to clone, [#36592](http://projects.theforeman.org/issues/36592) +* Try to upgrade ci_reporter, [#36592](http://projects.theforeman.org/issues/36592) +* Update minitest version, [#36592](http://projects.theforeman.org/issues/36592) +* Improve rakefile tx commands, [#36283](http://projects.theforeman.org/issues/36283) +* Move makefile targets to rakefile, [#36283](http://projects.theforeman.org/issues/36283) +* Update transifex automation, [#36283](http://projects.theforeman.org/issues/36283) +* Add packit config ([PR #370](https://github.com/theforeman/hammer-cli/pull/370)) +* Bump to 3.8.0-develop + +### 3.7.0 (2023-05-23) +* Honor tz in datetime normalizer ([PR #369](https://github.com/theforeman/hammer-cli/pull/369)), [#36418](http://projects.theforeman.org/issues/36418) +* Remove unused code, [#36337](http://projects.theforeman.org/issues/36337) +* Fix ambiguous operator warnings, [#36337](http://projects.theforeman.org/issues/36337) +* Update rake and clamp deps, [#36337](http://projects.theforeman.org/issues/36337) +* Fix config template typos ([PR #365](https://github.com/theforeman/hammer-cli/pull/365)) +* Load ssl key using openssl::pkey.read ([PR #364](https://github.com/theforeman/hammer-cli/pull/364)), [#34853](http://projects.theforeman.org/issues/34853) +* Bump to 3.7.0-develop + +### 3.6.0 (2023-02-23) +* Update apipie-bindings to 0.6.0 +* Include makefile.def in the gem +* Correct mocha inclusion in tests +* Bump to 3.6.0-develop + +### 3.5.0 (2022-10-31) +* Bump to 3.5.0-develop + +### 3.4.0 (2022-08-09) +* Bump to 3.4.0-develop + +### 3.3.0 (2022-05-10) +* Fix hammer shell with pipe as stdin ([PR #360](https://github.com/theforeman/hammer-cli/pull/360)), [#34724](http://projects.theforeman.org/issues/34724) +* Bump to 3.3.0-develop + +### 3.2.0 (2022-02-10) +* Fix fr translation ([PR #358](https://github.com/theforeman/hammer-cli/pull/358)), [#34204](http://projects.theforeman.org/issues/34204) +* Add missing_args_error_result test helper ([PR #357](https://github.com/theforeman/hammer-cli/pull/357)) +* Allow explicit strings in key=value options ([PR #356](https://github.com/theforeman/hammer-cli/pull/356)), [#34079](http://projects.theforeman.org/issues/34079) +* Bump to 3.2.0-develop + +### 3.1.0 (2021-11-10) +* Remove a space in hammer's shebang, [#33810](http://projects.theforeman.org/issues/33810) +* Revert fix rake version +* Fix rake version +* Wrap option descriptions to 80 chars, [#33129](http://projects.theforeman.org/issues/33129) +* Don't store @context in field params, [#33259](http://projects.theforeman.org/issues/33259) +* Change from superficial copy to deep copy of fields ([PR #348](https://github.com/theforeman/hammer-cli/pull/348)), [#29093](http://projects.theforeman.org/issues/29093) +* Make api docs params to be the main options, [#33226](http://projects.theforeman.org/issues/33226) +* Show depr warning only on option usage, [#33225](http://projects.theforeman.org/issues/33225) +* Extract descs to option details section, [#32783](http://projects.theforeman.org/issues/32783) +* Bump to 3.1.0-develop + +### 3.0.0 (2021-08-04) +* Update rel-eng notebook ([PR #347](https://github.com/theforeman/hammer-cli/pull/347)) +* Bump version to 3.0-develop +* Revert "change from superficial copy to deep copy of fields", [#29093](http://projects.theforeman.org/issues/29093) +* Change from superficial copy to deep copy of fields, [#29093](http://projects.theforeman.org/issues/29093) +* Add full comparison for fields option, [#31984](http://projects.theforeman.org/issues/31984) +* Force capitalized field names in help, [#32444](http://projects.theforeman.org/issues/32444) +* Unescape enum validator description, [#32570](http://projects.theforeman.org/issues/32570) +* Make cmd object be available in command extensions, [#32568](http://projects.theforeman.org/issues/32568) +* Bump to 2.6.0-develop + ### 2.5.0 (2021-05-04) * Better family assignment for options, [#30996](http://projects.theforeman.org/issues/30996) * Bump to 2.5.0-develop diff --git a/hammer_cli.gemspec b/hammer_cli.gemspec index a76b07a5..1f028b56 100644 --- a/hammer_cli.gemspec +++ b/hammer_cli.gemspec @@ -20,21 +20,22 @@ EOF locales = Dir['locale/*'].select { |f| File.directory?(f) } s.files = Dir['{lib,test,bin,doc,config}/**/*', 'LICENSE', 'README*'] + locales.map { |loc| "#{loc}/LC_MESSAGES/hammer-cli.mo" } + - ['man/hammer.1.gz'] + ['locale/Makefile.def', 'man/hammer.1.gz'] s.test_files = Dir['test/**/*'] s.extra_rdoc_files = Dir['{doc,config}/**/*', 'README*'] s.require_paths = ["lib"] s.executables = ['hammer', 'hammer-complete'] - s.add_dependency 'clamp', '>= 1.1', '< 1.2.0' + s.required_ruby_version = '>= 2.7' + + s.add_dependency 'clamp', '>= 1.3.1', '< 2.0.0' s.add_dependency 'logging' s.add_dependency 'unicode-display_width' - s.add_dependency 'unicode' s.add_dependency 'amazing_print' s.add_dependency 'highline' s.add_dependency 'fast_gettext' s.add_dependency 'locale', '>= 2.0.6' - s.add_dependency 'apipie-bindings', '>= 0.2.0' + s.add_dependency 'apipie-bindings', '>= 0.6.0' end diff --git a/lib/hammer_cli/abstract.rb b/lib/hammer_cli/abstract.rb index 7c4dbd82..9e6f1d53 100644 --- a/lib/hammer_cli/abstract.rb +++ b/lib/hammer_cli/abstract.rb @@ -20,9 +20,23 @@ module HammerCLI class AbstractCommand < Clamp::Command include HammerCLI::Subcommand + attr_reader :context + class << self attr_accessor :validation_blocks + def family_registry + @family_registry ||= HammerCLI::Options::OptionFamilyRegistry.new + end + + def option_families + ancestors.inject([]) do |registry, ancestor| + next registry unless ancestor <= HammerCLI::AbstractCommand + + registry + ancestor.family_registry + end + end + def help_extension_blocks @help_extension_blocks ||= [] end @@ -41,25 +55,37 @@ def inherited_command_extensions extensions end - def extend_options_help(option) + def add_option_schema(option) extend_help do |h| + option_details = h.find_item(:s_option_details) begin - h.find_item(:s_option_details) + option_details.definition.find_item(:t_schema_help) rescue ArgumentError - option_details = HammerCLI::Help::Section.new(_('Option details'), nil, id: :s_option_details, richtext: true) option_details.definition << HammerCLI::Help::Text.new( _('Following parameters accept format defined by its schema ' \ - '(bold are required; <> contain acceptable type; [] contain acceptable value):') + '(bold are required; <> contains acceptable type; [] contains acceptable value):'), + id: :t_schema_help ) - h.definition.unshift(option_details) - ensure - h.find_item(:s_option_details).definition << HammerCLI::Help::List.new([ - [option.switches.last, option.value_formatter.schema.description] - ]) end + option_details.definition << HammerCLI::Help::List.new([ + [option.switches.last, option.value_formatter.schema.description] + ]) end end + def add_option_details_section(help) + option_details = HammerCLI::Help::Section.new(_('Option details'), nil, id: :s_option_details, richtext: true) + option_details.definition << HammerCLI::Help::Text.new( + _('Here you can find option types and the value an option can accept:') + ) + type_list = HammerCLI::Options::Normalizers.available.each_with_object([]) do |n, l| + l << [n.completion_type.to_s.upcase, n.common_description] + end.uniq(&:first).sort + + option_details.definition << HammerCLI::Help::List.new(type_list) + help.definition.unshift(option_details) + end + def add_sets_help(help) sets_details = HammerCLI::Help::Section.new(_('Predefined field sets'), nil, id: :s_sets_details, richtext: true) sets_details.definition << HammerCLI::Help::Text.new(output_definition.sets_table) @@ -75,7 +101,7 @@ def run(arguments) begin begin exit_code = super - context.delete(:fields) + clean_up_context raise "exit code must be integer" unless exit_code.is_a? Integer rescue => e exit_code = handle_exception(e) @@ -97,6 +123,10 @@ def execute HammerCLI::EX_OK end + def clean_up_context + context.delete(:fields) + end + def self.validate_options(mode=:append, target_name=nil, validator: nil, &block) validator ||= HammerCLI::Options::Validators::DSLBlockValidator.new(&block) self.validation_blocks ||= [] @@ -115,6 +145,9 @@ def initialize(*args) super context[:path] ||= [] context[:path] << self + self.class.command_extensions.each do |extension| + extension.command_object(self) + end end def parent_command @@ -129,6 +162,7 @@ def self.help(invocation_path, builder = HammerCLI::Help::Builder.new) super(invocation_path, builder) help_extension = HammerCLI::Help::TextBuilder.new(builder.richtext) fields_switch = HammerCLI::Options::Predefined::OPTIONS[:fields].first[0] + add_option_details_section(help_extension) if recognised_options.size > 1 add_sets_help(help_extension) if find_option(fields_switch) unless help_extension_blocks.empty? help_extension_blocks.each do |extension_block| @@ -158,7 +192,7 @@ def self.extend_output_definition(&block) def self.output(definition=nil, &block) dsl = HammerCLI::Output::Dsl.new - dsl.build &block if block_given? + dsl.build(&block) if block_given? output_definition.append definition.fields unless definition.nil? output_definition.append dsl.fields end @@ -185,18 +219,29 @@ def self.option_builder @option_builder end + def self.option(switches, type, description, opts = {}, &block) + option = HammerCLI::Options::OptionDefinition.new(switches, type, description, opts).tap do |option| + declared_options << option + block ||= option.default_conversion_block + define_accessors_for(option, &block) + add_option_schema(option) if option.value_formatter.is_a?(HammerCLI::Options::Normalizers::ListNested) + completion_type_for(option, opts) + end + option + end + def self.build_options(builder_params={}) builder_params = yield(builder_params) if block_given? + builder_params[:command] = self option_builder.build(builder_params).each do |option| # skip switches that are already defined - next if option.nil? || option.switches.any? { |s| find_option(s) } + next if option.nil? || option.family || option.switches.any? { |s| find_option(s) } - adjust_family(option) if option.respond_to?(:family) declared_options << option block ||= option.default_conversion_block define_accessors_for(option, &block) - extend_options_help(option) if option.value_formatter.is_a?(HammerCLI::Options::Normalizers::ListNested) + add_option_schema(option) if option.value_formatter.is_a?(HammerCLI::Options::Normalizers::ListNested) completion_type_for(option) end end @@ -207,11 +252,12 @@ def self.extend_with(*extensions) raise ArgumentError, _('Command extensions should be inherited from %s.') % HammerCLI::CommandExtensions end extension.delegatee(self) - extension.extend_predefined_options(self) - extension.extend_options(self) - extension.extend_option_family(self) - extension.extend_output(self) - extension.extend_help(self) + extension.command_class(self) + extension.extend_predefined_options + extension.extend_options + extension.extend_option_family + extension.extend_output + extension.extend_help logger('Extensions').info "Applied #{extension.details} on #{self}." command_extensions << extension end @@ -223,14 +269,20 @@ def self.use_option(*names) end end - protected - def self.option_family(options = {}, &block) options[:creator] ||= self - family = HammerCLI::Options::OptionFamily.new(options) - family.instance_eval(&block) + family = if options[:associate] + option_families.find { |f| f.root.to_s == options[:associate].to_s } + else + HammerCLI::Options::OptionFamily.new(options) + end + return family.instance_eval(&block) if family + + logger('Option Family').debug "No family found for #{options[:associate]}, skipping" end + protected + def self.find_options(switch_filter, other_filters={}) filters = other_filters if switch_filter.is_a? Hash @@ -329,17 +381,6 @@ def self.define_simple_writer_for(attribute, &block) end end - def self.option(switches, type, description, opts = {}, &block) - option = HammerCLI::Options::OptionDefinition.new(switches, type, description, opts).tap do |option| - declared_options << option - block ||= option.default_conversion_block - define_accessors_for(option, &block) - completion_type_for(option, opts) - end - extend_options_help(option) if option.value_formatter.is_a?(HammerCLI::Options::Normalizers::ListNested) - option - end - def all_options option_collector.all_options end @@ -359,7 +400,7 @@ def option_sources sources = HammerCLI::Options::ProcessorList.new([sources]) self.class.command_extensions.each do |extension| - extension.extend_option_sources(sources, self) + extension.extend_option_sources(sources) end sources end @@ -402,32 +443,6 @@ def self.completion_type_for(option, opts = {}) private - def self.adjust_family(option) - # Collect options that should share the same family - # If those options have family, adopt the current one - # Else adopt those options to the family of the current option - # NOTE: this shouldn't rewrite any options, - # although options from similar family could be adopted (appended) - options = find_options( - aliased_resource: option.aliased_resource.to_s - ).select { |o| o.family.nil? || o.family.formats.include?(option.value_formatter.class) }.group_by do |o| - next :to_skip if option.family.children.include?(o) - next :to_adopt if o.family.nil? || o.family.head.nil? - next :to_skip if o.family.children.include?(option) - # If both family heads handle the same switch - # then `option` is probably from similar family and can be adopted - next :adopt_by if option.family.head.nil? || o.family.head.handles?(option.family.head.long_switch) - - :to_skip - end - options[:to_adopt]&.each do |child| - option.family&.adopt(child) - end - options[:adopt_by]&.map(&:family)&.uniq&.each do |family| - family.adopt(option) - end - end - def self.inherited_output_definition od = nil if superclass.respond_to? :output_definition diff --git a/lib/hammer_cli/apipie/command.rb b/lib/hammer_cli/apipie/command.rb index 07e6b118..21951134 100644 --- a/lib/hammer_cli/apipie/command.rb +++ b/lib/hammer_cli/apipie/command.rb @@ -86,9 +86,9 @@ def self.option(switches, type, description, opts = {}, &block) declared_options << option block ||= option.default_conversion_block define_accessors_for(option, &block) + add_option_schema(option) if option.value_formatter.is_a?(HammerCLI::Options::Normalizers::ListNested) completion_type_for(option, opts) end - extend_options_help(option) if option.value_formatter.is_a?(HammerCLI::Options::Normalizers::ListNested) option end diff --git a/lib/hammer_cli/apipie/option_builder.rb b/lib/hammer_cli/apipie/option_builder.rb index cbb39ede..07378cd8 100644 --- a/lib/hammer_cli/apipie/option_builder.rb +++ b/lib/hammer_cli/apipie/option_builder.rb @@ -9,11 +9,11 @@ def initialize(resource, action, options={}) @require_options = options[:require_options].nil? ? true : options[:require_options] end - def build(builder_params={}) + def build(builder_params = {}) filter = Array(builder_params[:without]) resource_name_map = builder_params[:resource_mapping] || {} - options_for_params(@action.params, filter, resource_name_map) + options_for_params(@action.params, filter, resource_name_map, command: builder_params[:command]) end attr_writer :require_options @@ -27,21 +27,24 @@ def option(*args) HammerCLI::Apipie::OptionDefinition.new(*args) end - def options_for_params(params, filter, resource_name_map) - opts = [] + def options_for_params(params, filter, resource_name_map, opts = {}) + options = [] params.each do |p| - next if filter.include?(p.name) || filter.include?(p.name.to_sym) + exists = opts[:command].find_option(option_switch(p, resource_name_map)) + next if filter.include?(p.name) || filter.include?(p.name.to_sym) || exists + if p.expected_type == :hash - opts += options_for_params(p.params, filter, resource_name_map) + options += options_for_params(p.params, filter, resource_name_map, opts) else - opts << create_option(p, resource_name_map) + options << create_option(p, resource_name_map, opts) end end - opts + options end - def create_option(param, resource_name_map) - family = HammerCLI::Options::OptionFamily.new + def create_option(param, resource_name_map, opts = {}) + family = HammerCLI::Options::OptionFamily.new(creator: opts[:command]) + # APIdoc params are considered to be the main options (parent) by default family.parent(option_switch(param, resource_name_map), option_type(param, resource_name_map), option_desc(param), @@ -72,7 +75,9 @@ def option_opts(param, resource_name_map) elsif param.expected_type.to_s == 'boolean' || param.validator.to_s == 'boolean' opts[:format] = HammerCLI::Options::Normalizers::Bool.new elsif param.expected_type.to_s == 'string' && param.validator =~ /Must be one of: (.*)\./ - allowed = $1.split(/,\ ?/).map { |val| val.gsub(/<[^>]*>/i,'') } + allowed = $1.split(/,\ ?/).map { |val| val.gsub(/<[^>]*>/i, '') }.map do |item| + CGI.unescapeHTML(item) + end opts[:format] = HammerCLI::Options::Normalizers::Enum.new(allowed) elsif param.expected_type.to_s == 'numeric' opts[:format] = HammerCLI::Options::Normalizers::Number.new diff --git a/lib/hammer_cli/apipie/option_definition.rb b/lib/hammer_cli/apipie/option_definition.rb index 067ef99d..51f1cf50 100644 --- a/lib/hammer_cli/apipie/option_definition.rb +++ b/lib/hammer_cli/apipie/option_definition.rb @@ -2,22 +2,15 @@ module HammerCLI::Apipie class OptionDefinition < HammerCLI::Options::OptionDefinition - attr_accessor :referenced_resource, :aliased_resource, :family + attr_accessor :referenced_resource, :aliased_resource def initialize(switches, type, description, options = {}) @referenced_resource = options[:referenced_resource].to_s if options[:referenced_resource] @aliased_resource = options[:aliased_resource].to_s if options[:aliased_resource] - @family = options[:family] super # Apipie currently sends descriptions as escaped HTML once this is changed this should be removed. # See #15198 on Redmine. @description = CGI::unescapeHTML(description) end - - def child? - return unless @family - - @family.children.include?(self) - end end end diff --git a/lib/hammer_cli/command_extensions.rb b/lib/hammer_cli/command_extensions.rb index f1c670f8..03cd01a9 100644 --- a/lib/hammer_cli/command_extensions.rb +++ b/lib/hammer_cli/command_extensions.rb @@ -87,86 +87,97 @@ def self.option_sources(&block) end def self.option_family(options = {}, &block) - @option_family_opts = options - @option_family_block = block + @option_family_extensions ||= [] + @option_family_extensions << { + options: options, + block: block + } end # Object - def extend_options(command_class) + def extend_options allowed = @only & %i[command_options option] return if allowed.empty? || (allowed & @except).any? - self.class.extend_options(command_class) + self.class.extend_options(@command_class) end - def extend_predefined_options(command_class) + def extend_predefined_options allowed = @only & %i[predefined_options use_option] return if allowed.empty? || (allowed & @except).any? - self.class.extend_predefined_options(command_class) + self.class.extend_predefined_options(@command_class) end def extend_before_print(data) allowed = @only & %i[before_print data] return if allowed.empty? || (allowed & @except).any? - self.class.extend_before_print(data) + self.class.extend_before_print(data, @command_object, @command_class) end - def extend_output(command_class) + def extend_output allowed = @only & %i[output] return if allowed.empty? || (allowed & @except).any? - self.class.extend_output(command_class) + self.class.extend_output(@command_class, @command_object) end - def extend_help(command_class) + def extend_help allowed = @only & %i[help] return if allowed.empty? || (allowed & @except).any? - self.class.extend_help(command_class) + self.class.extend_help(@command_class) end def extend_request_headers(headers) allowed = @only & %i[request_headers headers request] return if allowed.empty? || (allowed & @except).any? - self.class.extend_request_headers(headers) + self.class.extend_request_headers(headers, @command_object, @command_class) end def extend_request_options(options) allowed = @only & %i[request_options options request] return if allowed.empty? || (allowed & @except).any? - self.class.extend_request_options(options) + self.class.extend_request_options(options, @command_object, @command_class) end def extend_request_params(params) allowed = @only & %i[request_params params request] return if allowed.empty? || (allowed & @except).any? - self.class.extend_request_params(params) + self.class.extend_request_params(params, @command_object, @command_class) end - def extend_option_sources(sources, command = nil) + def extend_option_sources(sources) allowed = @only & %i[option_sources] return if allowed.empty? || (allowed & @except).any? - self.class.extend_option_sources(sources, command) + self.class.extend_option_sources(sources, @command_object, @command_class) end - def extend_option_family(command_class) + def extend_option_family allowed = @only & %i[option_family] return if allowed.empty? || (allowed & @except).any? - self.class.extend_option_family(command_class) + self.class.extend_option_family(@command_class) end def delegatee(command_class) self.class.delegatee = command_class end + def command_class(command_class) + @command_class = command_class + end + + def command_object(command_object) + @command_object = command_object + end + def details except = @except.empty? ? '*nothing*' : @except details = if @only == ALLOWED_EXTENSIONS @@ -198,17 +209,17 @@ def self.extend_predefined_options(command_class) logger.debug("Added predefined options for #{command_class}: #{@predefined_option_names}") end - def self.extend_before_print(data) + def self.extend_before_print(data, command_object, command_class) return if @before_print_block.nil? - @before_print_block.call(data) + @before_print_block.call(data, command_object, command_class) logger.debug("Called block for #{@delegatee} data:\n\t#{@before_print_block}") end - def self.extend_output(command_class) + def self.extend_output(command_class, command_object) return if @output_extension_block.nil? - @output_extension_block.call(command_class.output_definition) + @output_extension_block.call(command_class.output_definition, command_object, command_class) logger.debug("Called block for #{@delegatee} output definition:\n\t#{@output_extension_block}") end @@ -219,40 +230,42 @@ def self.extend_help(command_class) logger.debug("Saved block for #{@delegatee} help definition:\n\t#{@help_extension_block}") end - def self.extend_request_headers(headers) + def self.extend_request_headers(headers, command_object, command_class) return if @request_headers_block.nil? - @request_headers_block.call(headers) + @request_headers_block.call(headers, command_object, command_class) logger.debug("Called block for #{@delegatee} request headers:\n\t#{@request_headers_block}") end - def self.extend_request_options(options) + def self.extend_request_options(options, command_object, command_class) return if @request_options_block.nil? - @request_options_block.call(options) + @request_options_block.call(options, command_object, command_class) logger.debug("Called block for #{@delegatee} request options:\n\t#{@request_options_block}") end - def self.extend_request_params(params) + def self.extend_request_params(params, command_object, command_class) return if @request_params_block.nil? - @request_params_block.call(params) + @request_params_block.call(params, command_object, command_class) logger.debug("Called block for #{@delegatee} request params:\n\t#{@request_params_block}") end - def self.extend_option_sources(sources, command = nil) + def self.extend_option_sources(sources, command_object, command_class) return if @option_sources_block.nil? - @option_sources_block.call(sources, command) + @option_sources_block.call(sources, command_object, command_class) logger.debug("Called block for #{@delegatee} option sources:\n\t#{@option_sources_block}") end def self.extend_option_family(command_class) - return if @option_family_block.nil? + return if @option_family_extensions.nil? - @option_family_opts[:creator] = command_class - command_class.send(:option_family, @option_family_opts, &@option_family_block) - logger.debug("Called option family block for #{command_class}:\n\t#{@option_family_block}") + @option_family_extensions.each do |extension| + extension[:options][:creator] = command_class + command_class.send(:option_family, extension[:options], &extension[:block]) + logger.debug("Called option family block for #{command_class}:\n\t#{extension[:block]}") + end end end end diff --git a/lib/hammer_cli/defaults_commands.rb b/lib/hammer_cli/defaults_commands.rb index cff5bf66..74df19b1 100644 --- a/lib/hammer_cli/defaults_commands.rb +++ b/lib/hammer_cli/defaults_commands.rb @@ -1,4 +1,3 @@ -require 'hammer_cli' require 'yaml' module HammerCLI class BaseDefaultsProvider diff --git a/lib/hammer_cli/help/builder.rb b/lib/hammer_cli/help/builder.rb index 020b80b0..51955aef 100644 --- a/lib/hammer_cli/help/builder.rb +++ b/lib/hammer_cli/help/builder.rb @@ -1,4 +1,3 @@ -require 'unicode' module HammerCLI module Help class Builder < Clamp::Help::Builder @@ -14,7 +13,7 @@ def initialize(richtext = false) def add_usage(invocation_path, usage_descriptions) heading(Clamp.message(:usage_heading)) usage_descriptions.each do |usage| - puts " #{HammerCLI.expand_invocation_path(invocation_path)} #{usage}".rstrip + line " #{HammerCLI.expand_invocation_path(invocation_path)} #{usage}".rstrip end end @@ -24,12 +23,16 @@ def add_list(heading, items) end items.reject! {|item| item.respond_to?(:hidden?) && item.hidden?} - puts + line heading(heading) label_width = DEFAULT_LABEL_INDENT items.each do |item| - label = item.help.first + label = if !HammerCLI.context[:full_help] && item.respond_to?(:family) && item.family && !item.child? + item.family.help.first + else + item.help.first + end label_width = label.size if label.size > label_width end @@ -38,20 +41,20 @@ def add_list(heading, items) next unless HammerCLI.context[:full_help] end label, description = if !HammerCLI.context[:full_help] && item.respond_to?(:family) && item.family - [item.family.switch, item.family.description || item.help[1]] - else - item.help - end - description.gsub(/^(.)/) { Unicode::capitalize($1) }.each_line do |line| - puts " %-#{label_width}s %s" % [label, line] + item.family.help + else + item.help + end + description.gsub(/^(.)/) { Regexp.last_match(1).capitalize }.wrap.each_line do |line| + line " %-#{label_width}s %s" % [label, line] label = '' end end end def add_text(content) - puts - puts content + line + line content end protected @@ -59,7 +62,7 @@ def add_text(content) def heading(label) label = "#{label}:" label = HighLine.color(label, :bold) if @richtext - puts label + line label end end end diff --git a/lib/hammer_cli/i18n.rb b/lib/hammer_cli/i18n.rb index 3a4883f6..e506e0fa 100644 --- a/lib/hammer_cli/i18n.rb +++ b/lib/hammer_cli/i18n.rb @@ -137,6 +137,10 @@ def self.main_makefile File.expand_path(File.join(File.dirname(__FILE__), '../../locale/Makefile.def')) end + def self.find_by_name(name) + domains.find { |domain| domain.class.to_s.split('::').first.underscore == name } + end + init end end diff --git a/lib/hammer_cli/i18n/find_task.rb b/lib/hammer_cli/i18n/find_task.rb index 0f7bb3e3..04426463 100644 --- a/lib/hammer_cli/i18n/find_task.rb +++ b/lib/hammer_cli/i18n/find_task.rb @@ -1,10 +1,13 @@ require 'rake' +require_relative '../task_helper' module HammerCLI module I18n class FindTask include Rake::DSL + MIN_TRANSLATION_PERC = 50 + def initialize(domain, version) @domain = domain @version = version @@ -30,6 +33,91 @@ def define task :find => [:setup] do Rake::Task["gettext:po:update"].invoke end + + desc 'Check languages with 50% or more coverage and create needed files' + task :find_new do + client = HammerCLI::TaskHelper::I18n::TxApiClient.new(domain: @domain) + stats = client.language_stats_collection + lang_percentages = stats['data'].each_with_object({}) do |lang, res| + res[lang['id'].split(':').last] = (lang['attributes']['translated_strings'] * 100.0 / lang['attributes']['total_strings']).round + end + lang_percentages.select { |_, v| v >= MIN_TRANSLATION_PERC }.each_key do |lang| + lang_dir = File.join(@domain.locale_dir, lang) + FileUtils.mkpath(lang_dir) + FileUtils.cp(File.join(@domain.locale_dir, "#{@domain.domain_name}.pot"), File.join(lang_dir, "#{@domain.domain_name}.po")) + end + end + end + + namespace :tx do + desc 'Pull translations from transifex' + task :pull do + raise 'Command tx not found. Make sure you have transifex-client installed and configured.' unless system("command -v tx >/dev/null 2>&1") + + sh "tx pull -f" + edit_files = Dir.glob(File.join(@domain.locale_dir, '**', '*.edit.po')) + edit_files.each do |edit_file| + `sed -i 's/^\\("Project-Id-Version: \\).*$/\\1#{@domain.domain_name} #{@version}\\\\n"/' #{edit_file};` + end + end + + desc 'Merge .edit.po into .po' + task :update_po do + edit_files = Dir.glob(File.join(@domain.locale_dir, '**', '*.edit.po')) + edit_files.each do |edit_file| + po_file = edit_file.gsub('.edit.po', '.po') + sh "msgcat --use-first --no-location #{edit_file} #{po_file} --output-file #{po_file}" + end + end + + desc 'Generate MO files from PO files' + task :all_mo do + po_files = Dir.glob(File.join(@domain.locale_dir, '**', "#{@domain.domain_name}.po")) + po_files.each do |po_file| + dir = File.dirname(po_file) + '/LC_MESSAGES' + FileUtils.mkdir_p(dir) + sh "msgfmt -o #{dir}/#{@domain.domain_name}.mo #{po_file}" + end + end + + desc 'Download and merge translations from Transifex' + task :update do + Rake::Task['gettext:find_new'].invoke + Rake::Task['gettext:find'].invoke + Rake::Task['tx:pull'].invoke + Rake::Task['tx:update_po'].invoke + Rake::Task['tx:all_mo'].invoke + locale_dir = File.expand_path(@domain.locale_dir, __dir__) + sh "git add #{locale_dir}" + sh 'git commit -m "i18n - extracting new, pulling from tx"' + puts 'Changes commited!' + end + + desc 'Check for malformed strings' + task :check do + raise 'Command pofilter not found. Make sure you have translate-toolkit installed.' unless system("command -v pofilter >/dev/null 2>&1") + + po_files = Dir.glob(File.join(@domain.locale_dir, '**',"#{@domain.domain_name}.po")) + po_files.each do |po_file| + pox_file = po_file.gsub('.po', '.pox') + sh "msgfmt -c #{po_file}" + sh "pofilter --nofuzzy -t variables -t blank -t urls -t emails -t long -t newlines -t endwhitespace -t endpunc \ + -t puncspacing -t options -t printf -t validchars --gnome #{po_file} > #{pox_file};" + sh("! grep -q msgid #{pox_file}") do |ok, _| + sh "cat #{pox_file}" unless ok + abort "See errors above for #{pox_file}." + end + end + end + + desc 'Clean everything, removes *.edit.po, *.po.timestamp and *.pox files' + task :clean do + edit_files = Dir.glob(File.join(@domain.locale_dir, '**', '*.edit.po')) + timestamp_files = Dir.glob(File.join(@domain.locale_dir, '**', '*.po.time_stamp')) + pox_files = Dir.glob(File.join(@domain.locale_dir, '**', '*.pox')) + messages_file = Dir.glob(File.join(@domain.locale_dir, '..', 'messages.mo')) + FileUtils.rm_f(edit_files + timestamp_files + pox_files + messages_file) + end end end diff --git a/lib/hammer_cli/logger.rb b/lib/hammer_cli/logger.rb index b6dc66a4..ee3d9389 100644 --- a/lib/hammer_cli/logger.rb +++ b/lib/hammer_cli/logger.rb @@ -54,7 +54,7 @@ def self.initialize_logger(logger) log_dir = File.expand_path(HammerCLI::Settings.get(:log_dir) || DEFAULT_LOG_DIR) begin FileUtils.mkdir_p(log_dir, :mode => 0750) - rescue Errno::EACCES => e + rescue Errno::EACCES $stderr.puts _("No permissions to create log dir %s.") % log_dir end @@ -68,7 +68,7 @@ def self.initialize_logger(logger) :size => (HammerCLI::Settings.get(:log_size) || 1)*1024*1024) # 1MB # set owner and group (it's ignored if attribute is nil) FileUtils.chown HammerCLI::Settings.get(:log_owner), HammerCLI::Settings.get(:log_group), filename - rescue ArgumentError => e + rescue ArgumentError $stderr.puts _("File %s not writeable, won't log anything to the file!") % filename end diff --git a/lib/hammer_cli/modules.rb b/lib/hammer_cli/modules.rb index 62465091..5501100e 100644 --- a/lib/hammer_cli/modules.rb +++ b/lib/hammer_cli/modules.rb @@ -67,7 +67,7 @@ def self.load!(name) def self.load(name) load! name - rescue Exception => e + rescue Exception false end diff --git a/lib/hammer_cli/options/normalizers.rb b/lib/hammer_cli/options/normalizers.rb index 8536a36a..47a6b1d9 100644 --- a/lib/hammer_cli/options/normalizers.rb +++ b/lib/hammer_cli/options/normalizers.rb @@ -4,8 +4,28 @@ module HammerCLI module Options module Normalizers + def self.available + AbstractNormalizer.available + end class AbstractNormalizer + class << self + attr_reader :available + + def inherited(subclass) + @available ||= [] + @available << subclass + end + + def completion_type + :value + end + + def common_description + _("Value described in the option's description. Mostly simple string") + end + end + def description "" end @@ -17,6 +37,10 @@ def format(val) def complete(val) [] end + + def completion_type + { type: self.class.completion_type } + end end class Default < AbstractNormalizer @@ -26,19 +50,22 @@ def format(value) end class KeyValueList < AbstractNormalizer + FULL_RE = '([^=,]+)=([\{\[][^\{\}\[\]]*[\}\]]|[^\0]+?)(?=,[^,]+=|$)' - PAIR_RE = '([^,=]+)=([^,\{\[]+|[\{\[][^\{\}\[\]]*[\}\]])' - FULL_RE = "^((%s)[,]?)+$" % PAIR_RE + class << self + def completion_type + :key_value_list + end - def description - _("Comma-separated list of key=value.") + "\n" + - _("JSON is acceptable and preferred way for complex parameters") + def common_description + _('Comma-separated list of key=value.') + "\n" + + _('JSON is acceptable and preferred way for such parameters') + end end def format(val) return {} unless val.is_a?(String) return {} if val.empty? - if valid_key_value?(val) parse_key_value(val) else @@ -59,7 +86,7 @@ def valid_key_value?(val) def parse_key_value(val) result = {} - val.scan(Regexp.new(PAIR_RE)) do |key, value| + val.scan(Regexp.new(FULL_RE)) do |key, value| value = value.strip if value.start_with?('[') value = value.scan(/[^,\[\]]+/) @@ -74,15 +101,13 @@ def parse_key_value(val) def strip_value(value) if value.is_a? Array - value.map do |item| - strip_chars(item.strip, '"\'') - end + value.map(&:strip) elsif value.is_a? Hash value.map do |key, val| - [strip_chars(key.strip, '"\''), strip_chars(val.strip, '"\'')] + [strip_chars(key.strip, '"\''), val.strip] end.to_h else - strip_chars(value.strip, '"\'') + value.strip end end @@ -94,9 +119,16 @@ def strip_chars(string, chars) class List < AbstractNormalizer - def description - _("Comma separated list of values. Values containing comma should be quoted or escaped with backslash.") + "\n" + - _("JSON is acceptable and preferred way for complex parameters") + class << self + def completion_type + :list + end + + def common_description + _('Comma separated list of values. Values containing comma should be quoted or escaped with backslash.') + + "\n" + + _('JSON is acceptable and preferred way for such parameters') + end end def format(val) @@ -110,6 +142,18 @@ def format(val) end class ListNested < AbstractNormalizer + class << self + def completion_type + :schema + end + + def common_description + _('Comma separated list of values defined by a schema.') + + "\n" + + _('JSON is acceptable and preferred way for such parameters') + end + end + class Schema < Array def description(richtext: true) '"' + reduce([]) do |schema, nested_param| @@ -135,11 +179,6 @@ def initialize(schema) @schema = Schema.new(schema) end - def description - _("Comma separated list of values defined by a schema. See Option details section below.") + "\n" + - _("JSON is acceptable and preferred way for complex parameters") - end - def format(val) return [] unless val.is_a?(String) && !val.empty? begin @@ -152,9 +191,22 @@ def format(val) end end end + + def completion_type + super.merge({ schema: schema.description(richtext: false) }) + end end class Number < AbstractNormalizer + class << self + def completion_type + :number + end + + def common_description + _('Numeric value. Integer') + end + end def format(val) if numeric?(val) @@ -167,17 +219,22 @@ def format(val) def numeric?(val) Integer(val) != nil rescue false end - end class Bool < AbstractNormalizer - def allowed_values - ['yes', 'no', 'true', 'false', '1', '0'] + class << self + def completion_type + :boolean + end + + def common_description + _('One of %s') % ['true/false', 'yes/no', '1/0'].join(', ') + end end - def description - _('One of %s.') % ['true/false', 'yes/no', '1/0'].join(', ') + def allowed_values + ['yes', 'no', 'true', 'false', '1', '0'] end def format(bool) @@ -194,10 +251,23 @@ def format(bool) def complete(value) allowed_values.map { |v| v + ' ' } end + + def completion_type + super.merge({ values: allowed_values }) + end end class File < AbstractNormalizer + class << self + def completion_type + :file + end + + def common_description + _('Path to a file') + end + end def format(path) ::File.read(::File.expand_path(path)) @@ -225,7 +295,7 @@ def format(val) json_string = ::File.exist?(::File.expand_path(val)) ? super(val) : val ::JSON.parse(json_string) - rescue ::JSON::ParserError => e + rescue ::JSON::ParserError raise ArgumentError, _("Unable to parse JSON input.") end @@ -233,6 +303,16 @@ def format(val) class Enum < AbstractNormalizer + class << self + def completion_type + :enum + end + + def common_description + _("Possible values are described in the option's description") + end + end + attr_reader :allowed_values def initialize(allowed_values) @@ -260,6 +340,10 @@ def complete(value) Completer::finalize_completions(@allowed_values) end + def completion_type + super.merge({ values: allowed_values }) + end + private def quoted_values @@ -269,20 +353,35 @@ def quoted_values class DateTime < AbstractNormalizer + class << self + def completion_type + :datetime + end - def description - _("Date and time in YYYY-MM-DD HH:MM:SS or ISO 8601 format") + def common_description + _('Date and time in YYYY-MM-DD HH:MM:SS or ISO 8601 format') + end end def format(date) raise ArgumentError unless date - ::DateTime.parse(date).to_s + ::Time.parse(date).iso8601 rescue ArgumentError raise ArgumentError, _("'%s' is not a valid date.") % date end end class EnumList < AbstractNormalizer + class << self + def completion_type + :multienum + end + + def common_description + _("Any combination of possible values described in the option's description") + end + end + attr_reader :allowed_values def initialize(allowed_values) @@ -301,6 +400,10 @@ def complete(value) Completer::finalize_completions(@allowed_values) end + def completion_type + super.merge({ values: allowed_values }) + end + private def quoted_values diff --git a/lib/hammer_cli/options/option_definition.rb b/lib/hammer_cli/options/option_definition.rb index 272153cd..2ef1fa13 100644 --- a/lib/hammer_cli/options/option_definition.rb +++ b/lib/hammer_cli/options/option_definition.rb @@ -22,12 +22,14 @@ module Options class OptionDefinition < Clamp::Option::Definition - attr_accessor :value_formatter, :context_target, :deprecated_switches + attr_accessor :value_formatter, :context_target, :deprecated_switches, + :family def initialize(switches, type, description, options = {}) @value_formatter = options[:format] || HammerCLI::Options::Normalizers::Default.new @context_target = options[:context_target] @deprecated_switches = options[:deprecated] + @family = options[:family] super end @@ -36,7 +38,9 @@ def complete(value) end def help_lhs - super + lhs = switches.join(', ') + lhs += " #{completion_type[:type]}".upcase unless flag? + lhs end def help_rhs @@ -50,14 +54,14 @@ def help_rhs rhs.empty? ? " " : rhs end - def handles?(switch) + def extract_value(switch, arguments) message = _("Warning: Option %{option} is deprecated. %{message}") if deprecated_switches.class <= String && switches.include?(switch) - warn(message % { :option => switch, :message => deprecated_switches }) + warn(message % { option: switch, message: deprecated_switches }) elsif deprecated_switches.class <= Hash && deprecated_switches.keys.include?(switch) - warn(message % { :option => switch, :message => deprecated_switches[switch] }) + warn(message % { option: switch, message: deprecated_switches[switch] }) end - super(switch) + super(switch, arguments) end def deprecation_message(switch) @@ -140,22 +144,13 @@ def completion_type(formatter = nil) return { type: :flag } if @type == :flag formatter ||= value_formatter - completion_type = case formatter - when HammerCLI::Options::Normalizers::Bool, - HammerCLI::Options::Normalizers::Enum - { type: :enum, values: value_formatter.allowed_values } - when HammerCLI::Options::Normalizers::EnumList - { type: :multienum, values: value_formatter.allowed_values } - when HammerCLI::Options::Normalizers::ListNested - { type: :schema, schema: value_formatter.schema.description(richtext: false) } - when HammerCLI::Options::Normalizers::List - { type: :list } - when HammerCLI::Options::Normalizers::KeyValueList - { type: :key_value_list } - when HammerCLI::Options::Normalizers::File - { type: :file } - end - completion_type || { type: :value } + formatter.completion_type + end + + def child? + return unless @family + + @family.children.include?(self) end private diff --git a/lib/hammer_cli/options/option_family.rb b/lib/hammer_cli/options/option_family.rb index 532dd35a..4f9f0993 100644 --- a/lib/hammer_cli/options/option_family.rb +++ b/lib/hammer_cli/options/option_family.rb @@ -2,25 +2,33 @@ module HammerCLI module Options + class OptionFamilyRegistry < Array + # rubocop:disable Style/Alias + alias_method :register, :push + alias_method :unregister, :delete + # rubocop:enable Style/Alias + end + class OptionFamily attr_reader :children - IDS_REGEX = /(\A[Ii][Dd][s]?)|\s([Ii][Dd][s]?)\W|([Ii][Dd][s]?\Z)/ + IDS_REGEX = /(\A[Ii][Dd][s]?)|\s([Ii][Dd][s]?)\W|([Ii][Dd][s]?\Z)|(numeric identifier|identifier)/.freeze def initialize(options = {}) @all = [] @children = [] @options = options - @creator = options[:creator] || Class.new(HammerCLI::Apipie::Command) + @creator = options[:creator] || self @prefix = options[:prefix] @root = options[:root] || options[:aliased_resource] || options[:referenced_resource] + @creator.family_registry.register(self) if @creator != self end def description types = all.map(&:type).map { |s| s.split('_').last.to_s } .map(&:downcase).join('/') - parent_desc = @parent.help[1].gsub(IDS_REGEX) { |w| w.gsub(/\w+/, types) } - desc = parent_desc.strip.empty? ? @options[:description] : parent_desc + parent_desc = @parent.help[1].gsub(IDS_REGEX) { |w| w.gsub(/\b.+\b/, types) } + desc = @options[:description] || parent_desc.strip.empty? ? @options[:description] : parent_desc if @options[:deprecation].class <= String format_deprecation_msg(desc, _('Deprecated: %{deprecated_msg}') % { deprecated_msg: @options[:deprecation] }) elsif @options[:deprecation].class <= Hash @@ -33,6 +41,21 @@ def description end end + def help + [help_lhs, help_rhs] + end + + def help_lhs + return @parent&.help_lhs if @children.empty? + + types = all.map(&:value_formatter).map { |f| f.completion_type[:type].to_s.upcase } + switch + ' ' + types.uniq.join('/') + end + + def help_rhs + description || @parent.help[1] + end + def formats return [@options[:format].class] if @options[:format] @@ -41,7 +64,7 @@ def formats def switch return if @parent.nil? && @children.empty? - return @parent.help_lhs.strip if @children.empty? + return @parent.switches.join(', ').strip if @children.empty? switch_start = main_switch.each_char .zip(*all.map(&:switches).flatten.map(&:each_char)) @@ -68,6 +91,8 @@ def parent(switches, type, description, opts = {}, &block) def child(switches, type, description, opts = {}, &block) child = new_member(switches, type, description, opts, &block) + return unless child + @children << child child end @@ -80,6 +105,18 @@ def adopt(child) @children << child end + def root + @root || @parent&.aliased_resource || @parent&.referenced_resource || common_root + end + + def option(*args) + HammerCLI::Apipie::OptionDefinition.new(*args) + end + + def find_option(switch) + all.find { |m| m.handles?(switch) } + end + private def format_deprecation_msg(option_desc, deprecation_msg) @@ -90,18 +127,17 @@ def new_member(switches, type, description, opts = {}, &block) opts = opts.merge(@options) opts[:family] = self if opts[:deprecated] - handles = [switches].flatten + handles = Array(switches) opts[:deprecated] = opts[:deprecated].select do |switch, _msg| handles.include?(switch) end end @creator.instance_eval do - option(switches, type, description, opts, &block) + option(switches, type, description, opts, &block) unless Array(switches).any? { |s| find_option(s) } end end def main_switch - root = @root || @parent.aliased_resource || @parent.referenced_resource || common_root "--#{@prefix}#{root}".tr('_', '-') end diff --git a/lib/hammer_cli/options/validators/dsl.rb b/lib/hammer_cli/options/validators/dsl.rb index eb4f6971..8c25d2d7 100644 --- a/lib/hammer_cli/options/validators/dsl.rb +++ b/lib/hammer_cli/options/validators/dsl.rb @@ -152,7 +152,7 @@ def one_of(*to_check) end def run(&block) - self.instance_eval &block + self.instance_eval(&block) end end end diff --git a/lib/hammer_cli/output/adapter/abstract.rb b/lib/hammer_cli/output/adapter/abstract.rb index d61e513b..ac0ba32d 100644 --- a/lib/hammer_cli/output/adapter/abstract.rb +++ b/lib/hammer_cli/output/adapter/abstract.rb @@ -97,6 +97,12 @@ def sets_filter @context[:fields] || ['DEFAULT'] end + def context_for_fields + { + show_ids: @context[:show_ids] + } + end + private def filter_formatters(formatters_map) diff --git a/lib/hammer_cli/output/adapter/base.rb b/lib/hammer_cli/output/adapter/base.rb index 71ec9c3a..e5e67358 100644 --- a/lib/hammer_cli/output/adapter/base.rb +++ b/lib/hammer_cli/output/adapter/base.rb @@ -76,7 +76,7 @@ def render_label(field, width) def render_value(field, data) formatter = @formatters.formatter_for_type(field.class) parameters = field.parameters - parameters[:context] = @context + parameters[:context] = context_for_fields data = formatter.format(data, field.parameters) if formatter data.to_s end diff --git a/lib/hammer_cli/output/adapter/csv.rb b/lib/hammer_cli/output/adapter/csv.rb index 26f5269e..d6fadbc7 100644 --- a/lib/hammer_cli/output/adapter/csv.rb +++ b/lib/hammer_cli/output/adapter/csv.rb @@ -94,7 +94,6 @@ def initialize(field) @name = nil @prefixes = [] @suffixes = [] - @data end def append_suffix(suffix) diff --git a/lib/hammer_cli/output/adapter/tree_structure.rb b/lib/hammer_cli/output/adapter/tree_structure.rb index 5c47b606..88a852c1 100644 --- a/lib/hammer_cli/output/adapter/tree_structure.rb +++ b/lib/hammer_cli/output/adapter/tree_structure.rb @@ -55,7 +55,7 @@ def render_field(field, data) else formatter = @formatters.formatter_for_type(field.class) parameters = field.parameters - parameters[:context] = @context + parameters[:context] = context_for_fields if formatter data = formatter.format(data, field.parameters) end diff --git a/lib/hammer_cli/output/dsl.rb b/lib/hammer_cli/output/dsl.rb index 1606e930..bc8ad225 100644 --- a/lib/hammer_cli/output/dsl.rb +++ b/lib/hammer_cli/output/dsl.rb @@ -12,7 +12,7 @@ def fields end def build(&block) - self.instance_eval &block + self.instance_eval(&block) end protected diff --git a/lib/hammer_cli/output/field_filter.rb b/lib/hammer_cli/output/field_filter.rb index 529cd424..69735d2b 100644 --- a/lib/hammer_cli/output/field_filter.rb +++ b/lib/hammer_cli/output/field_filter.rb @@ -11,7 +11,7 @@ def initialize(fields = [], filters = {}) def fields=(fields) @fields = fields || [] - @filtered_fields = @fields.dup + @filtered_fields = Marshal.load(Marshal.dump(@fields)) end def filter_by_classes(classes = nil) diff --git a/lib/hammer_cli/output/fields.rb b/lib/hammer_cli/output/fields.rb index 98671ab6..8205b850 100644 --- a/lib/hammer_cli/output/fields.rb +++ b/lib/hammer_cli/output/fields.rb @@ -72,7 +72,7 @@ class ContainerField < Field def initialize(options={}, &block) super(options) dsl = HammerCLI::Output::Dsl.new - dsl.build &block if block_given? + dsl.build(&block) if block_given? dsl.fields.each { |f| f.parent = self } self.output_definition.append dsl.fields end diff --git a/lib/hammer_cli/output/formatters.rb b/lib/hammer_cli/output/formatters.rb index 5b659d9e..40915d6f 100644 --- a/lib/hammer_cli/output/formatters.rb +++ b/lib/hammer_cli/output/formatters.rb @@ -13,7 +13,7 @@ def initialize(formatter_map={}) def register_formatter(type, *formatters) if @_formatters[type].nil? - @_formatters[type] = FormatterContainer.new *formatters + @_formatters[type] = FormatterContainer.new(*formatters) else formatters.each { |f| @_formatters[type].add_formatter(f) } end @@ -84,8 +84,8 @@ def required_features tags.map { |t| HammerCLI::Output::Utils.tag_to_feature(t) } end - def format(data, field_params={}) - c = HighLine.color(data.to_s, @color) + def format(data, _={}) + HighLine.color(data.to_s, @color) end end @@ -97,7 +97,7 @@ def required_features tags.map { |t| HammerCLI::Output::Utils.tag_to_feature(t) } end - def format(string_date, field_params={}) + def format(string_date, _={}) t = DateTime.parse(string_date.to_s) t.strftime("%Y/%m/%d %H:%M:%S") rescue ArgumentError diff --git a/lib/hammer_cli/settings.rb b/lib/hammer_cli/settings.rb index 766fe2ca..6eb30188 100644 --- a/lib/hammer_cli/settings.rb +++ b/lib/hammer_cli/settings.rb @@ -4,6 +4,8 @@ module HammerCLI class Settings + CFG_PATH = ['~/.hammer/', '/etc/hammer/', "#{::RbConfig::CONFIG['sysconfdir']}/hammer/"].uniq + CFG_PATH_LOCAL = ['./config/'] def self.get(*keys) keys.inject(settings) do |value, key| @@ -41,6 +43,11 @@ def self.load_from_file(file_path) end end + def self.load_from_defaults + load_from_paths CFG_PATH + load_from_paths CFG_PATH_LOCAL + end + def self.load(settings_hash) deep_merge!(settings, settings_hash) end diff --git a/lib/hammer_cli/shell.rb b/lib/hammer_cli/shell.rb index 5099dee4..ea1086b0 100644 --- a/lib/hammer_cli/shell.rb +++ b/lib/hammer_cli/shell.rb @@ -86,7 +86,7 @@ def execute Readline.completer_word_break_characters = ' =' Readline.completion_proc = complete_proc - stty_save = `stty -g`.chomp + stty_save = `stty -g`.chomp if $stdin.tty? history = ShellHistory.new(Settings.get(:ui, :history_file) || DEFAULT_HISTORY_FILE) @@ -102,7 +102,8 @@ def execute rescue Interrupt; end puts - system('stty', stty_save) # Restore + # Restore + system('stty', stty_save) if $stdin.tty? HammerCLI::EX_OK end diff --git a/lib/hammer_cli/ssloptions.rb b/lib/hammer_cli/ssloptions.rb index 04c3ef23..710e2372 100644 --- a/lib/hammer_cli/ssloptions.rb +++ b/lib/hammer_cli/ssloptions.rb @@ -68,13 +68,13 @@ def cert_key_options def read_certificate(path) OpenSSL::X509::Certificate.new(File.read(path)) unless path.nil? - rescue SystemCallError => e + rescue SystemCallError warn _("Could't read SSL client certificate %s.") % path end def read_key(path) - OpenSSL::PKey::RSA.new(File.read(path)) unless path.nil? - rescue SystemCallError => e + OpenSSL::PKey.read(File.read(path)) unless path.nil? + rescue SystemCallError warn _("Could't read SSL client key %s.") % path end end diff --git a/lib/hammer_cli/subcommand.rb b/lib/hammer_cli/subcommand.rb index 9598bb8a..85b47a22 100644 --- a/lib/hammer_cli/subcommand.rb +++ b/lib/hammer_cli/subcommand.rb @@ -11,6 +11,7 @@ def initialize(names, description, subcommand_class, options = {}) @subcommand_class = subcommand_class @hidden = options[:hidden] @warning = options[:warning] + super(@names, @description, @subcommand_class) end def hidden? diff --git a/lib/hammer_cli/task_helper.rb b/lib/hammer_cli/task_helper.rb new file mode 100644 index 00000000..d38386a2 --- /dev/null +++ b/lib/hammer_cli/task_helper.rb @@ -0,0 +1,84 @@ +require 'uri' +require 'net/http' +require 'openssl' +require 'json' + +module HammerCLI + module TaskHelper + module I18n + class TxApiClient + class GeneralError < StandardError + def initialize(error) + msg = case error + when Hash + "#{error['title']}: #{error['detail']}" + when Array + error.join("\n") + else + error.to_s + end + super(msg) + end + end + + TX_CONFIG_RC_FILE = '~/.transifexrc' + TX_BASE_API_URL = 'https://rest.api.transifex.com' + + def initialize(domain:) + @domain = domain + end + + def language_stats_collection + make_call( + path: '/resource_language_stats', + params: { + 'filter[project]' => 'o:foreman:p:foreman', + 'filter[resource]' => "o:foreman:p:foreman:r:#{@domain.domain_name}" + } + ) + end + + private + + def make_call(path:, params: {}, http_method: :GET, content_type: 'application/vnd.api+json', body: nil) + url = URI(TX_BASE_API_URL + path) + url.query = URI.encode_www_form(params) + + body = Net::HTTP.start(url.host, url.port, use_ssl: true) do |https| + request = Object.const_get("Net::HTTP::#{http_method.to_s.capitalize}").new(url) + request["accept"] = 'application/vnd.api+json' + request["content-type"] = content_type + request["authorization"] = "Bearer #{api_token}" + request.body = body + + response = https.request(request).read_body + JSON.parse(response) rescue { 'errors' => ['Could not parse response']} + end + return body unless body['errors'] + + raise GeneralError.new(body['errors']&.first) + end + + def api_token + return ENV['TX_TOKEN'] if ENV['TX_TOKEN'] + + token = nil + config_file = File.expand_path(TX_CONFIG_RC_FILE) + if File.exist?(config_file) + File.open(config_file) do |file| + file.find do |line| + match = line.match(/^(?token|password)\s*=\s*(?\S+)$/) + next unless match + + token = match[:token] + end + end + end + raise GeneralError.new("Could not find API token. Set it in #{config_file} or TX_TOKEN.") unless token + + token + end + end + end + end +end diff --git a/lib/hammer_cli/testing/command_assertions.rb b/lib/hammer_cli/testing/command_assertions.rb index 6a171ea1..10089e33 100644 --- a/lib/hammer_cli/testing/command_assertions.rb +++ b/lib/hammer_cli/testing/command_assertions.rb @@ -94,6 +94,20 @@ def common_error(command, message, heading=nil) end end + def missing_args_error(command, opts, heading = nil) + opts = Array(opts).map { |o| "'#{o}'" }.join(', ') + message = " Missing arguments for #{opts}." + if heading.nil? + ["Could not #{command[-1]} the #{command[-2]}:", + message, + ''].join("\n") + else + ["#{heading}:", + message, + ''].join("\n") + end + end + def usage_error_result(command, message, heading=nil) expected_result = CommandExpectation.new expected_result.expected_err = usage_error(command, message, heading) @@ -115,6 +129,13 @@ def not_found_error_result(command, message, heading=nil) expected_result end + def missing_args_error_result(command, opts, heading = nil) + expected_result = CommandExpectation.new + expected_result.expected_err = missing_args_error(command, opts, heading) + expected_result.expected_exit_code = HammerCLI::EX_USAGE + expected_result + end + def success_result(message) CommandExpectation.new(message) end diff --git a/lib/hammer_cli/testing/output_matchers.rb b/lib/hammer_cli/testing/output_matchers.rb index b313cae2..53b2c8b3 100644 --- a/lib/hammer_cli/testing/output_matchers.rb +++ b/lib/hammer_cli/testing/output_matchers.rb @@ -2,7 +2,7 @@ module HammerCLI module Testing module OutputMatchers class MatcherBase - include MiniTest::Assertions + include Minitest::Assertions def initialize(expected="") @expected = expected diff --git a/lib/hammer_cli/utils.rb b/lib/hammer_cli/utils.rb index 3199caa8..3a176ad3 100644 --- a/lib/hammer_cli/utils.rb +++ b/lib/hammer_cli/utils.rb @@ -6,7 +6,7 @@ def format(params) if params.is_a? Hash array_params = self.scan(/%[<{]([^>}]*)[>}]/).collect do |name| name = name[0] - params[name.to_s] || params[name.to_sym] + !params[name.to_s].nil? ? params[name.to_s].to_s : params[name.to_sym].to_s end self.gsub(/%[<]([^>]*)[>]/, '%') .gsub(/%[{]([^}]*)[}]/, '%s') @@ -40,17 +40,11 @@ def constantize HammerCLI.constant_path(self)[-1] end -end - -class Hash - # for ruby < 2.5.0 - def transform_keys - result = {} - each do |key, value| - new_key = yield key - result[new_key] = value - end - result + # Rails implementation: https://github.com/rails/rails/blob/main/actionview/lib/action_view/helpers/text_helper.rb#L260 + def wrap(line_width: 80, break_sequence: "\n") + split("\n").collect! do |line| + line.length > line_width ? line.gsub(/(.{1,#{line_width}})(\s+|$)/, "\\1#{break_sequence}").strip : line + end * break_sequence end end diff --git a/lib/hammer_cli/version.rb b/lib/hammer_cli/version.rb index 11751f75..5e9f6cff 100644 --- a/lib/hammer_cli/version.rb +++ b/lib/hammer_cli/version.rb @@ -1,5 +1,5 @@ module HammerCLI def self.version - @version ||= Gem::Version.new "2.6.0-develop" + @version ||= Gem::Version.new "3.10.0-develop" end end diff --git a/locale/Makefile b/locale/Makefile index 166dbd92..3618d811 100644 --- a/locale/Makefile +++ b/locale/Makefile @@ -3,8 +3,4 @@ # # Run make help to list available targets # -DOMAIN = hammer-cli -VERSION = $(shell bundle exec ruby -e 'require "rubygems"; spec = Gem::Specification::load("../hammer_cli.gemspec"); puts spec.version') -MAIN_MAKEFILE = $(shell bundle exec ruby -e 'require "hammer_cli"; puts HammerCLI::I18n.main_makefile') - -include $(MAIN_MAKEFILE) +include $(shell bundle exec ruby -e 'require "hammer_cli"; puts HammerCLI::I18n.main_makefile') diff --git a/locale/Makefile.def b/locale/Makefile.def index b7b222c9..915230a8 100644 --- a/locale/Makefile.def +++ b/locale/Makefile.def @@ -3,7 +3,19 @@ # # Run make help to list available targets # - +define DOMAIN_CMD +require "rubygems"; +require "hammer_cli"; +HammerCLI::Settings.load_from_defaults; +HammerCLI::Modules.load_all; +spec = Gem::Specification::load(Dir.glob("../*.gemspec").first); +i18n_domain = spec.respond_to?(:metadata) && spec.metadata["i18n_domain"]; +puts i18n_domain || HammerCLI::I18n.find_by_name(spec.name)&.domain_name || spec.name +endef +ifeq ($(origin DOMAIN), undefined) +DOMAIN := $(shell bundle exec ruby -e '$(DOMAIN_CMD)') +endif +VERSION = $(shell ruby -rrubygems -e 'puts Gem::Specification::load(Dir.glob("../*.gemspec").first).version') POTFILE = $(DOMAIN).pot MOFILE = $(DOMAIN).mo POFILES = $(shell find . -name '$(DOMAIN).po') @@ -12,12 +24,17 @@ POXFILES = $(patsubst %.po,%.pox,$(POFILES)) EDITFILES = $(patsubst %.po,%.edit.po,$(POFILES)) TIMESTAMPFILES = $(patsubst %.po,%.po.time_stamp,$(POFILES)) -%.mo: %.po - mkdir -p $(shell dirname $@)/LC_MESSAGES - msgfmt -o $(shell dirname $@)/LC_MESSAGES/$(MOFILE) $< +.PHONY: vars +vars: + @echo VERSION: $(VERSION) + @echo DOMAIN: $(DOMAIN) .PHONY: all-mo -all-mo: $(MOFILES) ## Generate MO files from PO files (default) +all-mo: ## Generate MO files from PO files (default) + for po_file in $(POFILES); do \ + mkdir -p $$(dirname $$po_file)/LC_MESSAGES; \ + msgfmt -o $$(dirname $$po_file)/LC_MESSAGES/$(MOFILE) $$po_file; \ + done # Check for malformed strings %.pox: %.po @@ -44,7 +61,7 @@ uniq-po: ## Unify duplicate translations in .po files .PHONY: tx-pull tx-pull: $(EDITFILES) @command -v tx >/dev/null 2>&1 || { echo "Command tx not found. Make sure you have transifex-client installed and configured." >&2; exit 1; } - tx pull -f + cd .. && tx pull -f for f in $(EDITFILES); do \ sed -i 's/^\("Project-Id-Version: \).*$$/\1$(DOMAIN) $(VERSION)\\n"/' $$f; \ done @@ -61,8 +78,13 @@ update-po: extract-strings: bundle exec rake gettext:find +# Check languages with 50% or more coverage and create needed files +.PHONY: find-new +find-new: + bundle exec rake gettext:find_new + .PHONY: tx-update -tx-update: extract-strings tx-pull update-po $(MOFILES) ## Download and merge translations from Transifex +tx-update: find-new extract-strings tx-pull update-po all-mo ## Download and merge translations from Transifex git add ../locale git commit -m "i18n - extracting new, pulling from tx" @echo Changes commited! diff --git a/locale/ca/LC_MESSAGES/hammer-cli.mo b/locale/ca/LC_MESSAGES/hammer-cli.mo index 7e2ad000..91f725cf 100644 Binary files a/locale/ca/LC_MESSAGES/hammer-cli.mo and b/locale/ca/LC_MESSAGES/hammer-cli.mo differ diff --git a/locale/ca/hammer-cli.po b/locale/ca/hammer-cli.po index 5a783ed3..ceff3d2a 100644 --- a/locale/ca/hammer-cli.po +++ b/locale/ca/hammer-cli.po @@ -3,16 +3,16 @@ # This file is distributed under the same license as the hammer-cli package. # # Translators: -# Robert Antoni Buj Gelonch , 2017 -# Robert Antoni Buj Gelonch , 2015 +# Robert Antoni Buj i Gelonch , 2017 +# Robert Antoni Buj i Gelonch , 2015 msgid "" msgstr "" -"Project-Id-Version: hammer-cli 2.5.0\n" +"Project-Id-Version: hammer-cli 3.9.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-01 17:27+0200\n" -"PO-Revision-Date: 2020-08-11 19:33+0000\n" -"Last-Translator: Transifex Bot <>\n" -"Language-Team: Catalan (http://www.transifex.com/foreman/foreman/language/" +"POT-Creation-Date: 2023-08-25 17:32+0000\n" +"PO-Revision-Date: 2014-03-14 09:46+0000\n" +"Last-Translator: Robert Antoni Buj i Gelonch , 2017\n" +"Language-Team: Catalan (http://app.transifex.com/foreman/foreman/language/" "ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,12 +20,15 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "" +"Following parameters accept format defined by its schema (bold are required; " +"<> contains acceptable type; [] contains acceptable value):" +msgstr "" + msgid "Option details" msgstr "" -msgid "" -"Following parameters accept format defined by its schema (bold are required; " -"<> contain acceptable type; [] contain acceptable value):" +msgid "Here you can find option types and the value an option can accept:" msgstr "" msgid "Predefined field sets" @@ -366,10 +369,13 @@ msgstr "" msgid "Error: Some of the required modules are disabled in configuration: %s." msgstr "" +msgid "Value described in the option's description. Mostly simple string" +msgstr "" + msgid "Comma-separated list of key=value." msgstr "Llista separada per comes de clau=valor." -msgid "JSON is acceptable and preferred way for complex parameters" +msgid "JSON is acceptable and preferred way for such parameters" msgstr "" msgid "" @@ -381,23 +387,30 @@ msgid "" "escaped with backslash." msgstr "" -msgid "" -"Comma separated list of values defined by a schema. See Option details " -"section below." +msgid "Comma separated list of values defined by a schema." +msgstr "" + +msgid "Numeric value. Integer" msgstr "" msgid "Numeric value is required." msgstr "" -msgid "One of %s." +msgid "One of %s" msgstr "" msgid "Value must be one of %s." msgstr "" +msgid "Path to a file" +msgstr "" + msgid "Unable to parse JSON input." msgstr "" +msgid "Possible values are described in the option's description" +msgstr "" + msgid "Possible value(s): %s" msgstr "Valors possibles: %s" @@ -410,6 +423,10 @@ msgstr "Data i hora en format YYYY-MM-DD HH:MM:SS o ISO 8601" msgid "'%s' is not a valid date." msgstr "" +msgid "" +"Any combination of possible values described in the option's description" +msgstr "" + msgid "Any combination (comma separated list) of '%s'" msgstr "Qualsevol combinació (llista separada per comes) de '%s'" diff --git a/locale/cs_CZ/LC_MESSAGES/hammer-cli.mo b/locale/cs_CZ/LC_MESSAGES/hammer-cli.mo new file mode 100644 index 00000000..898925ff Binary files /dev/null and b/locale/cs_CZ/LC_MESSAGES/hammer-cli.mo differ diff --git a/locale/cs_CZ/hammer-cli.po b/locale/cs_CZ/hammer-cli.po new file mode 100644 index 00000000..1b79c1f9 --- /dev/null +++ b/locale/cs_CZ/hammer-cli.po @@ -0,0 +1,540 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hammer-cli package. +# +# Translators: +# mbacovsky , 2014 +# Pavel Borecki , 2018-2020 +msgid "" +msgstr "" +"Project-Id-Version: hammer-cli 3.9.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-25 17:32+0000\n" +"PO-Revision-Date: 2014-03-14 09:46+0000\n" +"Last-Translator: Pavel Borecki , 2018-2020\n" +"Language-Team: Czech (Czech Republic) (http://app.transifex.com/foreman/" +"foreman/language/cs_CZ/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs_CZ\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n " +"<= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" + +msgid "" +"Following parameters accept format defined by its schema (bold are required; " +"<> contains acceptable type; [] contains acceptable value):" +msgstr "" + +msgid "Option details" +msgstr "" + +msgid "Here you can find option types and the value an option can accept:" +msgstr "" + +msgid "Predefined field sets" +msgstr "" + +msgid "Command extensions should be inherited from %s." +msgstr "" + +msgid "Unfortunately the server does not support such operation." +msgstr "" + +msgid "The server does not support such operation." +msgstr "Server nepodporuje takovou operaci." + +msgid "Prepare map of options and subcommands for Bash completion" +msgstr "" + +msgid "Unable to find hostname in %s." +msgstr "V %s se nedaří najít název stroje." + +msgid "CA certificate for %{uri} was stored to %{file}." +msgstr "Certifikát cert. autority pro %{uri} byl uložen do %{file}." + +msgid "" +"Now hammer can use the downloaded certificate to verify SSL connection to " +"the server." +msgstr "" + +msgid "" +"It will be used automatically when ssl_ca_path and ssl_ca_file options are " +"not set." +msgstr "" + +msgid "" +"Be aware that hammer cannot verify whether the certificate is correct and " +"you should verify its authenticity." +msgstr "" + +msgid "You can display the certificate content with" +msgstr "Obsah certifikátu je možné zobrazit použitím" + +msgid "" +"As root you can also install the certificate and update the system-wide list " +"of trusted CA certificates as follows:" +msgstr "" + +msgid "Couldn't parse URI '%s'." +msgstr "" + +msgid "" +"The CA certificate for %{uri} couldn't be downloaded. No CA cert was found." +msgstr "" + +msgid "Make sure your server sends cert chain including the CA." +msgstr "" + +msgid "To see the actual chain you can use openssl command" +msgstr "" + +msgid "You can also download the certificate manually and store it as %s." +msgstr "Je také možné stáhnout certifikát ručně a uložit ho jako %s." + +msgid "" +"If you choose any other location set the ssl_ca_path or ssl_ca_file " +"configuration options appropriately." +msgstr "" + +msgid "Fetching the CA certificate failed:" +msgstr "Získání certifikátu cert. autority se nezdařilo:" + +msgid "The service at the given URI does not accept SSL connections." +msgstr "Služba na zadané URI nepřijímá SSL spojení." + +msgid "Perhaps you meant to connect to '%s'?" +msgstr "" + +msgid "Too many arguments." +msgstr "Příliš mnoho argumentů." + +msgid "Option '%s' is required." +msgstr "Volba „%s“ je vyžadována." + +msgid "Option '%{opt}' (or env %{env}) is required." +msgstr "" + +msgid "Option '%{swt}': %{msg}." +msgstr "Volba „%{swt}“: %{msg}." + +msgid "Parameter '%{pmt}': %{msg}." +msgstr "Parametr „%{pmt}“: %{msg}." + +msgid "%{env}: %{msg}." +msgstr "%{env}: %{msg}." + +msgid "Unrecognised option '%s'." +msgstr "Nerozpoznaná volba „%s“." + +msgid "No such sub-command '%s'." +msgstr "" + +msgid "No value provided." +msgstr "Nezadána žádná hodnota." + +msgid "Illegal quoting in %{buffer}" +msgstr "" + +msgid "" +"Couldn't create %s. Please create the directory before setting defaults." +msgstr "" + +msgid "Defaults management" +msgstr "Správa výchozích hodnot" + +msgid "List all the providers" +msgstr "Seznam všech poskytovatelů" + +msgid "Provider" +msgstr "Poskytovatel" + +msgid "Supported defaults" +msgstr "Podporované výchozí hodnoty" + +msgid "Description" +msgstr "Popis" + +msgid "List all the default parameters" +msgstr "Vypsat všechny výchozí parametry" + +msgid "Parameter" +msgstr "Parametr" + +msgid "Value" +msgstr "Hodnota" + +msgid "Delete a default param" +msgstr "Smazat výchozí parametr" + +msgid "The name of the default option" +msgstr "Název výchozí volby" + +msgid "Add a default parameter to config" +msgstr "" + +msgid "The name of the default option (e.g. organization_id)" +msgstr "Název výchozí volby (např. organization_id)" + +msgid "The value for the default option" +msgstr "Hodnota pro výchozí volbu" + +msgid "" +"The name of the provider providing the value. For list available providers " +"see `hammer defaults providers`" +msgstr "" + +msgid "" +"Added %{key_val} default-option with value that will be generated from the " +"server." +msgstr "" + +msgid "Added %{key_val} default-option with value %{val_val}." +msgstr "" + +msgid "" +"Provider %{name} was not found. See `hammer defaults providers` for " +"available providers." +msgstr "" + +msgid "" +"The param name is not supported by provider. See `hammer defaults providers` " +"for supported params." +msgstr "" + +msgid "%{param} was deleted successfully." +msgstr "%{param} bylo úspěšně smazáno." + +msgid "You must specify value or a provider name, can't specify both." +msgstr "" + +msgid "Couldn't find the requested param in %s." +msgstr "" + +msgid "Error: %s" +msgstr "Chyba: %s" + +msgid "Error: %{message}" +msgstr "Chyba: %{message}" + +msgid "See: '%{path} --help'." +msgstr "Viz: „%{path} --help“." + +msgid "SSL error" +msgstr "Chyba SSL" + +msgid "SSL certificate verification failed" +msgstr "SSL certifikát se nepodařilo ověřit" + +msgid "is the server down?" +msgstr "je server vypnutý?" + +msgid "" +"was '%s' run on the server when using apipie cache? (typical production " +"settings)" +msgstr "" + +msgid "Could not load the API description from the server" +msgstr "" + +msgid "Missing arguments for %s." +msgstr "" + +msgid "Format output in markdown" +msgstr "Formátovat výstup v markdown" + +msgid "Hammer CLI help" +msgstr "" + +msgid "Print help for all hammer commands" +msgstr "" + +msgid "NOTE" +msgstr "" + +msgid "No permissions to create log dir %s." +msgstr "" + +msgid "File %s not writeable, won't log anything to the file!" +msgstr "Soubor %s není přístupný pro zápis, nic do něj nebude zaznamenáno!" + +msgid "Be verbose (or not). True by default" +msgstr "" + +msgid "Completely silent" +msgstr "Naprosto tiché" + +msgid "Enable/disable stored defaults. Enabled by default" +msgstr "" + +msgid "Show debugging output" +msgstr "Zobrazit ladící výstup" + +msgid "Force reload of Apipie cache" +msgstr "" + +msgid "Path to custom config file" +msgstr "Popis umístění uživatelsky určeného souboru s nastaveními" + +msgid "Username to access the remote system" +msgstr "Uživatelské jméno pro přístup ke vzdálenému systému" + +msgid "Password to access the remote system" +msgstr "Heslo pro přístup ke vzdálenému systému" + +msgid "Remote system address" +msgstr "Adresa vzdáleného systému" + +msgid "Configure SSL verification of remote system" +msgstr "Nastavit SSL ověřování vzdáleného systému" + +msgid "Configure the file containing the CA certificates" +msgstr "Nastavit soubor obsahující certifikáty cert. autority" + +msgid "Configure the directory containing the CA certificates" +msgstr "Nastavit složku obsahující certifikáty cert. autority" + +msgid "Configure the client's public certificate" +msgstr "Nastavit veřejnou část certifikátu klienta" + +msgid "Configure the client's private key" +msgstr "Nastavit soukromou část klíče klienta" + +msgid "" +"Use standard authentication in addition to client certificate authentication" +msgstr "" + +msgid "Fetch CA certificate from server and exit" +msgstr "Získat ze serveru certifikát cert. autority a skončit" + +msgid "Show version" +msgstr "Zobrazit verzi" + +msgid "unknown version" +msgstr "neznámá verze" + +msgid "Show ids of associated resources" +msgstr "Zobrazit identifikátory souvisejících prostředků" + +msgid "Explicitly turn interactive mode on/off" +msgstr "Výslovně vyp/zap interaktivní režim" + +msgid "Hide headers from output" +msgstr "Ve výstupu skrýt záhlaví" + +msgid "Output as CSV (same as --output=csv)" +msgstr "Výstup do CSV (stejné jako --output=csv)" + +msgid "Set output format" +msgstr "Nastavit výstupní formát" + +msgid "Path to custom output file" +msgstr "" + +msgid "Character to separate the values" +msgstr "Znak pro oddělování hodnot" + +msgid "Get list of possible endings" +msgstr "Získat seznam možných zakončení" + +msgid "Warning: An error occured while loading module %s." +msgstr "Varování: Došlo k chybě při načítání modulu %s." + +msgid "Error: Some of the required modules are disabled in configuration: %s." +msgstr "Chyba: Některé z vyžadovaných modulů jsou v nastavení vypnuté: %s." + +msgid "Value described in the option's description. Mostly simple string" +msgstr "" + +msgid "Comma-separated list of key=value." +msgstr "Čárkou oddělovaný seznam klíč=hodnota." + +msgid "JSON is acceptable and preferred way for such parameters" +msgstr "" + +msgid "" +"Value must be defined as a comma-separated list of key=value or valid JSON." +msgstr "" +"Je třeba, aby hodnota byla definovaná jako čárkou oddělovaný seznam " +"klíč=hodnota nebo platný JSON." + +msgid "" +"Comma separated list of values. Values containing comma should be quoted or " +"escaped with backslash." +msgstr "" +"Čárkou oddělovaný seznam hodnot. Hodnoty, které obsahují čárky, by měly být " +"obklopeny uvozovkami nebo význam čárek zrušen (escape) pomocí zpětného " +"lomítka." + +msgid "Comma separated list of values defined by a schema." +msgstr "" + +msgid "Numeric value. Integer" +msgstr "" + +msgid "Numeric value is required." +msgstr "Je třeba číselné hodnoty." + +msgid "One of %s" +msgstr "" + +msgid "Value must be one of %s." +msgstr "Je třeba, aby hodnota byla jedna z %s." + +msgid "Path to a file" +msgstr "" + +msgid "Unable to parse JSON input." +msgstr "" + +msgid "Possible values are described in the option's description" +msgstr "" + +msgid "Possible value(s): %s" +msgstr "Možné hodnoty: %s" + +msgid "Value must be %s." +msgstr "Je třeba, aby hodnota byla %s." + +msgid "Date and time in YYYY-MM-DD HH:MM:SS or ISO 8601 format" +msgstr "Datum a čas ve formátu RRRR-MM-DD HH:MM:SS nebo ISO 8601" + +msgid "'%s' is not a valid date." +msgstr "„%s“ není platné datum." + +msgid "" +"Any combination of possible values described in the option's description" +msgstr "" + +msgid "Any combination (comma separated list) of '%s'" +msgstr "" + +msgid "Value must be a combination of '%s'." +msgstr "Je třeba, aby hodnota byla kombinací „%s“." + +msgid "Warning: Option %{option} is deprecated. %{message}" +msgstr "" + +msgid "Deprecated: %{deprecated_msg}" +msgstr "" + +msgid "%{flag} is deprecated: %{deprecated_msg}" +msgstr "" + +msgid "Can be specified multiple times." +msgstr "Může být uvedeno vícekrát." + +msgid ", or" +msgstr ", nebo" + +msgid "Default:" +msgstr "Výchozí:" + +msgid "Environment variable HAMMER_NIL can not be empty." +msgstr "Proměnnou prostředí HAMMER_NIL je třeba vyplnit." + +msgid "Show specified fields or predefined field sets only. (See below)" +msgstr "" + +msgid "There is no such predefined option %s." +msgstr "" + +msgid "Unknown option name '%s'." +msgstr "" + +msgid "You can't set all options %s at one time." +msgstr "" + +msgid "Options %s are required." +msgstr "Volby %s jsou vyžadované." + +msgid "You can't set option %s." +msgstr "Volbu %s nemůžete nastavit." + +msgid "Option %s is required." +msgstr "Volba %s je potřebná." + +msgid "You can't set any of options %s." +msgstr "Nemůžete nastavit žádnou z voleb %s." + +msgid "At least one of options %s is required." +msgstr "Je zapotřebí alespoň jedna z voleb %s." + +msgid "One of options %s is required." +msgstr "" + +msgid "Only one of options %s can be set." +msgstr "" + +msgid "Message" +msgstr "Zpráva" + +msgid "Id" +msgstr "Identifikátor" + +msgid "Name" +msgstr "Název" + +msgid "Page %{page} of %{total} (use --page and --per-page for navigation)." +msgstr "" + +msgid "Fields" +msgstr "Kolonky" + +msgid "" +"Method %{tags} for field formatters and output adapters is deprecated. " +"Please use %{feat} or %{req_feat} instead." +msgstr "" + +msgid "no" +msgstr "ne" + +msgid "yes" +msgstr "ano" + +msgid "Warning: Couldn't load configuration file %{path}: %{message}." +msgstr "Varování: Nedaří se načíst soubor s nastaveními %{path}: %{message}." + +msgid "Print help for commands" +msgstr "Vypsat nápovědu pro příkazy" + +msgid "Exit interactive shell" +msgstr "Opustit interaktivní shell" + +msgid "Welcome to the hammer interactive shell." +msgstr "Vítejte v interaktivním shellu hammer." + +msgid "Type 'help' for usage information." +msgstr "Pro nápovědu k používání zadejte „help“." + +msgid "Interactive shell" +msgstr "Interaktivní shell" + +msgid "SSL client certificate is set but the key is not." +msgstr "SSL klientský certifikát je nastavený ale klíč nikoli." + +msgid "SSL client key is set but the certificate is not." +msgstr "SSL klientský klíč je nastavený ale certifikát nikoli." + +msgid "SSL client authentication disabled." +msgstr "" + +msgid "Could't read SSL client certificate %s." +msgstr "Nedaří se načíst SSL klientský certifikát %s." + +msgid "Could't read SSL client key %s." +msgstr "Nedaří se načíst SSL klientský klíč %s." + +msgid "Found more than one command." +msgstr "" + +msgid "Did you mean one of these?" +msgstr "" + +msgid "" +"Can't replace subcommand %s (%s) with %s " +"(%s)." +msgstr "" + +msgid "Cannot use such capitalization. Try one of %s." +msgstr "" diff --git a/locale/de/LC_MESSAGES/hammer-cli.mo b/locale/de/LC_MESSAGES/hammer-cli.mo index 96c45ea1..3a9adb50 100644 Binary files a/locale/de/LC_MESSAGES/hammer-cli.mo and b/locale/de/LC_MESSAGES/hammer-cli.mo differ diff --git a/locale/de/hammer-cli.po b/locale/de/hammer-cli.po index 1d514ce6..9572467f 100644 --- a/locale/de/hammer-cli.po +++ b/locale/de/hammer-cli.po @@ -7,18 +7,19 @@ # Christina Gurski , 2015 # Dominic Cleal , 2014 # Ettore Atalan , 2014-2017 +# pdolinic, 2021 # simon11 , 2014 # simon11 , 2014 # tstrachota , 2016 -# Ulrich Habel , 2014 +# 47388d0d0847859fcc07f8955b27d2a7_d1cb104 <93875580def0fcc1a566b016c3948752_122921>, 2014 msgid "" msgstr "" -"Project-Id-Version: hammer-cli 2.5.0\n" +"Project-Id-Version: hammer-cli 3.9.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-01 17:27+0200\n" -"PO-Revision-Date: 2020-08-11 19:33+0000\n" -"Last-Translator: Transifex Bot <>\n" -"Language-Team: German (http://www.transifex.com/foreman/foreman/language/" +"POT-Creation-Date: 2023-08-25 17:32+0000\n" +"PO-Revision-Date: 2014-03-14 09:46+0000\n" +"Last-Translator: pdolinic, 2021\n" +"Language-Team: German (http://app.transifex.com/foreman/foreman/language/" "de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,19 +27,22 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "" +"Following parameters accept format defined by its schema (bold are required; " +"<> contains acceptable type; [] contains acceptable value):" +msgstr "" + msgid "Option details" msgstr "Optionsdetails" -msgid "" -"Following parameters accept format defined by its schema (bold are required; " -"<> contain acceptable type; [] contain acceptable value):" +msgid "Here you can find option types and the value an option can accept:" msgstr "" msgid "Predefined field sets" -msgstr "" +msgstr "Vordefinierte Feldsätze" msgid "Command extensions should be inherited from %s." -msgstr "" +msgstr "Befehlserweiterungen sollten von geerbt werden %s . " msgid "Unfortunately the server does not support such operation." msgstr "Leider unterstützt der Server eine solche Operation nicht." @@ -48,6 +52,8 @@ msgstr "Diese Operation wird vom Server nicht unterstützt." msgid "Prepare map of options and subcommands for Bash completion" msgstr "" +"Bereiten Sie eine Karte mit Optionen und Unterbefehlen für die Bash-" +"Vervollständigung vor" msgid "Unable to find hostname in %s." msgstr "Hostname konnte nicht gefunden werden in %s." @@ -59,16 +65,22 @@ msgid "" "Now hammer can use the downloaded certificate to verify SSL connection to " "the server." msgstr "" +"Jetzt kann Hammer das heruntergeladene Zertifikat verwenden, um die SSL-" +"Verbindung zum Server zu überprüfen." msgid "" "It will be used automatically when ssl_ca_path and ssl_ca_file options are " "not set." msgstr "" +"Sie wird automatisch verwendet, wenn die Optionen ssl_ca_path und " +"ssl_ca_file nicht gesetzt sind." msgid "" "Be aware that hammer cannot verify whether the certificate is correct and " "you should verify its authenticity." msgstr "" +"SIE WIRD automatisch verwendet, WENN sterben Optionen ssl_ca_path und " +"ssl_ca_file nicht gesetzt sind." msgid "You can display the certificate content with" msgstr "Sie können den Zertifikats-Inhalt wie folgt anzeigen: " @@ -77,6 +89,8 @@ msgid "" "As root you can also install the certificate and update the system-wide list " "of trusted CA certificates as follows:" msgstr "" +"Als Root können Sie das Zertifikat auch installieren und die systemweite " +"Liste der vertrauenswürdigen CA-Zertifikate wie folgt aktualisieren:" msgid "Couldn't parse URI '%s'." msgstr "URI '%s', konnte nicht geparst werden." @@ -89,9 +103,12 @@ msgstr "" msgid "Make sure your server sends cert chain including the CA." msgstr "" +"Stellen Sie sicher, dass Ihr Server die Zertifikatskette einschließlich der " +"CA sendet." msgid "To see the actual chain you can use openssl command" msgstr "" +"Um die tatsächliche Kette zu sehen, können Sie den Befehl openssl verwenden" msgid "You can also download the certificate manually and store it as %s." msgstr "" @@ -141,11 +158,13 @@ msgid "No value provided." msgstr "Kein Wert geliefert." msgid "Illegal quoting in %{buffer}" -msgstr "" +msgstr "Unzulässige Anführungszeichen in %{buffer}" msgid "" "Couldn't create %s. Please create the directory before setting defaults." msgstr "" +"Konnte %s nicht erstellen. Bitte erstellen Sie das Verzeichnis, bevor Sie " +"die Standardeinstellungen festlegen." msgid "Defaults management" msgstr "Verwaltung der Standardeinstellungen" @@ -190,6 +209,8 @@ msgid "" "The name of the provider providing the value. For list available providers " "see `hammer defaults providers`" msgstr "" +"Der Name des Anbieters, der den Wert bereitstellt. Eine Liste der " +"verfügbaren Anbieter finden Sie unter `Hammer-Standardanbieter`" msgid "" "Added %{key_val} default-option with value that will be generated from the " @@ -205,6 +226,8 @@ msgid "" "Provider %{name} was not found. See `hammer defaults providers` for " "available providers." msgstr "" +"Anbieter %{name} wurde nicht gefunden. Siehe `Hammer-Standardanbieter` für " +"verfügbare Anbieter." msgid "" "The param name is not supported by provider. See `hammer defaults providers` " @@ -253,10 +276,10 @@ msgid "Could not load the API description from the server" msgstr "Die API-Beschreibung konnte nicht vom Server geladen werden" msgid "Missing arguments for %s." -msgstr "" +msgstr "Fehlende Argumente für %s." msgid "Format output in markdown" -msgstr "" +msgstr "Ausgabe in Markdown formatieren" msgid "Hammer CLI help" msgstr "Hammer CLI Hilfe" @@ -265,7 +288,7 @@ msgid "Print help for all hammer commands" msgstr "Hilfe um alle Hammer-Befehle anzuzeigen" msgid "NOTE" -msgstr "" +msgstr "HINWEIS" msgid "No permissions to create log dir %s." msgstr "Keine Berechtigung zum Anlegen des Protokollverzeichnisses %s" @@ -276,13 +299,14 @@ msgstr "" "werden!" msgid "Be verbose (or not). True by default" -msgstr "" +msgstr "Seien Sie ausführlich (oder nicht). Standardmäßig wahr" msgid "Completely silent" -msgstr "" +msgstr "Völlig geräuschlos" msgid "Enable/disable stored defaults. Enabled by default" msgstr "" +"Gespeicherte Standardwerte aktivieren/deaktivieren. Standardmäßig aktiviert" msgid "Show debugging output" msgstr "Debugausgabe anzeigen" @@ -303,26 +327,28 @@ msgid "Remote system address" msgstr "Adresse des entfernten Systems" msgid "Configure SSL verification of remote system" -msgstr "" +msgstr "Konfigurieren Sie die SSL-Verifizierung des Remote-Systems" msgid "Configure the file containing the CA certificates" -msgstr "" +msgstr "Konfigurieren Sie die Datei mit den CA-Zertifikaten" msgid "Configure the directory containing the CA certificates" -msgstr "" +msgstr "Konfigurieren Sie das Verzeichnis mit den CA-Zertifikaten" msgid "Configure the client's public certificate" -msgstr "" +msgstr "Konfigurieren Sie das öffentliche Zertifikat des Clients" msgid "Configure the client's private key" -msgstr "" +msgstr "Konfigurieren Sie den privaten Schlüssel des Clients" msgid "" "Use standard authentication in addition to client certificate authentication" msgstr "" +"Verwenden Sie die Standard-Authentifizierung zusätzlich zur Client-" +"Zertifikat-Authentifizierung" msgid "Fetch CA certificate from server and exit" -msgstr "" +msgstr "CA-Zertifikat vom Server holen und beenden" msgid "Show version" msgstr "Version anzeigen" @@ -337,13 +363,13 @@ msgid "Explicitly turn interactive mode on/off" msgstr "Interaktiven Modus explizit aktivieren/deaktivieren" msgid "Hide headers from output" -msgstr "" +msgstr "Kopfzeilen aus der Ausgabe ausblenden" msgid "Output as CSV (same as --output=csv)" msgstr "Ausgabe als CSV (entspricht --output=csv)" msgid "Set output format" -msgstr "" +msgstr "Ausgabeformat einstellen" msgid "Path to custom output file" msgstr "Pfad zur angepassten Ausgabedatei" @@ -362,10 +388,13 @@ msgstr "" "Fehler: Einige der erforderlichen Module sind in der Konfiguration " "deaktiviert: %s." +msgid "Value described in the option's description. Mostly simple string" +msgstr "" + msgid "Comma-separated list of key=value." msgstr "Kommagetrennte Liste mit Schlüssel-Wert-Paaren." -msgid "JSON is acceptable and preferred way for complex parameters" +msgid "JSON is acceptable and preferred way for such parameters" msgstr "" msgid "" @@ -378,24 +407,33 @@ msgid "" "Comma separated list of values. Values containing comma should be quoted or " "escaped with backslash." msgstr "" +"Kommagetrennte Liste von Werten. Werte, die Kommas enthalten, sollten in " +"Anführungszeichen gesetzt oder mit Backslash maskiert werden." -msgid "" -"Comma separated list of values defined by a schema. See Option details " -"section below." +msgid "Comma separated list of values defined by a schema." +msgstr "" + +msgid "Numeric value. Integer" msgstr "" msgid "Numeric value is required." msgstr "Numerischer Wert ist erforderlich." -msgid "One of %s." -msgstr "Einer von %s." +msgid "One of %s" +msgstr "Einer von %s" msgid "Value must be one of %s." msgstr "Wert muss einer von '%s' sein." +msgid "Path to a file" +msgstr "" + msgid "Unable to parse JSON input." msgstr "JSON-Eingabe nicht analysierbar." +msgid "Possible values are described in the option's description" +msgstr "" + msgid "Possible value(s): %s" msgstr "Mögliche(r) Wert(e): %s" @@ -408,6 +446,10 @@ msgstr "Datum und Uhrzeit im Format JJJJ-MM-TT HH:MM:SS oder ISO-8601-Format" msgid "'%s' is not a valid date." msgstr "'%s' ist kein gültiges Datum." +msgid "" +"Any combination of possible values described in the option's description" +msgstr "" + msgid "Any combination (comma separated list) of '%s'" msgstr "Eine Kombination (kommagetrennte Liste) aus '%s'" @@ -437,9 +479,10 @@ msgstr "Umgebungsvariable HAMMER_NIL kann nicht leer sein." msgid "Show specified fields or predefined field sets only. (See below)" msgstr "" +"Nur angegebene Felder oder vordefinierte Feldsätze anzeigen. (Siehe unten)" msgid "There is no such predefined option %s." -msgstr "" +msgstr "Es gibt keine solche vordefinierte Option %s." msgid "Unknown option name '%s'." msgstr "Unbekannter Optionsname '%s'." @@ -481,12 +524,14 @@ msgid "Page %{page} of %{total} (use --page and --per-page for navigation)." msgstr "Seite %{page} von %{total} (Navigation über --page und --per-page)." msgid "Fields" -msgstr "" +msgstr "Felder" msgid "" "Method %{tags} for field formatters and output adapters is deprecated. " "Please use %{feat} or %{req_feat} instead." msgstr "" +"Methode %{tags} für Feldformatierer und Ausgabeadapter ist veraltet. Bitte " +"verwenden Sie stattdessen %{feat} oder %{req_feat}." msgid "no" msgstr "nein" @@ -513,30 +558,33 @@ msgid "Interactive shell" msgstr "Interaktive Shell" msgid "SSL client certificate is set but the key is not." -msgstr "" +msgstr "Das SSL-Clientzertifikat ist festgelegt, der Schlüssel jedoch nicht." msgid "SSL client key is set but the certificate is not." -msgstr "" +msgstr "Der SSL-Clientschlüssel ist festgelegt, das Zertifikat jedoch nicht." msgid "SSL client authentication disabled." -msgstr "" +msgstr "SSL-Client-Authentifizierung deaktiviert." msgid "Could't read SSL client certificate %s." -msgstr "" +msgstr "Das SSL-Clientzertifikat konnte nicht gelesen werden %s." msgid "Could't read SSL client key %s." -msgstr "" +msgstr "SSL-Clientschlüssel konnte nicht gelesen werden %s." msgid "Found more than one command." -msgstr "" +msgstr "Mehr als einen Befehl gefunden." msgid "Did you mean one of these?" -msgstr "" +msgstr "Meinten Sie eines davon?" msgid "" "Can't replace subcommand %s (%s) with %s " "(%s)." msgstr "" +"Unterbefehl %s (%s) kann nicht durch %s " +"(%s) ersetzt werden." msgid "Cannot use such capitalization. Try one of %s." msgstr "" +"Diese Großschreibung kann nicht verwendet werden. Versuchen Sie eine von %s." diff --git a/locale/en/LC_MESSAGES/hammer-cli.mo b/locale/en/LC_MESSAGES/hammer-cli.mo index 46765f2b..9616daba 100644 Binary files a/locale/en/LC_MESSAGES/hammer-cli.mo and b/locale/en/LC_MESSAGES/hammer-cli.mo differ diff --git a/locale/en/hammer-cli.po b/locale/en/hammer-cli.po index acdc791d..1c1f7d8b 100644 --- a/locale/en/hammer-cli.po +++ b/locale/en/hammer-cli.po @@ -5,9 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: hammer-cli 2.5.0\n" +"Project-Id-Version: hammer-cli 3.9.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2014-03-04 16:38+0000\n" +"POT-Creation-Date: 2023-11-29 15:17+0000\n" +"PO-Revision-Date: 2023-08-25 17:32+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" @@ -16,12 +17,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" +msgid "" +"Following parameters accept format defined by its schema (bold are required; " +"<> contains acceptable type; [] contains acceptable value):" +msgstr "" + msgid "Option details" msgstr "" -msgid "" -"Following parameters accept format defined by its schema (bold are required; " -"<> contain acceptable type; [] contain acceptable value):" +msgid "Here you can find option types and the value an option can accept:" msgstr "" msgid "Predefined field sets" @@ -335,10 +339,13 @@ msgstr "" msgid "Error: Some of the required modules are disabled in configuration: %s." msgstr "" +msgid "Value described in the option's description. Mostly simple string" +msgstr "" + msgid "Comma-separated list of key=value." msgstr "" -msgid "JSON is acceptable and preferred way for complex parameters" +msgid "JSON is acceptable and preferred way for such parameters" msgstr "" msgid "" @@ -350,23 +357,30 @@ msgid "" "escaped with backslash." msgstr "" -msgid "" -"Comma separated list of values defined by a schema. See Option details " -"section below." +msgid "Comma separated list of values defined by a schema." +msgstr "" + +msgid "Numeric value. Integer" msgstr "" msgid "Numeric value is required." msgstr "" -msgid "One of %s." +msgid "One of %s" msgstr "" msgid "Value must be one of %s." msgstr "" +msgid "Path to a file" +msgstr "" + msgid "Unable to parse JSON input." msgstr "" +msgid "Possible values are described in the option's description" +msgstr "" + msgid "Possible value(s): %s" msgstr "" @@ -379,6 +393,10 @@ msgstr "" msgid "'%s' is not a valid date." msgstr "" +msgid "" +"Any combination of possible values described in the option's description" +msgstr "" + msgid "Any combination (comma separated list) of '%s'" msgstr "" diff --git a/locale/en_GB/LC_MESSAGES/hammer-cli.mo b/locale/en_GB/LC_MESSAGES/hammer-cli.mo index dade32db..04fc4c06 100644 Binary files a/locale/en_GB/LC_MESSAGES/hammer-cli.mo and b/locale/en_GB/LC_MESSAGES/hammer-cli.mo differ diff --git a/locale/en_GB/hammer-cli.po b/locale/en_GB/hammer-cli.po index d7ba740b..26c7b1f8 100644 --- a/locale/en_GB/hammer-cli.po +++ b/locale/en_GB/hammer-cli.po @@ -6,12 +6,12 @@ # Andi Chandler , 2015-2017 msgid "" msgstr "" -"Project-Id-Version: hammer-cli 2.5.0\n" +"Project-Id-Version: hammer-cli 3.9.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-01 17:27+0200\n" -"PO-Revision-Date: 2020-08-11 19:33+0000\n" -"Last-Translator: Transifex Bot <>\n" -"Language-Team: English (United Kingdom) (http://www.transifex.com/foreman/" +"POT-Creation-Date: 2023-08-25 17:32+0000\n" +"PO-Revision-Date: 2014-03-14 09:46+0000\n" +"Last-Translator: Andi Chandler , 2015-2017\n" +"Language-Team: English (United Kingdom) (http://app.transifex.com/foreman/" "foreman/language/en_GB/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,12 +19,15 @@ msgstr "" "Language: en_GB\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "" +"Following parameters accept format defined by its schema (bold are required; " +"<> contains acceptable type; [] contains acceptable value):" +msgstr "" + msgid "Option details" msgstr "" -msgid "" -"Following parameters accept format defined by its schema (bold are required; " -"<> contain acceptable type; [] contain acceptable value):" +msgid "Here you can find option types and the value an option can accept:" msgstr "" msgid "Predefined field sets" @@ -359,10 +362,13 @@ msgstr "" msgid "Error: Some of the required modules are disabled in configuration: %s." msgstr "" +msgid "Value described in the option's description. Mostly simple string" +msgstr "" + msgid "Comma-separated list of key=value." msgstr "Comma-separated list of key=value." -msgid "JSON is acceptable and preferred way for complex parameters" +msgid "JSON is acceptable and preferred way for such parameters" msgstr "" msgid "" @@ -374,23 +380,30 @@ msgid "" "escaped with backslash." msgstr "" -msgid "" -"Comma separated list of values defined by a schema. See Option details " -"section below." +msgid "Comma separated list of values defined by a schema." msgstr "" -msgid "Numeric value is required." +msgid "Numeric value. Integer" msgstr "" -msgid "One of %s." +msgid "Numeric value is required." msgstr "" +msgid "One of %s" +msgstr "One of %s" + msgid "Value must be one of %s." msgstr "" +msgid "Path to a file" +msgstr "" + msgid "Unable to parse JSON input." msgstr "" +msgid "Possible values are described in the option's description" +msgstr "" + msgid "Possible value(s): %s" msgstr "Possible value(s): %s" @@ -403,6 +416,10 @@ msgstr "Date and time in YYYY-MM-DD HH:MM:SS or ISO 8601 format" msgid "'%s' is not a valid date." msgstr "" +msgid "" +"Any combination of possible values described in the option's description" +msgstr "" + msgid "Any combination (comma separated list) of '%s'" msgstr "Any combination (comma separated list) of '%s'" diff --git a/locale/es/LC_MESSAGES/hammer-cli.mo b/locale/es/LC_MESSAGES/hammer-cli.mo index cefe39f3..af6eb0eb 100644 Binary files a/locale/es/LC_MESSAGES/hammer-cli.mo and b/locale/es/LC_MESSAGES/hammer-cli.mo differ diff --git a/locale/es/hammer-cli.po b/locale/es/hammer-cli.po index 0e2281ba..549cf659 100644 --- a/locale/es/hammer-cli.po +++ b/locale/es/hammer-cli.po @@ -5,33 +5,35 @@ # Translators: # Dominic Cleal , 2014 # francis , 2014 +# Sergio Ocón-Cárdenas , 2014 # Sergio Ocón-Cárdenas , 2014-2015 # Sergio Ocón-Cárdenas , 2014 msgid "" msgstr "" -"Project-Id-Version: hammer-cli 2.5.0\n" +"Project-Id-Version: hammer-cli 3.9.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-01 17:27+0200\n" -"PO-Revision-Date: 2020-09-03 07:45+0000\n" -"Last-Translator: Amit Upadhye \n" -"Language-Team: Spanish (http://www.transifex.com/foreman/foreman/language/" +"POT-Creation-Date: 2023-08-25 17:32+0000\n" +"PO-Revision-Date: 2014-03-14 09:46+0000\n" +"Last-Translator: Sergio Ocón-Cárdenas , 2014\n" +"Language-Team: Spanish (http://app.transifex.com/foreman/foreman/language/" "es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? " +"1 : 2;\n" + +msgid "" +"Following parameters accept format defined by its schema (bold are required; " +"<> contains acceptable type; [] contains acceptable value):" +msgstr "" msgid "Option details" msgstr "Detalles de la opción" -msgid "" -"Following parameters accept format defined by its schema (bold are required; " -"<> contain acceptable type; [] contain acceptable value):" +msgid "Here you can find option types and the value an option can accept:" msgstr "" -"Los siguientes parámetros aceptan el formato definido por su esquema (se " -"requiere la negrita; <> contienen el tipo aceptable; [] contienen el valor " -"aceptable):" msgid "Predefined field sets" msgstr "Conjuntos de campos predefinidos" @@ -135,7 +137,7 @@ msgid "Option '%{swt}': %{msg}." msgstr "Opción '%{swt}': %{msg}." msgid "Parameter '%{pmt}': %{msg}." -msgstr "Parámetro '%{pmt}': %{msg}." +msgstr "Parámetro" msgid "%{env}: %{msg}." msgstr "%{env}: %{msg}." @@ -378,13 +380,16 @@ msgstr "Advertencia: Ocurrió un error al cargar el módulo %s." msgid "Error: Some of the required modules are disabled in configuration: %s." msgstr "" "Error: Algunos de los módulos requeridos están desactivados en la " -"configuración: %s. " +"configuración: %s." + +msgid "Value described in the option's description. Mostly simple string" +msgstr "" msgid "Comma-separated list of key=value." msgstr "Lista de pares llave=valor separados por comas." -msgid "JSON is acceptable and preferred way for complex parameters" -msgstr "JSON es la forma aceptable y preferida para parámetros complejos" +msgid "JSON is acceptable and preferred way for such parameters" +msgstr "" msgid "" "Value must be defined as a comma-separated list of key=value or valid JSON." @@ -397,27 +402,32 @@ msgid "" "escaped with backslash." msgstr "" "Lista de valores separados por comas. Los valores que contienen coma deben " -"estar entre comillas o separados barra invertida." +"estar entre comillas o separados por una barra invertida." -msgid "" -"Comma separated list of values defined by a schema. See Option details " -"section below." +msgid "Comma separated list of values defined by a schema." +msgstr "" + +msgid "Numeric value. Integer" msgstr "" -"Lista separada por comas de valores definidos por un esquema. Consulte la " -"sección Detalles de la opción a continuación." msgid "Numeric value is required." msgstr "El valor numérico es obligatorio." -msgid "One of %s." -msgstr "Uno de %s." +msgid "One of %s" +msgstr "Uno de %s" msgid "Value must be one of %s." msgstr "El valor debe ser uno de %s." +msgid "Path to a file" +msgstr "" + msgid "Unable to parse JSON input." msgstr "No se puede analizar la entrada JSON." +msgid "Possible values are described in the option's description" +msgstr "" + msgid "Possible value(s): %s" msgstr "Valores posibles: %s" @@ -430,6 +440,10 @@ msgstr "Fecha y hora en AAAA-MM-DD HH:MM:SS o formato ISO 8601" msgid "'%s' is not a valid date." msgstr "'%s' no es una fecha válida." +msgid "" +"Any combination of possible values described in the option's description" +msgstr "" + msgid "Any combination (comma separated list) of '%s'" msgstr "Cualquier combinación (lista separada por comas) de '%s'" diff --git a/locale/fr/LC_MESSAGES/hammer-cli.mo b/locale/fr/LC_MESSAGES/hammer-cli.mo index 5a1062c0..8e36bb95 100644 Binary files a/locale/fr/LC_MESSAGES/hammer-cli.mo and b/locale/fr/LC_MESSAGES/hammer-cli.mo differ diff --git a/locale/fr/hammer-cli.po b/locale/fr/hammer-cli.po index 64e84340..589a3324 100644 --- a/locale/fr/hammer-cli.po +++ b/locale/fr/hammer-cli.po @@ -4,6 +4,7 @@ # # Translators: # 0868a4d1af5275b3f70b0a6dac4c99a4, 2014 +# Amit Upadhye , 2022 # Baptiste Agasse , 2019 # Claer , 2014-2016 # 0868a4d1af5275b3f70b0a6dac4c99a4, 2014 @@ -11,38 +12,44 @@ # ty breizh , 2018 msgid "" msgstr "" -"Project-Id-Version: hammer-cli 2.5.0\n" +"Project-Id-Version: hammer-cli 3.9.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-01 17:27+0200\n" -"PO-Revision-Date: 2020-12-01 08:26+0000\n" -"Last-Translator: Amit Upadhye \n" -"Language-Team: French (http://www.transifex.com/foreman/foreman/language/" +"POT-Creation-Date: 2023-08-25 17:32+0000\n" +"PO-Revision-Date: 2014-03-14 09:46+0000\n" +"Last-Translator: ty breizh , 2018\n" +"Language-Team: French (http://app.transifex.com/foreman/foreman/language/" "fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -msgid "Option details" -msgstr "Détails de l'option" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % " +"1000000 == 0 ? 1 : 2;\n" msgid "" "Following parameters accept format defined by its schema (bold are required; " -"<> contain acceptable type; [] contain acceptable value):" +"<> contains acceptable type; [] contains acceptable value):" msgstr "" "Les paramètres suivants acceptent le format défini par son schéma (les " "caractères gras sont obligatoires ; <> contient le type acceptable ; [] " "contient la valeur acceptable) :" +msgid "Option details" +msgstr "Détails de l'option" + +msgid "Here you can find option types and the value an option can accept:" +msgstr "" +"Vous trouverez ici les types d’option et la valeur qu’une option puisse " +"accepter :" + msgid "Predefined field sets" msgstr "Ensembles de champs prédéfinis" msgid "Command extensions should be inherited from %s." -msgstr "Les extensions de commande doivent être héritées des %." +msgstr "Les extensions de commande doivent être héritées de %s." msgid "Unfortunately the server does not support such operation." -msgstr "Malheureusement le serveur ne supporte pas cette opération" +msgstr "Malheureusement le serveur ne supporte pas cette opération." msgid "The server does not support such operation." msgstr "Le serveur ne supporte pas cette opération." @@ -139,10 +146,10 @@ msgid "Option '%{opt}' (or env %{env}) is required." msgstr "L'option '%{opt}' (ou env %{env}) est obligatoire." msgid "Option '%{swt}': %{msg}." -msgstr "Option '' : ." +msgstr "Option %{swt}' : %{msg}." msgid "Parameter '%{pmt}': %{msg}." -msgstr "Paramètre" +msgstr "Paramètre '%{pmt}': %{msg}." msgid "%{env}: %{msg}." msgstr "%{env}: %{msg}." @@ -199,7 +206,7 @@ msgid "Add a default parameter to config" msgstr "Ajouter un paramètre par défaut" msgid "The name of the default option (e.g. organization_id)" -msgstr "Le nom de l'option par défaut (par ex. organization_id)" +msgstr "Le nom de l'option par défaut (par ex. organization_id)" msgid "The value for the default option" msgstr "La valeur de l'option par défaut" @@ -216,11 +223,11 @@ msgid "" "Added %{key_val} default-option with value that will be generated from the " "server." msgstr "" -"A ajouté l'option par défaut %{key_val} default-option avec la valeur qui " +"A ajouté l'option par défaut %%{key_val} default-option avec la valeur qui " "sera générée à partir du serveur." msgid "Added %{key_val} default-option with value %{val_val}." -msgstr "Option par défaut avec % de valeur ajoutée." +msgstr "Ajout de l'option par défaut %%{key_val} avec la valeur %%{val_val}." msgid "" "Provider %{name} was not found. See `hammer defaults providers` for " @@ -237,7 +244,7 @@ msgstr "" "fournisseurs hammer par défaut » pour param pris en charge." msgid "%{param} was deleted successfully." -msgstr "%{param} a été détecté." +msgstr "%{param} a été supprimé." msgid "You must specify value or a provider name, can't specify both." msgstr "" @@ -248,13 +255,13 @@ msgid "Couldn't find the requested param in %s." msgstr "Vous devez spécifier le paramètre demandé dans %s." msgid "Error: %s" -msgstr "Erreur" +msgstr "Erreur - %s" msgid "Error: %{message}" -msgstr "Erreur" +msgstr "Erreur - %{message}" msgid "See: '%{path} --help'." -msgstr "Voir : ...aide\"." +msgstr "Voir : '%{path} --help'." msgid "SSL error" msgstr "Erreur SSL" @@ -276,7 +283,7 @@ msgid "Could not load the API description from the server" msgstr "Impossible de charger la description de l'API depuis le serveur" msgid "Missing arguments for %s." -msgstr "Arguments manquants %s pour %" +msgstr "Arguments manquants pour %s" msgid "Format output in markdown" msgstr "Formater la sortie dans markdown" @@ -291,7 +298,7 @@ msgid "NOTE" msgstr "NOTE" msgid "No permissions to create log dir %s." -msgstr "Aucune permission pour créer le répertoire de journal %s" +msgstr "Aucune permission pour créer le répertoire de journalisation %s." msgid "File %s not writeable, won't log anything to the file!" msgstr "" @@ -386,12 +393,15 @@ msgid "Error: Some of the required modules are disabled in configuration: %s." msgstr "" "Erreur : certains modules requis sont désactivés dans la configuration : %s." +msgid "Value described in the option's description. Mostly simple string" +msgstr "" +"Valeur décrite dans le description de l’option. Surtout des chaînes simples" + msgid "Comma-separated list of key=value." msgstr "Liste de clef=valeur séparées par des virgules." -msgid "JSON is acceptable and preferred way for complex parameters" -msgstr "" -"JSON est une méthode acceptable et privilégiée pour les paramètres complexes" +msgid "JSON is acceptable and preferred way for such parameters" +msgstr "JSON est une méthode acceptable et privilégiée pour de tels paramètres" msgid "" "Value must be defined as a comma-separated list of key=value or valid JSON." @@ -406,25 +416,30 @@ msgstr "" "Liste de valeurs séparées par des virgules. Les valeurs contenant une " "virgule doivent être indiquées ou échappées par une barre oblique inversée." -msgid "" -"Comma separated list of values defined by a schema. See Option details " -"section below." -msgstr "" -"Liste de valeurs séparées par des virgules et définies par un schéma. Voir " -"la section Détails des options ci-dessous." +msgid "Comma separated list of values defined by a schema." +msgstr "Liste de valeurs séparées par des virgules et définies par un schéma." + +msgid "Numeric value. Integer" +msgstr "Valeur numérique. Entier relatif" msgid "Numeric value is required." msgstr "Valeur numérique obligatoire." -msgid "One of %s." -msgstr "Un sur %s." +msgid "One of %s" +msgstr "Un sur %s" msgid "Value must be one of %s." msgstr "La valeur doit être choisie parmi %s." +msgid "Path to a file" +msgstr "Chemin de fichier" + msgid "Unable to parse JSON input." msgstr "Impossible d'analyser l'entrée JSON." +msgid "Possible values are described in the option's description" +msgstr "Les valeurs possibles sont décrites dans la description de l’option" + msgid "Possible value(s): %s" msgstr "Valeurs possible(s) : %s" @@ -437,6 +452,12 @@ msgstr "Date et heure suivant YYYY-MM-DD HH:MM:SS ou format ISO 8601" msgid "'%s' is not a valid date." msgstr "'%s' n'est pas une date correcte." +msgid "" +"Any combination of possible values described in the option's description" +msgstr "" +"Toute combinaison de valeurs possibles est décrite dans la description de " +"l’option" + msgid "Any combination (comma separated list) of '%s'" msgstr "Toute combinaison (liste séparée par des virgules) de '%s'" @@ -444,13 +465,13 @@ msgid "Value must be a combination of '%s'." msgstr "La valeur doit être une combinaison de '%s'." msgid "Warning: Option %{option} is deprecated. %{message}" -msgstr "Avertisement : Option %{option} est dépréciée. %{message}" +msgstr "Avertissement : Option %{option} est dépréciée. %{message}" msgid "Deprecated: %{deprecated_msg}" -msgstr "Dépréciation : %{deprecated_msg}" +msgstr "Déprécié : %%{deprecated_msg}" msgid "%{flag} is deprecated: %{deprecated_msg}" -msgstr "%{flag} est déprécié : %{deprecated_msg}" +msgstr "%{flag} est déprécié : %%{deprecated_msg}" msgid "Can be specified multiple times." msgstr "Peut être spécifié plusieurs fois." @@ -466,7 +487,7 @@ msgstr "La variable d'environnement HAMMER_NIL ne peut pas être vide." msgid "Show specified fields or predefined field sets only. (See below)" msgstr "" -"Afficher uniquement les fichiers spécifiés ou les ensembles de fichiers " +"Afficher uniquement les champs spécifiés ou les ensembles de champs " "prédéfinis. (Voir ci-dessous)" msgid "There is no such predefined option %s." @@ -520,7 +541,7 @@ msgid "" "Please use %{feat} or %{req_feat} instead." msgstr "" "La méthode %{tags} pour les formateurs de champs et les adaptateurs de " -"sortie est obsolète. Veuillez utiliser %{feat} ou %{req_feat} à la place." +"sortie est obsolète. Veuillez utiliser %{feat} ou %%{req_feat} à la place." msgid "no" msgstr "non" @@ -567,12 +588,14 @@ msgid "Found more than one command." msgstr "Plus d'un %s ont été trouvés." msgid "Did you mean one of these?" -msgstr "Vous vouliez dire un de ceux-là ?" +msgstr "Vous voulez dire un de ceux-là ?" msgid "" "Can't replace subcommand %s (%s) with %s " "(%s)." -msgstr "On ne peut pas remplacer les % (%s) de sous-commande par des % (%s)." +msgstr "" +"Impossible de remplacer la sous-commande %s (%s) avec " +"%s (%s)." msgid "Cannot use such capitalization. Try one of %s." msgstr "Impossible d'utiliser une telle mise en majuscules. Essayez un sur %s." diff --git a/locale/hammer-cli.pot b/locale/hammer-cli.pot index 3fd438a6..be8f4412 100644 --- a/locale/hammer-cli.pot +++ b/locale/hammer-cli.pot @@ -6,10 +6,10 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: hammer-cli 2.5.0\n" +"Project-Id-Version: hammer-cli 3.9.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-05-04 13:37+0000\n" -"PO-Revision-Date: 2021-05-04 13:37+0000\n" +"POT-Creation-Date: 2023-11-29 15:17+0000\n" +"PO-Revision-Date: 2023-11-29 15:17+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" @@ -18,21 +18,25 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: ../lib/hammer_cli/abstract.rb:49 +#: ../lib/hammer_cli/abstract.rb:65 +msgid "" +"Following parameters accept format defined by its schema (bold are required; <" +"> contains acceptable type; [] contains acceptable value):" +msgstr "" + +#: ../lib/hammer_cli/abstract.rb:77 msgid "Option details" msgstr "" -#: ../lib/hammer_cli/abstract.rb:51 -msgid "" -"Following parameters accept format defined by its schema (bold are required; <" -"> contain acceptable type; [] contain acceptable value):" +#: ../lib/hammer_cli/abstract.rb:79 +msgid "Here you can find option types and the value an option can accept:" msgstr "" -#: ../lib/hammer_cli/abstract.rb:64 +#: ../lib/hammer_cli/abstract.rb:90 msgid "Predefined field sets" msgstr "" -#: ../lib/hammer_cli/abstract.rb:207 +#: ../lib/hammer_cli/abstract.rb:252 msgid "Command extensions should be inherited from %s." msgstr "" @@ -170,91 +174,91 @@ msgstr "" msgid "Defaults management" msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:25 +#: ../lib/hammer_cli/defaults_commands.rb:24 msgid "List all the providers" msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:37 +#: ../lib/hammer_cli/defaults_commands.rb:36 msgid "Provider" msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:38 +#: ../lib/hammer_cli/defaults_commands.rb:37 msgid "Supported defaults" msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:39 +#: ../lib/hammer_cli/defaults_commands.rb:38 msgid "Description" msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:56 +#: ../lib/hammer_cli/defaults_commands.rb:55 msgid "List all the default parameters" msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:67 +#: ../lib/hammer_cli/defaults_commands.rb:66 msgid "Parameter" msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:68 +#: ../lib/hammer_cli/defaults_commands.rb:67 msgid "Value" msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:86 +#: ../lib/hammer_cli/defaults_commands.rb:85 msgid "Delete a default param" msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:87 +#: ../lib/hammer_cli/defaults_commands.rb:86 msgid "The name of the default option" msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:103 +#: ../lib/hammer_cli/defaults_commands.rb:102 msgid "Add a default parameter to config" msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:104 +#: ../lib/hammer_cli/defaults_commands.rb:103 msgid "The name of the default option (e.g. organization_id)" msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:105 +#: ../lib/hammer_cli/defaults_commands.rb:104 msgid "The value for the default option" msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:106 +#: ../lib/hammer_cli/defaults_commands.rb:105 msgid "" "The name of the provider providing the value. For list available providers see" " `hammer defaults providers`" msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:134 +#: ../lib/hammer_cli/defaults_commands.rb:133 msgid "" "Added %{key_val} default-option with value that will be generated from the ser" "ver." msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:135 +#: ../lib/hammer_cli/defaults_commands.rb:134 msgid "Added %{key_val} default-option with value %{val_val}." msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:139 +#: ../lib/hammer_cli/defaults_commands.rb:138 msgid "" "Provider %{name} was not found. See `hammer defaults providers` for available " "providers." msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:143 +#: ../lib/hammer_cli/defaults_commands.rb:142 msgid "" "The param name is not supported by provider. See `hammer defaults providers` f" "or supported params." msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:147 +#: ../lib/hammer_cli/defaults_commands.rb:146 msgid "%{param} was deleted successfully." msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:151 +#: ../lib/hammer_cli/defaults_commands.rb:150 msgid "You must specify value or a provider name, can't specify both." msgstr "" -#: ../lib/hammer_cli/defaults_commands.rb:155 +#: ../lib/hammer_cli/defaults_commands.rb:154 msgid "Couldn't find the requested param in %s." msgstr "" @@ -432,100 +436,118 @@ msgstr "" msgid "Error: Some of the required modules are disabled in configuration: %s." msgstr "" -#: ../lib/hammer_cli/options/normalizers.rb:34 +#: ../lib/hammer_cli/options/normalizers.rb:25 +msgid "Value described in the option's description. Mostly simple string" +msgstr "" + +#: ../lib/hammer_cli/options/normalizers.rb:61 msgid "Comma-separated list of key=value." msgstr "" -#: ../lib/hammer_cli/options/normalizers.rb:35 -#: ../lib/hammer_cli/options/normalizers.rb:99 -#: ../lib/hammer_cli/options/normalizers.rb:140 -msgid "JSON is acceptable and preferred way for complex parameters" +#: ../lib/hammer_cli/options/normalizers.rb:62 +#: ../lib/hammer_cli/options/normalizers.rb:130 +#: ../lib/hammer_cli/options/normalizers.rb:153 +msgid "JSON is acceptable and preferred way for such parameters" msgstr "" -#: ../lib/hammer_cli/options/normalizers.rb:49 +#: ../lib/hammer_cli/options/normalizers.rb:76 msgid "Value must be defined as a comma-separated list of key=value or valid JSON." msgstr "" -#: ../lib/hammer_cli/options/normalizers.rb:98 +#: ../lib/hammer_cli/options/normalizers.rb:128 msgid "" "Comma separated list of values. Values containing comma should be quoted or es" "caped with backslash." msgstr "" -#: ../lib/hammer_cli/options/normalizers.rb:139 -msgid "" -"Comma separated list of values defined by a schema. See Option details section" -" below." +#: ../lib/hammer_cli/options/normalizers.rb:151 +msgid "Comma separated list of values defined by a schema." msgstr "" -#: ../lib/hammer_cli/options/normalizers.rb:163 +#: ../lib/hammer_cli/options/normalizers.rb:207 +msgid "Numeric value. Integer" +msgstr "" + +#: ../lib/hammer_cli/options/normalizers.rb:215 msgid "Numeric value is required." msgstr "" -#: ../lib/hammer_cli/options/normalizers.rb:180 -msgid "One of %s." +#: ../lib/hammer_cli/options/normalizers.rb:232 +msgid "One of %s" msgstr "" -#: ../lib/hammer_cli/options/normalizers.rb:190 -#: ../lib/hammer_cli/options/normalizers.rb:253 +#: ../lib/hammer_cli/options/normalizers.rb:247 +#: ../lib/hammer_cli/options/normalizers.rb:333 msgid "Value must be one of %s." msgstr "" -#: ../lib/hammer_cli/options/normalizers.rb:229 +#: ../lib/hammer_cli/options/normalizers.rb:268 +msgid "Path to a file" +msgstr "" + +#: ../lib/hammer_cli/options/normalizers.rb:299 msgid "Unable to parse JSON input." msgstr "" -#: ../lib/hammer_cli/options/normalizers.rb:243 +#: ../lib/hammer_cli/options/normalizers.rb:312 +msgid "Possible values are described in the option's description" +msgstr "" + +#: ../lib/hammer_cli/options/normalizers.rb:323 msgid "Possible value(s): %s" msgstr "" -#: ../lib/hammer_cli/options/normalizers.rb:251 +#: ../lib/hammer_cli/options/normalizers.rb:331 msgid "Value must be %s." msgstr "" -#: ../lib/hammer_cli/options/normalizers.rb:274 +#: ../lib/hammer_cli/options/normalizers.rb:362 msgid "Date and time in YYYY-MM-DD HH:MM:SS or ISO 8601 format" msgstr "" -#: ../lib/hammer_cli/options/normalizers.rb:281 +#: ../lib/hammer_cli/options/normalizers.rb:370 msgid "'%s' is not a valid date." msgstr "" -#: ../lib/hammer_cli/options/normalizers.rb:293 +#: ../lib/hammer_cli/options/normalizers.rb:381 +msgid "Any combination of possible values described in the option's description" +msgstr "" + +#: ../lib/hammer_cli/options/normalizers.rb:392 msgid "Any combination (comma separated list) of '%s'" msgstr "" -#: ../lib/hammer_cli/options/normalizers.rb:313 +#: ../lib/hammer_cli/options/normalizers.rb:416 msgid "Value must be a combination of '%s'." msgstr "" -#: ../lib/hammer_cli/options/option_definition.rb:54 +#: ../lib/hammer_cli/options/option_definition.rb:58 msgid "Warning: Option %{option} is deprecated. %{message}" msgstr "" -#: ../lib/hammer_cli/options/option_definition.rb:73 -#: ../lib/hammer_cli/options/option_family.rb:25 +#: ../lib/hammer_cli/options/option_definition.rb:77 +#: ../lib/hammer_cli/options/option_family.rb:33 msgid "Deprecated: %{deprecated_msg}" msgstr "" -#: ../lib/hammer_cli/options/option_definition.rb:76 -#: ../lib/hammer_cli/options/option_family.rb:28 +#: ../lib/hammer_cli/options/option_definition.rb:80 +#: ../lib/hammer_cli/options/option_family.rb:36 msgid "%{flag} is deprecated: %{deprecated_msg}" msgstr "" -#: ../lib/hammer_cli/options/option_definition.rb:96 +#: ../lib/hammer_cli/options/option_definition.rb:100 msgid "Can be specified multiple times." msgstr "" -#: ../lib/hammer_cli/options/option_definition.rb:100 +#: ../lib/hammer_cli/options/option_definition.rb:104 msgid ", or" msgstr "" -#: ../lib/hammer_cli/options/option_definition.rb:102 +#: ../lib/hammer_cli/options/option_definition.rb:106 msgid "Default:" msgstr "" -#: ../lib/hammer_cli/options/option_definition.rb:127 +#: ../lib/hammer_cli/options/option_definition.rb:131 msgid "Environment variable HAMMER_NIL can not be empty." msgstr "" @@ -573,15 +595,15 @@ msgstr "" msgid "Only one of options %s can be set." msgstr "" -#: ../lib/hammer_cli/output/adapter/csv.rb:175 +#: ../lib/hammer_cli/output/adapter/csv.rb:174 msgid "Message" msgstr "" -#: ../lib/hammer_cli/output/adapter/csv.rb:182 +#: ../lib/hammer_cli/output/adapter/csv.rb:181 msgid "Id" msgstr "" -#: ../lib/hammer_cli/output/adapter/csv.rb:186 +#: ../lib/hammer_cli/output/adapter/csv.rb:185 msgid "Name" msgstr "" @@ -607,7 +629,7 @@ msgstr "" msgid "yes" msgstr "" -#: ../lib/hammer_cli/settings.rb:39 +#: ../lib/hammer_cli/settings.rb:41 msgid "Warning: Couldn't load configuration file %{path}: %{message}." msgstr "" @@ -619,15 +641,15 @@ msgstr "" msgid "Exit interactive shell" msgstr "" -#: ../lib/hammer_cli/shell.rb:116 +#: ../lib/hammer_cli/shell.rb:117 msgid "Welcome to the hammer interactive shell." msgstr "" -#: ../lib/hammer_cli/shell.rb:117 +#: ../lib/hammer_cli/shell.rb:118 msgid "Type 'help' for usage information." msgstr "" -#: ../lib/hammer_cli/shell.rb:133 +#: ../lib/hammer_cli/shell.rb:134 msgid "Interactive shell" msgstr "" @@ -651,20 +673,20 @@ msgstr "" msgid "Could't read SSL client key %s." msgstr "" -#: ../lib/hammer_cli/subcommand.rb:110 +#: ../lib/hammer_cli/subcommand.rb:111 msgid "Found more than one command." msgstr "" -#: ../lib/hammer_cli/subcommand.rb:111 +#: ../lib/hammer_cli/subcommand.rb:112 msgid "Did you mean one of these?" msgstr "" -#: ../lib/hammer_cli/subcommand.rb:120 +#: ../lib/hammer_cli/subcommand.rb:121 msgid "" "Can't replace subcommand %s (%s) with %s (%s)." msgstr "" -#: ../lib/hammer_cli/utils.rb:86 +#: ../lib/hammer_cli/utils.rb:80 msgid "Cannot use such capitalization. Try one of %s." msgstr "" diff --git a/locale/it/LC_MESSAGES/hammer-cli.mo b/locale/it/LC_MESSAGES/hammer-cli.mo index b3140870..bea15642 100644 Binary files a/locale/it/LC_MESSAGES/hammer-cli.mo and b/locale/it/LC_MESSAGES/hammer-cli.mo differ diff --git a/locale/it/hammer-cli.po b/locale/it/hammer-cli.po index 9592d4a5..082e0ded 100644 --- a/locale/it/hammer-cli.po +++ b/locale/it/hammer-cli.po @@ -7,25 +7,29 @@ # Dominic Cleal , 2014 msgid "" msgstr "" -"Project-Id-Version: hammer-cli 2.5.0\n" +"Project-Id-Version: hammer-cli 3.9.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-01 17:27+0200\n" -"PO-Revision-Date: 2020-08-11 19:33+0000\n" -"Last-Translator: Transifex Bot <>\n" -"Language-Team: Italian (http://www.transifex.com/foreman/foreman/language/" +"POT-Creation-Date: 2023-08-25 17:32+0000\n" +"PO-Revision-Date: 2014-03-14 09:46+0000\n" +"Last-Translator: Dominic Cleal , 2014\n" +"Language-Team: Italian (http://app.transifex.com/foreman/foreman/language/" "it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? " +"1 : 2;\n" + +msgid "" +"Following parameters accept format defined by its schema (bold are required; " +"<> contains acceptable type; [] contains acceptable value):" +msgstr "" msgid "Option details" msgstr "" -msgid "" -"Following parameters accept format defined by its schema (bold are required; " -"<> contain acceptable type; [] contain acceptable value):" +msgid "Here you can find option types and the value an option can accept:" msgstr "" msgid "Predefined field sets" @@ -343,10 +347,13 @@ msgstr "" msgid "Error: Some of the required modules are disabled in configuration: %s." msgstr "" +msgid "Value described in the option's description. Mostly simple string" +msgstr "" + msgid "Comma-separated list of key=value." msgstr "Elenco separato da virgole di key=value." -msgid "JSON is acceptable and preferred way for complex parameters" +msgid "JSON is acceptable and preferred way for such parameters" msgstr "" msgid "" @@ -358,23 +365,30 @@ msgid "" "escaped with backslash." msgstr "" -msgid "" -"Comma separated list of values defined by a schema. See Option details " -"section below." +msgid "Comma separated list of values defined by a schema." msgstr "" -msgid "Numeric value is required." +msgid "Numeric value. Integer" msgstr "" -msgid "One of %s." +msgid "Numeric value is required." msgstr "" +msgid "One of %s" +msgstr "Uno di %s" + msgid "Value must be one of %s." msgstr "" +msgid "Path to a file" +msgstr "" + msgid "Unable to parse JSON input." msgstr "" +msgid "Possible values are described in the option's description" +msgstr "" + msgid "Possible value(s): %s" msgstr "" @@ -388,6 +402,10 @@ msgstr "" msgid "'%s' is not a valid date." msgstr "" +msgid "" +"Any combination of possible values described in the option's description" +msgstr "" + msgid "Any combination (comma separated list) of '%s'" msgstr "Qualsiasi combinazione (elenco separato da virgole) di '%s'" diff --git a/locale/ja/LC_MESSAGES/hammer-cli.mo b/locale/ja/LC_MESSAGES/hammer-cli.mo index 9811bd74..9f9137ad 100644 Binary files a/locale/ja/LC_MESSAGES/hammer-cli.mo and b/locale/ja/LC_MESSAGES/hammer-cli.mo differ diff --git a/locale/ja/hammer-cli.po b/locale/ja/hammer-cli.po index 610a7cde..5ce6b5aa 100644 --- a/locale/ja/hammer-cli.po +++ b/locale/ja/hammer-cli.po @@ -3,17 +3,18 @@ # This file is distributed under the same license as the hammer-cli package. # # Translators: +# 山田 修司 🍣 Shuji Yamada , 2015 # Kazuki Omo , 2019 # 山田 修司 🍣 Shuji Yamada , 2015 # 山田 修司 🍣 Shuji Yamada , 2015 msgid "" msgstr "" -"Project-Id-Version: hammer-cli 2.5.0\n" +"Project-Id-Version: hammer-cli 3.9.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-01 17:27+0200\n" -"PO-Revision-Date: 2020-12-01 08:26+0000\n" -"Last-Translator: Amit Upadhye \n" -"Language-Team: Japanese (http://www.transifex.com/foreman/foreman/language/" +"POT-Creation-Date: 2023-08-25 17:32+0000\n" +"PO-Revision-Date: 2014-03-14 09:46+0000\n" +"Last-Translator: 山田 修司 🍣 Shuji Yamada , 2015\n" +"Language-Team: Japanese (http://app.transifex.com/foreman/foreman/language/" "ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,30 +22,33 @@ msgstr "" "Language: ja\n" "Plural-Forms: nplurals=1; plural=0;\n" -msgid "Option details" -msgstr "オプションの詳細" - msgid "" "Following parameters accept format defined by its schema (bold are required; " -"<> contain acceptable type; [] contain acceptable value):" +"<> contains acceptable type; [] contains acceptable value):" msgstr "" "以下のパラメーターは、スキーマで定義された形式を使用できます (太字の項目は必" "須。<> には使用可能なタイプが、[] には使用可能な値が含まれます。):" +msgid "Option details" +msgstr "オプションの詳細" + +msgid "Here you can find option types and the value an option can accept:" +msgstr "ここでは、オプションの種類と、オプションで使用できる値を確認できます。" + msgid "Predefined field sets" -msgstr "定義済みのフィールドセット" +msgstr "事前定義済みのフィールドセット" msgid "Command extensions should be inherited from %s." msgstr "コマンド拡張は %s から継承する必要があります。" msgid "Unfortunately the server does not support such operation." -msgstr "残念ですがサーバはその操作をサポートしていません。" +msgstr "残念ですがサーバーはその操作をサポートしていません。" msgid "The server does not support such operation." msgstr "サーバーはこの操作に対応していません。" msgid "Prepare map of options and subcommands for Bash completion" -msgstr "bash-completion のオプションおよびサブコマンドのマッピングを準備する" +msgstr "Bash 補完向けのオプションおよびサブコマンドのマップを準備します" msgid "Unable to find hostname in %s." msgstr "%s でホスト名が見つかりません。" @@ -150,8 +154,8 @@ msgstr "%{buffer} での不正な引用" msgid "" "Couldn't create %s. Please create the directory before setting defaults." msgstr "" -"%s を作成できませんでした。デフォルト値を設定する前にディレクトリーを作成して" -"ください。" +"%s を作成できませんでした。デフォルトを設定する前にディレクトリーを作成してく" +"ださい。" msgid "Defaults management" msgstr "デフォルト管理" @@ -203,10 +207,10 @@ msgid "" "Added %{key_val} default-option with value that will be generated from the " "server." msgstr "" -"サーバーから生成される値で %{key_val} デフォルトオプションが追加されました。" +"サーバーから生成される値で %%{key_val} デフォルトオプションが追加されました。" msgid "Added %{key_val} default-option with value %{val_val}." -msgstr "値が %{val_val} の %{key_val} のデフォルトオプションを追加しました。" +msgstr "値が %%{val_val} の %%{key_val} のデフォルトオプションを追加しました。" msgid "" "Provider %{name} was not found. See `hammer defaults providers` for " @@ -369,11 +373,14 @@ msgstr "警告: モジュール %s のロード中にエラーが発生しまし msgid "Error: Some of the required modules are disabled in configuration: %s." msgstr "エラー: 必須モジュールの一部が設定で無効になっています: %s 。" +msgid "Value described in the option's description. Mostly simple string" +msgstr "オプションの説明に記載されている値。ほとんどの場合、単純な文字列です" + msgid "Comma-separated list of key=value." msgstr "key=value のコンマ区切りの一覧です。" -msgid "JSON is acceptable and preferred way for complex parameters" -msgstr "JSON は、複雑なパラメーターで使用でき、推奨の方法です" +msgid "JSON is acceptable and preferred way for such parameters" +msgstr "JSON は、このようなパラメーターで使用でき、推奨される方法です" msgid "" "Value must be defined as a comma-separated list of key=value or valid JSON." @@ -388,25 +395,30 @@ msgstr "" "値のコンマ区切りの一覧。コンマを含む値は引用符で囲むか、円記号でエスケープす" "る必要があります。" -msgid "" -"Comma separated list of values defined by a schema. See Option details " -"section below." -msgstr "" -"スキーマで定義し値のコンマ区切りの一覧。以下のオプションの詳細セクションを参" -"照してください。" +msgid "Comma separated list of values defined by a schema." +msgstr "スキーマで定義された値のコンマ区切りリスト。" + +msgid "Numeric value. Integer" +msgstr "数値。整数" msgid "Numeric value is required." -msgstr "数値が必要。" +msgstr "数値が必要です。" -msgid "One of %s." +msgid "One of %s" msgstr "%s の 1 つ" msgid "Value must be one of %s." msgstr "値は '%s' のいずれかに指定する必要があります。" +msgid "Path to a file" +msgstr "ファイルへのパス" + msgid "Unable to parse JSON input." msgstr "JSON 入力を解析できません。" +msgid "Possible values are described in the option's description" +msgstr "使用できる値は、オプションの説明に記載されています。" + msgid "Possible value(s): %s" msgstr "許容値: %s" @@ -419,6 +431,10 @@ msgstr "日時 (YYYY-MM-DD HH:MM:SS または ISO 8601 形式)" msgid "'%s' is not a valid date." msgstr "%s は有効な日付ではありません。" +msgid "" +"Any combination of possible values described in the option's description" +msgstr "オプションの説明に記載されている、使用できる値の組み合わせ" + msgid "Any combination (comma separated list) of '%s'" msgstr "%s の任意の組み合わせ (コンマ区切りの一覧)" @@ -429,10 +445,10 @@ msgid "Warning: Option %{option} is deprecated. %{message}" msgstr "警告: オプション %{option} は非推奨です。%{message}" msgid "Deprecated: %{deprecated_msg}" -msgstr "非推奨: %{deprecated_msg}" +msgstr "非推奨: %%{deprecated_msg}" msgid "%{flag} is deprecated: %{deprecated_msg}" -msgstr "%{flag} は非推奨です: %{deprecated_msg}" +msgstr "%%{flag} は非推奨です: %%{deprecated_msg}" msgid "Can be specified multiple times." msgstr "複数回指定することができます。" @@ -444,7 +460,7 @@ msgid "Default:" msgstr "デフォルト:" msgid "Environment variable HAMMER_NIL can not be empty." -msgstr "環境変数 HAMMER_NIL は空欄にできません。" +msgstr "環境変数 HAMMER_NIL を空にすることはできません。" msgid "Show specified fields or predefined field sets only. (See below)" msgstr "" @@ -501,8 +517,8 @@ msgid "" "Method %{tags} for field formatters and output adapters is deprecated. " "Please use %{feat} or %{req_feat} instead." msgstr "" -"フィールドフォーマッターおよび出力アダプターのメソッド %{tags} は非推奨になり" -"ました。代わりに %{feat} または {req_feat} を使用してください。" +"フィールドフォーマッターおよび出力アダプターのメソッド %%{tags} は非推奨とな" +"りました。代わりに %%{feat} または %%{req_feat} を使用してください。" msgid "no" msgstr "no" @@ -514,7 +530,7 @@ msgid "Warning: Couldn't load configuration file %{path}: %{message}." msgstr "警告: 設定ファイル %{path} をロードできませんでした: %{message}。" msgid "Print help for commands" -msgstr "コマンドについての help を出力" +msgstr "コマンドの help を出力" msgid "Exit interactive shell" msgstr "インタラクティブシェルの終了" @@ -557,4 +573,4 @@ msgstr "" "換えることはできません。" msgid "Cannot use such capitalization. Try one of %s." -msgstr "そのような大文字の使用は出来ません。次のなかから使用してください。" +msgstr "そのような大文字の使用は出来ません。%s から 1 つ選択してください。" diff --git a/locale/ka/LC_MESSAGES/hammer-cli.mo b/locale/ka/LC_MESSAGES/hammer-cli.mo new file mode 100644 index 00000000..379b30d1 Binary files /dev/null and b/locale/ka/LC_MESSAGES/hammer-cli.mo differ diff --git a/locale/ka/hammer-cli.po b/locale/ka/hammer-cli.po new file mode 100644 index 00000000..07d376b8 --- /dev/null +++ b/locale/ka/hammer-cli.po @@ -0,0 +1,578 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hammer-cli package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: hammer-cli 3.9.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-25 17:32+0000\n" +"PO-Revision-Date: 2014-03-14 09:46+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Georgian (http://app.transifex.com/foreman/foreman/language/" +"ka/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ka\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +msgid "" +"Following parameters accept format defined by its schema (bold are required; " +"<> contains acceptable type; [] contains acceptable value):" +msgstr "" +"შემდეგი პარამეტრები მიიღება მისი სქემით განსაზღვრულ ფორმატს (აუცილებელია " +"თამამი; <> შეიცავს მისაღებ ტიპს; [] შეიცავს მისაღებ მნიშვნელობას):" + +msgid "Option details" +msgstr "პარამეტრის დეტალები" + +msgid "Here you can find option types and the value an option can accept:" +msgstr "" +"აქ შეგიძლიათ იპოვოთ პარამეტრის ტიპები და მნიშვნელობა, რომელიც მას შეუძლია " +"მიიღოს:" + +msgid "Predefined field sets" +msgstr "ველების წინასწარ აღწერილი ნაკრებები" + +msgid "Command extensions should be inherited from %s." +msgstr "ბრძანების გაფართოებების %s-დან მემკვიდრეობით მიღება შეუძლებელია." + +msgid "Unfortunately the server does not support such operation." +msgstr "სამწუხაროდ სერვერს ამ ოპერაციის მხარდაჭერა არ გააჩნია." + +msgid "The server does not support such operation." +msgstr "სერვერს ამ ოპერაციის მხარდაჭერა არ გააჩნია." + +msgid "Prepare map of options and subcommands for Bash completion" +msgstr "მოამზადეთ პარამეტრებისა და ქვებრძანებების რუკა Bash-ის დასრულებისთვის" + +msgid "Unable to find hostname in %s." +msgstr "%s-ში ჰოსტების სახელის მოძებნა შეუძლებელია." + +msgid "CA certificate for %{uri} was stored to %{file}." +msgstr "%{uri}-ის CA სერტიფიკატი %{file}-შია შენახული." + +msgid "" +"Now hammer can use the downloaded certificate to verify SSL connection to " +"the server." +msgstr "" +"ახლა hammer-ს სერვერთან SSL კავშირის დასადასტურებლად გადმოწერილი " +"სერთიფიკატის გამოყენებაც შეუძლია." + +msgid "" +"It will be used automatically when ssl_ca_path and ssl_ca_file options are " +"not set." +msgstr "" +"ის ავტომატურად იქნება გამოყენებული, როდესაც ssl_ca_path და ssl_ca_file " +"პარამეტრები არ არის დაყენებული." + +msgid "" +"Be aware that hammer cannot verify whether the certificate is correct and " +"you should verify its authenticity." +msgstr "" +"გაითვალისწინეთ, რომ Hammer ვერ ამოწმებს სერთიფიკატის სისწორეს და მისი " +"სინამდვილე თქვენ უნდა შეამოწმოთ." + +msgid "You can display the certificate content with" +msgstr "თქვენ შეგიძლიათ აჩვენოთ სერტიფიკატის შინაარსი" + +msgid "" +"As root you can also install the certificate and update the system-wide list " +"of trusted CA certificates as follows:" +msgstr "" +"როგორც root, შეგიძლიათ დააყენოთ სერთიფიკატი და განაახლოთ სანდო CA " +"სერთიფიკატების სისტემური სია შემდეგნაირად:" + +msgid "Couldn't parse URI '%s'." +msgstr "URI-ის დამუშავების შეცდომა: %s." + +msgid "" +"The CA certificate for %{uri} couldn't be downloaded. No CA cert was found." +msgstr "" +"CA სერთიფიკატი %{uri}-ისთვის ვერ ჩამოიტვირთა. CA სერთიფიკატი არ მოიძებნა." + +msgid "Make sure your server sends cert chain including the CA." +msgstr "" +"დარწმუნდით, რომ სერვერი სერტიფიკატების მთელ ჯაჭვს აგზავნის, CA-ის ჩათვლით." + +msgid "To see the actual chain you can use openssl command" +msgstr "ჯაჭვის ახლოდან სანახავად შეგიძლიათ openssl ბრძანება გამოიყენოთ" + +msgid "You can also download the certificate manually and store it as %s." +msgstr "" +"ასევე შეგიძლიათ სერტიფიკატი ხელით გადმოწეროთ და როგორც %s, ისე შეინახოთ." + +msgid "" +"If you choose any other location set the ssl_ca_path or ssl_ca_file " +"configuration options appropriately." +msgstr "" +"თუ თქვენ აირჩევთ ნებისმიერ სხვა ადგილს, დააყენეთ ssl_ca_path ან ssl_ca_file " +"კონფიგურაციის პარამეტრები სათანადოდ." + +msgid "Fetching the CA certificate failed:" +msgstr "CA სერტიფიკატის მოთხოვნის შეცდომა:" + +msgid "The service at the given URI does not accept SSL connections." +msgstr "მითითებულ URI-ზე მყოფ სერვისს SSL -ის მხარდაჭერა არ გააჩნია." + +msgid "Perhaps you meant to connect to '%s'?" +msgstr "შესაძლოა %s-სთან მიერთებას გულისხმობდით?" + +msgid "Too many arguments." +msgstr "მეტისმეტად ბევრი არგუმენტი." + +msgid "Option '%s' is required." +msgstr "პარამეტრი %s აუცილებელია." + +msgid "Option '%{opt}' (or env %{env}) is required." +msgstr "აუცილებელია პარამეტრი '%{opt}' (ან ცვლადი %{env})." + +msgid "Option '%{swt}': %{msg}." +msgstr "მორგება '%{swt}': %{msg}." + +msgid "Parameter '%{pmt}': %{msg}." +msgstr "პარამეტრი '%{pmt}': %{msg}." + +msgid "%{env}: %{msg}." +msgstr "%{env}: %{msg}." + +msgid "Unrecognised option '%s'." +msgstr "უცნობი პარამეტრი: %s." + +msgid "No such sub-command '%s'." +msgstr "უცნობი ქვებრძანება: %s." + +msgid "No value provided." +msgstr "მნიშვნელობა მითითებული არაა." + +msgid "Illegal quoting in %{buffer}" +msgstr "არასწორი ბრჭყალები %{buffer} -ში" + +msgid "" +"Couldn't create %s. Please create the directory before setting defaults." +msgstr "" +"%s-ის შექმნის შეცდომა. ნაგულისხმები მნიშვნელობების დაყენებამდე საჭიროა " +"საქაღალდის შექმნა." + +msgid "Defaults management" +msgstr "ნაგულისხმები მნიშვნელობების მართვა" + +msgid "List all the providers" +msgstr "მომწოდებლების სია" + +msgid "Provider" +msgstr "სერვისის მომწოდებელი" + +msgid "Supported defaults" +msgstr "მხარდაჭერილი ნაგულისხმები მნიშვნელობები" + +msgid "Description" +msgstr "აღწერილობა" + +msgid "List all the default parameters" +msgstr "ყველა ნაგულისხმები მნიშვნელობა" + +msgid "Parameter" +msgstr "პარამეტრი" + +msgid "Value" +msgstr "მნიშვნელობა" + +msgid "Delete a default param" +msgstr "ნაგულისხმები პარამეტრის წაშლა" + +msgid "The name of the default option" +msgstr "ნაგულისხმები პარამეტრის სახელი" + +msgid "Add a default parameter to config" +msgstr "კონფიგურაციაში ნაგულისხმები პარამეტრის დამატება" + +msgid "The name of the default option (e.g. organization_id)" +msgstr "ნაგულისხმები პარამეტრის სახელი (მაგ. organization_id)" + +msgid "The value for the default option" +msgstr "ნაგულისხმები პარამეტრის მნიშვნელობა" + +msgid "" +"The name of the provider providing the value. For list available providers " +"see `hammer defaults providers`" +msgstr "" +"მომწოდებლის სახელი, რომელიც უზრუნველყოფს მნიშვნელობას. ხელმისაწვდომი " +"მომწოდებლების სიისთვის იხილეთ `Hammer-ის ნაგულისხმები მომწდოდებლები`" + +msgid "" +"Added %{key_val} default-option with value that will be generated from the " +"server." +msgstr "" +"დამატებულია %{key_val} ნაგულისხმები პარამეტრი მნიშვნელობით, რომელიც " +"სერვერიდან იქნება გენერირებული." + +msgid "Added %{key_val} default-option with value %{val_val}." +msgstr "დამატებულია %{key_val} ნაგულისხმები პარამეტრი მნიშვნელობით %{val_val}." + +msgid "" +"Provider %{name} was not found. See `hammer defaults providers` for " +"available providers." +msgstr "" +"მომწოდებელი %{name} ვერ მოიძებნა. ხელმისაწვდომი მომწოდებლებისათვის იხილეთ " +"`Hammer_ის ნაგულისხმები მომწოდებლები`." + +msgid "" +"The param name is not supported by provider. See `hammer defaults providers` " +"for supported params." +msgstr "" +"პარამეტრის სახელი არ არის მხარდაჭერილი მომწოდებლის მიერ. მხარდაჭერილი " +"პარამეტრებისთვის იხილეთ `Hammer-ის ნაგულისხმები მომწოდებლები`." + +msgid "%{param} was deleted successfully." +msgstr "%{param} წარმატებით წაიშალა." + +msgid "You must specify value or a provider name, can't specify both." +msgstr "შეგიძლიათ მიუთითოთ მნიშვნელობა ან მომწოდებელი. არა ორივე." + +msgid "Couldn't find the requested param in %s." +msgstr "%s-ში მოთხოვნილი პარამეტრი არ არსებობს." + +msgid "Error: %s" +msgstr "შეცდომა: %s" + +msgid "Error: %{message}" +msgstr "შეცდომა: %{message}" + +msgid "See: '%{path} --help'." +msgstr "იხილეთ: '%{path} --help'." + +msgid "SSL error" +msgstr "SSL-ის სეცდომა" + +msgid "SSL certificate verification failed" +msgstr "SSL სერტიფიკატის შემოწმების შეცდომა" + +msgid "is the server down?" +msgstr "სერვერი გამორთულია?" + +msgid "" +"was '%s' run on the server when using apipie cache? (typical production " +"settings)" +msgstr "" +"გაშვებული იყო „%s“ სერვერზე apipie cache-ის გამოყენებისას? (ტიპიური " +"წარმოების პარამეტრები)" + +msgid "Could not load the API description from the server" +msgstr "API აღწერის სერვერიდან ჩატვირთვის პრობლემა" + +msgid "Missing arguments for %s." +msgstr "%s-ს არგუმენტები აკლია." + +msgid "Format output in markdown" +msgstr "გამომავალი ფორმატირება ჩანაწერში" + +msgid "Hammer CLI help" +msgstr "Hammer CLI დახმარება" + +msgid "Print help for all hammer commands" +msgstr "Hammer-ის ბრძანებების სიის მისაღებად აკრიფეთ help" + +msgid "NOTE" +msgstr "შენიშვნა" + +msgid "No permissions to create log dir %s." +msgstr "ჟურნალის საქაღალდის შექმნის წვდომა აკრძალულია: %s." + +msgid "File %s not writeable, won't log anything to the file!" +msgstr "ფაილი %s ჩაწერადი არაა. ჟურნალი ამ ფაილში არ ჩაიწერება!" + +msgid "Be verbose (or not). True by default" +msgstr "დამატებითი შეტყობინებები (ან გამორთვა). ნაგულისხმებად: ჩართულია" + +msgid "Completely silent" +msgstr "სრულად გაჩუმება" + +msgid "Enable/disable stored defaults. Enabled by default" +msgstr "შენახული ნაგულისხმების ჩართვა/გამორთვა. ნაგულისხმებად ჩართულია" + +msgid "Show debugging output" +msgstr "გამართვის დამატებითი ინფორმაციის ჩვენება" + +msgid "Force reload of Apipie cache" +msgstr "Apipie-ის ქეშის ძალთ გადატვირთვა" + +msgid "Path to custom config file" +msgstr "ბილიკი კონფიგურაციის ფაილამდე" + +msgid "Username to access the remote system" +msgstr "დაშორებულ სისტემაზე წვდომის მომხმარებლის სახელი" + +msgid "Password to access the remote system" +msgstr "დაშორებულ სისტემაზე წვდომის პაროლი" + +msgid "Remote system address" +msgstr "დაშორებუი სისტემის მისამართი" + +msgid "Configure SSL verification of remote system" +msgstr "დაშორებული სისტემის SSL-ის შემოწმების მორება" + +msgid "Configure the file containing the CA certificates" +msgstr "CA სერტიფიკატების შემცველი ფაილის მორგება" + +msgid "Configure the directory containing the CA certificates" +msgstr "CA სერტიფიკატების შემცველი საქაღალდის მორგება" + +msgid "Configure the client's public certificate" +msgstr "კლიენტის საჯარო გასაღების მორგება" + +msgid "Configure the client's private key" +msgstr "კლიენტის პირადი გასაღების მორგება" + +msgid "" +"Use standard authentication in addition to client certificate authentication" +msgstr "" +"სტანდარტული ავთენტიფიკაციის გამოყენებასთან ერთად კლიენტის სერტიფიკატის " +"ავტორიზაციის სისწორეც შემოწმდება" + +msgid "Fetch CA certificate from server and exit" +msgstr "სერვერიდან CA სერტიფიკატის გამოთხოვა და გასვლა" + +msgid "Show version" +msgstr "ვერსიის ჩვენება" + +msgid "unknown version" +msgstr "უცნობი ვერსია" + +msgid "Show ids of associated resources" +msgstr "ასოცირებული რესურსების ID-ების ჩვენება" + +msgid "Explicitly turn interactive mode on/off" +msgstr "ინტერაქტიური რეჟიმის ჩართ/გამორთ" + +msgid "Hide headers from output" +msgstr "გამოტანიდან თავსართების დამალვა" + +msgid "Output as CSV (same as --output=csv)" +msgstr "CSV-ში გამოტანა (იგივე, რაც --output=csv)" + +msgid "Set output format" +msgstr "გამოტანის ფორმატის დაყენება" + +msgid "Path to custom output file" +msgstr "ბილიკი ხელით მითითებულ გამოტანის ფაილამდე" + +msgid "Character to separate the values" +msgstr "მნიშვნელობების გამყოფი სიმბოლო" + +msgid "Get list of possible endings" +msgstr "შესაძლო დასასრულების სიის მიღება" + +msgid "Warning: An error occured while loading module %s." +msgstr "გაფრთხილება: შეცდომა მოდულის (%s) ჩატვირთვისას." + +msgid "Error: Some of the required modules are disabled in configuration: %s." +msgstr "შეცდომა: ზოგიერთი საჭირო მოდული გამორთულია კონფიგურაციაში: %s." + +msgid "Value described in the option's description. Mostly simple string" +msgstr "პარამეტრის აღწერაში აღწერილი მნიშვნელობა. მარტივი სტრიქონი" + +msgid "Comma-separated list of key=value." +msgstr "მძიმით გამოყოფილი სია ცვლადი=მნიშვნელობა." + +msgid "JSON is acceptable and preferred way for such parameters" +msgstr "JSON ასეთი პარამეტრებისთვის მისაღები ფორმაა" + +msgid "" +"Value must be defined as a comma-separated list of key=value or valid JSON." +msgstr "" +"მნიშვნელობა მძიმით გამოყოფილ გასაღები=მნიშვნელობა ტიპის სიას ან სწორ JSON-ის " +"უნდა წარმოადგენდეს." + +msgid "" +"Comma separated list of values. Values containing comma should be quoted or " +"escaped with backslash." +msgstr "" +"მძიმით გამოყოფილი მნიშვნელობების სია. მძიმების შემცველი მნიშვნელობები " +"ბრჭყალებში უნდა იყოს ჩასმული, ან \\-ით სრულდებოდეს." + +msgid "Comma separated list of values defined by a schema." +msgstr "სქემის მიერ აღწერილი მძიმით გამოყოფილი მნიშვნელობების სია." + +msgid "Numeric value. Integer" +msgstr "რიცხვითი მნიშვნელობა: მთელი რიცხვი" + +msgid "Numeric value is required." +msgstr "საჭიროა რიცხვითი მნიშვნელობა." + +msgid "One of %s" +msgstr "ერთი %s-დან" + +msgid "Value must be one of %s." +msgstr "მნიშვნელობა ერთი %s-დან ერთი უნდა იყოს." + +msgid "Path to a file" +msgstr "ბილიკი ფაილამდე" + +msgid "Unable to parse JSON input." +msgstr "შეყვანილი JSON-ის დამუშავების შეცდომა." + +msgid "Possible values are described in the option's description" +msgstr "შესაძლო მნიშვნელობები პარამეტრის აღწერაშია" + +msgid "Possible value(s): %s" +msgstr "შესაძლო მნიშვნელობები: %s" + +msgid "Value must be %s." +msgstr "მნიშვნელობა უნდა იყოს %s." + +msgid "Date and time in YYYY-MM-DD HH:MM:SS or ISO 8601 format" +msgstr "თარიღი და დრო წწწწ-თთ-დდ სს:წწ:წწ ან ISO 8601 ფორმატში უნდა იყოს" + +msgid "'%s' is not a valid date." +msgstr "'%s' სწორ თარიღს არ წარმოადგენს." + +msgid "" +"Any combination of possible values described in the option's description" +msgstr "" +"შესაძლო მნიშვნელობების ნებისმიერი კომბინაცია, რომელიც პარამეტრის აღწერაშია " +"აღწერილი" + +msgid "Any combination (comma separated list) of '%s'" +msgstr "'%s'-ის ნებისმიერი კომბინაცია (მძიმით გამოყოფილი სია" + +msgid "Value must be a combination of '%s'." +msgstr "მნიშვნელობა \"%s\"-ის კომბინაცია უნდა იყოს." + +msgid "Warning: Option %{option} is deprecated. %{message}" +msgstr "გაფრთხილება: %{option} მოძველებულია. %{message}" + +msgid "Deprecated: %{deprecated_msg}" +msgstr "მოძველებულია: %{deprecated_msg}" + +msgid "%{flag} is deprecated: %{deprecated_msg}" +msgstr "%{flag} მოძველებულია: %{deprecated_msg}" + +msgid "Can be specified multiple times." +msgstr "შეიძლება მრავალჯერ იყოს მითითებული." + +msgid ", or" +msgstr ", ან" + +msgid "Default:" +msgstr "ნაგულისხმები:" + +msgid "Environment variable HAMMER_NIL can not be empty." +msgstr "გარემოს ცვლადი HAMMER_NIL არ შეიძლება ცარიელი იყოს." + +msgid "Show specified fields or predefined field sets only. (See below)" +msgstr "" +"მხოლოდ მითითებული ველების ან წინასწარ განსაზღვრული ველების ნაკრების ჩვენება. " +"(იხილეთ ქვემოთ)" + +msgid "There is no such predefined option %s." +msgstr "წინასწარ აღწერილი პარამეტრი %s არ არსებობს." + +msgid "Unknown option name '%s'." +msgstr "პარამეტრის არასწორი სახელი: %s." + +msgid "You can't set all options %s at one time." +msgstr "ყველა პარამეტრის %s ერთდროულად დაყენება არ შეგიძლიათ." + +msgid "Options %s are required." +msgstr "პარამეტრი %s აუცილებელია." + +msgid "You can't set option %s." +msgstr "პარამეტრი %s-ის დაყენება არ შეგიძლიათ." + +msgid "Option %s is required." +msgstr "პარამეტრი %s აუცილებელია." + +msgid "You can't set any of options %s." +msgstr "პარამეტრი %s-ის დაყენება არ შეგიძლიათ." + +msgid "At least one of options %s is required." +msgstr "საჭიროა პარამეტრებიდან ერთერთი მაინც: %s." + +msgid "One of options %s is required." +msgstr "საჭიროა პარამეტრებიდან ერთერთი: %s." + +msgid "Only one of options %s can be set." +msgstr "შეიძლება მხოლოდ ერთის მითითება: %s." + +msgid "Message" +msgstr "შეტყობინება" + +msgid "Id" +msgstr "ID" + +msgid "Name" +msgstr "სახელი" + +msgid "Page %{page} of %{total} (use --page and --per-page for navigation)." +msgstr "" +"%{page}-ე გვერდი %{total}-დან (ნავიგაციისთვის გამოიყენეთ --page და --per-" +"page)." + +msgid "Fields" +msgstr "ველები" + +msgid "" +"Method %{tags} for field formatters and output adapters is deprecated. " +"Please use %{feat} or %{req_feat} instead." +msgstr "" +"მეთოდი %{tags} ველის ფორმატორებისა და გამომავალი ადაპტერებისთვის " +"მოძველებულია. გთხოვთ, გამოიყენოთ %{feat} ან %{req_feat}." + +msgid "no" +msgstr "არა" + +msgid "yes" +msgstr "დიახ" + +msgid "Warning: Couldn't load configuration file %{path}: %{message}." +msgstr "" +"გაფრთხილება: კონფიგურაციის ფაილის ჩატვირთვის შეცდომა %{path}: %{message}." + +msgid "Print help for commands" +msgstr "ბრძანებების სიის მისაღებად აკრიფეთ help" + +msgid "Exit interactive shell" +msgstr "ინტერაქტიული გარსიდან გასვლა" + +msgid "Welcome to the hammer interactive shell." +msgstr "მოგესალმებით Hammer-ის ინტერაქტიურ გარსში." + +msgid "Type 'help' for usage information." +msgstr "გამოყენების დახმარების სანახავად აკრიფეთ 'help'." + +msgid "Interactive shell" +msgstr "ინტერაქტიული გარსი" + +msgid "SSL client certificate is set but the key is not." +msgstr "SSL კლიენტის სერტიფიკატი დაყენებულია, მაგრამ გასაღები არა." + +msgid "SSL client key is set but the certificate is not." +msgstr "SSL კლიენტის გასაღები დაყენებულია, მაგრამ სერტიფიკატი არა." + +msgid "SSL client authentication disabled." +msgstr "SSL კლიენტის ავთენტიკაცია გათიშულია." + +msgid "Could't read SSL client certificate %s." +msgstr "SSL კლიენტის სერტიფიკატის წაკითხვის შეცდომა: %s." + +msgid "Could't read SSL client key %s." +msgstr "SSL კლიენტის გასაღების წაკითხვის შეცდომა: %s." + +msgid "Found more than one command." +msgstr "ნაპოვნია ერთზე მეტი ბრძანება." + +msgid "Did you mean one of these?" +msgstr "ერთ-ერთ ამათგანს გულისხმობდით?" + +msgid "" +"Can't replace subcommand %s (%s) with %s " +"(%s)." +msgstr "" +"ქვებრძანების % ჩანაცვლება შეუძლებელია ს (% ს) %-" +"ით ს (% ს)." + +msgid "Cannot use such capitalization. Try one of %s." +msgstr "ასოების ზომის ამ ვარიანტს ვერ გამოვიყენებ. სცადეთ ერთ-ერთი %s-დან." diff --git a/locale/ko/LC_MESSAGES/hammer-cli.mo b/locale/ko/LC_MESSAGES/hammer-cli.mo index 401749cf..42531132 100644 Binary files a/locale/ko/LC_MESSAGES/hammer-cli.mo and b/locale/ko/LC_MESSAGES/hammer-cli.mo differ diff --git a/locale/ko/hammer-cli.po b/locale/ko/hammer-cli.po index 2872b63b..92193009 100644 --- a/locale/ko/hammer-cli.po +++ b/locale/ko/hammer-cli.po @@ -6,12 +6,12 @@ # Automatically generated, 2014 msgid "" msgstr "" -"Project-Id-Version: hammer-cli 2.5.0\n" +"Project-Id-Version: hammer-cli 3.9.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-01 17:27+0200\n" -"PO-Revision-Date: 2020-08-11 19:33+0000\n" -"Last-Translator: Transifex Bot <>\n" -"Language-Team: Korean (http://www.transifex.com/foreman/foreman/language/" +"POT-Creation-Date: 2023-08-25 17:32+0000\n" +"PO-Revision-Date: 2014-03-14 09:46+0000\n" +"Last-Translator: Automatically generated, 2014\n" +"Language-Team: Korean (http://app.transifex.com/foreman/foreman/language/" "ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,12 +19,15 @@ msgstr "" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" +msgid "" +"Following parameters accept format defined by its schema (bold are required; " +"<> contains acceptable type; [] contains acceptable value):" +msgstr "" + msgid "Option details" msgstr "" -msgid "" -"Following parameters accept format defined by its schema (bold are required; " -"<> contain acceptable type; [] contain acceptable value):" +msgid "Here you can find option types and the value an option can accept:" msgstr "" msgid "Predefined field sets" @@ -341,10 +344,13 @@ msgstr "" msgid "Error: Some of the required modules are disabled in configuration: %s." msgstr "" +msgid "Value described in the option's description. Mostly simple string" +msgstr "" + msgid "Comma-separated list of key=value." msgstr "콤마로 구분된 key=value 목록입니다. " -msgid "JSON is acceptable and preferred way for complex parameters" +msgid "JSON is acceptable and preferred way for such parameters" msgstr "" msgid "" @@ -356,23 +362,30 @@ msgid "" "escaped with backslash." msgstr "" -msgid "" -"Comma separated list of values defined by a schema. See Option details " -"section below." +msgid "Comma separated list of values defined by a schema." msgstr "" -msgid "Numeric value is required." +msgid "Numeric value. Integer" msgstr "" -msgid "One of %s." +msgid "Numeric value is required." msgstr "" +msgid "One of %s" +msgstr "%s 중 하나 " + msgid "Value must be one of %s." msgstr "" +msgid "Path to a file" +msgstr "" + msgid "Unable to parse JSON input." msgstr "" +msgid "Possible values are described in the option's description" +msgstr "" + msgid "Possible value(s): %s" msgstr "가능한 값: %s" @@ -385,6 +398,10 @@ msgstr "날짜 및 시간 (YYYY-MM-DD HH:MM:SS 또는 ISO 8601 형식으로)" msgid "'%s' is not a valid date." msgstr "" +msgid "" +"Any combination of possible values described in the option's description" +msgstr "" + msgid "Any combination (comma separated list) of '%s'" msgstr "'%s'의 모든 조합 (콤마로 구분된 목록)" diff --git a/locale/pt_BR/LC_MESSAGES/hammer-cli.mo b/locale/pt_BR/LC_MESSAGES/hammer-cli.mo index ed3db95a..4cbac65d 100644 Binary files a/locale/pt_BR/LC_MESSAGES/hammer-cli.mo and b/locale/pt_BR/LC_MESSAGES/hammer-cli.mo differ diff --git a/locale/pt_BR/hammer-cli.po b/locale/pt_BR/hammer-cli.po index 421e09fa..1ccaaa92 100644 --- a/locale/pt_BR/hammer-cli.po +++ b/locale/pt_BR/hammer-cli.po @@ -4,36 +4,38 @@ # # Translators: # Dominic Cleal , 2014 -# Fabio Dias , 2015 +# Fabio Dias, 2015 +# Fabio Dias, 2015 # Luiz Henrique Vasconcelos , 2014,2018 # Luiz Henrique Vasconcelos , 2014 # Luiz Henrique Vasconcelos , 2014 # Valeria S Silva , 2015 msgid "" msgstr "" -"Project-Id-Version: hammer-cli 2.5.0\n" +"Project-Id-Version: hammer-cli 3.9.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-01 17:27+0200\n" -"PO-Revision-Date: 2020-09-03 07:45+0000\n" -"Last-Translator: Amit Upadhye \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/foreman/foreman/" +"POT-Creation-Date: 2023-08-25 17:32+0000\n" +"PO-Revision-Date: 2014-03-14 09:46+0000\n" +"Last-Translator: Valeria S Silva , 2015\n" +"Language-Team: Portuguese (Brazil) (http://app.transifex.com/foreman/foreman/" "language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % " +"1000000 == 0 ? 1 : 2;\n" + +msgid "" +"Following parameters accept format defined by its schema (bold are required; " +"<> contains acceptable type; [] contains acceptable value):" +msgstr "" msgid "Option details" msgstr "Detalhes da opção" -msgid "" -"Following parameters accept format defined by its schema (bold are required; " -"<> contain acceptable type; [] contain acceptable value):" +msgid "Here you can find option types and the value an option can accept:" msgstr "" -"Os seguintes parâmetros aceitam um formato definido pelo seu esquema " -"(negrito são os necessários; <> contém o tipo aceitável; [] contém o valor " -"aceitável):" msgid "Predefined field sets" msgstr "Conjuntos de campos predefinidos" @@ -54,7 +56,7 @@ msgid "Unable to find hostname in %s." msgstr "Não foi possível encontrar o nome de host em %s." msgid "CA certificate for %{uri} was stored to %{file}." -msgstr "O certificado CA para %{uri} foi armazenado em %{file}." +msgstr "O certificado da CA para %{uri} foi armazenado para %{file}." msgid "" "Now hammer can use the downloaded certificate to verify SSL connection to " @@ -138,7 +140,7 @@ msgid "Option '%{swt}': %{msg}." msgstr "Opção '%{swt}': %{msg}." msgid "Parameter '%{pmt}': %{msg}." -msgstr "Parâmetro '%{pmt}': %{msg}." +msgstr "Parâmetro" msgid "%{env}: %{msg}." msgstr "%{env}: %{msg}." @@ -153,7 +155,7 @@ msgid "No value provided." msgstr "Nenhum valor fornecido. " msgid "Illegal quoting in %{buffer}" -msgstr "Aspas incorretas em %{buffer}" +msgstr "Citação ilegal em %{buffer}" msgid "" "Couldn't create %s. Please create the directory before setting defaults." @@ -209,10 +211,11 @@ msgid "" "Added %{key_val} default-option with value that will be generated from the " "server." msgstr "" -" default-option %{key_val} adicionada com valor que será gerado do servidor. " +"Adicionado %{key_val} opção padrão com valor que será gerado a partir do " +"servidor." msgid "Added %{key_val} default-option with value %{val_val}." -msgstr "default-option %{key_val} adicionada com valor %{val_val}." +msgstr "Adicionado %{key_val} opção padrão com valor %{val_val}." msgid "" "Provider %{name} was not found. See `hammer defaults providers` for " @@ -229,7 +232,7 @@ msgstr "" "de padrões hammer`para parâmetros com suporte." msgid "%{param} was deleted successfully." -msgstr "%{param} foi removido com êxito." +msgstr "%{param} foi excluída com sucesso." msgid "You must specify value or a provider name, can't specify both." msgstr "" @@ -240,13 +243,13 @@ msgid "Couldn't find the requested param in %s." msgstr "Não foi possível localizar o parâmetro solicitado %s." msgid "Error: %s" -msgstr "Erro: %s" +msgstr "Erro!" msgid "Error: %{message}" -msgstr "Erro: %{message}" +msgstr "Erro!" msgid "See: '%{path} --help'." -msgstr "Consulte: '%{path} --help'." +msgstr "Ver: '%{path} --ajuda'." msgid "SSL error" msgstr "Erro SSL" @@ -268,7 +271,7 @@ msgid "Could not load the API description from the server" msgstr "Não foi possível carregar a descrição do API do servidor" msgid "Missing arguments for %s." -msgstr "Argumentos ausentes para %s" +msgstr "Argumentos ausentes para %s." msgid "Format output in markdown" msgstr "Formatar saída no markdown" @@ -374,11 +377,14 @@ msgid "Error: Some of the required modules are disabled in configuration: %s." msgstr "" "Erro: alguns dos modelos necessários estão desabilitados na configuração: %s." +msgid "Value described in the option's description. Mostly simple string" +msgstr "" + msgid "Comma-separated list of key=value." msgstr "Lista da chave=valor separada por vírgulas." -msgid "JSON is acceptable and preferred way for complex parameters" -msgstr "O JSON é a forma aceitável e preferencial para parâmetros complexos" +msgid "JSON is acceptable and preferred way for such parameters" +msgstr "" msgid "" "Value must be defined as a comma-separated list of key=value or valid JSON." @@ -393,25 +399,30 @@ msgstr "" "Lista de valores separados por vírgulas. Valores contendo vírgulas devem " "estar entre aspas ou ter uma barra invertida." -msgid "" -"Comma separated list of values defined by a schema. See Option details " -"section below." +msgid "Comma separated list of values defined by a schema." +msgstr "" + +msgid "Numeric value. Integer" msgstr "" -"Lista de valores separados por vírgulas definida por um esquema. Veja a " -"seção de detalhes da opção abaixo." msgid "Numeric value is required." msgstr "O valor numérico é necessário." -msgid "One of %s." -msgstr "Um de %s" +msgid "One of %s" +msgstr "Uma das %s" msgid "Value must be one of %s." msgstr "O valor deve ser um dos %s." +msgid "Path to a file" +msgstr "" + msgid "Unable to parse JSON input." msgstr "Não foi possível analisar a entrada JSON." +msgid "Possible values are described in the option's description" +msgstr "" + msgid "Possible value(s): %s" msgstr "Possível(is) valor(es): %s" @@ -424,6 +435,10 @@ msgstr "Data e hora em formato YYYY-MM-DD HH:MM:SS ou ISO 8601" msgid "'%s' is not a valid date." msgstr "'%s' não é uma data válida." +msgid "" +"Any combination of possible values described in the option's description" +msgstr "" + msgid "Any combination (comma separated list) of '%s'" msgstr "Qualquer combinação (lista separada por vírgula) de '%s'" @@ -431,13 +446,13 @@ msgid "Value must be a combination of '%s'." msgstr "O valor deve ser uma combinação de '%s'." msgid "Warning: Option %{option} is deprecated. %{message}" -msgstr "Aviso: Opção %{option} foi preterida. %{message}" +msgstr "Advertência: A opção %{option} é depreciada. %{message}" msgid "Deprecated: %{deprecated_msg}" -msgstr "Preterido: %{deprecated_msg}" +msgstr "Depreciado: %{deprecated_msg}" msgid "%{flag} is deprecated: %{deprecated_msg}" -msgstr "%{flag} foi preterido: %{deprecated_msg}" +msgstr "%{flag} é depreciado: %{deprecated_msg}" msgid "Can be specified multiple times." msgstr "Pode ser especificado diversas vezes." @@ -470,7 +485,7 @@ msgid "You can't set option %s." msgstr "Não é possível definir a opção %s." msgid "Option %s is required." -msgstr "A opção '%s' é necessária." +msgstr "A opção %s é necessária." msgid "You can't set any of options %s." msgstr "Não é possível definir nenhuma das opções %s." @@ -482,7 +497,7 @@ msgid "One of options %s is required." msgstr "Uma das opções %s é necessária." msgid "Only one of options %s can be set." -msgstr "Somente é possível definir uma das opções %s." +msgstr "Apenas uma das opções %s pode ser definida." msgid "Message" msgstr "Mensagem" @@ -494,7 +509,8 @@ msgid "Name" msgstr "Nome" msgid "Page %{page} of %{total} (use --page and --per-page for navigation)." -msgstr "Página %{page} de %{total} (use --page e --per-page para navegação)." +msgstr "" +"Página %{page} de %{total} (uso --página e --por-página para navegação)." msgid "Fields" msgstr "Campos" @@ -503,8 +519,8 @@ msgid "" "Method %{tags} for field formatters and output adapters is deprecated. " "Please use %{feat} or %{req_feat} instead." msgstr "" -"O método %{tags} para formatadores de campos e adaptadores de saída foi " -"preterido. Em vez disso, use %{feat} ou %{req_feat}." +"O método %{tags} para formatadores de campo e adaptadores de saída é " +"depreciado. Favor usar %{feat} ou %{req_feat} em seu lugar." msgid "no" msgstr "não" @@ -514,7 +530,7 @@ msgstr "sim" msgid "Warning: Couldn't load configuration file %{path}: %{message}." msgstr "" -"Aviso: não foi possível carregar o arquivo de configuração %{path}: " +"Advertência: Não foi possível carregar o arquivo de configuração %{path}: " "%{message}." msgid "Print help for commands" @@ -557,7 +573,7 @@ msgid "" "Can't replace subcommand %s (%s) with %s " "(%s)." msgstr "" -"Não foi possível substituir o subcomando %s (%s) por " +"Não é possível substituir o subcomando %s (%s) por " "%s (%s)." msgid "Cannot use such capitalization. Try one of %s." diff --git a/locale/ru/LC_MESSAGES/hammer-cli.mo b/locale/ru/LC_MESSAGES/hammer-cli.mo index 2ba7fee8..148ac13b 100644 Binary files a/locale/ru/LC_MESSAGES/hammer-cli.mo and b/locale/ru/LC_MESSAGES/hammer-cli.mo differ diff --git a/locale/ru/hammer-cli.po b/locale/ru/hammer-cli.po index 7c3a354d..b694f66c 100644 --- a/locale/ru/hammer-cli.po +++ b/locale/ru/hammer-cli.po @@ -9,12 +9,12 @@ # Yulia , 2016 msgid "" msgstr "" -"Project-Id-Version: hammer-cli 2.5.0\n" +"Project-Id-Version: hammer-cli 3.9.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-01 17:27+0200\n" -"PO-Revision-Date: 2020-08-11 19:33+0000\n" -"Last-Translator: Transifex Bot <>\n" -"Language-Team: Russian (http://www.transifex.com/foreman/foreman/language/" +"POT-Creation-Date: 2023-08-25 17:32+0000\n" +"PO-Revision-Date: 2014-03-14 09:46+0000\n" +"Last-Translator: Dominic Cleal , 2014\n" +"Language-Team: Russian (http://app.transifex.com/foreman/foreman/language/" "ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,12 +24,15 @@ msgstr "" "%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" "%100>=11 && n%100<=14)? 2 : 3);\n" +msgid "" +"Following parameters accept format defined by its schema (bold are required; " +"<> contains acceptable type; [] contains acceptable value):" +msgstr "" + msgid "Option details" msgstr "" -msgid "" -"Following parameters accept format defined by its schema (bold are required; " -"<> contain acceptable type; [] contain acceptable value):" +msgid "Here you can find option types and the value an option can accept:" msgstr "" msgid "Predefined field sets" @@ -349,10 +352,13 @@ msgstr "" msgid "Error: Some of the required modules are disabled in configuration: %s." msgstr "" +msgid "Value described in the option's description. Mostly simple string" +msgstr "" + msgid "Comma-separated list of key=value." msgstr "Список пар «ключ=значение» через запятую." -msgid "JSON is acceptable and preferred way for complex parameters" +msgid "JSON is acceptable and preferred way for such parameters" msgstr "" msgid "" @@ -364,23 +370,30 @@ msgid "" "escaped with backslash." msgstr "" -msgid "" -"Comma separated list of values defined by a schema. See Option details " -"section below." +msgid "Comma separated list of values defined by a schema." msgstr "" -msgid "Numeric value is required." +msgid "Numeric value. Integer" msgstr "" -msgid "One of %s." +msgid "Numeric value is required." msgstr "" +msgid "One of %s" +msgstr "Одно из %s" + msgid "Value must be one of %s." msgstr "" +msgid "Path to a file" +msgstr "" + msgid "Unable to parse JSON input." msgstr "" +msgid "Possible values are described in the option's description" +msgstr "" + msgid "Possible value(s): %s" msgstr "Возможные значения: %s" @@ -393,6 +406,10 @@ msgstr "Дата и время в виде ГГГГ-ММ-ДД:ЧЧ:СС или msgid "'%s' is not a valid date." msgstr "" +msgid "" +"Any combination of possible values described in the option's description" +msgstr "" + msgid "Any combination (comma separated list) of '%s'" msgstr "Любые комбинации «%s» через запятую" diff --git a/locale/zh_CN/LC_MESSAGES/hammer-cli.mo b/locale/zh_CN/LC_MESSAGES/hammer-cli.mo index 419c83ab..0405b0db 100644 Binary files a/locale/zh_CN/LC_MESSAGES/hammer-cli.mo and b/locale/zh_CN/LC_MESSAGES/hammer-cli.mo differ diff --git a/locale/zh_CN/hammer-cli.po b/locale/zh_CN/hammer-cli.po index 81792156..f5d59d69 100644 --- a/locale/zh_CN/hammer-cli.po +++ b/locale/zh_CN/hammer-cli.po @@ -6,12 +6,12 @@ # Automatically generated, 2014 msgid "" msgstr "" -"Project-Id-Version: hammer-cli 2.5.0\n" +"Project-Id-Version: hammer-cli 3.9.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-01 17:27+0200\n" -"PO-Revision-Date: 2020-12-01 08:27+0000\n" -"Last-Translator: Amit Upadhye \n" -"Language-Team: Chinese (China) (http://www.transifex.com/foreman/foreman/" +"POT-Creation-Date: 2023-08-25 17:32+0000\n" +"PO-Revision-Date: 2014-03-14 09:46+0000\n" +"Last-Translator: Automatically generated, 2014\n" +"Language-Team: Chinese (China) (http://app.transifex.com/foreman/foreman/" "language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,18 +19,21 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -msgid "Option details" -msgstr "选项详情" - msgid "" "Following parameters accept format defined by its schema (bold are required; " -"<> contain acceptable type; [] contain acceptable value):" +"<> contains acceptable type; [] contains acceptable value):" msgstr "" "以下参数接受其 schema 定义的格式(加重为必填项;<>包含可接受的类型; [] 包含" "可接受的值):" +msgid "Option details" +msgstr "选项详情" + +msgid "Here you can find option types and the value an option can accept:" +msgstr "您可以在此处找到选项类型,选项可接受的值:" + msgid "Predefined field sets" -msgstr "预定义字段集" +msgstr "预定义的字段集" msgid "Command extensions should be inherited from %s." msgstr "命令扩展名应从%s 继承。" @@ -39,7 +42,7 @@ msgid "Unfortunately the server does not support such operation." msgstr "服务器不支持这样的操作。" msgid "The server does not support such operation." -msgstr "伺服器不支援此類型的操作。" +msgstr "服务器不支持这样的操作。" msgid "Prepare map of options and subcommands for Bash completion" msgstr "准备用于 Bash 完成功能的选项和子命令映射" @@ -139,7 +142,7 @@ msgid "" msgstr "无法创建 %s。请先创建目录,然后设置默认值。" msgid "Defaults management" -msgstr "預設值管理" +msgstr "默认管理" msgid "List all the providers" msgstr "列出所有供應者" @@ -186,10 +189,10 @@ msgstr "" msgid "" "Added %{key_val} default-option with value that will be generated from the " "server." -msgstr "添加的 %{key_val} 默认选项,值将从服务器生成。" +msgstr "添加的 %%{key_val} 默认选项,值将从服务器生成。" msgid "Added %{key_val} default-option with value %{val_val}." -msgstr "添加的 %{key_val} 默认选项,值是 {val_val}。" +msgstr "添加的 %%{key_val} 默认选项,值是 %{val_val}。" msgid "" "Provider %{name} was not found. See `hammer defaults providers` for " @@ -202,8 +205,7 @@ msgid "" "The param name is not supported by provider. See `hammer defaults providers` " "for supported params." msgstr "" -"供應者並不支援此參數名稱。欲知支援的參數名稱,請參閱 `hammer defaults " -"providers`。" +"供应商不支持参数名称。有关支持的参数,请参见“ hammer defaults provider”。" msgid "%{param} was deleted successfully." msgstr "已成功刪除 %{param}。" @@ -230,7 +232,7 @@ msgid "SSL certificate verification failed" msgstr "SSL 证书验证失败" msgid "is the server down?" -msgstr "伺服器是否沒有在運作?" +msgstr "服务器是否已下线?" msgid "" "was '%s' run on the server when using apipie cache? (typical production " @@ -239,13 +241,13 @@ msgstr "" "在使用 apipie 缓存时(典型的生产环境设置),'%s' 是否有在服务器上运行?" msgid "Could not load the API description from the server" -msgstr "無法從伺服器載入 API 描述" +msgstr "无法从服务器加载 API 描述" msgid "Missing arguments for %s." msgstr "缺少 %s 参数" msgid "Format output in markdown" -msgstr "格式输出下降" +msgstr "格式输出的 markdown 格式" msgid "Hammer CLI help" msgstr "Hammer CLI 帮助" @@ -339,7 +341,7 @@ msgid "Character to separate the values" msgstr "用來隔開值的字元" msgid "Get list of possible endings" -msgstr "取得一列可能的結尾" +msgstr "取得可能的结尾列表" msgid "Warning: An error occured while loading module %s." msgstr "警告:载入模块 %s 时出错。" @@ -347,11 +349,14 @@ msgstr "警告:载入模块 %s 时出错。" msgid "Error: Some of the required modules are disabled in configuration: %s." msgstr "错误:在配置中禁用了一些要求的模块:%s。" +msgid "Value described in the option's description. Mostly simple string" +msgstr "选项描述项中描述的值。大多数为简单的字符串" + msgid "Comma-separated list of key=value." -msgstr "逗號區隔開的一列 key=value。" +msgstr "逗号分隔的 key=value 列表。" -msgid "JSON is acceptable and preferred way for complex parameters" -msgstr "JSON 可用,且是复杂参数的首选格式" +msgid "JSON is acceptable and preferred way for such parameters" +msgstr "JSON 可用,且是此类参数的首选格式" msgid "" "Value must be defined as a comma-separated list of key=value or valid JSON." @@ -362,23 +367,30 @@ msgid "" "escaped with backslash." msgstr "以逗号分隔的值列表。包含逗号的值应包括在引号中,或使用反斜杠转义。" -msgid "" -"Comma separated list of values defined by a schema. See Option details " -"section below." -msgstr "逗号分隔的由 schema 定义的值的列表。请参阅下面的“选项详细信息”部分。" +msgid "Comma separated list of values defined by a schema." +msgstr "逗号分隔的由 schema 定义的值的列表。" + +msgid "Numeric value. Integer" +msgstr "数值。整数" msgid "Numeric value is required." -msgstr "需要提供数值。" +msgstr "需要数字值。" -msgid "One of %s." -msgstr "%s 之一。" +msgid "One of %s" +msgstr "%s 之一" msgid "Value must be one of %s." msgstr "值必须是 %s 中的一个。" +msgid "Path to a file" +msgstr "文件的路径" + msgid "Unable to parse JSON input." msgstr "无法解析 JSON 输入。" +msgid "Possible values are described in the option's description" +msgstr "选项的描述项中描述了可能的值" + msgid "Possible value(s): %s" msgstr "可能的值:%s" @@ -386,11 +398,15 @@ msgid "Value must be %s." msgstr "值必须是 %s。" msgid "Date and time in YYYY-MM-DD HH:MM:SS or ISO 8601 format" -msgstr "日期與時間,格式為 YYYY-MM-DD HH:MM:SS 或是 ISO 8601 格式" +msgstr "日期和时间,格式为 YYYY-MM-DD HH:MM:SS 或 ISO 8601" msgid "'%s' is not a valid date." msgstr "'%s' 不是有效日期。" +msgid "" +"Any combination of possible values described in the option's description" +msgstr "选项描述中所述的任何可能值组合" + msgid "Any combination (comma separated list) of '%s'" msgstr "'%s' 的任何组合(以逗号分隔的列表)" @@ -401,10 +417,10 @@ msgid "Warning: Option %{option} is deprecated. %{message}" msgstr "警告:选项%{option}已弃用。%{message}" msgid "Deprecated: %{deprecated_msg}" -msgstr "弃用:%{deprecated_msg}" +msgstr "弃用:%%{deprecated_msg}" msgid "%{flag} is deprecated: %{deprecated_msg}" -msgstr "%{flag} 已弃用:%{deprecated_msg}" +msgstr "%%{flag} 已弃用:%%{deprecated_msg}" msgid "Can be specified multiple times." msgstr "无法多次指定。" @@ -470,7 +486,8 @@ msgid "" "Method %{tags} for field formatters and output adapters is deprecated. " "Please use %{feat} or %{req_feat} instead." msgstr "" -"字段格式化程序和输出适配器的方法%{tags}已弃用。请改用%{feat}或%{req_feat}。" +"字段格式化程序和输出适配器的方法%%{tags}已弃用。请改用%%{feat}或%" +"%{req_feat}。" msgid "no" msgstr "否" diff --git a/locale/zh_TW/LC_MESSAGES/hammer-cli.mo b/locale/zh_TW/LC_MESSAGES/hammer-cli.mo index 103e1858..ee4078f2 100644 Binary files a/locale/zh_TW/LC_MESSAGES/hammer-cli.mo and b/locale/zh_TW/LC_MESSAGES/hammer-cli.mo differ diff --git a/locale/zh_TW/hammer-cli.po b/locale/zh_TW/hammer-cli.po index 41cd7fc8..7090e2a7 100644 --- a/locale/zh_TW/hammer-cli.po +++ b/locale/zh_TW/hammer-cli.po @@ -6,12 +6,12 @@ # Automatically generated, 2014 msgid "" msgstr "" -"Project-Id-Version: hammer-cli 2.5.0\n" +"Project-Id-Version: hammer-cli 3.9.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-01 17:27+0200\n" -"PO-Revision-Date: 2020-08-11 19:33+0000\n" -"Last-Translator: Transifex Bot <>\n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.com/foreman/foreman/" +"POT-Creation-Date: 2023-08-25 17:32+0000\n" +"PO-Revision-Date: 2014-03-14 09:46+0000\n" +"Last-Translator: Automatically generated, 2014\n" +"Language-Team: Chinese (Taiwan) (http://app.transifex.com/foreman/foreman/" "language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,12 +19,15 @@ msgstr "" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" +msgid "" +"Following parameters accept format defined by its schema (bold are required; " +"<> contains acceptable type; [] contains acceptable value):" +msgstr "" + msgid "Option details" msgstr "" -msgid "" -"Following parameters accept format defined by its schema (bold are required; " -"<> contain acceptable type; [] contain acceptable value):" +msgid "Here you can find option types and the value an option can accept:" msgstr "" msgid "Predefined field sets" @@ -340,10 +343,13 @@ msgstr "" msgid "Error: Some of the required modules are disabled in configuration: %s." msgstr "" +msgid "Value described in the option's description. Mostly simple string" +msgstr "" + msgid "Comma-separated list of key=value." msgstr "逗號區隔開的一列 key=value。" -msgid "JSON is acceptable and preferred way for complex parameters" +msgid "JSON is acceptable and preferred way for such parameters" msgstr "" msgid "" @@ -355,23 +361,30 @@ msgid "" "escaped with backslash." msgstr "" -msgid "" -"Comma separated list of values defined by a schema. See Option details " -"section below." +msgid "Comma separated list of values defined by a schema." msgstr "" -msgid "Numeric value is required." +msgid "Numeric value. Integer" msgstr "" -msgid "One of %s." +msgid "Numeric value is required." msgstr "" +msgid "One of %s" +msgstr "%s 之一" + msgid "Value must be one of %s." msgstr "" +msgid "Path to a file" +msgstr "" + msgid "Unable to parse JSON input." msgstr "" +msgid "Possible values are described in the option's description" +msgstr "" + msgid "Possible value(s): %s" msgstr "可能的值:%s" @@ -384,6 +397,10 @@ msgstr "日期與時間,格式為 YYYY-MM-DD HH:MM:SS 或是 ISO 8601 格式" msgid "'%s' is not a valid date." msgstr "" +msgid "" +"Any combination of possible values described in the option's description" +msgstr "" + msgid "Any combination (comma separated list) of '%s'" msgstr "任何(以逗號隔開的)「%s」的組合" diff --git a/rel-eng/gem_release.ipynb b/rel-eng/gem_release.ipynb index a3e5c3be..30bdd63d 100644 --- a/rel-eng/gem_release.ipynb +++ b/rel-eng/gem_release.ipynb @@ -4,35 +4,27 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Release of hammer-cli gem\n", + "## Release of hammer-cli gem\n", "\n", - "## Requirements\n", + "### Requirements\n", "- push access to https://github.com/theforeman/hammer-cli\n", "- push access to rubygems.org for hammer-cli\n", "- sudo yum install transifex-client python-slugify asciidoc\n", "- ensure neither the `git push` or `gem push` don't require interractive auth. If you can't use api key or ssh key to auth skip these steps and run them form the shell manually \n", - "- to push translations you need an account on Transifex\n", + "- to push translations you need an account on Transifex (https://docs.transifex.com/client/client-configuration#~/-transifexrc)\n", "\n", - "## Release process\n", + "### Release process\n", "- Follow the steps with `+` or `+,`\n", "- If anything fails, fix it and re-run the step if applicable\n", "\n", - "## Release settings" + "### Release settings" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/home/mshira/git/hammer-cli\n" - ] - } - ], + "outputs": [], "source": [ "%cd .." ] @@ -46,19 +38,19 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "NEW_VERSION = '2.3.0'\n", - "LAST_VERSION = '2.2.1'\n", - "DEVELOP_VERSION = '2.4.0-develop'\n", - "NEXT_FUTURE_VERSION = '2.4.0'\n", + "NEW_VERSION = '3.8.0'\n", + "LAST_VERSION = '3.7.0'\n", + "DEVELOP_VERSION = '3.9.0-develop'\n", + "NEXT_FUTURE_VERSION = '3.9.0'\n", "MAJOR_RELEASE = True\n", - "STABLE_BRANCH = '2.3-stable'\n", - "GIT_REMOTE_UPSTREAM = 'origin'\n", + "STABLE_BRANCH = '3.8-stable'\n", + "GIT_REMOTE_UPSTREAM = 'upstream'\n", "WORK_BRANCH = 'master' if MAJOR_RELEASE else STABLE_BRANCH\n", - "\n" + "CHERRY_PICKS = []\n" ] }, { @@ -70,64 +62,49 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Already on 'master'\r\n" - ] - } - ], + "outputs": [], "source": [ "! git checkout {WORK_BRANCH}" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "remote: Enumerating objects: 22, done.\u001b[K\n", - "remote: Counting objects: 100% (22/22), done.\u001b[K\n", - "remote: Compressing objects: 100% (8/8), done.\u001b[K\n", - "remote: Total 22 (delta 15), reused 21 (delta 14), pack-reused 0\u001b[K\n", - "Unpacking objects: 100% (22/22), 2.04 KiB | 77.00 KiB/s, done.\n", - "From github.com:theforeman/hammer-cli\n", - " 1f84f1b..f783bf6 2.1-stable -> origin/2.1-stable\n", - " 1a38077..37007e1 2.2-stable -> origin/2.2-stable\n", - " * [new tag] 2.1.2 -> 2.1.2\n", - " * [new tag] 2.2.1 -> 2.2.1\n" - ] - } - ], + "outputs": [], "source": [ "! git fetch {GIT_REMOTE_UPSTREAM}" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Current branch master is up to date.\r\n" - ] - } - ], + "outputs": [], "source": [ "! git rebase {GIT_REMOTE_UPSTREAM}/{WORK_BRANCH}" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cherry picks for minor release" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if not MAJOR_RELEASE:\n", + " for cp in CHERRY_PICKS:\n", + " ! git cherry-pick -x {cp}" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -137,468 +114,18 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fetching gem metadata from https://rubygems.org/........\n", - "Resolving dependencies...\n", - "Using rake 10.1.1\n", - "Using amazing_print 1.2.2\u001b[32m (was 1.2.1)\u001b[0m\n", - "Using json 2.3.1\n", - "Using oauth 0.5.4\n", - "Using http-accept 1.7.0\n", - "Using unf_ext 0.0.7.7\n", - "Using unf 0.1.4\n", - "Using domain_name 0.5.20190701\n", - "Using http-cookie 1.0.3\n", - "Using mime-types-data 3.2020.0512\n", - "Using mime-types 3.3.1\n", - "Using netrc 0.11.0\n", - "Using rest-client 2.1.0\n", - "Using apipie-bindings 0.4.0\n", - "Using debug_inspector 0.0.3\n", - "Using binding_of_caller 0.8.0\n", - "Using builder 3.2.4\n", - "Using bundler 1.17.3\n", - "Using byebug 11.1.3\n", - "Using ci_reporter 1.9.3\n", - "Using clamp 1.1.2\n", - "Using coderay 1.1.3\n", - "Using docile 1.3.2\n", - "Using fast_gettext 2.0.3\n", - "Using locale 2.1.3\n", - "Using text 1.3.1\n", - "Using gettext 3.3.6\n", - "Using highline 2.0.3\n", - "Using little-plugger 1.1.4\n", - "Using multi_json 1.15.0\n", - "Using logging 2.3.0\n", - "Using unicode 0.4.4.4\n", - "Using unicode-display_width 1.7.0\n", - "Using hammer_cli 2.3.0.pre.develop\u001b[32m (was 2.2.0)\u001b[0m from source at `.`\n", - "Using method_source 1.0.0\n", - "Using minitest 4.7.4\n", - "Using minitest-spec-context 0.0.4\n", - "Using mocha 1.11.2\n", - "Using pry 0.13.1\n", - "Using pry-byebug 3.9.0\n", - "Using yard 0.9.25\n", - "Using pry-doc 1.1.0\n", - "Using pry-rails 0.3.9\n", - "Using pry-stack_explorer 0.4.12\u001b[32m (was 0.4.11)\u001b[0m\n", - "Using simplecov-html 0.12.3\u001b[32m (was 0.12.2)\u001b[0m\n", - "Using simplecov 0.19.1\u001b[32m (was 0.18.5)\u001b[0m\n", - "Using thor 1.0.1\n", - "\u001b[32mBundle updated!\u001b[0m\n" - ] - } - ], + "outputs": [], "source": [ "! bundle update" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_LISTIO_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_PRIO_DELTA_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ARG_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ATEXIT_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_BASE_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_DIM_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_SCALE_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_STRING_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CHILD_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CLK_TCK\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_COLL_WEIGHTS_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_DELAYTIMER_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_EXPR_NEST_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_HOST_NAME_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_IOV_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_LINE_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_LOGIN_NAME_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NGROUPS_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_GETGR_R_SIZE_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_GETPW_R_SIZE_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MQ_OPEN_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MQ_PRIO_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_OPEN_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ADVISORY_INFO\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BARRIERS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ASYNCHRONOUS_IO\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CLOCK_SELECTION\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CPUTIME\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_FSYNC\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_IPV6\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_JOB_CONTROL\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MAPPED_FILES\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMLOCK\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMLOCK_RANGE\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMORY_PROTECTION\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MESSAGE_PASSING\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MONOTONIC_CLOCK\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PRIORITIZED_IO\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PRIORITY_SCHEDULING\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RAW_SOCKETS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_READER_WRITER_LOCKS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_REALTIME_SIGNALS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_REGEXP\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SAVED_IDS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEMAPHORES\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SHARED_MEMORY_OBJECTS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SHELL\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPAWN\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPIN_LOCKS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPORADIC_SERVER\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SS_REPL_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SYNCHRONIZED_IO\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ATTR_STACKADDR\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ATTR_STACKSIZE\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_CPUTIME\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIO_INHERIT\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIO_PROTECT\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIORITY_SCHEDULING\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PROCESS_SHARED\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ROBUST_PRIO_INHERIT\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ROBUST_PRIO_PROTECT\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_SAFE_FUNCTIONS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_SPORADIC_SERVER\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREADS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMEOUTS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMERS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_EVENT_FILTER\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_EVENT_NAME_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_INHERIT\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_LOG\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_NAME_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_SYS_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_USER_EVENT_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TYPED_MEMORY_OBJECTS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_VERSION\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_ILP32_OFF32\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_ILP32_OFFBIG\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_LP64_OFF64\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_LPBIG_OFFBIG\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_ILP32_OFF32\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_ILP32_OFFBIG\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_LP64_OFF64\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_LPBIG_OFFBIG\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_C_BIND\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_C_DEV\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_CHAR_TERM\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_FORT_DEV\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_FORT_RUN\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_LOCALEDEF\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_ACCOUNTING\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_CHECKPOINT\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_LOCATE\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_MESSAGE\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_TRACK\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_SW_DEV\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_UPE\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_VERSION\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PAGE_SIZE\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PAGESIZE\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_DESTRUCTOR_ITERATIONS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_KEYS_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_STACK_MIN\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_THREADS_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RE_DUP_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RTSIG_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEM_NSEMS_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEM_VALUE_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SIGQUEUE_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_STREAM_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SYMLOOP_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMER_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TTY_NAME_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TZNAME_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_CRYPT\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_ENH_I18N\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_REALTIME\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_REALTIME_THREADS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_SHM\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_STREAMS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_UNIX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_VERSION\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PHYS_PAGES\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AVPHYS_PAGES\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NPROCESSORS_CONF\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NPROCESSORS_ONLN\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_PATH\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_CFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_LDFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_LIBS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_CFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_LIBS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_CFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_LDFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_LIBS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_LIBS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_WIDTH_RESTRICTED_ENVS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_V7_ENV\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_CFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_LDFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_LIBS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_CFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_LIBS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_CFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_LDFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_LIBS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_LIBS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_WIDTH_RESTRICTED_ENVS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_V6_ENV\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_GNU_LIBC_VERSION\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_GNU_LIBPTHREAD_VERSION\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_FILESIZEBITS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_LINK_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_MAX_CANON\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_MAX_INPUT\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_NAME_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PATH_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PIPE_BUF\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_2_SYMLINKS\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_ALLOC_SIZE_MIN\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_INCR_XFER_SIZE\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_MAX_XFER_SIZE\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_MIN_XFER_SIZE\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_XFER_ALIGN\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_SYMLINK_MAX\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_CHOWN_RESTRICTED\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_NO_TRUNC\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_VDISABLE\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_ASYNC_IO\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PRIO_IO\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_SYNC_IO\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Struct::Passwd\r\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Struct::Group\r\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/home/mshira/.rvm/rubies/ruby-2.5.5/bin/ruby -I\"lib:lib\" -I\"/home/mshira/.rvm/gems/ruby-2.5.5/gems/rake-10.1.1/lib\" \"/home/mshira/.rvm/gems/ruby-2.5.5/gems/rake-10.1.1/lib/rake/rake_test_loader.rb\" \"test/unit/messages_test.rb\" \"test/unit/exception_handler_test.rb\" \"test/unit/modules_test.rb\" \"test/unit/connection_test.rb\" \"test/unit/completer_test.rb\" \"test/unit/csv_parser_test.rb\" \"test/unit/option_builder_test.rb\" \"test/unit/utils_test.rb\" \"test/unit/apipie/command_test.rb\" \"test/unit/apipie/option_builder_test.rb\" \"test/unit/apipie/api_connection_test.rb\" \"test/unit/apipie/option_definition_test.rb\" \"test/unit/command_extensions_test.rb\" \"test/unit/main_test.rb\" \"test/unit/options/processor_list_test.rb\" \"test/unit/options/option_family_test.rb\" \"test/unit/options/validators/dsl_test.rb\" \"test/unit/options/sources/command_line_test.rb\" \"test/unit/options/sources/saved_defaults_test.rb\" \"test/unit/options/matcher_test.rb\" \"test/unit/options/option_collector_test.rb\" \"test/unit/options/normalizers_test.rb\" \"test/unit/options/option_definition_test.rb\" \"test/unit/settings_test.rb\" \"test/unit/history_test.rb\" \"test/unit/defaults_test.rb\" \"test/unit/logger_test.rb\" \"test/unit/output/formatters_test.rb\" \"test/unit/output/record_collection_test.rb\" \"test/unit/output/dsl_test.rb\" \"test/unit/output/definition_test.rb\" \"test/unit/output/output_test.rb\" \"test/unit/output/field_filter_test.rb\" \"test/unit/output/fields_test.rb\" \"test/unit/output/adapter/table_test.rb\" \"test/unit/output/adapter/json_test.rb\" \"test/unit/output/adapter/abstract_test.rb\" \"test/unit/output/adapter/yaml_test.rb\" \"test/unit/output/adapter/csv_test.rb\" \"test/unit/output/adapter/base_test.rb\" \"test/unit/abstract_test.rb\" \"test/unit/i18n_test.rb\" \"test/unit/bash_test.rb\" \"test/unit/help/definition/section_test.rb\" \"test/unit/help/definition/list_test.rb\" \"test/unit/help/definition/text_test.rb\" \"test/unit/help/definition/abstract_item_test.rb\" \"test/unit/help/definition/note_test.rb\" \"test/unit/help/definition_test.rb\" \"test/unit/help/builder_test.rb\" \"test/unit/help/text_builder_test.rb\" \"test/unit/ca_cert_manager_test.rb\" \"test/functional/help_test.rb\" \"test/functional/nil_values_test.rb\" \"test/functional/defaults_test.rb\" \n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_LISTIO_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_PRIO_DELTA_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ARG_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ATEXIT_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_BASE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_DIM_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_SCALE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_STRING_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CHILD_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CLK_TCK\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_COLL_WEIGHTS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_DELAYTIMER_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_EXPR_NEST_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_HOST_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_IOV_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_LINE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_LOGIN_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NGROUPS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_GETGR_R_SIZE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_GETPW_R_SIZE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MQ_OPEN_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MQ_PRIO_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_OPEN_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ADVISORY_INFO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BARRIERS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ASYNCHRONOUS_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CLOCK_SELECTION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CPUTIME\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_FSYNC\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_IPV6\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_JOB_CONTROL\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MAPPED_FILES\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMLOCK\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMLOCK_RANGE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMORY_PROTECTION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MESSAGE_PASSING\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MONOTONIC_CLOCK\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PRIORITIZED_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PRIORITY_SCHEDULING\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RAW_SOCKETS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_READER_WRITER_LOCKS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_REALTIME_SIGNALS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_REGEXP\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SAVED_IDS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEMAPHORES\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SHARED_MEMORY_OBJECTS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SHELL\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPAWN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPIN_LOCKS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPORADIC_SERVER\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SS_REPL_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SYNCHRONIZED_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ATTR_STACKADDR\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ATTR_STACKSIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_CPUTIME\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIO_INHERIT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIO_PROTECT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIORITY_SCHEDULING\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PROCESS_SHARED\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ROBUST_PRIO_INHERIT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ROBUST_PRIO_PROTECT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_SAFE_FUNCTIONS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_SPORADIC_SERVER\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREADS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMEOUTS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMERS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_EVENT_FILTER\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_EVENT_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_INHERIT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_LOG\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_SYS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_USER_EVENT_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TYPED_MEMORY_OBJECTS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_VERSION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_ILP32_OFF32\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_ILP32_OFFBIG\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_LP64_OFF64\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_LPBIG_OFFBIG\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_ILP32_OFF32\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_ILP32_OFFBIG\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_LP64_OFF64\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_LPBIG_OFFBIG\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_C_BIND\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_C_DEV\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_CHAR_TERM\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_FORT_DEV\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_FORT_RUN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_LOCALEDEF\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_ACCOUNTING\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_CHECKPOINT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_LOCATE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_MESSAGE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_TRACK\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_SW_DEV\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_UPE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_VERSION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PAGE_SIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PAGESIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_DESTRUCTOR_ITERATIONS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_KEYS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_STACK_MIN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_THREADS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RE_DUP_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RTSIG_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEM_NSEMS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEM_VALUE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SIGQUEUE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_STREAM_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SYMLOOP_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMER_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TTY_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TZNAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_CRYPT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_ENH_I18N\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_REALTIME\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_REALTIME_THREADS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_SHM\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_STREAMS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_UNIX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_VERSION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PHYS_PAGES\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AVPHYS_PAGES\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NPROCESSORS_CONF\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NPROCESSORS_ONLN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_PATH\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_WIDTH_RESTRICTED_ENVS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_V7_ENV\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_WIDTH_RESTRICTED_ENVS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_V6_ENV\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_GNU_LIBC_VERSION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_GNU_LIBPTHREAD_VERSION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_FILESIZEBITS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_LINK_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_MAX_CANON\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_MAX_INPUT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PATH_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PIPE_BUF\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_2_SYMLINKS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_ALLOC_SIZE_MIN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_INCR_XFER_SIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_MAX_XFER_SIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_MIN_XFER_SIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_XFER_ALIGN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_SYMLINK_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_CHOWN_RESTRICTED\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_NO_TRUNC\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_VDISABLE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_ASYNC_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PRIO_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_SYNC_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Struct::Passwd\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Struct::Group\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mocha deprecation warning at /home/mshira/git/hammer-cli/test/test_helper.rb:14:in `require': Require 'mocha/test_unit', 'mocha/minitest' or 'mocha/api' instead of 'mocha/setup'.\n", - "Run options: --seed 50959\n", - "\n", - "# Running tests:\n", - "\n", - ".................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................\n", - "\n", - "Finished tests in 0.328744s, 2631.2239 tests/s, 3954.4406 assertions/s.\n", - "\n", - "865 tests, 1300 assertions, 0 failures, 0 errors, 0 skips\n", - "Coverage report generated for MiniTest to /home/mshira/git/coverage. 3210 / 3608 LOC (88.97%) covered.\n" - ] - } - ], + "outputs": [], "source": [ "! bundle exec rake test" ] @@ -612,7 +139,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -621,27 +148,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "* Stop sending empty compute attrs param, [#30815](http://projects.theforeman.org/issues/30815)\n", - "* Make fuzzy search work in hammer shell ([PR #335](https://github.com/theforeman/hammer-cli/pull/335)), [#30747](http://projects.theforeman.org/issues/30747)\n", - "* Add details to installation from source doc ([PR #334](https://github.com/theforeman/hammer-cli/pull/334)), [#30666](http://projects.theforeman.org/issues/30666)\n", - "* Bump to 2.3.0-develop\n", - "* Bump to 2.2.0" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Parse git changelog\n", "from IPython.display import Markdown as md\n", @@ -675,7 +184,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -711,25 +220,11 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": { "scrolled": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "On branch master\r\n", - "Changes to be committed:\r\n", - " (use \"git restore --staged ...\" to unstage)\r\n", - "\t\u001b[32mmodified: doc/release_notes.md\u001b[m\r\n", - "\t\u001b[32mmodified: lib/hammer_cli/version.rb\u001b[m\r\n", - "\t\u001b[32mmodified: rel-eng/gem_release.ipynb\u001b[m\r\n", - "\r\n" - ] - } - ], + "outputs": [], "source": [ "! git add -u\n", "! git status" @@ -737,661 +232,11 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[1mdiff --git a/doc/release_notes.md b/doc/release_notes.md\u001b[m\r\n", - "\u001b[1mindex b8358e5..66aaf99 100644\u001b[m\r\n", - "\u001b[1m--- a/doc/release_notes.md\u001b[m\r\n", - "\u001b[1m+++ b/doc/release_notes.md\u001b[m\r\n", - "\u001b[36m@@ -1,5 +1,19 @@\u001b[m\r\n", - " Release notes\u001b[m\r\n", - " =============\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m### 2.3.0 (2020-11-03)\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m* Stop sending empty compute attrs param, [#30815](http://projects.theforeman.org/issues/30815)\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m* Make fuzzy search work in hammer shell ([PR #335](https://github.com/theforeman/hammer-cli/pull/335)), [#30747](http://projects.theforeman.org/issues/30747)\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m* Add details to installation from source doc ([PR #334](https://github.com/theforeman/hammer-cli/pull/334)), [#30666](http://projects.theforeman.org/issues/30666)\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m* Bump to 2.3.0-develop\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m* Bump to 2.2.0\u001b[m\r\n", - "\u001b[32m+\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m### 2.3.0 (2020-11-03)\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m* Stop sending empty compute attrs param, [#30815](http://projects.theforeman.org/issues/30815)\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m* Make fuzzy search work in hammer shell ([PR #335](https://github.com/theforeman/hammer-cli/pull/335)), [#30747](http://projects.theforeman.org/issues/30747)\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m* Add details to installation from source doc ([PR #334](https://github.com/theforeman/hammer-cli/pull/334)), [#30666](http://projects.theforeman.org/issues/30666)\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m* Bump to 2.3.0-develop\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m* Bump to 2.2.0\u001b[m\r\n", - "\u001b[32m+\u001b[m\r\n", - " ### 2.2.0 (2020-08-11)\u001b[m\r\n", - " * Update installation_rpm.md ([PR #333](https://github.com/theforeman/hammer-cli/pull/333))\u001b[m\r\n", - " * Clean gem_release.ipynb up\u001b[m\r\n", - "\u001b[1mdiff --git a/lib/hammer_cli/version.rb b/lib/hammer_cli/version.rb\u001b[m\r\n", - "\u001b[1mindex c5e0516..af6a07f 100644\u001b[m\r\n", - "\u001b[1m--- a/lib/hammer_cli/version.rb\u001b[m\r\n", - "\u001b[1m+++ b/lib/hammer_cli/version.rb\u001b[m\r\n", - "\u001b[36m@@ -1,5 +1,5 @@\u001b[m\r\n", - " module HammerCLI\u001b[m\r\n", - " def self.version\u001b[m\r\n", - "\u001b[31m- @version ||= Gem::Version.new \"2.3.0-develop\"\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m @version ||= Gem::Version.new \"2.3.0\"\u001b[m\r\n", - " end\u001b[m\r\n", - " end\u001b[m\r\n", - "\u001b[1mdiff --git a/rel-eng/gem_release.ipynb b/rel-eng/gem_release.ipynb\u001b[m\r\n", - "\u001b[1mindex a497542..1048b41 100644\u001b[m\r\n", - "\u001b[1m--- a/rel-eng/gem_release.ipynb\u001b[m\r\n", - "\u001b[1m+++ b/rel-eng/gem_release.ipynb\u001b[m\r\n", - "\u001b[36m@@ -22,9 +22,17 @@\u001b[m\r\n", - " },\u001b[m\r\n", - " {\u001b[m\r\n", - " \"cell_type\": \"code\",\u001b[m\r\n", - "\u001b[31m- \"execution_count\": null,\u001b[m\r\n", - "\u001b[31m- \"metadata\": {},\u001b[m\r\n", - "\u001b[31m- \"outputs\": [],\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"execution_count\": 1,\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"metadata\": {},\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"outputs\": [\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m {\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"name\": \"stdout\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"output_type\": \"stream\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"text\": [\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/git/hammer-cli\\n\"\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m ]\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m }\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m ],\u001b[m\r\n", - " \"source\": [\u001b[m\r\n", - " \"%cd ..\"\u001b[m\r\n", - " ]\u001b[m\r\n", - "\u001b[36m@@ -38,18 +46,19 @@\u001b[m\r\n", - " },\u001b[m\r\n", - " {\u001b[m\r\n", - " \"cell_type\": \"code\",\u001b[m\r\n", - "\u001b[31m- \"execution_count\": null,\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"execution_count\": 2,\u001b[m\r\n", - " \"metadata\": {},\u001b[m\r\n", - " \"outputs\": [],\u001b[m\r\n", - " \"source\": [\u001b[m\r\n", - "\u001b[31m- \"NEW_VERSION = '2.1.1'\\n\",\u001b[m\r\n", - "\u001b[31m- \"LAST_VERSION = '2.1.0'\\n\",\u001b[m\r\n", - "\u001b[31m- \"DEVELOP_VERSION = '2.2.0-develop'\\n\",\u001b[m\r\n", - "\u001b[31m- \"NEXT_FUTURE_VERSION = '2.2.0'\\n\",\u001b[m\r\n", - "\u001b[31m- \"MAJOR_RELEASE = False\\n\",\u001b[m\r\n", - "\u001b[31m- \"STABLE_BRANCH = '2.1-stable'\\n\",\u001b[m\r\n", - "\u001b[31m- \"GIT_REMOTE_UPSTREAM = 'upstream'\\n\",\u001b[m\r\n", - "\u001b[31m- \"WORK_BRANCH = 'master' if MAJOR_RELEASE else STABLE_BRANCH\"\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"NEW_VERSION = '2.3.0'\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"LAST_VERSION = '2.2.1'\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"DEVELOP_VERSION = '2.4.0-develop'\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"NEXT_FUTURE_VERSION = '2.4.0'\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"MAJOR_RELEASE = True\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"STABLE_BRANCH = '2.3-stable'\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"GIT_REMOTE_UPSTREAM = 'origin'\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"WORK_BRANCH = 'master' if MAJOR_RELEASE else STABLE_BRANCH\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"\\n\"\u001b[m\r\n", - " ]\u001b[m\r\n", - " },\u001b[m\r\n", - " {\u001b[m\r\n", - "\u001b[36m@@ -61,27 +70,60 @@\u001b[m\r\n", - " },\u001b[m\r\n", - " {\u001b[m\r\n", - " \"cell_type\": \"code\",\u001b[m\r\n", - "\u001b[31m- \"execution_count\": null,\u001b[m\r\n", - "\u001b[31m- \"metadata\": {},\u001b[m\r\n", - "\u001b[31m- \"outputs\": [],\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"execution_count\": 3,\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"metadata\": {},\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"outputs\": [\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m {\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"name\": \"stdout\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"output_type\": \"stream\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"text\": [\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Already on 'master'\\r\\n\"\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m ]\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m }\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m ],\u001b[m\r\n", - " \"source\": [\u001b[m\r\n", - " \"! git checkout {WORK_BRANCH}\"\u001b[m\r\n", - " ]\u001b[m\r\n", - " },\u001b[m\r\n", - " {\u001b[m\r\n", - " \"cell_type\": \"code\",\u001b[m\r\n", - "\u001b[31m- \"execution_count\": null,\u001b[m\r\n", - "\u001b[31m- \"metadata\": {},\u001b[m\r\n", - "\u001b[31m- \"outputs\": [],\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"execution_count\": 4,\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"metadata\": {},\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"outputs\": [\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m {\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"name\": \"stdout\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"output_type\": \"stream\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"text\": [\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"remote: Enumerating objects: 22, done.\\u001b[K\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"remote: Counting objects: 100% (22/22), done.\\u001b[K\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"remote: Compressing objects: 100% (8/8), done.\\u001b[K\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"remote: Total 22 (delta 15), reused 21 (delta 14), pack-reused 0\\u001b[K\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Unpacking objects: 100% (22/22), 2.04 KiB | 77.00 KiB/s, done.\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"From github.com:theforeman/hammer-cli\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \" 1f84f1b..f783bf6 2.1-stable -> origin/2.1-stable\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \" 1a38077..37007e1 2.2-stable -> origin/2.2-stable\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \" * [new tag] 2.1.2 -> 2.1.2\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \" * [new tag] 2.2.1 -> 2.2.1\\n\"\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m ]\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m }\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m ],\u001b[m\r\n", - " \"source\": [\u001b[m\r\n", - " \"! git fetch {GIT_REMOTE_UPSTREAM}\"\u001b[m\r\n", - " ]\u001b[m\r\n", - " },\u001b[m\r\n", - " {\u001b[m\r\n", - " \"cell_type\": \"code\",\u001b[m\r\n", - "\u001b[31m- \"execution_count\": null,\u001b[m\r\n", - "\u001b[31m- \"metadata\": {},\u001b[m\r\n", - "\u001b[31m- \"outputs\": [],\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"execution_count\": 5,\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"metadata\": {},\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"outputs\": [\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m {\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"name\": \"stdout\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"output_type\": \"stream\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"text\": [\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Current branch master is up to date.\\r\\n\"\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m ]\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m }\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m ],\u001b[m\r\n", - " \"source\": [\u001b[m\r\n", - " \"! git rebase {GIT_REMOTE_UPSTREAM}/{WORK_BRANCH}\"\u001b[m\r\n", - " ]\u001b[m\r\n", - "\u001b[36m@@ -95,18 +137,468 @@\u001b[m\r\n", - " },\u001b[m\r\n", - " {\u001b[m\r\n", - " \"cell_type\": \"code\",\u001b[m\r\n", - "\u001b[31m- \"execution_count\": null,\u001b[m\r\n", - "\u001b[31m- \"metadata\": {},\u001b[m\r\n", - "\u001b[31m- \"outputs\": [],\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"execution_count\": 6,\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"metadata\": {},\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"outputs\": [\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m {\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"name\": \"stdout\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"output_type\": \"stream\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"text\": [\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Fetching gem metadata from https://rubygems.org/........\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Resolving dependencies...\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using rake 10.1.1\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using amazing_print 1.2.2\\u001b[32m (was 1.2.1)\\u001b[0m\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using json 2.3.1\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using oauth 0.5.4\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using http-accept 1.7.0\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using unf_ext 0.0.7.7\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using unf 0.1.4\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using domain_name 0.5.20190701\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using http-cookie 1.0.3\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using mime-types-data 3.2020.0512\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using mime-types 3.3.1\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using netrc 0.11.0\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using rest-client 2.1.0\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using apipie-bindings 0.4.0\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using debug_inspector 0.0.3\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using binding_of_caller 0.8.0\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using builder 3.2.4\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using bundler 1.17.3\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using byebug 11.1.3\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using ci_reporter 1.9.3\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using clamp 1.1.2\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using coderay 1.1.3\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using docile 1.3.2\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using fast_gettext 2.0.3\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using locale 2.1.3\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using text 1.3.1\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using gettext 3.3.6\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using highline 2.0.3\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using little-plugger 1.1.4\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using multi_json 1.15.0\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using logging 2.3.0\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using unicode 0.4.4.4\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using unicode-display_width 1.7.0\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using hammer_cli 2.3.0.pre.develop\\u001b[32m (was 2.2.0)\\u001b[0m from source at `.`\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using method_source 1.0.0\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using minitest 4.7.4\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using minitest-spec-context 0.0.4\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using mocha 1.11.2\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using pry 0.13.1\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using pry-byebug 3.9.0\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using yard 0.9.25\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using pry-doc 1.1.0\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using pry-rails 0.3.9\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using pry-stack_explorer 0.4.12\\u001b[32m (was 0.4.11)\\u001b[0m\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using simplecov-html 0.12.3\\u001b[32m (was 0.12.2)\\u001b[0m\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using simplecov 0.19.1\\u001b[32m (was 0.18.5)\\u001b[0m\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Using thor 1.0.1\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"\\u001b[32mBundle updated!\\u001b[0m\\n\"\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m ]\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m }\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m ],\u001b[m\r\n", - " \"source\": [\u001b[m\r\n", - " \"! bundle update\"\u001b[m\r\n", - " ]\u001b[m\r\n", - " },\u001b[m\r\n", - " {\u001b[m\r\n", - " \"cell_type\": \"code\",\u001b[m\r\n", - "\u001b[31m- \"execution_count\": null,\u001b[m\r\n", - "\u001b[31m- \"metadata\": {},\u001b[m\r\n", - "\u001b[31m- \"outputs\": [],\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"execution_count\": 8,\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"metadata\": {},\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"outputs\": [\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m {\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"name\": \"stdout\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"output_type\": \"stream\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"text\": [\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_LISTIO_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_PRIO_DELTA_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ARG_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ATEXIT_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_BASE_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_DIM_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_SCALE_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_STRING_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CHILD_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CLK_TCK\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_COLL_WEIGHTS_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_DELAYTIMER_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_EXPR_NEST_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_HOST_NAME_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_IOV_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_LINE_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_LOGIN_NAME_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NGROUPS_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_GETGR_R_SIZE_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_GETPW_R_SIZE_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MQ_OPEN_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MQ_PRIO_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_OPEN_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ADVISORY_INFO\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BARRIERS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ASYNCHRONOUS_IO\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CLOCK_SELECTION\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CPUTIME\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_FSYNC\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_IPV6\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_JOB_CONTROL\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MAPPED_FILES\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMLOCK\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMLOCK_RANGE\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMORY_PROTECTION\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MESSAGE_PASSING\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MONOTONIC_CLOCK\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PRIORITIZED_IO\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PRIORITY_SCHEDULING\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RAW_SOCKETS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_READER_WRITER_LOCKS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_REALTIME_SIGNALS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_REGEXP\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SAVED_IDS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEMAPHORES\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SHARED_MEMORY_OBJECTS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SHELL\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPAWN\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPIN_LOCKS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPORADIC_SERVER\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SS_REPL_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SYNCHRONIZED_IO\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ATTR_STACKADDR\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ATTR_STACKSIZE\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_CPUTIME\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIO_INHERIT\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIO_PROTECT\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIORITY_SCHEDULING\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PROCESS_SHARED\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ROBUST_PRIO_INHERIT\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ROBUST_PRIO_PROTECT\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_SAFE_FUNCTIONS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_SPORADIC_SERVER\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREADS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMEOUTS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMERS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_EVENT_FILTER\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_EVENT_NAME_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_INHERIT\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_LOG\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_NAME_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_SYS_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_USER_EVENT_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TYPED_MEMORY_OBJECTS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_VERSION\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_ILP32_OFF32\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_ILP32_OFFBIG\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_LP64_OFF64\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_LPBIG_OFFBIG\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_ILP32_OFF32\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_ILP32_OFFBIG\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_LP64_OFF64\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_LPBIG_OFFBIG\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_C_BIND\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_C_DEV\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_CHAR_TERM\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_FORT_DEV\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_FORT_RUN\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_LOCALEDEF\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_ACCOUNTING\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_CHECKPOINT\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_LOCATE\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_MESSAGE\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_TRACK\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_SW_DEV\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_UPE\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_VERSION\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PAGE_SIZE\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PAGESIZE\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_DESTRUCTOR_ITERATIONS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_KEYS_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_STACK_MIN\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_THREADS_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RE_DUP_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RTSIG_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEM_NSEMS_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEM_VALUE_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SIGQUEUE_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_STREAM_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SYMLOOP_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMER_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TTY_NAME_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TZNAME_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_CRYPT\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_ENH_I18N\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_REALTIME\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_REALTIME_THREADS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_SHM\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_STREAMS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_UNIX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_VERSION\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PHYS_PAGES\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AVPHYS_PAGES\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NPROCESSORS_CONF\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NPROCESSORS_ONLN\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_PATH\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_CFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_LDFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_LIBS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_CFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_LIBS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_CFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_LDFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_LIBS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_LIBS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_WIDTH_RESTRICTED_ENVS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_V7_ENV\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_CFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_LDFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_LIBS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_CFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_LIBS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_CFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_LDFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_LIBS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_LIBS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_WIDTH_RESTRICTED_ENVS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_V6_ENV\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_GNU_LIBC_VERSION\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_GNU_LIBPTHREAD_VERSION\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_FILESIZEBITS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_LINK_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_MAX_CANON\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_MAX_INPUT\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_NAME_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PATH_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PIPE_BUF\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_2_SYMLINKS\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_ALLOC_SIZE_MIN\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_INCR_XFER_SIZE\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_MAX_XFER_SIZE\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_MIN_XFER_SIZE\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_XFER_ALIGN\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_SYMLINK_MAX\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_CHOWN_RESTRICTED\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_NO_TRUNC\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_VDISABLE\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_ASYNC_IO\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PRIO_IO\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_SYNC_IO\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Struct::Passwd\\r\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Struct::Group\\r\\n\"\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m ]\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m },\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m {\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"name\": \"stdout\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"output_type\": \"stream\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"text\": [\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/bin/ruby -I\\\"lib:lib\\\" -I\\\"/home/mshira/.rvm/gems/ruby-2.5.5/gems/rake-10.1.1/lib\\\" \\\"/home/mshira/.rvm/gems/ruby-2.5.5/gems/rake-10.1.1/lib/rake/rake_test_loader.rb\\\" \\\"test/unit/messages_test.rb\\\" \\\"test/unit/exception_handler_test.rb\\\" \\\"test/unit/modules_test.rb\\\" \\\"test/unit/connection_test.rb\\\" \\\"test/unit/completer_test.rb\\\" \\\"test/unit/csv_parser_test.rb\\\" \\\"test/unit/option_builder_test.rb\\\" \\\"test/unit/utils_test.rb\\\" \\\"test/unit/apipie/command_test.rb\\\" \\\"test/unit/apipie/option_builder_test.rb\\\" \\\"test/unit/apipie/api_connection_test.rb\\\" \\\"test/unit/apipie/option_definition_test.rb\\\" \\\"test/unit/command_extensions_test.rb\\\" \\\"test/unit/main_test.rb\\\" \\\"test/unit/options/processor_list_test.rb\\\" \\\"test/unit/options/option_family_test.rb\\\" \\\"test/unit/options/validators/dsl_test.rb\\\" \\\"test/unit/options/sources/command_line_test.rb\\\" \\\"test/unit/options/sources/saved_defaults_test.rb\\\" \\\"test/unit/options/matcher_test.rb\\\" \\\"test/unit/options/option_collector_test.rb\\\" \\\"test/unit/options/normalizers_test.rb\\\" \\\"test/unit/options/option_definition_test.rb\\\" \\\"test/unit/settings_test.rb\\\" \\\"test/unit/history_test.rb\\\" \\\"test/unit/defaults_test.rb\\\" \\\"test/unit/logger_test.rb\\\" \\\"test/unit/output/formatters_test.rb\\\" \\\"test/unit/output/record_collection_test.rb\\\" \\\"test/unit/output/dsl_test.rb\\\" \\\"test/unit/output/definition_test.rb\\\" \\\"test/unit/output/output_test.rb\\\" \\\"test/unit/output/field_filter_test.rb\\\" \\\"test/unit/output/fields_test.rb\\\" \\\"test/unit/output/adapter/table_test.rb\\\" \\\"test/unit/output/adapter/json_test.rb\\\" \\\"test/unit/output/adapter/abstract_test.rb\\\" \\\"test/unit/output/adapter/yaml_test.rb\\\" \\\"test/unit/output/adapter/csv_test.rb\\\" \\\"test/unit/output/adapter/base_test.rb\\\" \\\"test/unit/abstract_test.rb\\\" \\\"test/unit/i18n_test.rb\\\" \\\"test/unit/bash_test.rb\\\" \\\"test/unit/help/definition/section_test.rb\\\" \\\"test/unit/help/definition/list_test.rb\\\" \\\"test/unit/help/definition/text_test.rb\\\" \\\"test/unit/help/definition/abstract_item_test.rb\\\" \\\"test/unit/help/definition/note_test.rb\\\" \\\"test/unit/help/definition_test.rb\\\" \\\"test/unit/help/builder_test.rb\\\" \\\"test/unit/help/text_builder_test.rb\\\" \\\"test/unit/ca_cert_manager_test.rb\\\" \\\"test/functional/help_test.rb\\\" \\\"test/functional/nil_values_test.rb\\\" \\\"test/functional/defaults_test.rb\\\" \\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_LISTIO_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_PRIO_DELTA_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ARG_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ATEXIT_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_BASE_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_DIM_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_SCALE_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_STRING_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CHILD_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CLK_TCK\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_COLL_WEIGHTS_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_DELAYTIMER_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_EXPR_NEST_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_HOST_NAME_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_IOV_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_LINE_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_LOGIN_NAME_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NGROUPS_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_GETGR_R_SIZE_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_GETPW_R_SIZE_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MQ_OPEN_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MQ_PRIO_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_OPEN_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ADVISORY_INFO\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BARRIERS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ASYNCHRONOUS_IO\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CLOCK_SELECTION\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CPUTIME\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_FSYNC\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_IPV6\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_JOB_CONTROL\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MAPPED_FILES\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMLOCK\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMLOCK_RANGE\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMORY_PROTECTION\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MESSAGE_PASSING\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MONOTONIC_CLOCK\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PRIORITIZED_IO\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PRIORITY_SCHEDULING\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RAW_SOCKETS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_READER_WRITER_LOCKS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_REALTIME_SIGNALS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_REGEXP\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SAVED_IDS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEMAPHORES\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SHARED_MEMORY_OBJECTS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SHELL\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPAWN\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPIN_LOCKS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPORADIC_SERVER\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SS_REPL_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SYNCHRONIZED_IO\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ATTR_STACKADDR\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ATTR_STACKSIZE\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_CPUTIME\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIO_INHERIT\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIO_PROTECT\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIORITY_SCHEDULING\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PROCESS_SHARED\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ROBUST_PRIO_INHERIT\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ROBUST_PRIO_PROTECT\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_SAFE_FUNCTIONS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_SPORADIC_SERVER\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREADS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMEOUTS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMERS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_EVENT_FILTER\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_EVENT_NAME_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_INHERIT\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_LOG\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_NAME_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_SYS_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_USER_EVENT_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TYPED_MEMORY_OBJECTS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_VERSION\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_ILP32_OFF32\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_ILP32_OFFBIG\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_LP64_OFF64\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_LPBIG_OFFBIG\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_ILP32_OFF32\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_ILP32_OFFBIG\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_LP64_OFF64\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_LPBIG_OFFBIG\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_C_BIND\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_C_DEV\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_CHAR_TERM\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_FORT_DEV\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_FORT_RUN\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_LOCALEDEF\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_ACCOUNTING\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_CHECKPOINT\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_LOCATE\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_MESSAGE\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_TRACK\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_SW_DEV\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_UPE\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_VERSION\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PAGE_SIZE\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PAGESIZE\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_DESTRUCTOR_ITERATIONS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_KEYS_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_STACK_MIN\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_THREADS_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RE_DUP_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RTSIG_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEM_NSEMS_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEM_VALUE_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SIGQUEUE_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_STREAM_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SYMLOOP_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMER_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TTY_NAME_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TZNAME_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_CRYPT\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_ENH_I18N\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_REALTIME\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_REALTIME_THREADS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_SHM\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_STREAMS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_UNIX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_VERSION\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PHYS_PAGES\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AVPHYS_PAGES\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NPROCESSORS_CONF\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NPROCESSORS_ONLN\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_PATH\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_CFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_LDFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_LIBS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_CFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_LIBS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_CFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_LDFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_LIBS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_LIBS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_WIDTH_RESTRICTED_ENVS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_V7_ENV\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_CFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_LDFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_LIBS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_CFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_LIBS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_CFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_LDFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_LIBS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_LIBS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_WIDTH_RESTRICTED_ENVS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_V6_ENV\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_GNU_LIBC_VERSION\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_GNU_LIBPTHREAD_VERSION\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_FILESIZEBITS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_LINK_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_MAX_CANON\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_MAX_INPUT\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_NAME_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PATH_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PIPE_BUF\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_2_SYMLINKS\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_ALLOC_SIZE_MIN\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_INCR_XFER_SIZE\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_MAX_XFER_SIZE\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_MIN_XFER_SIZE\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_XFER_ALIGN\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_SYMLINK_MAX\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_CHOWN_RESTRICTED\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_NO_TRUNC\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_VDISABLE\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_ASYNC_IO\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PRIO_IO\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_SYNC_IO\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Struct::Passwd\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Struct::Group\\n\"\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m ]\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m },\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m {\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"name\": \"stdout\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"output_type\": \"stream\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"text\": [\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Mocha deprecation warning at /home/mshira/git/hammer-cli/test/test_helper.rb:14:in `require': Require 'mocha/test_unit', 'mocha/minitest' or 'mocha/api' instead of 'mocha/setup'.\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Run options: --seed 28917\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"# Running tests:\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \".................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Finished tests in 0.358657s, 2411.7761 tests/s, 3624.6347 assertions/s.\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"865 tests, 1300 assertions, 0 failures, 0 errors, 0 skips\\n\",\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"Coverage report generated for MiniTest to /home/mshira/git/coverage. 3210 / 3608 LOC (88.97%) covered.\\n\"\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m ]\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m }\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m ],\u001b[m\r\n", - " \"source\": [\u001b[m\r\n", - " \"! bundle exec rake test\"\u001b[m\r\n", - " ]\u001b[m\r\n", - "\u001b[36m@@ -477,7 +969,7 @@\u001b[m\r\n", - " \"name\": \"python\",\u001b[m\r\n", - " \"nbconvert_exporter\": \"python\",\u001b[m\r\n", - " \"pygments_lexer\": \"ipython3\",\u001b[m\r\n", - "\u001b[31m- \"version\": \"3.7.5\"\u001b[m\r\n", - "\u001b[32m+\u001b[m\u001b[32m \"version\": \"3.7.9\"\u001b[m\r\n", - " }\u001b[m\r\n", - " },\u001b[m\r\n", - " \"nbformat\": 4,\u001b[m\r\n" - ] - } - ], + "outputs": [], "source": [ "! git diff --cached" ] @@ -1405,20 +250,11 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[master abca0e9] Bump to 2.3.0\r\n", - " 3 files changed, 535 insertions(+), 29 deletions(-)\r\n" - ] - } - ], + "outputs": [], "source": [ "! git commit -m \"Bump to {NEW_VERSION}\"" ] @@ -1432,490 +268,12 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "make: Entering directory '/home/mshira/git/hammer-cli/locale'\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_LISTIO_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_PRIO_DELTA_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ARG_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ATEXIT_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_BASE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_DIM_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_SCALE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_STRING_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CHILD_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CLK_TCK\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_COLL_WEIGHTS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_DELAYTIMER_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_EXPR_NEST_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_HOST_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_IOV_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_LINE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_LOGIN_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NGROUPS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_GETGR_R_SIZE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_GETPW_R_SIZE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MQ_OPEN_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MQ_PRIO_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_OPEN_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ADVISORY_INFO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BARRIERS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ASYNCHRONOUS_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CLOCK_SELECTION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CPUTIME\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_FSYNC\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_IPV6\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_JOB_CONTROL\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MAPPED_FILES\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMLOCK\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMLOCK_RANGE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMORY_PROTECTION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MESSAGE_PASSING\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MONOTONIC_CLOCK\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PRIORITIZED_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PRIORITY_SCHEDULING\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RAW_SOCKETS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_READER_WRITER_LOCKS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_REALTIME_SIGNALS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_REGEXP\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SAVED_IDS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEMAPHORES\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SHARED_MEMORY_OBJECTS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SHELL\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPAWN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPIN_LOCKS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPORADIC_SERVER\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SS_REPL_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SYNCHRONIZED_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ATTR_STACKADDR\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ATTR_STACKSIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_CPUTIME\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIO_INHERIT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIO_PROTECT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIORITY_SCHEDULING\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PROCESS_SHARED\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ROBUST_PRIO_INHERIT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ROBUST_PRIO_PROTECT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_SAFE_FUNCTIONS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_SPORADIC_SERVER\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREADS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMEOUTS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMERS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_EVENT_FILTER\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_EVENT_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_INHERIT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_LOG\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_SYS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_USER_EVENT_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TYPED_MEMORY_OBJECTS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_VERSION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_ILP32_OFF32\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_ILP32_OFFBIG\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_LP64_OFF64\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_LPBIG_OFFBIG\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_ILP32_OFF32\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_ILP32_OFFBIG\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_LP64_OFF64\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_LPBIG_OFFBIG\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_C_BIND\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_C_DEV\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_CHAR_TERM\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_FORT_DEV\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_FORT_RUN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_LOCALEDEF\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_ACCOUNTING\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_CHECKPOINT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_LOCATE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_MESSAGE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_TRACK\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_SW_DEV\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_UPE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_VERSION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PAGE_SIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PAGESIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_DESTRUCTOR_ITERATIONS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_KEYS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_STACK_MIN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_THREADS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RE_DUP_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RTSIG_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEM_NSEMS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEM_VALUE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SIGQUEUE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_STREAM_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SYMLOOP_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMER_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TTY_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TZNAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_CRYPT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_ENH_I18N\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_REALTIME\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_REALTIME_THREADS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_SHM\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_STREAMS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_UNIX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_VERSION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PHYS_PAGES\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AVPHYS_PAGES\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NPROCESSORS_CONF\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NPROCESSORS_ONLN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_PATH\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_WIDTH_RESTRICTED_ENVS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_V7_ENV\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_WIDTH_RESTRICTED_ENVS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_V6_ENV\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_GNU_LIBC_VERSION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_GNU_LIBPTHREAD_VERSION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_FILESIZEBITS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_LINK_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_MAX_CANON\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_MAX_INPUT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PATH_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PIPE_BUF\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_2_SYMLINKS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_ALLOC_SIZE_MIN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_INCR_XFER_SIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_MAX_XFER_SIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_MIN_XFER_SIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_XFER_ALIGN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_SYMLINK_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_CHOWN_RESTRICTED\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_NO_TRUNC\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_VDISABLE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_ASYNC_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PRIO_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_SYNC_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Struct::Passwd\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Struct::Group\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "bundle exec rake gettext:find\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_LISTIO_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AIO_PRIO_DELTA_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ARG_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ATEXIT_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_BASE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_DIM_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_SCALE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BC_STRING_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CHILD_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CLK_TCK\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_COLL_WEIGHTS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_DELAYTIMER_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_EXPR_NEST_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_HOST_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_IOV_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_LINE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_LOGIN_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NGROUPS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_GETGR_R_SIZE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_GETPW_R_SIZE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MQ_OPEN_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MQ_PRIO_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_OPEN_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ADVISORY_INFO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_BARRIERS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_ASYNCHRONOUS_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CLOCK_SELECTION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_CPUTIME\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_FSYNC\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_IPV6\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_JOB_CONTROL\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MAPPED_FILES\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMLOCK\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMLOCK_RANGE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MEMORY_PROTECTION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MESSAGE_PASSING\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_MONOTONIC_CLOCK\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PRIORITIZED_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PRIORITY_SCHEDULING\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RAW_SOCKETS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_READER_WRITER_LOCKS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_REALTIME_SIGNALS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_REGEXP\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SAVED_IDS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEMAPHORES\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SHARED_MEMORY_OBJECTS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SHELL\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPAWN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPIN_LOCKS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SPORADIC_SERVER\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SS_REPL_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SYNCHRONIZED_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ATTR_STACKADDR\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ATTR_STACKSIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_CPUTIME\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIO_INHERIT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIO_PROTECT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PRIORITY_SCHEDULING\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_PROCESS_SHARED\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ROBUST_PRIO_INHERIT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_ROBUST_PRIO_PROTECT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_SAFE_FUNCTIONS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_SPORADIC_SERVER\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREADS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMEOUTS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMERS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_EVENT_FILTER\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_EVENT_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_INHERIT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_LOG\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_SYS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TRACE_USER_EVENT_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TYPED_MEMORY_OBJECTS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_VERSION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_ILP32_OFF32\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_ILP32_OFFBIG\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_LP64_OFF64\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V7_LPBIG_OFFBIG\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_ILP32_OFF32\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_ILP32_OFFBIG\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_LP64_OFF64\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_V6_LPBIG_OFFBIG\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_C_BIND\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_C_DEV\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_CHAR_TERM\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_FORT_DEV\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_FORT_RUN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_LOCALEDEF\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_ACCOUNTING\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_CHECKPOINT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_LOCATE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_MESSAGE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_PBS_TRACK\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_SW_DEV\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_UPE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_2_VERSION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PAGE_SIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PAGESIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_DESTRUCTOR_ITERATIONS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_KEYS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_STACK_MIN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_THREAD_THREADS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RE_DUP_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_RTSIG_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEM_NSEMS_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SEM_VALUE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SIGQUEUE_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_STREAM_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_SYMLOOP_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TIMER_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TTY_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_TZNAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_CRYPT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_ENH_I18N\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_REALTIME\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_REALTIME_THREADS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_SHM\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_STREAMS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_UNIX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_XOPEN_VERSION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_PHYS_PAGES\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_AVPHYS_PAGES\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NPROCESSORS_CONF\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::SC_NPROCESSORS_ONLN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_PATH\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFF32_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_ILP32_OFFBIG_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LP64_OFF64_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_LPBIG_OFFBIG_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V7_WIDTH_RESTRICTED_ENVS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_V7_ENV\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFF32_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_ILP32_OFFBIG_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LP64_OFF64_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_LPBIG_OFFBIG_LIBS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_POSIX_V6_WIDTH_RESTRICTED_ENVS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_V6_ENV\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_GNU_LIBC_VERSION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::CS_GNU_LIBPTHREAD_VERSION\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_FILESIZEBITS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_LINK_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_MAX_CANON\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_MAX_INPUT\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_NAME_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PATH_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PIPE_BUF\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_2_SYMLINKS\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_ALLOC_SIZE_MIN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_INCR_XFER_SIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_MAX_XFER_SIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_MIN_XFER_SIZE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_REC_XFER_ALIGN\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_SYMLINK_MAX\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_CHOWN_RESTRICTED\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_NO_TRUNC\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_VDISABLE\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_ASYNC_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_PRIO_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Etc::PC_SYNC_IO\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Struct::Passwd\n", - "/home/mshira/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/x86_64-linux/etc.so: warning: already initialized constant Struct::Group\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(in /home/mshira/git/hammer-cli)\n", - "rm -f /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ja/hammer-cli.edit.po\n", - "cp /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ja/hammer-cli.po /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ja/hammer-cli.edit.po\n", - "touch /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ja/hammer-cli.po.time_stamp\n", - "rm -f /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/es/hammer-cli.edit.po\n", - "cp /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/es/hammer-cli.po /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/es/hammer-cli.edit.po\n", - "touch /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/es/hammer-cli.po.time_stamp\n", - "rm -f /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/pt_BR/hammer-cli.edit.po\n", - "cp /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/pt_BR/hammer-cli.po /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/pt_BR/hammer-cli.edit.po\n", - "touch /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/pt_BR/hammer-cli.po.time_stamp\n", - "rm -f /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/en/hammer-cli.edit.po\n", - "cp /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/en/hammer-cli.po /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/en/hammer-cli.edit.po\n", - "touch /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/en/hammer-cli.po.time_stamp\n", - "rm -f /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/de/hammer-cli.edit.po\n", - "cp /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/de/hammer-cli.po /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/de/hammer-cli.edit.po\n", - "touch /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/de/hammer-cli.po.time_stamp\n", - "rm -f /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/it/hammer-cli.edit.po\n", - "cp /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/it/hammer-cli.po /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/it/hammer-cli.edit.po\n", - "touch /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/it/hammer-cli.po.time_stamp\n", - "rm -f /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/zh_CN/hammer-cli.edit.po\n", - "cp /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/zh_CN/hammer-cli.po /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/zh_CN/hammer-cli.edit.po\n", - "touch /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/zh_CN/hammer-cli.po.time_stamp\n", - "rm -f /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ca/hammer-cli.edit.po\n", - "cp /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ca/hammer-cli.po /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ca/hammer-cli.edit.po\n", - "touch /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ca/hammer-cli.po.time_stamp\n", - "rm -f /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/fr/hammer-cli.edit.po\n", - "cp /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/fr/hammer-cli.po /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/fr/hammer-cli.edit.po\n", - "touch /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/fr/hammer-cli.po.time_stamp\n", - "rm -f /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ko/hammer-cli.edit.po\n", - "cp /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ko/hammer-cli.po /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ko/hammer-cli.edit.po\n", - "touch /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ko/hammer-cli.po.time_stamp\n", - "rm -f /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/zh_TW/hammer-cli.edit.po\n", - "cp /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/zh_TW/hammer-cli.po /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/zh_TW/hammer-cli.edit.po\n", - "touch /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/zh_TW/hammer-cli.po.time_stamp\n", - "rm -f /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/en_GB/hammer-cli.edit.po\n", - "cp /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/en_GB/hammer-cli.po /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/en_GB/hammer-cli.edit.po\n", - "touch /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/en_GB/hammer-cli.po.time_stamp\n", - "rm -f /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ru/hammer-cli.edit.po\n", - "cp /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ru/hammer-cli.po /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ru/hammer-cli.edit.po\n", - "touch /home/mshira/git/hammer-cli/lib/hammer_cli/../../locale/ru/hammer-cli.po.time_stamp\n", - "tx pull -f\n", - "tx INFO: Pulling translations for resource foreman.hammer-cli (source: locale/hammer-cli.pot)\n", - "tx INFO: -> \u001b[0;31mde\u001b[0m: locale/de/hammer-cli.edit.po\n", - "tx INFO: -> \u001b[0;31mzh_CN\u001b[0m: locale/zh_CN/hammer-cli.edit.po\n", - "tx INFO: -> \u001b[0;31mfr\u001b[0m: locale/fr/hammer-cli.edit.po\n", - "tx INFO: -> \u001b[0;31mko\u001b[0m: locale/ko/hammer-cli.edit.po\n", - "tx INFO: -> \u001b[0;31mes\u001b[0m: locale/es/hammer-cli.edit.po\n", - "tx INFO: -> \u001b[0;31mja\u001b[0m: locale/ja/hammer-cli.edit.po\n", - "tx INFO: -> \u001b[0;31mpt_BR\u001b[0m: locale/pt_BR/hammer-cli.edit.po\n", - "tx INFO: -> \u001b[0;31mzh_TW\u001b[0m: locale/zh_TW/hammer-cli.edit.po\n", - "tx INFO: -> \u001b[0;31mit\u001b[0m: locale/it/hammer-cli.edit.po\n", - "tx INFO: -> \u001b[0;31men_GB\u001b[0m: locale/en_GB/hammer-cli.edit.po\n", - "tx INFO: -> \u001b[0;31mca\u001b[0m: locale/ca/hammer-cli.edit.po\n", - "tx INFO: -> \u001b[0;31mru\u001b[0m: locale/ru/hammer-cli.edit.po\n", - "tx INFO: Done.\n", - "for f in ./ja/hammer-cli.edit.po ./es/hammer-cli.edit.po ./pt_BR/hammer-cli.edit.po ./en/hammer-cli.edit.po ./de/hammer-cli.edit.po ./it/hammer-cli.edit.po ./zh_CN/hammer-cli.edit.po ./ca/hammer-cli.edit.po ./fr/hammer-cli.edit.po ./ko/hammer-cli.edit.po ./zh_TW/hammer-cli.edit.po ./en_GB/hammer-cli.edit.po ./ru/hammer-cli.edit.po; do \\\n", - "\tsed -i 's/^\\(\"Project-Id-Version: \\).*$/\\1hammer-cli 2.3.0\\\\n\"/' $f; \\\n", - "done\n", - "for f in ./ja/hammer-cli.edit.po ./es/hammer-cli.edit.po ./pt_BR/hammer-cli.edit.po ./en/hammer-cli.edit.po ./de/hammer-cli.edit.po ./it/hammer-cli.edit.po ./zh_CN/hammer-cli.edit.po ./ca/hammer-cli.edit.po ./fr/hammer-cli.edit.po ./ko/hammer-cli.edit.po ./zh_TW/hammer-cli.edit.po ./en_GB/hammer-cli.edit.po ./ru/hammer-cli.edit.po; do \\\n", - "\tmsgcat --use-first --no-location $f ${f//.edit/} > ${f//.edit/}; \\\n", - "done\n", - "mkdir -p ja/LC_MESSAGES\n", - "msgfmt -o ja/LC_MESSAGES/hammer-cli.mo ja/hammer-cli.po\n", - "mkdir -p es/LC_MESSAGES\n", - "msgfmt -o es/LC_MESSAGES/hammer-cli.mo es/hammer-cli.po\n", - "mkdir -p pt_BR/LC_MESSAGES\n", - "msgfmt -o pt_BR/LC_MESSAGES/hammer-cli.mo pt_BR/hammer-cli.po\n", - "mkdir -p en/LC_MESSAGES\n", - "msgfmt -o en/LC_MESSAGES/hammer-cli.mo en/hammer-cli.po\n", - "mkdir -p de/LC_MESSAGES\n", - "msgfmt -o de/LC_MESSAGES/hammer-cli.mo de/hammer-cli.po\n", - "mkdir -p it/LC_MESSAGES\n", - "msgfmt -o it/LC_MESSAGES/hammer-cli.mo it/hammer-cli.po\n", - "mkdir -p zh_CN/LC_MESSAGES\n", - "msgfmt -o zh_CN/LC_MESSAGES/hammer-cli.mo zh_CN/hammer-cli.po\n", - "mkdir -p ca/LC_MESSAGES\n", - "msgfmt -o ca/LC_MESSAGES/hammer-cli.mo ca/hammer-cli.po\n", - "mkdir -p fr/LC_MESSAGES\n", - "msgfmt -o fr/LC_MESSAGES/hammer-cli.mo fr/hammer-cli.po\n", - "mkdir -p ko/LC_MESSAGES\n", - "msgfmt -o ko/LC_MESSAGES/hammer-cli.mo ko/hammer-cli.po\n", - "mkdir -p zh_TW/LC_MESSAGES\n", - "msgfmt -o zh_TW/LC_MESSAGES/hammer-cli.mo zh_TW/hammer-cli.po\n", - "mkdir -p en_GB/LC_MESSAGES\n", - "msgfmt -o en_GB/LC_MESSAGES/hammer-cli.mo en_GB/hammer-cli.po\n", - "mkdir -p ru/LC_MESSAGES\n", - "msgfmt -o ru/LC_MESSAGES/hammer-cli.mo ru/hammer-cli.po\n", - "git add ../locale\n", - "git commit -m \"i18n - extracting new, pulling from tx\"\n", - "[master 7e4a15a] i18n - extracting new, pulling from tx\n", - " 27 files changed, 108 insertions(+), 91 deletions(-)\n", - " rewrite locale/es/LC_MESSAGES/hammer-cli.mo (95%)\n", - " rewrite locale/pt_BR/LC_MESSAGES/hammer-cli.mo (90%)\n", - "Changes commited!\n", - "make: Leaving directory '/home/mshira/git/hammer-cli/locale'\n" - ] - } - ], + "outputs": [], "source": [ "if MAJOR_RELEASE:\n", - " ! make -C locale/ tx-update" + " ! bundle exec rake tx:update" ] }, { @@ -1927,7 +285,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -2118,7 +476,7 @@ "source": [ "## Congratulations\n", "\n", - "Release is public now." + "Release is public now. Please, don't forget to do packaging (https://github.com/theforeman/foreman-packaging)." ] } ], @@ -2138,7 +496,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.9" + "version": "3.9.16" } }, "nbformat": 4, diff --git a/test/functional/defaults_test.rb b/test/functional/defaults_test.rb index bf90353b..d5b046bf 100644 --- a/test/functional/defaults_test.rb +++ b/test/functional/defaults_test.rb @@ -24,7 +24,6 @@ def self.get_defaults(param) let(:cmd) { ['defaults', 'list'] } it 'prints all defaults' do - header = 'Parameter,Value' default_values = { :organization_id => { :value => 3, diff --git a/test/functional/help_test.rb b/test/functional/help_test.rb index 38fd693f..f8034f21 100644 --- a/test/functional/help_test.rb +++ b/test/functional/help_test.rb @@ -45,7 +45,7 @@ class CmdWithHelp < HammerCLI::AbstractCommand it 'prints additional help' do result = run_cmd(['-h'], {}, CmdWithHelp) - result.out.must_equal [ + _(result.out).must_equal [ 'Usage:', ' hammer [OPTIONS]', '', diff --git a/test/test_helper.rb b/test/test_helper.rb index 158583f7..f558928c 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -9,9 +9,9 @@ SimpleCov.root Pathname.new(File.dirname(__FILE__) + "../../../") require 'minitest/autorun' -require 'minitest/spec' +require 'minitest/unit' require "minitest-spec-context" -require "mocha/setup" +require "mocha/minitest" require 'hammer_cli' require 'hammer_cli/logger' diff --git a/test/unit/abstract_test.rb b/test/unit/abstract_test.rb index 8b42cb47..2b21cd36 100644 --- a/test/unit/abstract_test.rb +++ b/test/unit/abstract_test.rb @@ -8,15 +8,15 @@ let(:cmd_class) { Class.new(HammerCLI::AbstractCommand) } let(:cmd) { cmd_class.new("", { :adapter => :silent }) } it "should define adapter" do - cmd.adapter.must_equal :base + _(cmd.adapter).must_equal :base end it "should provide instance of output with default adapter set" do - cmd.output.default_adapter.must_equal cmd.adapter + _(cmd.output.default_adapter).must_equal cmd.adapter end it "should hold instance of output definition" do - cmd.output_definition.must_be_instance_of HammerCLI::Output::Definition + _(cmd.output_definition).must_be_instance_of HammerCLI::Output::Definition end it "can append existing definition" do @@ -26,7 +26,7 @@ cmd_class.output(definition) do end - cmd_class.output_definition.fields.length.must_equal definition.fields.length + _(cmd_class.output_definition.fields.length).must_equal definition.fields.length end it "can append existing definition without passing a block" do @@ -35,7 +35,7 @@ definition.fields << Fields::Field.new cmd_class.output(definition) - cmd_class.output_definition.fields.length.must_equal definition.fields.length + _(cmd_class.output_definition.fields.length).must_equal definition.fields.length end it "can define fields" do @@ -43,7 +43,7 @@ field :test_1, "test 1" field :test_2, "test 2" end - cmd_class.output_definition.fields.length.must_equal 2 + _(cmd_class.output_definition.fields.length).must_equal 2 end end @@ -66,19 +66,19 @@ class TestCmd < HammerCLI::AbstractCommand it "should return instance of hammer cli exception handler by default" do cmd = ModA::ModB::TestCmd.new "" - cmd.exception_handler.must_be_instance_of HammerCLI::ExceptionHandler + _(cmd.exception_handler).must_be_instance_of HammerCLI::ExceptionHandler end it "should return instance of exception handler class defined in a module" do ModA::ModB.expects(:exception_handler_class).returns(Handler) cmd = ModA::ModB::TestCmd.new "" - cmd.exception_handler.must_be_instance_of Handler + _(cmd.exception_handler).must_be_instance_of Handler end it "should return instance of exception handler class defined deeper in a module hierrarchy" do ModA.expects(:exception_handler_class).returns(Handler) cmd = ModA::ModB::TestCmd.new "" - cmd.exception_handler.must_be_instance_of Handler + _(cmd.exception_handler).must_be_instance_of Handler end end @@ -94,7 +94,7 @@ class TestCmd < HammerCLI::AbstractCommand it "should log what has been executed" do test_command = Class.new(HammerCLI::AbstractCommand).new("") test_command.run [] - @log_output.readline.strip.must_equal "INFO HammerCLI::AbstractCommand : Called with options: {}" + _(@log_output.readline.strip).must_equal "INFO HammerCLI::AbstractCommand : Called with options: {}" end @@ -108,7 +108,7 @@ def execute it "should have logger named by the class by default" do test_command = Class.new(TestLogCmd).new("") test_command.run [] - @log_output.read.must_include "ERROR TestLogCmd : Test" + _(@log_output.read).must_include "ERROR TestLogCmd : Test" end class TestLogCmd2 < HammerCLI::AbstractCommand @@ -121,7 +121,7 @@ def execute it "should have logger that accepts custom name" do test_command = Class.new(TestLogCmd2).new("") test_command.run [] - @log_output.read.must_include "ERROR My logger : Test" + _(@log_output.read).must_include "ERROR My logger : Test" end class TestLogCmd3 < HammerCLI::AbstractCommand @@ -134,7 +134,7 @@ def execute it "should have logger that can inspect object" do test_command = Class.new(TestLogCmd3).new("") test_command.run [] - @log_output.read.must_include "DEBUG TestLogCmd3 : Test\n{}" + _(@log_output.read).must_include "DEBUG TestLogCmd3 : Test\n{}" end class TestLogCmd4 < HammerCLI::AbstractCommand @@ -147,7 +147,7 @@ def execute it "should have logger.watch output without colors" do test_command = Class.new(TestLogCmd4).new("") test_command.run [] - @log_output.read.must_include "DEBUG TestLogCmd4 : Test\n{\n :a => \"a\"\n}" + _(@log_output.read).must_include "DEBUG TestLogCmd4 : Test\n{\n :a => \"a\"\n}" end class TestLogCmd5 < HammerCLI::AbstractCommand @@ -162,7 +162,7 @@ def execute HammerCLI::Settings.clear HammerCLI::Settings.load(:watch_plain => true) test_command.run [] - @log_output.read.must_include "DEBUG TestLogCmd5 : Test\n{\n :a => \"a\"\n}" + _(@log_output.read).must_include "DEBUG TestLogCmd5 : Test\n{\n :a => \"a\"\n}" end class TestLogCmd6 < HammerCLI::AbstractCommand @@ -177,7 +177,7 @@ def execute HammerCLI::Settings.clear HammerCLI::Settings.load(:watch_plain => true) test_command.run [] - @log_output.read.must_include "DEBUG TestLogCmd6 : Test\n{\n :password => \"***\",\n \"password\" => \"***\"\n}" + _(@log_output.read).must_include "DEBUG TestLogCmd6 : Test\n{\n :password => \"***\",\n \"password\" => \"***\"\n}" end it "password parameters should be hidden in logs" do @@ -185,7 +185,7 @@ def execute test_command_class.option(['--password'], 'PASSWORD', 'Password') test_command = test_command_class.new("") test_command.run ['--password=pass'] - @log_output.readline.strip.must_equal "INFO HammerCLI::AbstractCommand : Called with options: {\"option_password\"=>\"***\"}" + _(@log_output.readline.strip).must_equal "INFO HammerCLI::AbstractCommand : Called with options: {\"option_password\"=>\"***\"}" end end @@ -209,24 +209,24 @@ class Subcommand2 < HammerCLI::AbstractCommand; end it "should replace commands with the same name" do main_cmd.subcommand!("ping", "description", Subcommand2) - main_cmd.find_subcommand("some_command").wont_be_nil - main_cmd.find_subcommand("ping").wont_be_nil - main_cmd.find_subcommand("ping").subcommand_class.must_equal Subcommand2 - main_cmd.recognised_subcommands.count.must_equal 2 + _(main_cmd.find_subcommand("some_command")).wont_be_nil + _(main_cmd.find_subcommand("ping")).wont_be_nil + _(main_cmd.find_subcommand("ping").subcommand_class).must_equal Subcommand2 + _(main_cmd.recognised_subcommands.count).must_equal 2 end it "should write a message to log when replacing subcommand" do main_cmd.subcommand!("ping", "description", Subcommand2) - @log_output.readline.strip.must_equal "INFO Clamp::Command : subcommand ping (Subcommand1) was removed." - @log_output.readline.strip.must_equal "INFO Clamp::Command : subcommand ping (Subcommand2) was created." + _(@log_output.readline.strip).must_equal "INFO Clamp::Command : subcommand ping (Subcommand1) was removed." + _(@log_output.readline.strip).must_equal "INFO Clamp::Command : subcommand ping (Subcommand2) was created." end it "should add the subcommand" do main_cmd.subcommand!("new_command", "description", Subcommand2) - main_cmd.find_subcommand("new_command").wont_be_nil - main_cmd.find_subcommand("some_command").wont_be_nil - main_cmd.find_subcommand("ping").wont_be_nil - main_cmd.recognised_subcommands.count.must_equal 3 + _(main_cmd.find_subcommand("new_command")).wont_be_nil + _(main_cmd.find_subcommand("some_command")).wont_be_nil + _(main_cmd.find_subcommand("ping")).wont_be_nil + _(main_cmd.recognised_subcommands.count).must_equal 3 end end @@ -235,17 +235,17 @@ class Subcommand2 < HammerCLI::AbstractCommand; end describe "subcommand" do it "should throw an exception for conflicting commands" do - proc do + _{ main_cmd.subcommand("ping", "description", Subcommand2) - end.must_raise HammerCLI::CommandConflict + }.must_raise HammerCLI::CommandConflict end it "should add the subcommand" do main_cmd.subcommand("new_command", "description", Subcommand2) - main_cmd.find_subcommand("new_command").wont_be_nil - main_cmd.find_subcommand("some_command").wont_be_nil - main_cmd.find_subcommand("ping").wont_be_nil - main_cmd.recognised_subcommands.count.must_equal 3 + _(main_cmd.find_subcommand("new_command")).wont_be_nil + _(main_cmd.find_subcommand("some_command")).wont_be_nil + _(main_cmd.find_subcommand("ping")).wont_be_nil + _(main_cmd.recognised_subcommands.count).must_equal 3 end end @@ -253,34 +253,34 @@ class Subcommand2 < HammerCLI::AbstractCommand; end describe "remove_subcommand" do it "should remove the subcommand" do main_cmd.remove_subcommand('ping') - main_cmd.find_subcommand("ping").must_be_nil + _(main_cmd.find_subcommand("ping")).must_be_nil end it "should write a message to log when removing subcommand" do main_cmd.remove_subcommand('ping') - @log_output.readline.strip.must_equal "INFO Clamp::Command : subcommand ping (Subcommand1) was removed." + _(@log_output.readline.strip).must_equal "INFO Clamp::Command : subcommand ping (Subcommand1) was removed." end end describe 'find_subcommand' do it 'should find by full name' do - main_cmd.find_subcommand('some_command').wont_be_nil + _(main_cmd.find_subcommand('some_command')).wont_be_nil end it 'should find by partial name' do - main_cmd.find_subcommand('some_').wont_be_nil + _(main_cmd.find_subcommand('some_')).wont_be_nil end it 'should not find by wrong name' do - main_cmd.find_subcommand('not_existing').must_be_nil + _(main_cmd.find_subcommand('not_existing')).must_be_nil end it 'should raise if more than one were found' do main_cmd.subcommand('pong', 'description', Subcommand2) - proc do + _{ main_cmd.find_subcommand('p') - end.must_raise HammerCLI::CommandConflict + }.must_raise HammerCLI::CommandConflict end end end @@ -296,17 +296,24 @@ class TestOptionCmd < HammerCLI::AbstractCommand it "should create instances of hammer options" do opt = TestOptionCmd.find_option("--test") - opt.kind_of?(HammerCLI::Options::OptionDefinition).must_equal true + _(opt.kind_of?(HammerCLI::Options::OptionDefinition)).must_equal true end it "should set options' formatters" do opt = TestOptionCmd.find_option("--test-format") - opt.value_formatter.kind_of?(HammerCLI::Options::Normalizers::List).must_equal true + _(opt.value_formatter.kind_of?(HammerCLI::Options::Normalizers::List)).must_equal true end it 'should allow using of predefined options' do opt = TestOptionCmd.find_option('--fields') - opt.is_a?(HammerCLI::Options::OptionDefinition).must_equal true + _(opt.is_a?(HammerCLI::Options::OptionDefinition)).must_equal true + end + + it 'should add option type and accepted value' do + help_str = TestOptionCmd.help('') + _(help_str).must_match( + /LIST Comma separated list of values. Values containing comma should be quoted or escaped with backslash./ + ) end end @@ -323,11 +330,11 @@ class TestOptionSourceCommand < HammerCLI::AbstractCommand;end describe "option builder" do it "uses builder container as default" do - HammerCLI::AbstractCommand.option_builder.class.must_equal HammerCLI::OptionBuilderContainer + _(HammerCLI::AbstractCommand.option_builder.class).must_equal HammerCLI::OptionBuilderContainer end it "Default builder container is empty" do - HammerCLI::AbstractCommand.option_builder.builders.empty?.must_equal true + _(HammerCLI::AbstractCommand.option_builder.builders.empty?).must_equal true end end @@ -361,13 +368,13 @@ def self.create_option_builder it "should use option builder" do TestBuilderCmd.build_options - TestBuilderCmd.recognised_options.map(&:switches).flatten.sort.must_equal ["--test", "--test2"].sort + _(TestBuilderCmd.recognised_options.map(&:switches).flatten.sort).must_equal ["--test", "--test2"].sort end it "should skip options that already exist" do TestBuilderCmd.option(["--test"], "TEST", "original_test") TestBuilderCmd.build_options - TestBuilderCmd.recognised_options.map(&:description).flatten.sort.must_equal ["original_test", "test2"].sort + _(TestBuilderCmd.recognised_options.map(&:description).flatten.sort).must_equal ["original_test", "test2"].sort end it "passes params to the builders" do @@ -434,7 +441,7 @@ class CmdName1 < HammerCLI::AbstractCommand class CmdName2 < CmdName1 end - CmdName2.command_name.must_equal ['cmd'] + _(CmdName2.command_name).must_equal ['cmd'] end it "should inherit output definition" do @@ -448,7 +455,7 @@ class CmdOD1 < HammerCLI::AbstractCommand class CmdOD2 < CmdOD1 end - CmdOD2.output_definition.fields.length.must_equal 1 + _(CmdOD2.output_definition.fields.length).must_equal 1 end describe 'validate_options' do @@ -544,14 +551,14 @@ def execute it 'should extend command with option, output, help right away' do cmd.extend_with(extension) opt = cmd.find_option('--flag') - opt.is_a?(HammerCLI::Options::OptionDefinition).must_equal true - cmd.output_definition.empty?.must_equal false - cmd.new('', {}).help.must_match(/.*text.*/) + _(opt.is_a?(HammerCLI::Options::OptionDefinition)).must_equal true + _(cmd.output_definition.empty?).must_equal false + _(cmd.new('', {}).help).must_match(/.*text.*/) end it 'should store more than one extension' do cmd.extend_with(extension, output_extension) - cmd.command_extensions.size.must_equal 2 + _(cmd.command_extensions.size).must_equal 2 end end end diff --git a/test/unit/apipie/command_test.rb b/test/unit/apipie/command_test.rb index 10a2eb0c..f49fbe78 100644 --- a/test/unit/apipie/command_test.rb +++ b/test/unit/apipie/command_test.rb @@ -1,5 +1,4 @@ -require File.join(File.dirname(__FILE__), '../test_helper') - +require_relative 'test_helper' describe HammerCLI::Apipie::Command do @@ -34,15 +33,15 @@ class CommandUnsupp < HammerCLI::Apipie::Command end let(:ctx) { { :adapter => :silent, :interactive => false } } - let(:cmd_class) { HammerCLI::Apipie::Command.dup } + let(:cmd_class) { Class.new(HammerCLI::Apipie::Command) } let(:cmd) { cmd_class.new("", ctx) } let(:cmd_run) { cmd.run([]) } context "unsupported commands" do - let(:cmd_class) { CommandUnsupp.dup } + let(:cmd_class) { Class.new(CommandUnsupp) } let(:cmd) { cmd_class.new("unsupported", ctx) } it "should print help for unsupported command" do - assert_match /.*Unfortunately the server does not support such operation.*/, cmd.help + assert_match(/.*Unfortunately the server does not support such operation.*/, cmd.help) end end @@ -52,63 +51,63 @@ class CommandUnsupp < HammerCLI::Apipie::Command it "should set resource and action together" do cmd_class.resource :architectures, :index - cmd.resource.name.must_equal :architectures - cmd_class.resource.name.must_equal :architectures + _(cmd.resource.name).must_equal :architectures + _(cmd_class.resource.name).must_equal :architectures - cmd.action.must_equal :index - cmd_class.action.must_equal :index + _(cmd.action).must_equal :index + _(cmd_class.action).must_equal :index end it "should set resource alone" do cmd_class.resource :architectures - cmd.resource.name.must_equal :architectures - cmd_class.resource.name.must_equal :architectures + _(cmd.resource.name).must_equal :architectures + _(cmd_class.resource.name).must_equal :architectures - cmd.action.must_equal nil - cmd_class.action.must_equal nil + assert_nil cmd.action + assert_nil cmd_class.action end it "should set resource and action alone" do cmd_class.resource :architectures cmd_class.action :index - cmd.resource.name.must_equal :architectures - cmd_class.resource.name.must_equal :architectures + _(cmd.resource.name).must_equal :architectures + _(cmd_class.resource.name).must_equal :architectures - cmd.action.must_equal :index - cmd_class.action.must_equal :index + _(cmd.action).must_equal :index + _(cmd_class.action).must_equal :index end it "inherits action from a parent class" do cmd_b = CommandA::CommandB.new("", ctx) - cmd_b.action.must_equal :show - cmd_b.class.action.must_equal :show + _(cmd_b.action).must_equal :show + _(cmd_b.class.action).must_equal :show end it "looks up resource in the class' modules" do cmd_b = CommandA::CommandB.new("", ctx) - cmd_b.resource.name.must_equal :architectures - cmd_b.class.resource.name.must_equal :architectures + _(cmd_b.resource.name).must_equal :architectures + _(cmd_b.class.resource.name).must_equal :architectures end it "looks up resource in the superclass" do cmd_c = CommandC.new("", ctx) - cmd_c.resource.name.must_equal :architectures - cmd_c.class.resource.name.must_equal :architectures + _(cmd_c.resource.name).must_equal :architectures + _(cmd_c.class.resource.name).must_equal :architectures end end it "should raise exception when no action is defined" do cmd.stubs(:handle_exception).returns(HammerCLI::EX_SOFTWARE) - cmd_run.must_equal HammerCLI::EX_SOFTWARE + _(cmd_run).must_equal HammerCLI::EX_SOFTWARE end context "resource defined" do it "should perform a call to api when resource is defined" do ApipieBindings::API.any_instance.expects(:call).returns([]) cmd.class.resource :architectures, :index - cmd_run.must_equal 0 + _(cmd_run).must_equal 0 end end @@ -117,13 +116,13 @@ class CommandUnsupp < HammerCLI::Apipie::Command it "should collect method options from given options" do cmd_opt = OptionCommand.new("", ctx) params = cmd_opt.class.resource.action(:create).params - cmd_opt.method_options_for_params(params, {'option_name' => 'name'}).must_equal({"architecture" => {"name" => "name"}}) + _(cmd_opt.method_options_for_params(params, {'option_name' => 'name'})).must_equal({"architecture" => {"name" => "name"}}) end it "should collect method options from methods" do cmd_opt = OptionCommand.new("", ctx) params = cmd_opt.class.resource.action(:create).params - cmd_opt.method_options_for_params(params, {}).must_equal({"architecture"=>{"name"=>"test_name"}}) + _(cmd_opt.method_options_for_params(params, {})).must_equal({"architecture"=>{"name"=>"test_name"}}) end end @@ -148,7 +147,7 @@ def execute '' ].join("\n") expected_result = success_result(expected_messages) - result = run_cmd([], { :verbosity => HammerCLI::V_QUIET }, MessagesCommand) + result = run_cmd([], { :verbosity => HammerCLI::V_QUIET }, Class.new(MessagesCommand)) assert_cmd(expected_result, result) end diff --git a/test/unit/apipie/option_builder_test.rb b/test/unit/apipie/option_builder_test.rb index e49928cf..57df2ce0 100644 --- a/test/unit/apipie/option_builder_test.rb +++ b/test/unit/apipie/option_builder_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), '../test_helper') +require File.join(File.dirname(__FILE__), './test_helper') describe HammerCLI::OptionBuilderContainer do @@ -17,33 +17,33 @@ let(:resource) {api.resource(:documented)} let(:action) {resource.action(:index)} let(:builder) { HammerCLI::Apipie::OptionBuilder.new(resource, action) } - let(:builder_options) { {} } + let(:builder_options) { { command: Class.new(HammerCLI::Apipie::Command) } } let(:options) { builder.build(builder_options) } context "with one simple param" do it "should create an option for the parameter" do - options.length.must_equal 1 + _(options.length).must_equal 1 end it "should set correct switch" do - options[0].switches.must_be :include?, '--se-arch-val-ue' + _(options[0].switches).must_be :include?, '--se-arch-val-ue' end it "should set correct attribute name" do - options[0].attribute_name.must_equal HammerCLI.option_accessor_name('se_arch_val_ue') + _(options[0].attribute_name).must_equal HammerCLI.option_accessor_name('se_arch_val_ue') end it "should set description with html tags stripped" do - options[0].description.must_equal 'filter results' + _(options[0].description).must_equal 'filter results' end it "should build option with default family" do - options[0].family.wont_be_nil + _(options[0].family).wont_be_nil end it "should build parent option within default family" do - options[0].child?.must_equal false + _(options[0].child?).must_equal false end end @@ -51,15 +51,15 @@ context "required options" do let(:action) {resource.action(:create)} - let(:required_options) { builder.build.reject{|opt| !opt.required?} } + let(:required_options) { builder.build(builder_options).reject{|opt| !opt.required?} } it "should set required flag for the required options" do - required_options.map(&:attribute_name).sort.must_equal [HammerCLI.option_accessor_name("array_param")] + _(required_options.map(&:attribute_name).sort).must_equal [HammerCLI.option_accessor_name("array_param")] end it "should not require any option when requirements are disabled" do builder.require_options = false - required_options.map(&:attribute_name).sort.must_equal [] + _(required_options.map(&:attribute_name).sort).must_equal [] end end @@ -68,11 +68,11 @@ let(:action) {resource.action(:create)} it "should create options for all parameters except the hash" do - options.map(&:attribute_name).sort.must_equal HammerCLI.option_accessor_name("array_param", "name", "provider") + _(options.map(&:attribute_name).sort).must_equal HammerCLI.option_accessor_name("array_param", "name", "provider") end it "should name the options correctly" do - options.map(&:attribute_name).sort.must_equal HammerCLI.option_accessor_name("array_param", "name", "provider") + _(options.map(&:attribute_name).sort).must_equal HammerCLI.option_accessor_name("array_param", "name", "provider") end end @@ -81,39 +81,39 @@ it "should set array normalizer" do array_option = options.find {|o| o.attribute_name == HammerCLI.option_accessor_name("array_param") } - array_option.value_formatter.class.must_equal HammerCLI::Options::Normalizers::List + _(array_option.value_formatter.class).must_equal HammerCLI::Options::Normalizers::List end it "should set boolean normalizer" do boolean_option = options.find {|o| o.attribute_name == HammerCLI.option_accessor_name("boolean_param") } - boolean_option.value_formatter.class.must_equal HammerCLI::Options::Normalizers::Bool + _(boolean_option.value_formatter.class).must_equal HammerCLI::Options::Normalizers::Bool end it "should set enum normalizer" do enum_option = options.find {|o| o.attribute_name == HammerCLI.option_accessor_name("enum_param") } - enum_option.value_formatter.class.must_equal HammerCLI::Options::Normalizers::Enum - enum_option.value_formatter.allowed_values.sort.must_equal ["one", "two", "three"].sort + _(enum_option.value_formatter.class).must_equal HammerCLI::Options::Normalizers::Enum + _(enum_option.value_formatter.allowed_values.sort).must_equal ["one", "two", "three"].sort end it "should set enum normalizer and handle coded values" do enum_option = options.find {|o| o.attribute_name == HammerCLI.option_accessor_name("coded_enum_param") } - enum_option.value_formatter.class.must_equal HammerCLI::Options::Normalizers::Enum - enum_option.value_formatter.allowed_values.sort.must_equal ["array", "boolean", "hash", "integer", "json", "real", "string", "yaml"].sort + _(enum_option.value_formatter.class).must_equal HammerCLI::Options::Normalizers::Enum + _(enum_option.value_formatter.allowed_values.sort).must_equal ["array", "boolean", "hash", "integer", "json", "real", "string", "yaml"].sort end it "should set list normalizer for array of nested elements" do array_option = options.find {|o| o.attribute_name == HammerCLI.option_accessor_name("nested_elements_param") } - array_option.value_formatter.class.must_equal HammerCLI::Options::Normalizers::List + _(array_option.value_formatter.class).must_equal HammerCLI::Options::Normalizers::List end it "should set number normalizer" do numeric_option = options.find {|o| o.attribute_name == HammerCLI.option_accessor_name("numeric_param") } - numeric_option.value_formatter.class.must_equal HammerCLI::Options::Normalizers::Number + _(numeric_option.value_formatter.class).must_equal HammerCLI::Options::Normalizers::Number end it "should set number normalizer for integer" do integer_option = options.find {|o| o.attribute_name == HammerCLI.option_accessor_name("integer_param") } - integer_option.value_formatter.class.must_equal HammerCLI::Options::Normalizers::Number + _(integer_option.value_formatter.class).must_equal HammerCLI::Options::Normalizers::Number end end @@ -124,43 +124,48 @@ it "should skip filtered options" do builder_options[:without] = ["provider", "name"] - options.map(&:attribute_name).sort.must_equal [HammerCLI.option_accessor_name("array_param")] + _(options.map(&:attribute_name).sort).must_equal [HammerCLI.option_accessor_name("array_param")] end it "should skip filtered options defined as symbols" do builder_options[:without] = [:provider, :name] - options.map(&:attribute_name).sort.must_equal [HammerCLI.option_accessor_name("array_param")] + _(options.map(&:attribute_name).sort).must_equal [HammerCLI.option_accessor_name("array_param")] end it "should skip single filtered option in array" do builder_options[:without] = ["provider"] - options.map(&:attribute_name).sort.must_equal HammerCLI.option_accessor_name("array_param", "name") + _(options.map(&:attribute_name).sort).must_equal HammerCLI.option_accessor_name("array_param", "name") end it "should skip single filtered option" do builder_options[:without] = "provider" - options.map(&:attribute_name).sort.must_equal HammerCLI.option_accessor_name("array_param", "name") + _(options.map(&:attribute_name).sort).must_equal HammerCLI.option_accessor_name("array_param", "name") end end context "aliasing resources" do let(:action) {resource.action(:action_with_ids)} - let(:builder_options) { {:resource_mapping => {:organization => 'company', 'compute_resource' => :compute_provider}} } + let(:builder_options) do + { + resource_mapping: { organization: 'company', 'compute_resource' => :compute_provider }, + command: Class.new(HammerCLI::Apipie::Command) + } + end it "renames options" do # builder_options[:resource_mapping] = {:organization => 'company', 'compute_resource' => :compute_provider} - options.map(&:long_switch).sort.must_equal ["--company-id", "--company-ids", "--compute-provider-id", "--name"] + _(options.map(&:long_switch).sort).must_equal ["--company-id", "--company-ids", "--compute-provider-id", "--name"] end it "renames option types" do # builder_options[:resource_mapping] = {:organization => 'company', 'compute_resource' => :compute_provider} - options.map(&:type).sort.must_equal ["COMPANY_ID", "COMPANY_IDS", "COMPUTE_PROVIDER_ID", "NAME"] + _(options.map(&:type).sort).must_equal ["COMPANY_ID", "COMPANY_IDS", "COMPUTE_PROVIDER_ID", "NAME"] end it "keeps option accessor the same" do # builder_options[:resource_mapping] = {:organization => 'company', 'compute_resource' => :compute_provider} - options.map(&:attribute_name).sort.must_equal HammerCLI.option_accessor_name("compute_resource_id", "name", "organization_id", "organization_ids") + _(options.map(&:attribute_name).sort).must_equal HammerCLI.option_accessor_name("compute_resource_id", "name", "organization_id", "organization_ids") end end @@ -169,7 +174,7 @@ let(:action) {resource.action(:action_with_ids)} it "sets referenced resources" do - options.map(&:referenced_resource).map(&:to_s).sort.must_equal ["", "compute_resource", "organization", "organization"] + _(options.map(&:referenced_resource).map(&:to_s).sort).must_equal ["", "compute_resource", "organization", "organization"] end end diff --git a/test/unit/apipie/option_definition_test.rb b/test/unit/apipie/option_definition_test.rb index 5ce02264..c10d7c40 100644 --- a/test/unit/apipie/option_definition_test.rb +++ b/test/unit/apipie/option_definition_test.rb @@ -1,4 +1,4 @@ -require File.join(File.dirname(__FILE__), '../test_helper') +require File.join(File.dirname(__FILE__), './test_helper') # require 'hammer_cli/options/option_definition' @@ -8,26 +8,26 @@ describe "referenced resource" do it "should be nil by default" do - opt.referenced_resource.must_equal nil + assert_nil opt.referenced_resource end it "should set referenced resource" do @referenced_resource = "organization" - opt.referenced_resource.must_equal "organization" + _(opt.referenced_resource).must_equal "organization" end it "should convert referenced resource name to string" do @referenced_resource = :organization - opt.referenced_resource.must_equal "organization" + _(opt.referenced_resource).must_equal "organization" end end - let(:opt2) { HammerCLI::Apipie::OptionDefinition.new("--opt2", "OPT2", "'OPT2'", :referenced_resource => @referenced_resource) } + let(:opt2) { HammerCLI::Apipie::OptionDefinition.new("--opt2", "OPT2", "'OPT2'") } describe "Option Description should be converted" do it "should be converted" do - opt2.description.must_equal "'OPT2'" + _(opt2.description).must_equal "'OPT2'" end end diff --git a/test/unit/apipie/test_helper.rb b/test/unit/apipie/test_helper.rb index 852f0083..d5d3a9c6 100644 --- a/test/unit/apipie/test_helper.rb +++ b/test/unit/apipie/test_helper.rb @@ -2,3 +2,6 @@ require 'hammer_cli/testing/command_assertions' require 'hammer_cli/testing/output_matchers' + +include HammerCLI::Testing::OutputMatchers +include HammerCLI::Testing::CommandAssertions \ No newline at end of file diff --git a/test/unit/bash_test.rb b/test/unit/bash_test.rb index 3c3a3c0b..5f9b2175 100644 --- a/test/unit/bash_test.rb +++ b/test/unit/bash_test.rb @@ -33,105 +33,105 @@ it 'returns options when no input given' do result = subject.complete('').sort - result.must_equal ['host ', '--interactive ', '--help ', '-h '].sort + _(result).must_equal ['host ', '--interactive ', '--help ', '-h '].sort end it 'returns filtered options when partial input is given' do result = subject.complete('-').sort - result.must_equal ['--help ', '-h ', '--interactive '].sort + _(result).must_equal ['--help ', '-h ', '--interactive '].sort end it 'returns filtered options when partial input is given' do result = subject.complete('host') - result.must_equal ['host '] + _(result).must_equal ['host '] end it 'returns options when subcommand is given' do result = subject.complete('host ').sort - result.must_equal ['create ', '--help ', '--dry '].sort + _(result).must_equal ['create ', '--help ', '--dry '].sort end it 'returns no options when subcommand is wrong' do result = subject.complete('unknown -h') - result.must_equal [] + _(result).must_equal [] end it 'returns no options when there are no other params allowed' do result = subject.complete('host create /tmp some /tmp extra') - result.must_equal [] + _(result).must_equal [] end it 'return hint for option-value pair without value' do result = subject.complete('host create -t ') - result.must_equal ['--->', 'Add option '] + _(result).must_equal ['--->', 'Add option '] end it 'return no options for option-value pair without complete value' do result = subject.complete('host create -t x') - result.must_equal [] + _(result).must_equal [] end # multiple options in one subcommand it 'allows mutiple options of the same subcommand' do result = subject.complete('host create --build --he') - result.must_equal ['--help '] + _(result).must_equal ['--help '] end # multiple options with values in one subcommand it 'allows mutiple options with values of the same subcommand' do result = subject.complete('host create -t value --he') - result.must_equal ['--help '] + _(result).must_equal ['--help '] end # subcommand after options it 'allows subcommand after options' do result = subject.complete('host --dry crea') - result.must_equal ['create '] + _(result).must_equal ['create '] end describe 'completion by type' do it 'completes :value' do result = subject.complete('host create -t ') - result.must_equal ['--->', 'Add option '] + _(result).must_equal ['--->', 'Add option '] end it 'completes :flag' do result = subject.complete('host --h') - result.must_equal ['--help '] + _(result).must_equal ['--help '] end it 'completes :schema' do result = subject.complete('host create --installed-products-attributes ') - result.must_equal ["--->", 'Add value by following schema: "product_id=string\,product_name=string\,arch=string\,version=string, ... "'] + _(result).must_equal ["--->", 'Add value by following schema: "product_id=string\,product_name=string\,arch=string\,version=string, ... "'] end it 'completes :enum' do result = subject.complete('host create --managed ') - result.must_equal ['yes ', 'no '] + _(result).must_equal ['yes ', 'no '] end it 'completes :multienum' do result = subject.complete('host create --volume ') - result.must_equal ['first', 'second', 'third'] + _(result).must_equal ['first', 'second', 'third'] result = subject.complete('host create --volume fir') - result.must_equal ['first'] + _(result).must_equal ['first'] result = subject.complete('host create --volume first,') - result.must_equal ['second', 'third'] + _(result).must_equal ['second', 'third'] result = subject.complete('host create --volume first,se') - result.must_equal ['first,second'] + _(result).must_equal ['first,second'] end it 'completes :list' do result = subject.complete('host create --config-group-ids ') - result.must_equal ['--->', 'Add comma-separated list of values'] + _(result).must_equal ['--->', 'Add comma-separated list of values'] end it 'completes :key_value_list' do result = subject.complete('host create --params ') - result.must_equal ['--->', 'Add comma-separated list of key=value'] + _(result).must_equal ['--->', 'Add comma-separated list of key=value'] end end end diff --git a/test/unit/command_extensions_test.rb b/test/unit/command_extensions_test.rb index c86133a9..3c64336d 100644 --- a/test/unit/command_extensions_test.rb +++ b/test/unit/command_extensions_test.rb @@ -57,68 +57,68 @@ class CmdExtensions < HammerCLI::CommandExtensions it 'should extend options only' do cmd.extend_with(CmdExtensions.new(only: :option)) opt = cmd.find_option('--ext') - opt.is_a?(HammerCLI::Options::OptionDefinition).must_equal true - cmd.output_definition.empty?.must_equal true + _(opt.is_a?(HammerCLI::Options::OptionDefinition)).must_equal true + _(cmd.output_definition.empty?).must_equal true end it 'should extend output only' do cmd.extend_with(CmdExtensions.new(only: :output)) - cmd.output_definition.empty?.must_equal false + _(cmd.output_definition.empty?).must_equal false opt = cmd.find_option('--ext') - opt.is_a?(HammerCLI::Options::OptionDefinition).must_equal false + _(opt.is_a?(HammerCLI::Options::OptionDefinition)).must_equal false end it 'should extend help only' do cmd.extend_with(CmdExtensions.new(only: :help)) - cmd.new('', {}).help.must_match(/.*Section.*/) - cmd.new('', {}).help.must_match(/.*text.*/) + _(cmd.new('', {}).help).must_match(/.*Section.*/) + _(cmd.new('', {}).help).must_match(/.*text.*/) end it 'should extend params only' do cmd.extend_with(CmdExtensions.new(only: :request_params)) - cmd.new('', {}).extended_request[0].must_equal(thin: true) - cmd.new('', {}).extended_request[1].must_equal({}) - cmd.new('', {}).extended_request[2].must_equal({}) + _(cmd.new('', {}).extended_request[0]).must_equal(thin: true) + _(cmd.new('', {}).extended_request[1]).must_equal({}) + _(cmd.new('', {}).extended_request[2]).must_equal({}) end it 'should extend headers only' do cmd.extend_with(CmdExtensions.new(only: :request_headers)) - cmd.new('', {}).extended_request[0].must_equal({}) - cmd.new('', {}).extended_request[1].must_equal(ssl: true) - cmd.new('', {}).extended_request[2].must_equal({}) + _(cmd.new('', {}).extended_request[0]).must_equal({}) + _(cmd.new('', {}).extended_request[1]).must_equal(ssl: true) + _(cmd.new('', {}).extended_request[2]).must_equal({}) end it 'should extend options only' do cmd.extend_with(CmdExtensions.new(only: :request_options)) - cmd.new('', {}).extended_request[0].must_equal({}) - cmd.new('', {}).extended_request[1].must_equal({}) - cmd.new('', {}).extended_request[2].must_equal(with_authentication: true) + _(cmd.new('', {}).extended_request[0]).must_equal({}) + _(cmd.new('', {}).extended_request[1]).must_equal({}) + _(cmd.new('', {}).extended_request[2]).must_equal(with_authentication: true) end it 'should extend params and options and headers' do cmd.extend_with(CmdExtensions.new(only: :request)) - cmd.new('', {}).extended_request[0].must_equal(thin: true) - cmd.new('', {}).extended_request[1].must_equal(ssl: true) - cmd.new('', {}).extended_request[2].must_equal(with_authentication: true) + _(cmd.new('', {}).extended_request[0]).must_equal(thin: true) + _(cmd.new('', {}).extended_request[1]).must_equal(ssl: true) + _(cmd.new('', {}).extended_request[2]).must_equal(with_authentication: true) end it 'should extend data only' do cmd.extend_with(CmdExtensions.new(only: :data)) - cmd.new('', {}).help.wont_match(/.*Section.*/) - cmd.new('', {}).help.wont_match(/.*text.*/) - cmd.output_definition.empty?.must_equal true + _(cmd.new('', {}).help).wont_match(/.*Section.*/) + _(cmd.new('', {}).help).wont_match(/.*text.*/) + _(cmd.output_definition.empty?).must_equal true opt = cmd.find_option('--ext') - opt.is_a?(HammerCLI::Options::OptionDefinition).must_equal false - cmd.new('', {}).extended_request[0].must_equal({}) - cmd.new('', {}).extended_request[1].must_equal({}) - cmd.new('', {}).extended_request[2].must_equal({}) - cmd.new('', {}).extended_data({}).must_equal('key' => 'value') + _(opt.is_a?(HammerCLI::Options::OptionDefinition)).must_equal false + _(cmd.new('', {}).extended_request[0]).must_equal({}) + _(cmd.new('', {}).extended_request[1]).must_equal({}) + _(cmd.new('', {}).extended_request[2]).must_equal({}) + _(cmd.new('', {}).extended_data({})).must_equal('key' => 'value') end it 'should extend option family only' do cmd.extend_with(CmdExtensions.new(only: :option_family)) - cmd.output_definition.empty?.must_equal true - cmd.recognised_options.map(&:switches).flatten.must_equal ['--test-one', '--test-two', '-h', '--help'] + _(cmd.output_definition.empty?).must_equal true + _(cmd.recognised_options.map(&:switches).flatten).must_equal ['-h', '--help', '--test-one', '--test-two'] end end @@ -126,82 +126,90 @@ class CmdExtensions < HammerCLI::CommandExtensions it 'should extend all except options' do cmd.extend_with(CmdExtensions.new(except: :option)) opt = cmd.find_option('--ext') - opt.is_a?(HammerCLI::Options::OptionDefinition).must_equal false - cmd.output_definition.empty?.must_equal false - cmd.new('', {}).extended_request[0].must_equal(thin: true) - cmd.new('', {}).extended_request[1].must_equal(ssl: true) - cmd.new('', {}).extended_request[2].must_equal(with_authentication: true) + _(opt.is_a?(HammerCLI::Options::OptionDefinition)).must_equal false + _(cmd.output_definition.empty?).must_equal false + _(cmd.new('', {}).extended_request[0]).must_equal(thin: true) + _(cmd.new('', {}).extended_request[1]).must_equal(ssl: true) + _(cmd.new('', {}).extended_request[2]).must_equal(with_authentication: true) end it 'should extend all except output' do cmd.extend_with(CmdExtensions.new(except: :output)) - cmd.output_definition.empty?.must_equal true + _(cmd.output_definition.empty?).must_equal true opt = cmd.find_option('--ext') - opt.is_a?(HammerCLI::Options::OptionDefinition).must_equal true - cmd.new('', {}).extended_request[0].must_equal(thin: true) - cmd.new('', {}).extended_request[1].must_equal(ssl: true) - cmd.new('', {}).extended_request[2].must_equal(with_authentication: true) + _(opt.is_a?(HammerCLI::Options::OptionDefinition)).must_equal true + _(cmd.new('', {}).extended_request[0]).must_equal(thin: true) + _(cmd.new('', {}).extended_request[1]).must_equal(ssl: true) + _(cmd.new('', {}).extended_request[2]).must_equal(with_authentication: true) end it 'should extend all except help' do cmd.extend_with(CmdExtensions.new(except: :help)) - cmd.new('', {}).help.wont_match(/.*Section.*/) - cmd.new('', {}).help.wont_match(/.*text.*/) - cmd.output_definition.empty?.must_equal false + _(cmd.new('', {}).help).wont_match(/.*Section.*/) + _(cmd.new('', {}).help).wont_match(/.*text.*/) + _(cmd.output_definition.empty?).must_equal false opt = cmd.find_option('--ext') - opt.is_a?(HammerCLI::Options::OptionDefinition).must_equal true - cmd.new('', {}).extended_request[0].must_equal(thin: true) - cmd.new('', {}).extended_request[1].must_equal(ssl: true) - cmd.new('', {}).extended_request[2].must_equal(with_authentication: true) + _(opt.is_a?(HammerCLI::Options::OptionDefinition)).must_equal true + _(cmd.new('', {}).extended_request[0]).must_equal(thin: true) + _(cmd.new('', {}).extended_request[1]).must_equal(ssl: true) + _(cmd.new('', {}).extended_request[2]).must_equal(with_authentication: true) end it 'should extend all except params' do cmd.extend_with(CmdExtensions.new(except: :request_params)) - cmd.new('', {}).extended_request[0].must_equal({}) - cmd.new('', {}).extended_request[1].must_equal(ssl: true) - cmd.new('', {}).extended_request[2].must_equal(with_authentication: true) + _(cmd.new('', {}).extended_request[0]).must_equal({}) + _(cmd.new('', {}).extended_request[1]).must_equal(ssl: true) + _(cmd.new('', {}).extended_request[2]).must_equal(with_authentication: true) end it 'should extend all except headers' do cmd.extend_with(CmdExtensions.new(except: :request_headers)) - cmd.new('', {}).extended_request[0].must_equal(thin: true) - cmd.new('', {}).extended_request[1].must_equal({}) - cmd.new('', {}).extended_request[2].must_equal(with_authentication: true) + _(cmd.new('', {}).extended_request[0]).must_equal(thin: true) + _(cmd.new('', {}).extended_request[1]).must_equal({}) + _(cmd.new('', {}).extended_request[2]).must_equal(with_authentication: true) end it 'should extend all except options' do cmd.extend_with(CmdExtensions.new(except: :request_options)) - cmd.new('', {}).extended_request[0].must_equal(thin: true) - cmd.new('', {}).extended_request[1].must_equal(ssl: true) - cmd.new('', {}).extended_request[2].must_equal({}) + _(cmd.new('', {}).extended_request[0]).must_equal(thin: true) + _(cmd.new('', {}).extended_request[1]).must_equal(ssl: true) + _(cmd.new('', {}).extended_request[2]).must_equal({}) end it 'should extend all except params and options and headers' do cmd.extend_with(CmdExtensions.new(except: :request)) - cmd.new('', {}).extended_request[0].must_equal({}) - cmd.new('', {}).extended_request[1].must_equal({}) - cmd.new('', {}).extended_request[2].must_equal({}) + _(cmd.new('', {}).extended_request[0]).must_equal({}) + _(cmd.new('', {}).extended_request[1]).must_equal({}) + _(cmd.new('', {}).extended_request[2]).must_equal({}) end it 'should extend all except data' do cmd.extend_with(CmdExtensions.new(except: :data)) - cmd.new('', {}).help.must_match(/.*Section.*/) - cmd.new('', {}).help.must_match(/.*text.*/) - cmd.output_definition.empty?.must_equal false + _(cmd.new('', {}).help).must_match(/.*Section.*/) + _(cmd.new('', {}).help).must_match(/.*text.*/) + _(cmd.output_definition.empty?).must_equal false opt = cmd.find_option('--ext') - opt.is_a?(HammerCLI::Options::OptionDefinition).must_equal true - cmd.new('', {}).extended_request[0].must_equal(thin: true) - cmd.new('', {}).extended_request[1].must_equal(ssl: true) - cmd.new('', {}).extended_request[2].must_equal(with_authentication: true) - cmd.new('', {}).extended_data({}).must_equal({}) + _(opt.is_a?(HammerCLI::Options::OptionDefinition)).must_equal true + _(cmd.new('', {}).extended_request[0]).must_equal(thin: true) + _(cmd.new('', {}).extended_request[1]).must_equal(ssl: true) + _(cmd.new('', {}).extended_request[2]).must_equal(with_authentication: true) + _(cmd.new('', {}).extended_data({})).must_equal({}) end it 'should extend all except option family' do cmd.extend_with(CmdExtensions.new(except: :option_family)) - cmd.output_definition.empty?.must_equal false - cmd.recognised_options.map(&:switches).flatten.must_equal ['--ext', '-h', '--help'] + _(cmd.output_definition.empty?).must_equal false + _(cmd.recognised_options.map(&:switches).flatten).must_equal ['--ext', '-h', '--help'] end end - + context 'associate family' do + it 'should associate option family' do + cmd.extend_with(CmdExtensions.new(only: :option_family)) + cmd.option_family associate: 'test' do + child '--test-three', '', '' + end + _(cmd.recognised_options.map(&:switches).flatten).must_equal ['-h', '--help', '--test-one', '--test-two', '--test-three'] + end + end end diff --git a/test/unit/completer_test.rb b/test/unit/completer_test.rb index e1021004..d2276967 100644 --- a/test/unit/completer_test.rb +++ b/test/unit/completer_test.rb @@ -8,81 +8,81 @@ describe "quote" do it "returns empty string for empty word" do word = HammerCLI::CompleterWord.new('') - word.quote.must_equal "" + _(word.quote).must_equal "" end it "returns empty string for word without quotes" do word = HammerCLI::CompleterWord.new('word') - word.quote.must_equal "" + _(word.quote).must_equal "" end it "recognizes double quotes" do word = HammerCLI::CompleterWord.new('"word') - word.quote.must_equal '"' + _(word.quote).must_equal '"' end it "recognizes single quotes" do word = HammerCLI::CompleterWord.new('\'word') - word.quote.must_equal "'" + _(word.quote).must_equal "'" end end describe "quoted?" do it "returns false for an unquoted word" do word = HammerCLI::CompleterWord.new('word') - word.quoted?.must_equal false + _(word.quoted?).must_equal false end it "returns true for double quotes" do word = HammerCLI::CompleterWord.new('"word') - word.quoted?.must_equal true + _(word.quoted?).must_equal true end it "returns true for single quotes" do word = HammerCLI::CompleterWord.new('\'word') - word.quoted?.must_equal true + _(word.quoted?).must_equal true end end describe "complete?" do it "considers a word without quotes complete" do word = HammerCLI::CompleterWord.new('word') - word.complete?.must_equal false + _(word.complete?).must_equal false end it "considers a word without quotes ending with space incomplete" do word = HammerCLI::CompleterWord.new('word ') - word.complete?.must_equal true + _(word.complete?).must_equal true end it "considers open double quotes incomplete" do word = HammerCLI::CompleterWord.new('"word') - word.complete?.must_equal false + _(word.complete?).must_equal false end it "considers open double quotes with spaces incomplete" do word = HammerCLI::CompleterWord.new('"word ') - word.complete?.must_equal false + _(word.complete?).must_equal false end it "considers closed double quotes complete" do word = HammerCLI::CompleterWord.new('"word"') - word.complete?.must_equal true + _(word.complete?).must_equal true end it "considers open single quotes incomplete" do word = HammerCLI::CompleterWord.new('\'word') - word.complete?.must_equal false + _(word.complete?).must_equal false end it "considers open single quotes with spaces incomplete" do word = HammerCLI::CompleterWord.new('\'word ') - word.complete?.must_equal false + _(word.complete?).must_equal false end it "considers closed single quotes complete" do word = HammerCLI::CompleterWord.new('\'word\'') - word.complete?.must_equal true + _(word.complete?).must_equal true end end @@ -94,57 +94,57 @@ it "should split basic line" do line = HammerCLI::CompleterLine.new("architecture list --name arch") - line.must_equal ["architecture", "list", "--name", "arch"] + _(line).must_equal ["architecture", "list", "--name", "arch"] end it "should split basic line with space at the end" do line = HammerCLI::CompleterLine.new("architecture list --name arch ") - line.must_equal ["architecture", "list", "--name", "arch"] + _(line).must_equal ["architecture", "list", "--name", "arch"] end it "should split on equal sign" do line = HammerCLI::CompleterLine.new("--name=arch") - line.must_equal ["--name", "arch"] + _(line).must_equal ["--name", "arch"] end it "should split when last character is equal sign" do line = HammerCLI::CompleterLine.new("--name=") - line.must_equal ["--name"] + _(line).must_equal ["--name"] end it "should split on equal sign when quotes are used" do line = HammerCLI::CompleterLine.new("--name='arch' ") - line.must_equal ["--name", "arch"] + _(line).must_equal ["--name", "arch"] end it "should split line with single quotes" do line = HammerCLI::CompleterLine.new("--name 'arch' ") - line.must_equal ["--name", "arch"] + _(line).must_equal ["--name", "arch"] end it "should split line with double quotes" do line = HammerCLI::CompleterLine.new("--name \"arch\"") - line.must_equal ["--name", "arch"] + _(line).must_equal ["--name", "arch"] end it "should split line with single quotes and space between" do line = HammerCLI::CompleterLine.new("--name 'ar ch '") - line.must_equal ["--name", "ar ch "] + _(line).must_equal ["--name", "ar ch "] end it "should split line with one single quote and space between" do line = HammerCLI::CompleterLine.new("--name 'ar ch ") - line.must_equal ["--name", "ar ch "] + _(line).must_equal ["--name", "ar ch "] end it "should split line with double quotes and space between" do line = HammerCLI::CompleterLine.new("--name \"ar ch \"") - line.must_equal ["--name", "ar ch "] + _(line).must_equal ["--name", "ar ch "] end it "should split line with one double quote and space between" do line = HammerCLI::CompleterLine.new("--name \"ar ch ") - line.must_equal ["--name", "ar ch "] + _(line).must_equal ["--name", "ar ch "] end end @@ -153,47 +153,47 @@ it "should recongize incomplete line" do line = HammerCLI::CompleterLine.new("architecture list --name arch") - line.complete?.must_equal false + _(line.complete?).must_equal false end it "should recongize complete line" do line = HammerCLI::CompleterLine.new("architecture list --name arch ") - line.complete?.must_equal true + _(line.complete?).must_equal true end it "should recongize complete line that ends with quotes" do line = HammerCLI::CompleterLine.new("--name 'ar ch'") - line.complete?.must_equal true + _(line.complete?).must_equal true end it "should recongize complete line that ends with quotes followed by space" do line = HammerCLI::CompleterLine.new("--name 'ar ch' ") - line.complete?.must_equal true + _(line.complete?).must_equal true end it "should recongize complete line that ends with double quotes" do line = HammerCLI::CompleterLine.new("--name \"ar ch\"") - line.complete?.must_equal true + _(line.complete?).must_equal true end it "should recongize one quote as incomplete" do line = HammerCLI::CompleterLine.new("--name '") - line.complete?.must_equal false + _(line.complete?).must_equal false end it "should recongize one quote followed by space as incomplete" do line = HammerCLI::CompleterLine.new("--name ' ") - line.complete?.must_equal false + _(line.complete?).must_equal false end it "should recongize one double quote as incomplete" do line = HammerCLI::CompleterLine.new("--name \"") - line.complete?.must_equal false + _(line.complete?).must_equal false end it "should recongize empty line as complete" do line = HammerCLI::CompleterLine.new("") - line.complete?.must_equal true + _(line.complete?).must_equal true end end @@ -265,97 +265,97 @@ class BeastCmd < HammerCLI::AbstractCommand let(:ape_completions) { ["makkak ", "malpa ", "orangutan ", "--hairy ", "--weight ", "--height ", "-h ", "--help "] } it "should offer all available commands" do - completer.complete("").sort.must_equal ["anabolic ", "ape ", "apocalypse ", "beast ", "-h ", "--help "].sort + _(completer.complete("").sort).must_equal ["anabolic ", "ape ", "apocalypse ", "beast ", "-h ", "--help "].sort end it "should offer nothing when the line does not match" do - completer.complete("x").must_equal [] + _(completer.complete("x")).must_equal [] end it "should filter by first letter" do - completer.complete("a").sort.must_equal ["anabolic ", "ape ", "apocalypse "].sort + _(completer.complete("a").sort).must_equal ["anabolic ", "ape ", "apocalypse "].sort end it "should filter by first two letters" do - completer.complete("ap").sort.must_equal ["ape ", "apocalypse "].sort + _(completer.complete("ap").sort).must_equal ["ape ", "apocalypse "].sort end it "should offer all available subcommands and options" do - completer.complete("ape ").sort.must_equal ape_completions.sort + _(completer.complete("ape ").sort).must_equal ape_completions.sort end it "should offer all available subcommands and options even if a flag has been passed" do - completer.complete("ape --hairy ").sort.must_equal ape_completions.sort + _(completer.complete("ape --hairy ").sort).must_equal ape_completions.sort end it "should offer all available subcommands and options even if an option has been passed" do - completer.complete("ape --weight 12kg ").sort.must_equal ape_completions.sort + _(completer.complete("ape --weight 12kg ").sort).must_equal ape_completions.sort end it "should offer all available subcommands and options even if an egual sign option has been passed" do - completer.complete("ape --weight=12kg ").sort.must_equal ape_completions.sort + _(completer.complete("ape --weight=12kg ").sort).must_equal ape_completions.sort end it "should offer all available subcommands and options when quoted value was passed" do - completer.complete("ape --weight '12 kg' ").sort.must_equal ape_completions.sort + _(completer.complete("ape --weight '12 kg' ").sort).must_equal ape_completions.sort end it "should offer all available subcommands and options when double quoted value was passed" do - completer.complete("ape --weight \"12 kg\" ").sort.must_equal ape_completions.sort + _(completer.complete("ape --weight \"12 kg\" ").sort).must_equal ape_completions.sort end it "should offer all available subcommands and options when quoted value with equal sign was passed" do - completer.complete("ape --weight='12 kg' ").sort.must_equal ape_completions.sort + _(completer.complete("ape --weight='12 kg' ").sort).must_equal ape_completions.sort end end context "option value completion" do it "should complete option values" do - completer.complete("ape --height ").sort.must_equal ["small ", "tall ", "smel ly"].sort + _(completer.complete("ape --height ").sort).must_equal ["small ", "tall ", "smel ly"].sort end it "should complete option values when equal sign is used" do - completer.complete("ape --height=").sort.must_equal ["small ", "tall ", "smel ly"].sort + _(completer.complete("ape --height=").sort).must_equal ["small ", "tall ", "smel ly"].sort end it "should complete option values" do - completer.complete("ape --height s").must_equal ["small ", "smel ly"] + _(completer.complete("ape --height s")).must_equal ["small ", "smel ly"] end it "should complete quoted option values" do - completer.complete("ape --height 's").must_equal ["'small' ", "'smel ly"] + _(completer.complete("ape --height 's")).must_equal ["'small' ", "'smel ly"] end it "should complete quoted option values" do - completer.complete("ape --height 'smel l").must_equal ["'smel ly"] + _(completer.complete("ape --height 'smel l")).must_equal ["'smel ly"] end end context "subcommand completion" do it "should filter subcommands by first letter" do - completer.complete("ape m").sort.must_equal ["makkak ", "malpa "].sort + _(completer.complete("ape m").sort).must_equal ["makkak ", "malpa "].sort end it "should offer nothing when the line does not match any subcommand" do - completer.complete("ape x").must_equal [] + _(completer.complete("ape x")).must_equal [] end it "should ignore flags specified before the last command" do - completer.complete("ape --hairy m").sort.must_equal ["makkak ", "malpa "].sort + _(completer.complete("ape --hairy m").sort).must_equal ["makkak ", "malpa "].sort end it "should ignore options specified before the last command" do - completer.complete("ape --weight 12kg m").sort.must_equal ["makkak ", "malpa "].sort + _(completer.complete("ape --weight 12kg m").sort).must_equal ["makkak ", "malpa "].sort end it "should ignore equal sign separated options specified before the last command" do - completer.complete("ape --weight=12kg m").sort.must_equal ["makkak ", "malpa "].sort + _(completer.complete("ape --weight=12kg m").sort).must_equal ["makkak ", "malpa "].sort end it "should filter subcommands by first three letters" do - completer.complete("ape mak").must_equal ["makkak "] + _(completer.complete("ape mak")).must_equal ["makkak "] end end diff --git a/test/unit/csv_parser_test.rb b/test/unit/csv_parser_test.rb index b86dcf4f..887d7812 100644 --- a/test/unit/csv_parser_test.rb +++ b/test/unit/csv_parser_test.rb @@ -7,48 +7,48 @@ let(:parser) { HammerCLI::CSVParser.new } it "parses nil" do - parser.parse(nil).must_equal [] + _(parser.parse(nil)).must_equal [] end it "parses empty string" do - parser.parse('').must_equal [''] + _(parser.parse('')).must_equal [''] end it "parses single value" do - parser.parse('a').must_equal ['a'] + _(parser.parse('a')).must_equal ['a'] end it "parses a dquoted string" do - parser.parse('\"a').must_equal ['"a'] + _(parser.parse('\"a')).must_equal ['"a'] end it "parses a quoted string" do - parser.parse("Mary\\'s").must_equal ["Mary's"] + _(parser.parse("Mary\\'s")).must_equal ["Mary's"] end it "should parse a comma separated string" do - parser.parse("a,b,c").must_equal ['a', 'b', 'c'] + _(parser.parse("a,b,c")).must_equal ['a', 'b', 'c'] end it "parses a string with escaped comma" do - parser.parse('a\,b,c').must_equal ['a,b', 'c'] + _(parser.parse('a\,b,c')).must_equal ['a,b', 'c'] end it "should parse a comma separated string with quotes" do - parser.parse('a,b,\\"c\\"').must_equal ['a', 'b', '"c"'] + _(parser.parse('a,b,\\"c\\"')).must_equal ['a', 'b', '"c"'] end it "parses a comma separated string with values including comma" do - parser.parse('a,b,"c,d"').must_equal ['a', 'b', 'c,d'] + _(parser.parse('a,b,"c,d"')).must_equal ['a', 'b', 'c,d'] end it "parses a comma separated string with values including comma (dquotes)" do - parser.parse("a,b,'c,d'").must_equal ['a', 'b', 'c,d'] + _(parser.parse("a,b,'c,d'")).must_equal ['a', 'b', 'c,d'] end it "raises quoting error" do - err = proc { parser.parse('1,"3,4""s') }.must_raise ArgumentError - err.message.must_equal "Illegal quoting in \"3,4\"\"s" + err = _{ parser.parse('1,"3,4""s') }.must_raise ArgumentError + _(err.message).must_equal "Illegal quoting in \"3,4\"\"s" end end end diff --git a/test/unit/defaults_test.rb b/test/unit/defaults_test.rb index 667f605b..34146484 100644 --- a/test/unit/defaults_test.rb +++ b/test/unit/defaults_test.rb @@ -26,7 +26,7 @@ it "Should update dashed default when underscored default is set" do defaults_result = @defaults.add_defaults_to_conf({"location-id"=> 3}, nil) assert_equal '3', defaults_result[:defaults][:'location-id'][:value] - assert_equal nil, defaults_result[:defaults][:location_id] + assert_nil defaults_result[:defaults][:location_id] end context "dashed" do @@ -34,13 +34,13 @@ it "Should update underscored default when dashed default is set" do defaults_result = @defaults.add_defaults_to_conf({"location_id"=> 3}, nil) assert_equal '3', defaults_result[:defaults][:location_id][:value] - assert_equal nil, defaults_result[:defaults][:'location-id'] + assert_nil defaults_result[:defaults][:'location-id'] end it "should update underscored default with option syntax when dashed default is set" do defaults_result = @defaults.add_defaults_to_conf({"--location-id"=> 3}, nil) assert_equal '3', defaults_result[:defaults][:'location-id'][:value] - assert_equal nil, defaults_result[:defaults][:location_id] + assert_nil defaults_result[:defaults][:location_id] end end diff --git a/test/unit/exception_handler_test.rb b/test/unit/exception_handler_test.rb index c6a55ee8..87e9843e 100644 --- a/test/unit/exception_handler_test.rb +++ b/test/unit/exception_handler_test.rb @@ -30,7 +30,7 @@ end it "should handle help request" do - output.expects(:print_message).with(cmd.help, {}, verbosity: HammerCLI::V_QUIET) + output.expects(:print_message).with(cmd.help, {}, { verbosity: HammerCLI::V_QUIET }) handler.handle_exception(Clamp::HelpWanted.new(cmd), :heading => heading) end @@ -51,8 +51,8 @@ ex = RestClient::ResourceNotFound.new output.default_adapter = :silent handler.handle_exception(ex) - assert_match /Using exception handler HammerCLI::ExceptionHandler#handle_not_found/, @log_output.readline.strip - assert_match /ERROR Exception : (Resource )?Not Found/, @log_output.readline.strip + assert_match(/Using exception handler HammerCLI::ExceptionHandler#handle_not_found/, @log_output.readline.strip) + assert_match(/ERROR Exception : (Resource )?Not Found/, @log_output.readline.strip) end it "should print default prompts for standard missing arguments" do diff --git a/test/unit/help/builder_test.rb b/test/unit/help/builder_test.rb index f8269048..db2f6119 100644 --- a/test/unit/help/builder_test.rb +++ b/test/unit/help/builder_test.rb @@ -13,7 +13,7 @@ ] help.add_list('Options', options) - help.string.strip.must_equal [ + _(help.string.strip).must_equal [ 'Options:', ' --aaa-option OPT_A Some description', ' --bbb-option OPT_B Some description', @@ -21,6 +21,24 @@ ' --zzz-option OPT_Z Some description' ].join("\n") end + + it 'prints long option descriptions aligned' do + opt_a_desc = 'AAAAAAA ' * 20 + opt_b_desc = 'BBBBBBB ' * 20 + options = [ + Clamp::Option::Definition.new(['--aaa-option'], 'OPT_A', opt_a_desc), + Clamp::Option::Definition.new(['--bbb-option'], 'OPT_B', opt_b_desc) + ] + help.add_list('Options', options) + + _(help.string.strip).must_equal [ + 'Options:', + ' --aaa-option OPT_A %s' % ('AAAAAAA ' * 10).strip, + ' %s' % ('AAAAAAA ' * 10).strip, + ' --bbb-option OPT_B %s' % ('BBBBBBB ' * 10).strip, + ' %s' % ('BBBBBBB ' * 10).strip + ].join("\n") + end end describe 'adding an option with lower case description' do @@ -31,7 +49,7 @@ ] help.add_list('Options',options) - help.string.strip.must_equal [ + _(help.string.strip).must_equal [ 'Options:', ' --alpha-option OPT_ALPHA Alpha description', ' --beta-option OPT_BETA BETA description' @@ -51,12 +69,12 @@ it 'prints paragraphs without headings' do help.add_text(content_1.join("\n")) - help.string.strip.must_equal content_1.join("\n") + _(help.string.strip).must_equal content_1.join("\n") end it 'prints paragraphs with headings' do help.add_text(content_1.join("\n")) - help.string.strip.must_equal content_1.join("\n") + _(help.string.strip).must_equal content_1.join("\n") end it 'prints multiple paragraphs divided with empty line' do @@ -66,7 +84,7 @@ expected_output = content_1 + [''] + content_2 expected_output = expected_output.join("\n") - help.string.strip.must_equal expected_output + _(help.string.strip).must_equal expected_output end end @@ -84,10 +102,10 @@ options = fm1.all + fm2.all help.add_list('Options', options) - help.string.strip.must_equal [ + _(help.string.strip).must_equal [ 'Options:', - ' --option[-yyy|-bbb] Some description', - ' --option[-aaa|-zzz] Some description', + ' --option[-yyy|-bbb] VALUE Some description', + ' --option[-aaa|-zzz] VALUE Some description' ].join("\n") end end diff --git a/test/unit/help/definition/abstract_item_test.rb b/test/unit/help/definition/abstract_item_test.rb index ccb7411b..12f47829 100644 --- a/test/unit/help/definition/abstract_item_test.rb +++ b/test/unit/help/definition/abstract_item_test.rb @@ -15,7 +15,7 @@ ' Dolor sit amet', '' ].join("\n") - section.build_string.must_equal(expected_result) + _(section.build_string).must_equal(expected_result) end it 'indents text with custom padding' do @@ -27,7 +27,7 @@ '** Dolor sit amet', '' ].join("\n") - section.build_string.must_equal(expected_result) + _(section.build_string).must_equal(expected_result) end end end diff --git a/test/unit/help/definition/list_test.rb b/test/unit/help/definition/list_test.rb index c7aae03f..d898e65d 100644 --- a/test/unit/help/definition/list_test.rb +++ b/test/unit/help/definition/list_test.rb @@ -8,7 +8,7 @@ let(:item_with_options) { [:third, 'This is bold item', { bold: true }] } it 'builds string' do - list.build_string.must_equal [ + _(list.build_string).must_equal [ 'first This is first line', 'second This is second line', '' @@ -18,7 +18,7 @@ it 'ensures that item options are used' do list = HammerCLI::Help::List.new([first_item, second_item, item_with_options]) changed_item = HighLine.color('third', :bold) - list.build_string.must_equal [ + _(list.build_string).must_equal [ 'first This is first line', 'second This is second line', "#{changed_item} This is bold item", diff --git a/test/unit/help/definition/note_test.rb b/test/unit/help/definition/note_test.rb index e36ec417..2e1cc302 100644 --- a/test/unit/help/definition/note_test.rb +++ b/test/unit/help/definition/note_test.rb @@ -6,13 +6,13 @@ let(:note) { HammerCLI::Help::Note.new(text) } it 'builds string' do - note.build_string.must_equal 'NOTE: text' + _(note.build_string).must_equal 'NOTE: text' end it 'ensures that options are used' do label = 'DEPRECATION' note = HammerCLI::Help::Note.new(text, label: label, richtext: true) - note.build_string.must_equal "#{HighLine.color("#{label}:", :bold)} #{text}" + _(note.build_string).must_equal "#{HighLine.color("#{label}:", :bold)} #{text}" end end end diff --git a/test/unit/help/definition/section_test.rb b/test/unit/help/definition/section_test.rb index c2cf57e4..3e046eef 100644 --- a/test/unit/help/definition/section_test.rb +++ b/test/unit/help/definition/section_test.rb @@ -7,7 +7,7 @@ let(:second_text) { HammerCLI::Help::Text.new('second') } it 'builds string without definition' do - section.build_string.must_equal "section:\n\n" + _(section.build_string).must_equal "section:\n\n" end it 'builds string with definition' do @@ -19,7 +19,7 @@ ' second', '' ].join("\n") - section.build_string.must_equal expected_output + _(section.build_string).must_equal expected_output end end end diff --git a/test/unit/help/definition/text_test.rb b/test/unit/help/definition/text_test.rb index 19dbb353..4f58b585 100644 --- a/test/unit/help/definition/text_test.rb +++ b/test/unit/help/definition/text_test.rb @@ -5,12 +5,12 @@ let(:text) { HammerCLI::Help::Text.new('text') } it 'builds string' do - text.build_string.must_equal 'text' + _(text.build_string).must_equal 'text' end it 'ensures that options are used' do text = HammerCLI::Help::Text.new('text', richtext: true) - text.build_string.must_equal HighLine.color('text', :bold) + _(text.build_string).must_equal HighLine.color('text', :bold) end end end diff --git a/test/unit/help/definition_test.rb b/test/unit/help/definition_test.rb index e71d8a71..0b0ba75f 100644 --- a/test/unit/help/definition_test.rb +++ b/test/unit/help/definition_test.rb @@ -9,13 +9,13 @@ describe 'text' do it 'prints text via definition' do definition << HammerCLI::Help::Text.new('Lorem ipsum') - definition.build_string.must_equal "Lorem ipsum\n" + _(definition.build_string).must_equal "Lorem ipsum\n" end it 'prints multiple blocks with spaces via definition' do definition << HammerCLI::Help::Text.new('Lorem ipsum') definition << HammerCLI::Help::Text.new('Dolor sit amet') - definition.build_string.must_equal [ + _(definition.build_string).must_equal [ 'Lorem ipsum', '', 'Dolor sit amet', @@ -27,7 +27,7 @@ describe 'section' do it 'prints section heading via definition' do definition << HammerCLI::Help::Section.new('Heading') - definition.build_string.must_equal "Heading:\n\n" + _(definition.build_string).must_equal "Heading:\n\n" end it 'indents section content via definition' do @@ -35,7 +35,7 @@ sub_definition << HammerCLI::Help::Text.new('Lorem ipsum') sub_definition << HammerCLI::Help::Text.new('Dolor sit amet') definition << HammerCLI::Help::Section.new('Heading', sub_definition) - definition.build_string.must_equal [ + _(definition.build_string).must_equal [ 'Heading:', ' Lorem ipsum', '', @@ -49,7 +49,7 @@ it 'prints empty list via definition' do builder = HammerCLI::Help::TextBuilder.new builder.list([]) - builder.definition.build_string.must_equal '' + _(builder.definition.build_string).must_equal '' end it 'prints single column list' do @@ -58,7 +58,7 @@ :bb, :ccc ]) - definition.build_string.must_equal [ + _(definition.build_string).must_equal [ 'a', 'bb', 'ccc', @@ -72,7 +72,7 @@ [:bb, 'This is line B'], [:ccc] ]) - definition.build_string.must_equal [ + _(definition.build_string).must_equal [ 'a This is line A', 'bb This is line B', 'ccc', @@ -86,7 +86,7 @@ [:bb, 'This is line B'], [:ccc, 'This is line C'] ]) - definition.build_string.must_equal [ + _(definition.build_string).must_equal [ 'a This is line A', ' This is line A part two', 'bb This is line B', @@ -101,7 +101,7 @@ ['This line B is too long for the first column', 'This is line B'], ['ccc', 'This is line C'] ]) - definition.build_string.must_equal [ + _(definition.build_string).must_equal [ 'a This is line A', 'This line B is too long for the first column This is line B', 'ccc This is line C', @@ -115,7 +115,7 @@ it 'finds an item' do definition << old_text_item definition << new_text_item - definition.find_item(:new).must_equal new_text_item + _(definition.find_item(:new)).must_equal new_text_item end end @@ -127,22 +127,22 @@ it 'should insert new help item before the old one' do definition << old_text_item definition.insert_definition(:before, :old, new_text_item.definition) - definition.first.id.must_equal new_text_item.id - definition.count.must_equal 2 + _(definition.first.id).must_equal new_text_item.id + _(definition.count).must_equal 2 end it 'should insert multiple items before old item' do definition << old_text_item definition.insert_definition(:before, :old, new_definition) - definition.first.id.must_equal new_text_item.id - definition.count.must_equal 3 + _(definition.first.id).must_equal new_text_item.id + _(definition.count).must_equal 3 end it 'should work with labels' do definition << section_item definition.insert_definition(:before, 'section', new_definition) - definition.first.id.must_equal new_text_item.id - definition.count.must_equal 3 + _(definition.first.id).must_equal new_text_item.id + _(definition.count).must_equal 3 end end @@ -150,25 +150,25 @@ it 'should insert new help item after the old one' do definition << old_text_item definition.insert_definition(:after, :old, new_text_item.definition) - definition[0].id.must_equal old_text_item.id - definition[1].id.must_equal new_text_item.id - definition.count.must_equal 2 + _(definition[0].id).must_equal old_text_item.id + _(definition[1].id).must_equal new_text_item.id + _(definition.count).must_equal 2 end it 'should insert multiple items after old item' do definition << old_text_item definition.insert_definition(:after, :old, new_definition) - definition[0].id.must_equal old_text_item.id - definition[1].id.must_equal new_text_item.id - definition[2].id.must_equal new_text_item.id - definition.count.must_equal 3 + _(definition[0].id).must_equal old_text_item.id + _(definition[1].id).must_equal new_text_item.id + _(definition[2].id).must_equal new_text_item.id + _(definition.count).must_equal 3 end it 'should work with labels' do definition << section_item definition.insert_definition(:after, 'section', new_text_item.definition) - definition[1].id.must_equal new_text_item.id - definition.count.must_equal 2 + _(definition[1].id).must_equal new_text_item.id + _(definition.count).must_equal 2 end end @@ -176,23 +176,23 @@ it 'should replace the old help item with new one' do definition << old_text_item definition.insert_definition(:replace, :old, new_text_item.definition) - definition.first.id.must_equal new_text_item.id - definition.count.must_equal 1 + _(definition.first.id).must_equal new_text_item.id + _(definition.count).must_equal 1 end it 'should replace the old help item with new ones' do definition << old_text_item definition.insert_definition(:replace, :old, new_definition) - definition[0].id.must_equal new_text_item.id - definition[1].id.must_equal new_text_item.id - definition.count.must_equal 2 + _(definition[0].id).must_equal new_text_item.id + _(definition[1].id).must_equal new_text_item.id + _(definition.count).must_equal 2 end it 'should work with labels' do definition << section_item definition.insert_definition(:replace, 'section', new_text_item.definition) - definition.first.id.must_equal new_text_item.id - definition.count.must_equal 1 + _(definition.first.id).must_equal new_text_item.id + _(definition.count).must_equal 1 end end end @@ -201,7 +201,7 @@ it 'should return self if path is empty' do definition << old_text_item definition.at([]) do |h| - h.definition.first.id.must_equal old_text_item.id + _(h.definition.first.id).must_equal old_text_item.id end end @@ -209,7 +209,7 @@ definition << old_text_item definition << new_text_item definition.at(1) do |h| - h.definition.first.id.must_equal new_text_item.id + _(h.definition.first.id).must_equal new_text_item.id end end @@ -220,7 +220,7 @@ definition << HammerCLI::Help::Section.new('first', sub_definition, id: :first_section) definition << HammerCLI::Help::Section.new('second', sub_definition, id: :second_section) definition.at(:first_section).definition << HammerCLI::Help::Section.new('nested', sub_definition, id: :nested_section) - definition.at([:first_section, :nested_section]).definition.first.id.must_equal old_text_item.id + _(definition.at([:first_section, :nested_section]).definition.first.id).must_equal old_text_item.id end it 'should work with labels' do @@ -230,7 +230,7 @@ definition << HammerCLI::Help::Section.new('first', sub_definition) definition << HammerCLI::Help::Section.new('second', sub_definition) definition.at('first').definition << HammerCLI::Help::Section.new('nested', sub_definition) - definition.at(['first', 'nested']).definition.first.id.must_equal old_text_item.id + _(definition.at(['first', 'nested']).definition.first.id).must_equal old_text_item.id end end end diff --git a/test/unit/help/text_builder_test.rb b/test/unit/help/text_builder_test.rb index 29687b49..302f8523 100644 --- a/test/unit/help/text_builder_test.rb +++ b/test/unit/help/text_builder_test.rb @@ -6,13 +6,13 @@ describe '#text' do it 'prints text' do help.text('Lorem ipsum') - help.string.must_equal "Lorem ipsum\n" + _(help.string).must_equal "Lorem ipsum\n" end it 'prints multiple blocks with spaces' do help.text('Lorem ipsum') help.text('Dolor sit amet') - help.string.must_equal [ + _(help.string).must_equal [ 'Lorem ipsum', '', 'Dolor sit amet', @@ -24,7 +24,7 @@ describe '#section' do it 'prints section heading' do help.section('Heading') - help.string.must_equal "Heading:\n\n" + _(help.string).must_equal "Heading:\n\n" end it 'indents section content' do @@ -32,7 +32,7 @@ h.text('Lorem ipsum') h.text('Dolor sit amet') end - help.string.must_equal [ + _(help.string).must_equal [ 'Heading:', ' Lorem ipsum', '', @@ -45,7 +45,7 @@ describe '#list' do it 'prints empty list' do help.list([]) - help.string.must_equal "" + _(help.string).must_equal "" end it 'prints single column list' do @@ -54,7 +54,7 @@ :bb, :ccc ]) - help.string.must_equal [ + _(help.string).must_equal [ 'a', 'bb', 'ccc', @@ -68,7 +68,7 @@ [:bb, 'This is line B'], [:ccc] ]) - help.string.must_equal [ + _(help.string).must_equal [ 'a This is line A', 'bb This is line B', 'ccc', @@ -82,7 +82,7 @@ [:bb, 'This is line B'], [:ccc, 'This is line C'] ]) - help.string.must_equal [ + _(help.string).must_equal [ 'a This is line A', ' This is line A part two', 'bb This is line B', @@ -97,7 +97,7 @@ ['This line B is too long for the first column', 'This is line B'], ['ccc', 'This is line C'] ]) - help.string.must_equal [ + _(help.string).must_equal [ 'a This is line A', 'This line B is too long for the first column This is line B', 'ccc This is line C', @@ -123,7 +123,7 @@ '', ' C' ].join("\n") - help.indent(text).must_equal(expected_result) + _(help.indent(text)).must_equal(expected_result) end it 'indents text with custom padding' do @@ -133,7 +133,7 @@ '**', '** C' ].join("\n") - help.indent(text, '**').must_equal(expected_result) + _(help.indent(text, '**')).must_equal(expected_result) end end @@ -141,7 +141,7 @@ it 'finds an item' do help.text('Lorem ipsum', id: :lorem) help.text('Dolor sit amet', id: :dolor) - help.find_item(:dolor).id.must_equal :dolor + _(help.find_item(:dolor).id).must_equal :dolor end it 'finds a nested item' do @@ -150,7 +150,7 @@ h.text('Dolor sit amet', id: :dolor) end help.at('Heading') do |h| - h.find_item(:dolor).id.must_equal :dolor + _(h.find_item(:dolor).id).must_equal :dolor end end end @@ -162,8 +162,8 @@ help.insert(:before, :old) do |h| h.text('new', id: :new) end - help.definition.first.id.must_equal :new - help.definition.count.must_equal 2 + _(help.definition.first.id).must_equal :new + _(help.definition.count).must_equal 2 end it 'should insert multiple items before old item' do @@ -172,8 +172,8 @@ h.text('new', id: :new) h.text('new2', id: :new2) end - help.definition.first.id.must_equal :new - help.definition.count.must_equal 3 + _(help.definition.first.id).must_equal :new + _(help.definition.count).must_equal 3 end it 'should work with labels' do @@ -183,8 +183,8 @@ help.insert(:before, 'section') do |h| h.text('text before section', id: :before_section) end - help.definition.first.id.must_equal :before_section - help.definition.count.must_equal 2 + _(help.definition.first.id).must_equal :before_section + _(help.definition.count).must_equal 2 end end @@ -194,9 +194,9 @@ help.insert(:after, :old) do |h| h.text('new', id: :new) end - help.definition[0].id.must_equal :old - help.definition[1].id.must_equal :new - help.definition.count.must_equal 2 + _(help.definition[0].id).must_equal :old + _(help.definition[1].id).must_equal :new + _(help.definition.count).must_equal 2 end it 'should insert multiple items after old item' do @@ -205,10 +205,10 @@ h.text('new', id: :new) h.text('new2', id: :new2) end - help.definition[0].id.must_equal :old - help.definition[1].id.must_equal :new - help.definition[2].id.must_equal :new2 - help.definition.count.must_equal 3 + _(help.definition[0].id).must_equal :old + _(help.definition[1].id).must_equal :new + _(help.definition[2].id).must_equal :new2 + _(help.definition.count).must_equal 3 end it 'should work with labels' do @@ -218,8 +218,8 @@ help.insert(:after, 'section') do |h| h.text('text before section', id: :after_section) end - help.definition[1].id.must_equal :after_section - help.definition.count.must_equal 2 + _(help.definition[1].id).must_equal :after_section + _(help.definition.count).must_equal 2 end end @@ -229,8 +229,8 @@ help.insert(:replace, :old) do |h| h.text('new', id: :new) end - help.definition.first.id.must_equal :new - help.definition.count.must_equal 1 + _(help.definition.first.id).must_equal :new + _(help.definition.count).must_equal 1 end it 'should replace the old help item with new ones' do @@ -239,9 +239,9 @@ h.text('new', id: :new) h.text('new2', id: :new2) end - help.definition[0].id.must_equal :new - help.definition[1].id.must_equal :new2 - help.definition.count.must_equal 2 + _(help.definition[0].id).must_equal :new + _(help.definition[1].id).must_equal :new2 + _(help.definition.count).must_equal 2 end it 'should work with labels' do @@ -251,8 +251,8 @@ help.insert(:replace, 'section') do |h| h.text('text instead of section', id: :instead_of_section) end - help.definition.first.id.must_equal :instead_of_section - help.definition.count.must_equal 1 + _(help.definition.first.id).must_equal :instead_of_section + _(help.definition.count).must_equal 1 end end end @@ -261,10 +261,10 @@ it 'should return self if path is empty' do help.text('foo', id: :foo) help.at([]) do |h| - h.definition.first.id.must_equal :foo + _(h.definition.first.id).must_equal :foo end help.at do |h| - h.definition.first.id.must_equal :foo + _(h.definition.first.id).must_equal :foo end end @@ -283,7 +283,7 @@ end end help.at([:first_section, :nested_section]) do |h| - h.definition.first.id.must_equal :nested_text + _(h.definition.first.id).must_equal :nested_text end end @@ -302,7 +302,7 @@ end end help.at(['first', 'nested section']) do |h| - h.definition.first.id.must_equal :nested_text + _(h.definition.first.id).must_equal :nested_text end end end diff --git a/test/unit/history_test.rb b/test/unit/history_test.rb index ce22d4fb..0fc0c7b2 100644 --- a/test/unit/history_test.rb +++ b/test/unit/history_test.rb @@ -20,15 +20,15 @@ describe "loading old history" do it "skips loading if the file does not exist" do - history = HammerCLI::ShellHistory.new(new_file.path) + HammerCLI::ShellHistory.new(new_file.path) - Readline::HISTORY.to_a.must_equal [] + _(Readline::HISTORY.to_a).must_equal [] end it "preseeds readline's history" do - history = HammerCLI::ShellHistory.new(history_file.path) + HammerCLI::ShellHistory.new(history_file.path) - Readline::HISTORY.to_a.must_equal ["line 1", "line 2"] + _(Readline::HISTORY.to_a).must_equal ["line 1", "line 2"] end end @@ -37,7 +37,7 @@ history = HammerCLI::ShellHistory.new(new_file.path) history.push("some command ") - File.exist?(new_file.path).must_equal true + _(File.exist?(new_file.path)).must_equal true end it "appends history to the given file" do @@ -45,21 +45,21 @@ history.push("some command ") history.push("another command ") - new_file.read.must_equal "some command\nanother command\n" + _(new_file.read).must_equal "some command\nanother command\n" end it "appends to readline's history" do history = HammerCLI::ShellHistory.new(history_file.path) history.push("line 3") - Readline::HISTORY.to_a.must_equal ["line 1", "line 2", "line 3"] + _(Readline::HISTORY.to_a).must_equal ["line 1", "line 2", "line 3"] end it "doesn't save exit command" do history = HammerCLI::ShellHistory.new(history_file.path) history.push("exit ") - Readline::HISTORY.to_a.must_equal ["line 1", "line 2"] + _(Readline::HISTORY.to_a).must_equal ["line 1", "line 2"] end end diff --git a/test/unit/i18n_test.rb b/test/unit/i18n_test.rb index 86e6e3f2..25c7bba6 100644 --- a/test/unit/i18n_test.rb +++ b/test/unit/i18n_test.rb @@ -42,7 +42,7 @@ def available? describe 'with fast_gettext >= 1.2.0' do it 'creates base merge repository' do - HammerCLI::I18n.translation_repository.class.must_equal FastGettext::TranslationRepository::Merge + _(HammerCLI::I18n.translation_repository.class).must_equal FastGettext::TranslationRepository::Merge end it 'registers available domains at gettext' do @@ -60,7 +60,7 @@ def available? HammerCLI::I18n.add_domain(domain1) HammerCLI::I18n.add_domain(domain2) HammerCLI::I18n.add_domain(unavailable_domain) - HammerCLI::I18n.domains.must_equal [domain1, domain2] + _(HammerCLI::I18n.domains).must_equal [domain1, domain2] end end end diff --git a/test/unit/logger_test.rb b/test/unit/logger_test.rb index 8dff9d15..81e84c1f 100644 --- a/test/unit/logger_test.rb +++ b/test/unit/logger_test.rb @@ -4,7 +4,7 @@ describe Logging::LogEvent do describe '#initialize_logger' do - let (:logger) { Logging::Logger.new(File.open('/dev/null')) } + let(:logger) { Logging::Logger.new(File.open('/dev/null')) } it "prints message to stderr when log dir can't be created" do log_dir = "/nonexistant/dir/logs" @@ -12,7 +12,7 @@ HammerCLI::Settings.load({:log_dir => log_dir}) - out, err = capture_io do + _, err = capture_io do HammerCLI::Logger::initialize_logger(logger) end @@ -31,7 +31,7 @@ Logging::LogEvent.add_data_filter(/pat/, 'mat') Logging.logger.root.debug "pat" Logging::LogEvent.data_filters.pop # clean the last filter - @log_output.read.must_include 'mat' + _(@log_output.read).must_include 'mat' end end end diff --git a/test/unit/main_test.rb b/test/unit/main_test.rb index 508e5ce9..fd65298e 100644 --- a/test/unit/main_test.rb +++ b/test/unit/main_test.rb @@ -15,12 +15,12 @@ it "should prioritize parameter" do cmd.run(["-uuser"]) - context[:username].must_equal "user" + _(context[:username]).must_equal "user" end it "should prioritize parameter 2" do cmd.run([]) - context[:username].must_equal nil + assert_nil context[:username] end end @@ -30,12 +30,12 @@ it "should prioritize parameter" do cmd.run(["-ppassword"]) - context[:password].must_equal "password" + _(context[:password]).must_equal "password" end it "should prioritize parameter" do cmd.run([]) - context[:password].must_equal nil + assert_nil context[:password] end end @@ -44,11 +44,11 @@ describe 'verbose' do it 'stores verbosity level into context' do cmd.run(['-v']) - context[:verbosity].must_equal HammerCLI::V_VERBOSE + _(context[:verbosity]).must_equal HammerCLI::V_VERBOSE cmd.run(['--no-verbose']) - context[:verbosity].must_equal HammerCLI::V_UNIX + _(context[:verbosity]).must_equal HammerCLI::V_UNIX cmd.run(['--quiet']) - context[:verbosity].must_equal HammerCLI::V_QUIET + _(context[:verbosity]).must_equal HammerCLI::V_QUIET end end end diff --git a/test/unit/modules_test.rb b/test/unit/modules_test.rb index eaab75ef..7fd910b7 100644 --- a/test/unit/modules_test.rb +++ b/test/unit/modules_test.rb @@ -28,26 +28,26 @@ def self.version describe "names" do it "must return list of modules" do - HammerCLI::Modules.names.must_equal ["hammer_cli_jerry", "hammer_cli_tom"] + _(HammerCLI::Modules.names).must_equal ["hammer_cli_jerry", "hammer_cli_tom"] end it "must return empty array by default" do HammerCLI::Settings.clear - HammerCLI::Modules.names.must_equal [] + _(HammerCLI::Modules.names).must_equal [] end end describe "find by name" do it "must return nil if the module does not exist" do - HammerCLI::Modules.find_by_name("hammer_cli_unknown").must_equal nil + assert_nil HammerCLI::Modules.find_by_name("hammer_cli_unknown") end it "must must find the module" do - HammerCLI::Modules.find_by_name("hammer_cli_jerry").must_equal HammerCliJerry + _(HammerCLI::Modules.find_by_name("hammer_cli_jerry")).must_equal HammerCliJerry end it "must find the module with capital CLI in it's name" do - HammerCLI::Modules.find_by_name("hammer_cli_tom").must_equal HammerCLITom + _(HammerCLI::Modules.find_by_name("hammer_cli_tom")).must_equal HammerCLITom end end @@ -67,7 +67,7 @@ def self.version }) HammerCLI::Modules.stubs(:load).returns(nil) HammerCLI::Modules.stubs(:loaded_modules).returns(['hammer_cli_jerry', 'hammer_cli_tom']) - proc { HammerCLI::Modules.load_all }.must_raise HammerCLI::ModuleDisabledButRequired + assert_raises(HammerCLI::ModuleDisabledButRequired) { HammerCLI::Modules.load_all } end end @@ -85,15 +85,15 @@ def self.version it "must log module's name and version" do HammerCLI::Modules.expects(:require_module).with("hammer_cli_tom") HammerCLI::Modules.load("hammer_cli_tom") - @log_output.readline.strip.must_equal "INFO Modules : Extension module hammer_cli_tom (0.0.1) loaded." + _(@log_output.readline.strip).must_equal "INFO Modules : Extension module hammer_cli_tom (0.0.1) loaded." end it "must return true when load succeeds" do - HammerCLI::Modules.load("hammer_cli_tom").must_equal true + _(HammerCLI::Modules.load("hammer_cli_tom")).must_equal true end it "must return true when load! succeeds" do - HammerCLI::Modules.load!("hammer_cli_tom").must_equal true + _(HammerCLI::Modules.load!("hammer_cli_tom")).must_equal true end end @@ -105,21 +105,21 @@ def self.version it "must log an error if the load! fails" do capture_io do - proc { HammerCLI::Modules.load!("hammer_cli_tom") }.must_raise LoadError + assert_raises(LoadError) { HammerCLI::Modules.load!("hammer_cli_tom") } end - @log_output.readline.strip.must_equal @error_msg + _(@log_output.readline.strip).must_equal @error_msg end it "must log an error if the load fails" do capture_io do HammerCLI::Modules.load("hammer_cli_tom") end - @log_output.readline.strip.must_equal @error_msg + _(@log_output.readline.strip).must_equal @error_msg end it "must return false when load fails" do capture_io do - HammerCLI::Modules.load("hammer_cli_tom").must_equal false + _(HammerCLI::Modules.load("hammer_cli_tom")).must_equal false end end end @@ -132,25 +132,24 @@ def self.version end it "must log an error if the load! fails" do - proc { - proc { - HammerCLI::Modules.load!("hammer_cli_tom") - }.must_output("#{@warning_msg}\n", "") - }.must_raise RuntimeError - @log_output.readline.strip.must_equal @error_msg + out, _ = capture_io do + assert_raises(RuntimeError) { HammerCLI::Modules.load!('hammer_cli_tom') } + end + _(out).must_equal "#{@warning_msg}\n" + _(@log_output.readline.strip).must_equal @error_msg end it "must log an error if the load fails" do - proc { + assert_output("#{@warning_msg}\n", "") do HammerCLI::Modules.load("hammer_cli_tom") - }.must_output("#{@warning_msg}\n", "") - @log_output.readline.strip.must_equal @error_msg + end + _(@log_output.readline.strip).must_equal @error_msg end it "must return false when load fails" do - proc { - HammerCLI::Modules.load("hammer_cli_tom").must_equal false - }.must_output("#{@warning_msg}\n", "") + assert_output("#{@warning_msg}\n", "") do + _(HammerCLI::Modules.load("hammer_cli_tom")).must_equal false + end end end diff --git a/test/unit/option_builder_test.rb b/test/unit/option_builder_test.rb index eb831969..a9822201 100644 --- a/test/unit/option_builder_test.rb +++ b/test/unit/option_builder_test.rb @@ -17,7 +17,7 @@ builder.stubs(:build).returns(options) container.builders = [builder, builder] - container.build.must_equal options+options + _(container.build).must_equal options+options end it "passes build parameters from contained builders" do diff --git a/test/unit/options/matcher_test.rb b/test/unit/options/matcher_test.rb index 84f2dc0c..5ae33177 100644 --- a/test/unit/options/matcher_test.rb +++ b/test/unit/options/matcher_test.rb @@ -12,17 +12,17 @@ matcher = HammerCLI::Options::Matcher.new( :long_switch => '--opt_a1' ) - matcher.matches?(option_a1).must_equal true - matcher.matches?(option_a2).must_equal false + _(matcher.matches?(option_a1)).must_equal true + _(matcher.matches?(option_a2)).must_equal false end it "tests regex" do matcher = HammerCLI::Options::Matcher.new( :long_switch => /--opt_a.*/ ) - matcher.matches?(option_a1).must_equal true - matcher.matches?(option_a2).must_equal true - matcher.matches?(option_b1).must_equal false + _(matcher.matches?(option_a1)).must_equal true + _(matcher.matches?(option_a2)).must_equal true + _(matcher.matches?(option_b1)).must_equal false end it "tests multiple conditions" do @@ -30,32 +30,32 @@ :long_switch => /--opt_.1/, :type => 'OPT_A' ) - matcher.matches?(option_a1).must_equal true - matcher.matches?(option_a2).must_equal false - matcher.matches?(option_a3).must_equal false - matcher.matches?(option_b1).must_equal false + _(matcher.matches?(option_a1)).must_equal true + _(matcher.matches?(option_a2)).must_equal false + _(matcher.matches?(option_a3)).must_equal false + _(matcher.matches?(option_b1)).must_equal false end it "tests multiple values or regexes" do matcher = HammerCLI::Options::Matcher.new( :long_switch => [/--opt_.1/, "--opt_a3"] ) - matcher.matches?(option_a1).must_equal true - matcher.matches?(option_a2).must_equal false - matcher.matches?(option_a3).must_equal true - matcher.matches?(option_b1).must_equal true + _(matcher.matches?(option_a1)).must_equal true + _(matcher.matches?(option_a2)).must_equal false + _(matcher.matches?(option_a3)).must_equal true + _(matcher.matches?(option_b1)).must_equal true end it "tests nil for unknown methods" do matcher = HammerCLI::Options::Matcher.new( :unknown_method => "some value" ) - matcher.matches?(option_a1).must_equal false + _(matcher.matches?(option_a1)).must_equal false matcher = HammerCLI::Options::Matcher.new( :unknown_method => nil ) - matcher.matches?(option_a1).must_equal true + _(matcher.matches?(option_a1)).must_equal true end end diff --git a/test/unit/options/normalizers_test.rb b/test/unit/options/normalizers_test.rb index 56201928..61f8bb85 100644 --- a/test/unit/options/normalizers_test.rb +++ b/test/unit/options/normalizers_test.rb @@ -8,7 +8,7 @@ let(:formatter) { HammerCLI::Options::Normalizers::AbstractNormalizer.new } it "should raise exception on format" do - proc { formatter.format(nil) }.must_raise NotImplementedError + _{ formatter.format(nil) }.must_raise NotImplementedError end end @@ -18,19 +18,19 @@ let(:formatter) { HammerCLI::Options::Normalizers::Default.new } it "should not change any value" do - formatter.format('value').must_equal 'value' + _(formatter.format('value')).must_equal 'value' end it "should not change nil value" do - formatter.format(nil).must_be_nil + _(formatter.format(nil)).must_be_nil end it "has empty description" do - formatter.description.must_equal '' + _(formatter.description).must_equal '' end it "has empty completion" do - formatter.complete('test').must_equal [] + _(formatter.complete('test')).must_equal [] end end @@ -39,44 +39,44 @@ let(:formatter) { HammerCLI::Options::Normalizers::List.new } it "should return empty array on nil" do - formatter.format(nil).must_equal [] + _(formatter.format(nil)).must_equal [] end it "should return empty array on empty string" do - formatter.format("").must_equal [] + _(formatter.format("")).must_equal [] end it "should parse a string" do - formatter.format("a").must_equal ['a'] + _(formatter.format("a")).must_equal ['a'] end it "should parse a number" do - formatter.format("2").must_equal [2] + _(formatter.format("2")).must_equal [2] end it "should parse a comma separated string" do - formatter.format("a,b,c").must_equal ['a', 'b', 'c'] + _(formatter.format("a,b,c")).must_equal ['a', 'b', 'c'] end it "should parse a comma separated string with values including comma" do - formatter.format('a,b,"c,d"').must_equal ['a', 'b', 'c,d'] + _(formatter.format('a,b,"c,d"')).must_equal ['a', 'b', 'c,d'] end it "should parse a comma separated string with values including comma (doublequotes)" do - formatter.format("a,b,'c,d'").must_equal ['a', 'b', 'c,d'] + _(formatter.format("a,b,'c,d'")).must_equal ['a', 'b', 'c,d'] end it "should parse a comma separated string containig double quotes" do - formatter.format('a,b,\"c\"').must_equal ['a', 'b', '"c"'] + _(formatter.format('a,b,\"c\"')).must_equal ['a', 'b', '"c"'] end it "should catch quoting errors" do - proc { formatter.format('1,"3,4""s') }.must_raise ArgumentError + _{ formatter.format('1,"3,4""s') }.must_raise ArgumentError end it "should accept and parse JSON" do value = {'name' => 'bla', 'value' => 1} - formatter.format(value.to_json).must_equal([value]) + _(formatter.format(value.to_json)).must_equal([value]) end end @@ -102,19 +102,19 @@ let(:formatter) { HammerCLI::Options::Normalizers::ListNested.new(param.params) } it "should accept and parse JSON" do - formatter.format("{\"name\":\"bla\", \"value\":1}").must_equal( + _(formatter.format("{\"name\":\"bla\", \"value\":1}")).must_equal( JSON.parse("{\"name\":\"bla\", \"value\":1}") ) end it "should parse simple input" do - formatter.format("name=test\\,value=1,name=other\\,value=2").must_equal( + _(formatter.format("name=test\\,value=1,name=other\\,value=2")).must_equal( [{'name' => 'test', 'value' => '1'}, {'name' => 'other', 'value' => '2'}] ) end it "should parse unexpected input" do - formatter.format("name=test\\,value=1,name=other\\,value=2,unexp=doe").must_equal( + _(formatter.format("name=test\\,value=1,name=other\\,value=2,unexp=doe")).must_equal( [ {'name' => 'test', 'value' => '1'}, {'name' => 'other', 'value' => '2'}, {'unexp' => 'doe'} @@ -123,15 +123,15 @@ end it "should accept arrays" do - formatter.format("name=test\\,value=1,name=other\\,value=[1\\,2\\,3]").must_equal( + _(formatter.format("name=test\\,value=1,name=other\\,value=[1\\,2\\,3]")).must_equal( [{'name' => 'test', 'value' => '1'}, {'name' => 'other', 'value' => ['1', '2', '3']}] ) end it "should accept hashes" do - formatter.format( + _(formatter.format( "name=test\\,value={key=key1\\,value=1},name=other\\,value={key=key2\\,value=2}" - ).must_equal( + )).must_equal( [ {'name' => 'test', 'value' => {'key' => 'key1', 'value' => '1'}}, {'name' => 'other', 'value' => {'key' => 'key2', 'value' => '2'}}, @@ -140,10 +140,10 @@ end it "should accept combined input" do - formatter.format( + _(formatter.format( "name=foo\\,value=1\\,adds=[1\\,2\\,3]\\,cpu={name=ddd\\,type=abc}," \ "name=bar\\,value=2\\,adds=[2\\,2\\,2]\\,cpu={name=ccc\\,type=cba}" - ).must_equal( + )).must_equal( [ {'name' => 'foo', 'value' => '1', 'adds' => ['1','2','3'], 'cpu' => {'name' => 'ddd', 'type' => 'abc'}}, {'name' => 'bar', 'value' => '2', 'adds' => ['2','2','2'], 'cpu' => {'name' => 'ccc', 'type' => 'cba'}} @@ -157,84 +157,104 @@ let(:formatter) { HammerCLI::Options::Normalizers::KeyValueList.new } it "should return empty array on nil" do - formatter.format(nil).must_equal({}) + _(formatter.format(nil)).must_equal({}) end it "should return empty array on empty string" do - formatter.format("").must_equal({}) + _(formatter.format("")).must_equal({}) end it "should parse a string" do - proc { formatter.format("a") }.must_raise ArgumentError + _{ formatter.format("a") }.must_raise ArgumentError end describe 'key=value format' do + it 'should parse values with commas' do + _(formatter.format('a=1,2,b=3,4')).must_equal({ 'a' => '1,2', 'b' => '3,4'}) + end + it "should parse a comma separated string" do - formatter.format("a=1,b=2,c=3").must_equal({'a' => '1', 'b' => '2', 'c' => '3'}) + _(formatter.format("a=1,b=2,c=3")).must_equal({'a' => '1', 'b' => '2', 'c' => '3'}) end it "should parse a comma separated string with spaces" do - formatter.format("a= 1 , b = 2 ,c =3").must_equal({'a' => '1', 'b' => '2', 'c' => '3'}) + _(formatter.format("a= 1 , b = 2 ,c =3")).must_equal({'a' => '1', 'b' => '2', 'c' => '3'}) end - it "should parse a comma separated string with spaces using single quotes" do - formatter.format("a= ' 1 ' , b =' 2',c ='3'").must_equal({'a' => ' 1 ', 'b' => ' 2', 'c' => '3'}) + it 'should parse a comma separated string with spaces using single quotes' do + _(formatter.format("a= ' 1 ' , b =' 2',c ='3'")).must_equal({ 'a' => "' 1 '", 'b' => "' 2'", 'c' => "'3'" }) end - it "should parse a comma separated string with spaces using double quotes" do - formatter.format("a= \" 1 \" , b =\" 2\",c =\"3\"").must_equal({'a' => ' 1 ', 'b' => ' 2', 'c' => '3'}) + it 'should parse a comma separated string with spaces using double quotes' do + _(formatter.format('a= " 1 " , b =" 2",c ="3"')).must_equal({ 'a' => '" 1 "', 'b' => '" 2"', 'c' => '"3"' }) end - it "should deal with equal sign in value" do - formatter.format("a=1,b='2=2',c=3").must_equal({'a' => '1', 'b' => '2=2', 'c' => '3'}) + it 'should deal with equal sign in string value' do + _(formatter.format("a=1,b='2=2',c=3")).must_equal({ 'a' => '1', 'b' => "'2=2'", 'c' => '3' }) + end + + it 'should deal with equal sign in value' do + _(formatter.format('a=1,b=2=2,c=3')).must_equal({ 'a' => '1', 'b' => '2=2', 'c' => '3' }) end it "should parse arrays" do - formatter.format("a=1,b=[1,2,3],c=3").must_equal({'a' => '1', 'b' => ['1', '2', '3'], 'c' => '3'}) + _(formatter.format("a=1,b=[1,2,3],c=3")).must_equal({'a' => '1', 'b' => ['1', '2', '3'], 'c' => '3'}) end it "should parse arrays with spaces" do - formatter.format("a=1,b=[1, 2, 3],c=3").must_equal({'a' => '1', 'b' => ['1', '2', '3'], 'c' => '3'}) + _(formatter.format("a=1,b=[1, 2, 3],c=3")).must_equal({'a' => '1', 'b' => ['1', '2', '3'], 'c' => '3'}) + end + + it 'should parse arrays with spaces using by single quotes' do + _(formatter.format("a=1,b=['1 1', ' 2 ', ' 3 3'],c=3")).must_equal( + { 'a' => '1', 'b' => ["'1 1'", "' 2 '", "' 3 3'"], 'c' => '3' } + ) end - it "should parse arrays with spaces using by single quotes" do - formatter.format("a=1,b=['1 1', ' 2 ', ' 3 3'],c=3").must_equal({'a' => '1', 'b' => ['1 1', ' 2 ', ' 3 3'], 'c' => '3'}) + it 'should parse arrays with spaces using by double quotes' do + _(formatter.format('a=1,b=["1 1", " 2 ", " 3 3"],c=3')).must_equal( + { 'a' => '1', 'b' => ['"1 1"', '" 2 "', '" 3 3"'], 'c' => '3' } + ) end - it "should parse arrays with spaces using by double quotes" do - formatter.format("a=1,b=[\"1 1\", \" 2 \", \" 3 3\"],c=3").must_equal({'a' => '1', 'b' => ['1 1', ' 2 ', ' 3 3'], 'c' => '3'}) + it 'should parse arrays with spaces' do + _(formatter.format('a=1,b=[1 1, 2 , 3 3],c=3')).must_equal({ 'a' => '1', 'b' => ['1 1', '2', '3 3'], 'c' => '3' }) end it "should parse array with one item" do - formatter.format("a=1,b=[abc],c=3").must_equal({'a' => '1', 'b' => ['abc'], 'c' => '3'}) + _(formatter.format("a=1,b=[abc],c=3")).must_equal({'a' => '1', 'b' => ['abc'], 'c' => '3'}) end it "should parse empty array" do - formatter.format("a=1,b=[],c=3").must_equal({'a' => '1', 'b' => [], 'c' => '3'}) + _(formatter.format("a=1,b=[],c=3")).must_equal({'a' => '1', 'b' => [], 'c' => '3'}) end it "should parse hash with one item" do - formatter.format("a=1,b={key=abc,value=abc},c=3").must_equal( + _(formatter.format("a=1,b={key=abc,value=abc},c=3")).must_equal( {'a' => '1', 'b' => {'key' => 'abc', 'value' => 'abc'}, 'c' => '3'} ) end it "should parse empty hash" do - formatter.format("a=1,b={},c=3").must_equal({'a' => '1', 'b' => {}, 'c' => '3'}) + _(formatter.format("a=1,b={},c=3")).must_equal({'a' => '1', 'b' => {}, 'c' => '3'}) end it "should parse a comma separated string 2" do - proc { formatter.format("a=1,b,c=3") }.must_raise ArgumentError + _(formatter.format("a=1,b,c=3")).must_equal({ 'a' => '1,b', 'c' => '3' }) + end + + it 'should parse explicit strings' do + _(formatter.format('name="*"')).must_equal({ 'name' => '"*"' }) end end describe 'json format' do it 'parses arrays' do - formatter.format('["a", "b", 1]').must_equal(['a', 'b', 1]) + _(formatter.format('["a", "b", 1]')).must_equal(['a', 'b', 1]) end it 'parses objects' do - formatter.format('{"a": ["b", 1]}').must_equal({'a' => ['b', 1]}) + _(formatter.format('{"a": ["b", 1]}')).must_equal({'a' => ['b', 1]}) end end end @@ -243,11 +263,11 @@ let(:formatter) { HammerCLI::Options::Normalizers::Number.new } it "should return number on numeric values" do - formatter.format("1").must_equal 1 + _(formatter.format("1")).must_equal 1 end it "should raise ArgumentError on non-numeric values" do - proc { formatter.format("a") }.must_raise ArgumentError + _{ formatter.format("a") }.must_raise ArgumentError end end @@ -256,59 +276,59 @@ let(:formatter) { HammerCLI::Options::Normalizers::Bool.new } it "should return true on true" do - formatter.format("true").must_equal(true) - formatter.format("TRUE").must_equal(true) + _(formatter.format("true")).must_equal(true) + _(formatter.format("TRUE")).must_equal(true) end it "should return true on t" do - formatter.format("t").must_equal(true) - formatter.format("T").must_equal(true) + _(formatter.format("t")).must_equal(true) + _(formatter.format("T")).must_equal(true) end it "should return true on yes" do - formatter.format("yes").must_equal(true) - formatter.format("YES").must_equal(true) + _(formatter.format("yes")).must_equal(true) + _(formatter.format("YES")).must_equal(true) end it "should return true on y" do - formatter.format("y").must_equal(true) - formatter.format("Y").must_equal(true) + _(formatter.format("y")).must_equal(true) + _(formatter.format("Y")).must_equal(true) end it "should return true on 1" do - formatter.format("1").must_equal(true) + _(formatter.format("1")).must_equal(true) end it "should return false on false" do - formatter.format("false").must_equal(false) - formatter.format("FALSE").must_equal(false) + _(formatter.format("false")).must_equal(false) + _(formatter.format("FALSE")).must_equal(false) end it "should return false on f" do - formatter.format("f").must_equal(false) - formatter.format("F").must_equal(false) + _(formatter.format("f")).must_equal(false) + _(formatter.format("F")).must_equal(false) end it "should return false on no" do - formatter.format("no").must_equal(false) - formatter.format("NO").must_equal(false) + _(formatter.format("no")).must_equal(false) + _(formatter.format("NO")).must_equal(false) end it "should return false on n" do - formatter.format("n").must_equal(false) - formatter.format("N").must_equal(false) + _(formatter.format("n")).must_equal(false) + _(formatter.format("N")).must_equal(false) end it "should return false on 0" do - formatter.format("0").must_equal(false) + _(formatter.format("0")).must_equal(false) end it "should raise exception on nil" do - proc { formatter.format(nil) }.must_raise ArgumentError + _{ formatter.format(nil) }.must_raise ArgumentError end it "should raise exception on other values" do - proc { formatter.format('unknown') }.must_raise ArgumentError + _{ formatter.format('unknown') }.must_raise ArgumentError end end @@ -317,24 +337,24 @@ it "should return a hash on valid json file" do file = File.join(File.dirname(__FILE__), '../fixtures/json_input/valid.json') - formatter.format(file).must_equal({ "units" => [ { "name" => "zip", "version" => "10.0" }, + _(formatter.format(file)).must_equal({ "units" => [ { "name" => "zip", "version" => "10.0" }, { "name" => "zap", "version" => "9.0" }] }) end it "should raise exception on invalid json file contents" do file = File.join(File.dirname(__FILE__), '../fixtures/json_input/invalid.json') - proc { formatter.format(file) }.must_raise ArgumentError + _{ formatter.format(file) }.must_raise ArgumentError end it "should return a hash on valid json string" do json_string = '{ "units":[{ "name":"zip", "version":"10.0" }, { "name":"zap", "version":"9.0" }] }' - formatter.format(json_string).must_equal({ "units" => [ { "name" => "zip", "version" => "10.0" }, + _(formatter.format(json_string)).must_equal({ "units" => [ { "name" => "zip", "version" => "10.0" }, { "name" => "zap", "version" => "9.0" }] }) end it "should raise exception on invalid json string" do json_string = "{ units:[{ name:zip, version:10.0 }, { name:zap, version:9.0 }] }" - proc { formatter.format(json_string) }.must_raise ArgumentError + _{ formatter.format(json_string) }.must_raise ArgumentError end end @@ -344,19 +364,19 @@ let(:formatter) { HammerCLI::Options::Normalizers::Enum.new ['a', 'b'] } it "should return return value when in the list" do - formatter.format("a").must_equal("a") + _(formatter.format("a")).must_equal("a") end it "should rise argument error when the value is nil" do - proc { formatter.format(nil) }.must_raise ArgumentError + _{ formatter.format(nil) }.must_raise ArgumentError end it "should rise argument error when the value is not in the list" do - proc { formatter.format("c") }.must_raise ArgumentError + _{ formatter.format("c") }.must_raise ArgumentError end it "should list allowed values in description" do - formatter.description.must_equal("Possible value(s): 'a', 'b'") + _(formatter.description).must_equal("Possible value(s): 'a', 'b'") end end @@ -366,32 +386,32 @@ let (:formatter) { HammerCLI::Options::Normalizers::EnumList.new ['1', '2', 'a', 'b'] } it "should return array of values when the values are allowed" do - formatter.format("a,b,1").must_equal(['a', 'b', '1']) + _(formatter.format("a,b,1")).must_equal(['a', 'b', '1']) end it "should raise argument error when any of the values isn't in the list" do - proc { formatter.format("c,d") }.must_raise ArgumentError - proc { formatter.format('1,x') }.must_raise ArgumentError + _{ formatter.format("c,d") }.must_raise ArgumentError + _{ formatter.format('1,x') }.must_raise ArgumentError end it "should remove duplicate values" do - formatter.format("a,a,a,a,a").must_equal ['a'] + _(formatter.format("a,a,a,a,a")).must_equal ['a'] end it "should not change order of the values" do - formatter.format("a,b,2,1").must_equal ['a', 'b', '2', '1'] + _(formatter.format("a,b,2,1")).must_equal ['a', 'b', '2', '1'] end it "should return empty array on nil" do - formatter.format(nil).must_equal [] + _(formatter.format(nil)).must_equal [] end it "should return empty array on empty string" do - formatter.format("").must_equal [] + _(formatter.format("")).must_equal [] end it "should list allowed values in description" do - formatter.description.must_equal("Any combination (comma separated list) of ''1', '2', 'a', 'b''") + _(formatter.description).must_equal("Any combination (comma separated list) of ''1', '2', 'a', 'b''") end end @@ -401,23 +421,23 @@ let(:formatter) { HammerCLI::Options::Normalizers::DateTime.new } it "should raise argument error when the value is nil" do - proc { formatter.format(nil) }.must_raise ArgumentError + _{ formatter.format(nil) }.must_raise ArgumentError end it "should raise argument error when the value is not a date" do - proc { formatter.format("not a date") }.must_raise ArgumentError + _{ formatter.format("not a date") }.must_raise ArgumentError end it "should accept and parse iso8601" do - formatter.format("1986-01-01T08:30:20").must_equal("1986-01-01T08:30:20+00:00") + _(formatter.format("1986-01-01T08:30:20")).must_equal("1986-01-01T08:30:20+00:00") end it "should accept and parse YYYY-MM-DD HH:MM:SS" do - formatter.format("1986-01-01 08:30:20").must_equal("1986-01-01T08:30:20+00:00") + _(formatter.format("1986-01-01 08:30:20")).must_equal("1986-01-01T08:30:20+00:00") end it "should accept and parse YYYY/MM/DD HH:MM:SS" do - formatter.format("1986/01/01 08:30:20").must_equal("1986-01-01T08:30:20+00:00") + _(formatter.format("1986/01/01 08:30:20")).must_equal("1986-01-01T08:30:20+00:00") end end diff --git a/test/unit/options/option_definition_test.rb b/test/unit/options/option_definition_test.rb index 3810ba6b..6edc1b58 100644 --- a/test/unit/options/option_definition_test.rb +++ b/test/unit/options/option_definition_test.rb @@ -25,6 +25,10 @@ class TestDeprecatedOptionCmd < HammerCLI::AbstractCommand option "--another-deprecated", "OLD_OPTION", "Test old option", :context_target => :old_option, :deprecated => "It is going to be removed" + + def find_option(switch) + super(switch) + end end def opt_with_deprecation(deprecation) @@ -37,7 +41,7 @@ def opt_with_deprecation(deprecation) opt = TestOptionFormattersCmd.find_option("--test-format") opt_instance = opt.of(TestOptionFormattersCmd.new([])) - opt_instance.read.must_equal '>>>A<<<' + _(opt_instance.read).must_equal '>>>A<<<' end it "should use formatter as a conversion block" do @@ -50,7 +54,7 @@ def opt_with_deprecation(deprecation) else opt_instance.take('B') end - opt_instance.read.must_equal '>>>B<<<' + _(opt_instance.read).must_equal '>>>B<<<' end end @@ -59,33 +63,41 @@ def opt_with_deprecation(deprecation) context = {} cmd = TestDeprecatedOptionCmd.new("", context) - out, err = capture_io { cmd.run(["--another-deprecated=VALUE"]) } - err.must_match /Warning: Option --another-deprecated is deprecated. It is going to be removed/ - context[:old_option].must_equal "VALUE" + _, err = capture_io { cmd.run(["--another-deprecated=VALUE"]) } + _(err).must_match(/Warning: Option --another-deprecated is deprecated. It is going to be removed/) + _(context[:old_option]).must_equal "VALUE" end it "prints deprecation warning (extended version)" do context = {} cmd = TestDeprecatedOptionCmd.new("", context) - out, err = capture_io { cmd.run(["--deprecated=VALUE"]) } - err.must_match /Warning: Option --deprecated is deprecated. Use --test-option instead/ - context[:test_option].must_equal "VALUE" + _, err = capture_io { cmd.run(["--deprecated=VALUE"]) } + _(err).must_match(/Warning: Option --deprecated is deprecated. Use --test-option instead/) + _(context[:test_option]).must_equal "VALUE" + end + + it "doesn't print deprecation warning if the option is not used" do + context = {} + cmd = TestDeprecatedOptionCmd.new('', context) + cmd.find_option('--deprecated') + _out, err = capture_io { cmd.run([]) } + _(err).must_equal '' end it 'shows depracated message in help' do opt = opt_with_deprecation("Use --better-switch instead") - opt.description.must_equal "Test option (Deprecated: Use --better-switch instead)" + _(opt.description).must_equal "Test option (Deprecated: Use --better-switch instead)" end it 'shows flag specific depracated message in help' do opt = opt_with_deprecation('--test-option' => "Use --better-switch instead") - opt.description.must_equal "Test option (--test-option is deprecated: Use --better-switch instead)" + _(opt.description).must_equal "Test option (--test-option is deprecated: Use --better-switch instead)" end it 'shows multiple flag specific depracated messages in help' do opt = opt_with_deprecation('--test-option' => "Use --better-switch instead", '--test-option2' => 'This is deprecated too') - opt.description.must_equal "Test option (--test-option is deprecated: Use --better-switch instead, --test-option2 is deprecated: This is deprecated too)" + _(opt.description).must_equal "Test option (--test-option is deprecated: Use --better-switch instead, --test-option2 is deprecated: This is deprecated too)" end end @@ -94,8 +106,7 @@ def opt_with_deprecation(deprecation) context = {} cmd = TestOptionFormattersCmd.new("", context) cmd.run(["--test-context=VALUE"]) - context[:test_option].must_equal "VALUE" + _(context[:test_option]).must_equal "VALUE" end end end - diff --git a/test/unit/options/option_family_test.rb b/test/unit/options/option_family_test.rb index 8a99aa27..9bedf60a 100644 --- a/test/unit/options/option_family_test.rb +++ b/test/unit/options/option_family_test.rb @@ -15,34 +15,34 @@ describe 'switch' do it 'returns nil if family is empty' do - family.switch.must_be_nil + _(family.switch).must_be_nil end it 'returns parent switch if family has no children' do family.parent('--test-one', '', '') - family.switch.must_equal '--test-one' + _(family.switch).must_equal '--test-one' end it 'returns switch based on members' do - full_family.switch.must_equal '--test[-two|-one]' + _(full_family.switch).must_equal '--test[-two|-one]' end end describe 'description' do it 'returns parent description if nothing passed to initializer' do - full_family.description.must_equal full_family.head.help[1] + _(full_family.description).must_equal full_family.head.help[1] end it 'returns description with deprecation message' do - full_family.description.must_equal 'Test (--test-one is deprecated: Use --test-two instead)' + _(full_family.description).must_equal 'Test (--test-one is deprecated: Use --test-two instead)' end end describe 'adopt' do it 'appends an option to children' do full_family.adopt(third_option) - full_family.children.size.must_equal 2 - third_option.family.must_equal full_family + _(full_family.children.size).must_equal 2 + _(third_option.family).must_equal full_family end end end diff --git a/test/unit/options/sources/saved_defaults_test.rb b/test/unit/options/sources/saved_defaults_test.rb index 1a63b531..9830f920 100644 --- a/test/unit/options/sources/saved_defaults_test.rb +++ b/test/unit/options/sources/saved_defaults_test.rb @@ -20,10 +20,6 @@ @defaults.expects(:get_defaults).with('--test-multi1').returns(:first_value) current_result = {} - expected_result = { - :different_attr_name => 1, - :multiple_switches_option => :first_value - } @logger.expects(:info).with('Custom default value 1 was used for attribute --test') @logger.expects(:info).with('Custom default value first_value was used for attribute --test-multi1') diff --git a/test/unit/options/validators/dsl_test.rb b/test/unit/options/validators/dsl_test.rb index f2f9f24e..b9a5e035 100644 --- a/test/unit/options/validators/dsl_test.rb +++ b/test/unit/options/validators/dsl_test.rb @@ -22,7 +22,7 @@ describe "exist?" do it "throws not implemented error" do constraint = cls.new(options, option_values, [:option_a, :option_b, :option_c]) - proc{ constraint.exist? }.must_raise NotImplementedError + _{ constraint.exist? }.must_raise NotImplementedError end end @@ -30,7 +30,7 @@ it "should raise exception when exist? returns true" do constraint = cls.new(options, option_values, []) constraint.stubs(:exist?).returns(true) - proc{ constraint.rejected }.must_raise HammerCLI::Options::Validators::ValidationError + _{ constraint.rejected }.must_raise HammerCLI::Options::Validators::ValidationError end it "should raise exception with a message" do @@ -39,14 +39,14 @@ begin constraint.rejected :msg => "CUSTOM MESSAGE" rescue HammerCLI::Options::Validators::ValidationError => e - e.message.must_equal "CUSTOM MESSAGE" + _(e.message).must_equal "CUSTOM MESSAGE" end end it "should return nil when exist? returns true" do constraint = cls.new(options, option_values, []) constraint.stubs(:exist?).returns(false) - constraint.rejected.must_equal nil + assert_nil constraint.rejected end end @@ -54,7 +54,7 @@ it "should raise exception when exist? returns true" do constraint = cls.new(options, option_values, []) constraint.stubs(:exist?).returns(false) - proc{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError + _{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError end it "should raise exception with a message" do @@ -63,14 +63,14 @@ begin constraint.rejected :msg => "CUSTOM MESSAGE" rescue HammerCLI::Options::Validators::ValidationError => e - e.message.must_equal "CUSTOM MESSAGE" + _(e.message).must_equal "CUSTOM MESSAGE" end end it "should return nil when exist? returns true" do constraint = cls.new(options, option_values, []) constraint.stubs(:exist?).returns(true) - constraint.required.must_equal nil + assert_nil constraint.required end end @@ -84,17 +84,17 @@ it "should return true when no options are passed" do constraint = cls.new(options, option_values, []) - constraint.exist?.must_equal true + _(constraint.exist?).must_equal true end it "should return true when all the options exist" do constraint = cls.new(options, option_values, [:option_a, :option_b, :option_c]) - constraint.exist?.must_equal true + _(constraint.exist?).must_equal true end it "should return false when one of the options is missing" do constraint = cls.new(options, option_values, [:option_a, :option_b, :option_c, :option_unset_d]) - constraint.exist?.must_equal false + _(constraint.exist?).must_equal false end end @@ -106,50 +106,50 @@ describe "exist?" do it "should return true when the option exist" do constraint = cls.new(options, option_values, :option_a) - constraint.exist?.must_equal true + _(constraint.exist?).must_equal true end it "should return false when the option is missing" do constraint = cls.new(options, option_values, :option_unset_d) - constraint.exist?.must_equal false + _(constraint.exist?).must_equal false end end describe "#rejected" do it "returns nil when the option is missing" do constraint = cls.new(options, option_values, :option_unset_d) - constraint.rejected.must_equal nil + assert_nil constraint.rejected end it "raises exception when the option is present" do constraint = cls.new(options, option_values, :option_a) - e = proc{ constraint.rejected }.must_raise HammerCLI::Options::Validators::ValidationError - e.message.must_equal "You can't set option --option-a." + e = _{ constraint.rejected }.must_raise HammerCLI::Options::Validators::ValidationError + _(e.message).must_equal "You can't set option --option-a." end end describe "#required" do it "returns nil when the option exist" do constraint = cls.new(options, option_values, :option_a) - constraint.required.must_equal nil + assert_nil constraint.required end it "raises exception when the option is present" do constraint = cls.new(options, option_values, :option_unset_d) - e = proc{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError - e.message.must_equal 'Option --option-unset-d is required.' + e = _{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError + _(e.message).must_equal 'Option --option-unset-d is required.' end end describe "#value" do it "returns value of the option" do constraint = cls.new(options, option_values, :option_a) - constraint.value.must_equal 1 + _(constraint.value).must_equal 1 end it "returns nil when the option is missing" do constraint = cls.new(options, option_values, :option_unset_d) - constraint.value.must_equal nil + assert_nil constraint.value end end end @@ -162,17 +162,17 @@ it "should return true when no options are passed" do constraint = cls.new(options, option_values, []) - constraint.exist?.must_equal true + _(constraint.exist?).must_equal true end it "should return true when one of the options exist" do constraint = cls.new(options, option_values, [:option_a, :option_unset_d, :option_unset_e]) - constraint.exist?.must_equal true + _(constraint.exist?).must_equal true end it "should return false when all the options are missing" do constraint = cls.new(options, option_values, [:option_unset_d, :option_unset_e]) - constraint.exist?.must_equal false + _(constraint.exist?).must_equal false end end @@ -183,51 +183,51 @@ let(:cls) { HammerCLI::Options::Validators::DSL::OneOfConstraint } it "raises exception when nothing to check is set" do - e = proc{ cls.new(options, option_values, []) }.must_raise RuntimeError - e.message.must_equal 'Set at least one expected option' + e = _{ cls.new(options, option_values, []) }.must_raise RuntimeError + _(e.message).must_equal 'Set at least one expected option' end describe "#exist?" do it "should return true when one of the options exist" do constraint = cls.new(options, option_values, [:option_a, :option_unset_d, :option_unset_e]) - constraint.exist?.must_equal true + _(constraint.exist?).must_equal true end it "should return false when the option isn't present" do constraint = cls.new(options, option_values, [:option_unset_d, :option_unset_e]) - constraint.exist?.must_equal false + _(constraint.exist?).must_equal false end it "should return false when more than one of the options is present" do constraint = cls.new(options, option_values, [:option_a, :option_b]) - constraint.exist?.must_equal false + _(constraint.exist?).must_equal false end end describe "#rejected" do it "raises not implemented exception" do constraint = cls.new(options, option_values, [:option_a, :option_unset_d]) - e = proc{ constraint.rejected }.must_raise NotImplementedError - e.message.must_equal '#rejected is unsupported for OneOfConstraint' + e = _{ constraint.rejected }.must_raise NotImplementedError + _(e.message).must_equal '#rejected is unsupported for OneOfConstraint' end end describe "#required" do it "returns nil when one of the options exist" do constraint = cls.new(options, option_values, [:option_a, :option_unset_d, :option_unset_e]) - constraint.required.must_equal nil + assert_nil constraint.required end it "raises exception when none of the options is present" do constraint = cls.new(options, option_values, [:option_unset_d, :option_unset_e]) - e = proc{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError - e.message.must_equal 'One of options --option-unset-d, --option-unset-e is required.' + e = _{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError + _(e.message).must_equal 'One of options --option-unset-d, --option-unset-e is required.' end it "raises exception when more than one of the options is present" do constraint = cls.new(options, option_values, [:option_a, :option_b]) - e = proc{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError - e.message.must_equal 'Only one of options --option-a, --option-b can be set.' + e = _{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError + _(e.message).must_equal 'Only one of options --option-a, --option-b can be set.' end end end diff --git a/test/unit/output/adapter/abstract_test.rb b/test/unit/output/adapter/abstract_test.rb index f4cd357b..374f9c8d 100644 --- a/test/unit/output/adapter/abstract_test.rb +++ b/test/unit/output/adapter/abstract_test.rb @@ -7,7 +7,7 @@ it "should have features" do - adapter.features.must_be_kind_of Array + _(adapter.features).must_be_kind_of Array end class UnknownTestFormatter < HammerCLI::Output::Formatters::FieldFormatter @@ -21,13 +21,13 @@ def required_features end it "allows default pagination" do - adapter.paginate_by_default?.must_equal true + _(adapter.paginate_by_default?).must_equal true end it "should filter formatters with incompatible features" do HammerCLI::Output::Formatters::FormatterLibrary.expects(:new).with({ :type => [] }) - adapter = adapter_class.new({}, {:type => [UnknownTestFormatter.new]}) + adapter_class.new({}, {:type => [UnknownTestFormatter.new]}) end it "should keep compatible formatters" do @@ -35,7 +35,7 @@ def required_features HammerCLI::Output::Formatters::FormatterLibrary.expects(:new).with({ :type => [formatter] }) # set :unknown tag to abstract adapter_class.any_instance.stubs(:features).returns([:unknown]) - adapter = adapter_class.new({}, {:type => [formatter]}) + adapter_class.new({}, {:type => [formatter]}) end it "should put serializers first" do @@ -46,31 +46,31 @@ def required_features HammerCLI::Output::Formatters::FormatterLibrary.expects(:new).with({ :type => [formatter2, formatter1] }) # set :unknown tag to abstract adapter_class.any_instance.stubs(:features).returns([:serialized]) - adapter = adapter_class.new({}, {:type => [formatter1, formatter2]}) + adapter_class.new({}, {:type => [formatter1, formatter2]}) end context "messages" do it "should print message to stdout" do - proc { adapter.print_message("MESSAGE") }.must_output(/.*MESSAGE.*/, "") + _{ adapter.print_message("MESSAGE") }.must_output(/.*MESSAGE.*/, "") end it "should print formatted message with parameters" do - proc { adapter.print_message("MESSAGE %{a}, %{b}", :a => 'A', :b => 'B') }.must_output(/.*MESSAGE A, B.*/, "") + _{ adapter.print_message("MESSAGE %{a}, %{b}", :a => 'A', :b => 'B') }.must_output(/.*MESSAGE A, B.*/, "") end it 'should print message with nil params' do - proc { adapter.print_message('MESSAGE', nil) }.must_output(/.*MESSAGE.*/, '') + _{ adapter.print_message('MESSAGE', nil) }.must_output(/.*MESSAGE.*/, '') end end it "should raise not implemented on print_collection" do - proc { adapter.print_collection([], HammerCLI::Output::RecordCollection.new([])) }.must_raise NotImplementedError + _{ adapter.print_collection([], HammerCLI::Output::RecordCollection.new([])) }.must_raise NotImplementedError end context "error messages" do it "should print error message to stderr" do - proc { adapter.print_error("MESSAGE") }.must_output("", /.*MESSAGE.*/) + _{ adapter.print_error("MESSAGE") }.must_output("", /.*MESSAGE.*/) end let(:expected_output) { "MESSAGE:\n"+ @@ -85,15 +85,15 @@ def required_features } it "should print list details of error to stderr" do - proc { adapter.print_error("MESSAGE", ["error", "message", "details"]) }.must_output("", expected_output) + _{ adapter.print_error("MESSAGE", ["error", "message", "details"]) }.must_output("", expected_output) end it "should print string details of error to stderr" do - proc { adapter.print_error("MESSAGE", "error\nmessage\ndetails") }.must_output("", expected_output) + _{ adapter.print_error("MESSAGE", "error\nmessage\ndetails") }.must_output("", expected_output) end it "should print formatted message with parameters" do - proc { + _{ adapter.print_error("MESSAGE %{a}, %{b}", ["error %{a}", "error %{b}"], :a => 'A', :b => 'B') }.must_output("", expected_formatted_output) end diff --git a/test/unit/output/adapter/base_test.rb b/test/unit/output/adapter/base_test.rb index 4f58149d..68c5fbb3 100644 --- a/test/unit/output/adapter/base_test.rb +++ b/test/unit/output/adapter/base_test.rb @@ -6,13 +6,13 @@ let(:adapter) { HammerCLI::Output::Adapter::Base.new(context, HammerCLI::Output::Output.formatters) } it "allows default pagination" do - adapter.paginate_by_default?.must_equal true + _(adapter.paginate_by_default?).must_equal true end context "print_collection" do let(:id) { Fields::Id.new(:path => [:id], :label => "Id") } - let(:name) { Fields::Field.new(:path => [:name], :label => "Name") } + let(:firstname) { Fields::Field.new(:path => [:name], :label => "Name") } let(:unlabeled) { Fields::Field.new(:path => [:name]) } let(:surname) { Fields::Field.new(:path => [:surname], :label => "Surname") } let(:address_city) { Fields::Field.new(:path => [:address, :city], :label => "City") } @@ -59,13 +59,13 @@ }]} it "should print one field" do - fields = [name] + fields = [firstname] expected_output = [ "Name: John", "\n" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "doesn't print label when it's nil" do @@ -75,11 +75,11 @@ "\n" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "aligns multiple fields" do - fields = [name, surname, unlabeled] + fields = [firstname, surname, unlabeled] expected_output = [ "Name: John", "Surname: Doe", @@ -87,7 +87,7 @@ "\n" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should field with nested data" do @@ -97,7 +97,7 @@ "\n" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print labeled fields" do @@ -110,7 +110,7 @@ "\n" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end @@ -127,7 +127,7 @@ "\n" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print unnumbered collection" do @@ -143,46 +143,46 @@ "\n" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "hides ids by default" do - fields = [id, name] + fields = [id, firstname] expected_output = [ "Name: John", "\n" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "skips blank values" do - fields = [name, blank] + fields = [firstname, blank] expected_output = [ "Name: John", "\n" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "does not print fields which data are missing from api by default" do - fields = [name, login] + fields = [firstname, login] expected_output = [ "Name: John", "\n" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "prints fields which data are missing from api when field has hide_missing flag set to false" do - fields = [name, missing] + fields = [firstname, missing] expected_output = [ "Name: John", "Missing:", "\n" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print key -> value" do @@ -196,7 +196,7 @@ "\n" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end context 'printing by chunks' do @@ -208,16 +208,16 @@ end HammerCLI::Output::RecordCollection.new(collection) end - let(:fields) { [id, name] } + let(:fields) { [id, firstname] } it 'prints single chunk' do expected_output = collection_count.times.each_with_object([]) do |t, r| r << ["Id: #{t}", "Name: John #{t}", "\n"].join("\n") end.flatten(1).join - proc do + _{ adapter.print_collection(fields, collection_data) - end.must_output(expected_output) + }.must_output(expected_output) end it 'prints first chunk' do @@ -225,11 +225,11 @@ r << ["Id: #{t}", "Name: John #{t}", "\n"].join("\n") end.flatten(1).join - proc do + _{ adapter.print_collection( fields, collection_data[0...10], current_chunk: :first ) - end.must_output(expected_output) + }.must_output(expected_output) end it 'prints another chunk' do @@ -237,11 +237,11 @@ r << ["Id: #{t}", "Name: John #{t}", "\n"].join("\n") end.flatten(1).join - proc do + _{ adapter.print_collection( fields, collection_data[10...20], current_chunk: :another ) - end.must_output(expected_output) + }.must_output(expected_output) end it 'prints last chunk' do @@ -249,11 +249,11 @@ r << ["Id: #{t}", "Name: John #{t}", "\n"].join("\n") end.flatten(1).join - proc do + _{ adapter.print_collection( fields, collection_data[20...30], current_chunk: :last ) - end.must_output(expected_output) + }.must_output(expected_output) end end @@ -262,14 +262,14 @@ let(:context) { {:show_ids => true} } it "shows ids if it's required in the context" do - fields = [id, name] + fields = [id, firstname] expected_output = [ "Id: 112", "Name: John", "\n" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end end @@ -280,13 +280,13 @@ let(:context) { {:output_file => tempfile} } it "should not print to stdout when --output-file is set" do - fields = [name] + fields = [firstname] - proc { adapter.print_collection(fields, data) }.must_output("") + _{ adapter.print_collection(fields, data) }.must_output("") end it "should print to file if --output-file is set" do - fields = [name] + fields = [firstname] expected_output = [ "Name: John", "\n" @@ -294,14 +294,14 @@ adapter.print_collection(fields, data) tempfile.close - IO.read(tempfile.path).must_equal(expected_output) + _(IO.read(tempfile.path)).must_equal(expected_output) end end context 'print_message' do it 'should print message with nil params' do - proc { adapter.print_message('MESSAGE', nil) }.must_output(/.*MESSAGE.*/, '') + _{ adapter.print_message('MESSAGE', nil) }.must_output(/.*MESSAGE.*/, '') end end end diff --git a/test/unit/output/adapter/csv_test.rb b/test/unit/output/adapter/csv_test.rb index b1f56598..dff7ce0c 100644 --- a/test/unit/output/adapter/csv_test.rb +++ b/test/unit/output/adapter/csv_test.rb @@ -5,7 +5,7 @@ let(:adapter) { HammerCLI::Output::Adapter::CSValues.new } it "forbids default pagination" do - adapter.paginate_by_default?.must_equal false + _(adapter.paginate_by_default?).must_equal false end context "print_collection" do @@ -24,28 +24,28 @@ it "should print column name" do out, err = capture_io { adapter.print_collection(fields, data) } - out.must_match /.*Name,Started At.*/ - err.must_match // + _(out).must_match(/.*Name,Started At.*/) + _(err).must_match(//) end it "should print field value" do out, err = capture_io { adapter.print_collection(fields, data) } - out.must_match /.*John Doe.*/ - err.must_match // + _(out).must_match(/.*John Doe.*/) + _(err).must_match(//) end it "does not print fields which data are missing from api by default" do fields << field_login out, err = capture_io { adapter.print_collection(fields, data) } - out.wont_match /.*Login.*/ - err.must_match // + _(out).wont_match(/.*Login.*/) + _(err).must_match(//) end it "prints fields which data are missing from api when field has hide_missing flag set to false" do fields << field_missing out, err = capture_io { adapter.print_collection(fields, data) } - out.must_match /.*Missing.*/ - err.must_match // + _(out).must_match(/.*Missing.*/) + _(err).must_match(//) end context "handle ids" do @@ -59,15 +59,15 @@ }]} it "should ommit column of type Id by default" do - out, err = capture_io { adapter.print_collection(fields, data) } - out.wont_match(/.*Id.*/) - out.wont_match(/.*2000,.*/) + out, _ = capture_io { adapter.print_collection(fields, data) } + _(out).wont_match(/.*Id.*/) + _(out).wont_match(/.*2000,.*/) end it "should print column of type Id when --show-ids is set" do adapter = HammerCLI::Output::Adapter::CSValues.new( { :show_ids => true } ) - out, err = capture_io { adapter.print_collection(fields, data) } - out.must_match(/.*Id.*/) + out, _ = capture_io { adapter.print_collection(fields, data) } + _(out).must_match(/.*Id.*/) end end @@ -75,13 +75,13 @@ let(:empty_data) { HammerCLI::Output::RecordCollection.new [] } it "should print headers by default" do - out, err = capture_io { adapter.print_collection(fields, data) } - out.must_match(/.*Name.*/) + out, _ = capture_io { adapter.print_collection(fields, data) } + _(out).must_match(/.*Name.*/) end it "should print headers by default even if there is no data" do - out, err = capture_io { adapter.print_collection(fields, empty_data) } - out.must_match(/.*Name.*/) + out, _ = capture_io { adapter.print_collection(fields, empty_data) } + _(out).must_match(/.*Name.*/) end it "should print data only when --no-headers is set" do @@ -90,13 +90,13 @@ "", ].join("\n") adapter = HammerCLI::Output::Adapter::CSValues.new( { :no_headers => true } ) - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print nothing when --no-headers is set but no data" do expected_output = "\n" adapter = HammerCLI::Output::Adapter::CSValues.new( { :no_headers => true } ) - proc { adapter.print_collection(fields, empty_data) }.must_output(expected_output) + _{ adapter.print_collection(fields, empty_data) }.must_output(expected_output) end end @@ -127,14 +127,14 @@ it "should print column names" do out, err = capture_io { adapter.print_collection(fields, data) } - out.must_match /.*Demographics::Age,Demographics::Gender,Biometrics::Weight,Biometrics::Height*/ - err.must_match // + _(out).must_match(/.*Demographics::Age,Demographics::Gender,Biometrics::Weight,Biometrics::Height*/) + _(err).must_match(//) end it "should print data" do out, err = capture_io { adapter.print_collection(fields, data) } - out.must_match /.*2000,22,m,123,155*/ - err.must_match // + _(out).must_match(/.*2000,22,m,123,155*/) + _(err).must_match(//) end end @@ -167,28 +167,28 @@ out, err = capture_io { adapter.print_collection(fields, data) } lines = out.split("\n") - lines[0].must_equal 'Name,Started At,Items::Item Name::1,Items::Item Quantity::1,Items::Item Name::2,Items::Item Quantity::2' + _(lines[0]).must_equal 'Name,Started At,Items::Item Name::1,Items::Item Quantity::1,Items::Item Name::2,Items::Item Quantity::2' - err.must_match // + _(err).must_match(//) end it "should print collection data" do out, err = capture_io { adapter.print_collection(fields, data) } lines = out.split("\n") - lines[1].must_equal 'John Doe,2000,hammer,100,"",""' - lines[2].must_equal 'Jane Roe,2001,cleaver,1,sledge,50' + _(lines[1]).must_equal 'John Doe,2000,hammer,100,"",""' + _(lines[2]).must_equal 'Jane Roe,2001,cleaver,1,sledge,50' - err.must_match // + _(err).must_match(//) end it "should handle empty collection" do out, err = capture_io { adapter.print_collection(fields, []) } lines = out.split("\n") - lines[0].must_equal 'Name,Started At,Items' + _(lines[0]).must_equal 'Name,Started At,Items' - err.must_match // + _(err).must_match(//) end end @@ -202,8 +202,8 @@ def format(data, field_params={}) end adapter = HammerCLI::Output::Adapter::CSValues.new({}, { :Field => [ DotFormatter.new ]}) - out, err = capture_io { adapter.print_collection(fields, data) } - out.must_match(/.*-DOT-.*/) + out, _ = capture_io { adapter.print_collection(fields, data) } + _(out).must_match(/.*-DOT-.*/) end it "should not replace nil with empty string before it applies formatters" do @@ -215,8 +215,8 @@ def format(data, field_params={}) adapter = HammerCLI::Output::Adapter::CSValues.new({}, { :Field => [ NilFormatter.new ]}) nil_data = HammerCLI::Output::RecordCollection.new [{ :name => nil }] - out, err = capture_io { adapter.print_collection([field_name], nil_data) } - out.must_match(/.*NIL.*/) + out, _ = capture_io { adapter.print_collection([field_name], nil_data) } + _(out).must_match(/.*NIL.*/) end end @@ -239,7 +239,7 @@ def format(data, field_params={}) out, _err = capture_io do adapter.print_collection(fields, collection_data) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end it 'prints first chunk' do @@ -252,7 +252,7 @@ def format(data, field_params={}) fields, collection_data[0...10], current_chunk: :first ) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end it 'prints another chunk' do @@ -265,7 +265,7 @@ def format(data, field_params={}) fields, collection_data[10...20], current_chunk: :another ) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end it 'prints last chunk' do @@ -278,7 +278,7 @@ def format(data, field_params={}) fields, collection_data[20...30], current_chunk: :last ) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end end @@ -291,7 +291,7 @@ def format(data, field_params={}) it "should not print to stdout when --output-file is set" do fields = [field_name] - proc { adapter.print_collection(fields, data) }.must_output("") + _{ adapter.print_collection(fields, data) }.must_output("") end it "should print to file if --output-file is set" do @@ -300,7 +300,7 @@ def format(data, field_params={}) adapter.print_collection(fields, data) tempfile.close - IO.read(tempfile.path).must_equal(expected_output) + _(IO.read(tempfile.path)).must_equal(expected_output) end end @@ -310,17 +310,17 @@ def format(data, field_params={}) context "print message" do it "shoud print a message" do - proc { adapter.print_message("SOME MESSAGE") }.must_output("Message\nSOME MESSAGE\n", "") + _{ adapter.print_message("SOME MESSAGE") }.must_output("Message\nSOME MESSAGE\n", "") end it "should print message, id and name of created/updated record" do - proc { + _{ adapter.print_message("SOME MESSAGE", "id" => 83, "name" => "new_record") }.must_output("Message,Id,Name\nSOME MESSAGE,83,new_record\n", "") end it 'should print message with nil params' do - proc { adapter.print_message('MESSAGE', nil) }.must_output("Message\nMESSAGE\n", '') + _{ adapter.print_message('MESSAGE', nil) }.must_output("Message\nMESSAGE\n", '') end end diff --git a/test/unit/output/adapter/json_test.rb b/test/unit/output/adapter/json_test.rb index b631f360..ca319316 100644 --- a/test/unit/output/adapter/json_test.rb +++ b/test/unit/output/adapter/json_test.rb @@ -6,7 +6,7 @@ let(:adapter) { HammerCLI::Output::Adapter::Json.new(context, HammerCLI::Output::Output.formatters) } it "forbids default pagination" do - adapter.paginate_by_default?.must_equal false + _(adapter.paginate_by_default?).must_equal false end context "print_message" do @@ -20,7 +20,7 @@ '' ].join("\n") - proc { adapter.print_message(msg, params) }.must_output(expected_output) + _{ adapter.print_message(msg, params) }.must_output(expected_output) end it "prints the message with name and id" do @@ -35,7 +35,7 @@ '' ].join("\n") - proc { adapter.print_message(msg, params) }.must_output(expected_output) + _{ adapter.print_message(msg, params) }.must_output(expected_output) end it 'prints the message with nil params' do @@ -47,14 +47,14 @@ '}', '' ].join("\n") - proc { adapter.print_message(msg, params) }.must_output(expected_output) + _{ adapter.print_message(msg, params) }.must_output(expected_output) end end context "print_collection" do let(:id) { Fields::Id.new(:path => [:id], :label => "Id") } - let(:name) { Fields::Field.new(:path => [:name], :label => "Name") } + let(:firstname) { Fields::Field.new(:path => [:name], :label => "Name") } let(:unlabeled) { Fields::Field.new(:path => [:name]) } let(:surname) { Fields::Field.new(:path => [:surname], :label => "Surname") } let(:address_city) { Fields::Field.new(:path => [:address, :city], :label => "City") } @@ -109,16 +109,16 @@ }]} it "should print one field" do - fields = [name] + fields = [firstname] expected_output = JSON.pretty_generate([{ 'Name' => 'John' }]) + "\n" - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should field with nested data" do fields = [address_city] expected_output = JSON.pretty_generate([{ 'City' => 'New York' }]) + "\n" - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print labeled fields" do @@ -130,7 +130,7 @@ } }] expected_output = JSON.pretty_generate(hash) + "\n" - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print collection" do @@ -150,7 +150,7 @@ }] expected_output = JSON.pretty_generate(hash) + "\n" - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print collection with one element" do @@ -166,7 +166,7 @@ }] expected_output = JSON.pretty_generate(hash) + "\n" - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print unnumbered collection" do @@ -185,7 +185,7 @@ }] expected_output = JSON.pretty_generate(hash) + "\n" - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print unnumbered collection with one element" do @@ -200,24 +200,24 @@ }] expected_output = JSON.pretty_generate(hash) + "\n" - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "hides ids by default" do - fields = [id, name] + fields = [id, firstname] hash = [{'Name' => 'John'}] expected_output = JSON.pretty_generate(hash) + "\n" - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "skips blank values" do - fields = [name, blank] + fields = [firstname, blank] hash = [{'Name' => 'John'}] expected_output = JSON.pretty_generate(hash) + "\n" - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "does not print fields which data are missing from api by default" do @@ -225,7 +225,7 @@ hash = [{ 'Surname' => 'Doe' }] expected_output = JSON.pretty_generate(hash) + "\n" - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "prints fields which data are missing from api when field has hide_missing flag set to false" do @@ -233,7 +233,7 @@ hash = [{ 'Surname' => 'Doe', 'Missing' => '' }] expected_output = JSON.pretty_generate(hash) + "\n" - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print key -> value" do @@ -254,11 +254,11 @@ }] expected_output = JSON.pretty_generate(hash) + "\n" - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end context 'capitalization' do - let(:fields) { [name, surname] } + let(:fields) { [firstname, surname] } let(:raw_hash) { { 'Name' => 'John', 'Surname' => 'Doe' } } let(:settings) { HammerCLI::Settings } let(:context) { { :capitalization => HammerCLI.capitalization } } @@ -270,7 +270,7 @@ out, = capture_io do adapter.print_collection(fields, data) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end it 'should respect selected capitalize capitalization' do @@ -280,7 +280,7 @@ out, = capture_io do adapter.print_collection(fields, data) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end it 'should respect selected upcase capitalization' do @@ -290,7 +290,7 @@ out, = capture_io do adapter.print_collection(fields, data) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end it 'should print a warn for not supported capitalization' do @@ -301,8 +301,8 @@ out, err = capture_io do adapter.print_collection(fields, data) end - out.must_equal(expected_output) - err.must_equal(expected_error) + _(out).must_equal(expected_output) + _(err).must_equal(expected_error) end it "shouldn't change capitalization if wasn't selected" do @@ -312,7 +312,7 @@ out, = capture_io do adapter.print_collection(fields, data) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end end @@ -328,7 +328,7 @@ let(:collection_data) do HammerCLI::Output::RecordCollection.new(collection) end - let(:fields) { [id, name] } + let(:fields) { [id, firstname] } before do settings.load(ui: { capitalization: :downcase }) @@ -340,7 +340,7 @@ out, _err = capture_io do adapter.print_collection(fields, collection_data) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end it 'prints first chunk' do @@ -351,7 +351,7 @@ fields, collection_data[0...10], current_chunk: :first ) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end it 'prints another chunk' do @@ -362,7 +362,7 @@ fields, collection_data[10...20], current_chunk: :another ) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end it 'prints last chunk' do @@ -373,7 +373,7 @@ fields, collection_data[20...30], current_chunk: :last ) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end end @@ -382,13 +382,13 @@ let(:context) { {:show_ids => true} } it "shows ids if it's required in the context" do - fields = [id, name] + fields = [id, firstname] hash = [{ 'Id' => 112, 'Name' => 'John' }] expected_output = JSON.pretty_generate(hash) + "\n" - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end end @@ -399,13 +399,13 @@ let(:context) { {:output_file => tempfile} } it "should not print to stdout when --output-file is set" do - fields = [name] + fields = [firstname] - proc { adapter.print_collection(fields, data) }.must_output("") + _{ adapter.print_collection(fields, data) }.must_output("") end it "should print to file if --output-file is set" do - fields = [name] + fields = [firstname] hash = [{ 'Name' => 'John' }] @@ -413,7 +413,7 @@ adapter.print_collection(fields, data) tempfile.close - IO.read(tempfile.path).must_equal(expected_output) + _(IO.read(tempfile.path)).must_equal(expected_output) end end diff --git a/test/unit/output/adapter/table_test.rb b/test/unit/output/adapter/table_test.rb index 85313165..66e5a162 100644 --- a/test/unit/output/adapter/table_test.rb +++ b/test/unit/output/adapter/table_test.rb @@ -5,7 +5,7 @@ let(:adapter) { HammerCLI::Output::Adapter::Table.new } it "allows default pagination" do - adapter.paginate_by_default?.must_equal true + _(adapter.paginate_by_default?).must_equal true end context "print_collection" do @@ -40,11 +40,11 @@ let(:empty_data) { HammerCLI::Output::RecordCollection.new [] } it "should print column name " do - proc { adapter.print_collection(fields, data) }.must_output(/.*NAME.*/, "") + _{ adapter.print_collection(fields, data) }.must_output(/.*NAME.*/, "") end it "should print field value" do - proc { adapter.print_collection(fields, data) }.must_output(/.*John Doe.*/, "") + _{ adapter.print_collection(fields, data) }.must_output(/.*John Doe.*/, "") end it "does not print fields which data are missing from api by default" do @@ -58,7 +58,7 @@ '' ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "prints fields which data are missing from api when field has hide_missing flag set to false" do @@ -72,18 +72,18 @@ '' ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end context "pagination" do it "should print pagination info if data are not complete" do data = HammerCLI::Output::RecordCollection.new([record], { :total => 2, :page => 1, :per_page => 1, :subtotal => 2 }) - proc { adapter.print_collection(fields, data) }.must_output(/.*Page 1 of 2 (use --page and --per-page for navigation)*/, "") + _{ adapter.print_collection(fields, data) }.must_output(/.*Page 1 of 2 (use --page and --per-page for navigation)*/, "") end it "should print pagination info if data are complete" do data = HammerCLI::Output::RecordCollection.new([record], { :total => 1, :page => 1, :per_page => 1, :subtotal => 1 }) - proc { adapter.print_collection(fields, data) }.must_output("--------\nNAME \n--------\nJohn Doe\n--------\n", "") + _{ adapter.print_collection(fields, data) }.must_output("--------\nNAME \n--------\nJohn Doe\n--------\n", "") end end @@ -94,8 +94,8 @@ } it "should ommit column of type Id by default" do - out, err = capture_io { adapter.print_collection(fields, data) } - out.wont_match(/.*ID.*/) + out, _ = capture_io { adapter.print_collection(fields, data) } + _(out).wont_match(/.*ID.*/) end it "should ommit column of type Id by default but no data" do @@ -105,13 +105,13 @@ "----", "" ].join("\n") - proc { adapter.print_collection(fields, empty_data) }.must_output(expected_output) + _{ adapter.print_collection(fields, empty_data) }.must_output(expected_output) end it "should print column of type Id when --show-ids is set" do adapter = HammerCLI::Output::Adapter::Table.new( { :show_ids => true } ) - out, err = capture_io { adapter.print_collection(fields, data) } - out.must_match(/.*ID.*/) + out, _ = capture_io { adapter.print_collection(fields, data) } + _(out).must_match(/.*ID.*/) end it "should print column of type ID when --show-ids is set but no data" do @@ -122,19 +122,19 @@ "", ].join("\n") adapter = HammerCLI::Output::Adapter::Table.new( { :show_ids => true } ) - proc { adapter.print_collection(fields, empty_data) }.must_output(expected_output) + _{ adapter.print_collection(fields, empty_data) }.must_output(expected_output) end end context "handle headers" do it "should print headers by default" do - out, err = capture_io { adapter.print_collection(fields, data) } - out.must_match(/.*NAME.*/) + out, _ = capture_io { adapter.print_collection(fields, data) } + _(out).must_match(/.*NAME.*/) end it "should print headers by default even if there is no data" do - out, err = capture_io { adapter.print_collection(fields, empty_data) } - out.must_match(/.*NAME.*/) + out, _ = capture_io { adapter.print_collection(fields, empty_data) } + _(out).must_match(/.*NAME.*/) end it "should print data only when --no-headers is set" do @@ -143,13 +143,13 @@ "", ].join("\n") adapter = HammerCLI::Output::Adapter::Table.new( { :no_headers => true } ) - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print nothing when --no-headers is set but no data" do expected_output = "" adapter = HammerCLI::Output::Adapter::Table.new( { :no_headers => true } ) - proc { adapter.print_collection(fields, empty_data) }.must_output(expected_output) + _{ adapter.print_collection(fields, empty_data) }.must_output(expected_output) end end @@ -168,7 +168,7 @@ "" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "calculates correct width of czech characters" do @@ -184,7 +184,7 @@ "" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "calculates correct width of colorized strings" do @@ -200,7 +200,7 @@ "" ].join("\n").gsub('John', "#{red}John#{reset}") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "truncates two-column characters when it exceeds maximum width" do @@ -216,7 +216,7 @@ "" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "truncates colorized string string when it exceeds maximum width" do @@ -232,7 +232,7 @@ "" ].join("\n").gsub('SomeVer', "#{red}SomeVer#{reset}") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "truncates string when it exceeds maximum width" do @@ -248,7 +248,7 @@ "" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "truncates string when it exceeds width" do @@ -264,7 +264,7 @@ "" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "sets width to the longest column name when no data" do @@ -277,7 +277,7 @@ "------------------------|---------", "" ].join("\n") - proc { adapter.print_collection(fields, empty_data) }.must_output(expected_output) + _{ adapter.print_collection(fields, empty_data) }.must_output(expected_output) end it "sets certain width" do @@ -293,7 +293,7 @@ "" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "sets certain width when no data" do @@ -307,7 +307,7 @@ "" ].join("\n") - proc { adapter.print_collection(fields, empty_data) }.must_output(expected_output) + _{ adapter.print_collection(fields, empty_data) }.must_output(expected_output) end @@ -324,7 +324,7 @@ "" ].join("\n") - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "gives preference to width over maximal width when no data" do @@ -338,7 +338,7 @@ "" ].join("\n") - proc { adapter.print_collection(fields, empty_data) }.must_output(expected_output) + _{ adapter.print_collection(fields, empty_data) }.must_output(expected_output) end @@ -353,8 +353,8 @@ def format(data, field_params={}) end adapter = HammerCLI::Output::Adapter::Table.new({}, { :Field => [ DotFormatter.new ]}) - out, err = capture_io { adapter.print_collection(fields, data) } - out.must_match(/.*-DOT-.*/) + out, _ = capture_io { adapter.print_collection(fields, data) } + _(out).must_match(/.*-DOT-.*/) end it "should not break formatting" do @@ -375,7 +375,7 @@ def format(data, field_params={}) "" ].join("\n") - proc { adapter.print_collection([field_long], data) }.must_output(expected_output) + _{ adapter.print_collection([field_long], data) }.must_output(expected_output) end end @@ -401,9 +401,7 @@ def format(data, field_params={}) "---|------------", ).join("\n") + "\n---|------------\n" - proc do - adapter.print_collection(fields, collection_data) - end.must_output(expected_output) + _{adapter.print_collection(fields, collection_data)}.must_output(expected_output) end it 'prints first chunk' do @@ -417,11 +415,9 @@ def format(data, field_params={}) "---|-----------", ).join("\n") + "\n" - proc do - adapter.print_collection( - fields, collection_data[0...10], current_chunk: :first - ) - end.must_output(expected_output) + _{adapter.print_collection( + fields, collection_data[0...10], current_chunk: :first + )}.must_output(expected_output) end it 'prints another chunk' do @@ -429,11 +425,9 @@ def format(data, field_params={}) r << ["#{t} | John Doe #{t}"] end.flatten(1).join("\n") + "\n" - proc do - adapter.print_collection( - fields, collection_data[10...20], current_chunk: :another - ) - end.must_output(expected_output) + _{adapter.print_collection( + fields, collection_data[10...20], current_chunk: :another + )}.must_output(expected_output) end # it 'prints last chunk' do @@ -441,11 +435,9 @@ def format(data, field_params={}) r << ["#{t} | John Doe #{t}"] end.flatten(1).join("\n") + "\n---|------------\n" - proc do - adapter.print_collection( - fields, collection_data[20...30], current_chunk: :last - ) - end.must_output(expected_output) + _{adapter.print_collection( + fields, collection_data[20...30], current_chunk: :last + )}.must_output(expected_output) end end @@ -458,7 +450,7 @@ def format(data, field_params={}) it "should not print to stdout when --output-file is set" do fields = [field_firstname] - proc { adapter.print_collection(fields, data) }.must_output("") + _{ adapter.print_collection(fields, data) }.must_output("") end it "should print to file if --output-file is set" do @@ -474,14 +466,14 @@ def format(data, field_params={}) adapter.print_collection(fields, data) tempfile.close - IO.read(tempfile.path).must_equal(expected_output) + _(IO.read(tempfile.path)).must_equal(expected_output) end end context 'print_message' do it 'should print message with nil params' do - proc { adapter.print_message('MESSAGE', nil) }.must_output(/.*MESSAGE.*/, '') + _{ adapter.print_message('MESSAGE', nil) }.must_output(/.*MESSAGE.*/, '') end end end diff --git a/test/unit/output/adapter/yaml_test.rb b/test/unit/output/adapter/yaml_test.rb index 7e11d022..bd06023b 100644 --- a/test/unit/output/adapter/yaml_test.rb +++ b/test/unit/output/adapter/yaml_test.rb @@ -6,7 +6,7 @@ let(:adapter) { HammerCLI::Output::Adapter::Yaml.new(context, HammerCLI::Output::Output.formatters) } it "forbids default pagination" do - adapter.paginate_by_default?.must_equal false + _(adapter.paginate_by_default?).must_equal false end context "print_message" do @@ -19,7 +19,7 @@ '' ].join("\n") - proc { adapter.print_message(msg, params) }.must_output(expected_output) + _{ adapter.print_message(msg, params) }.must_output(expected_output) end it "prints the message with name and id" do @@ -33,7 +33,7 @@ '' ].join("\n") - proc { adapter.print_message(msg, params) }.must_output(expected_output) + _{ adapter.print_message(msg, params) }.must_output(expected_output) end it 'prints the message with nil params' do @@ -44,14 +44,14 @@ ':message: MESSAGE', '' ].join("\n") - proc { adapter.print_message(msg, params) }.must_output(expected_output) + _{ adapter.print_message(msg, params) }.must_output(expected_output) end end context "print_collection" do let(:id) { Fields::Id.new(:path => [:id], :label => "Id") } - let(:name) { Fields::Field.new(:path => [:name], :label => "Name") } + let(:firstname) { Fields::Field.new(:path => [:name], :label => "Name") } let(:unlabeled) { Fields::Field.new(:path => [:name]) } let(:surname) { Fields::Field.new(:path => [:surname], :label => "Surname") } let(:address_city) { Fields::Field.new(:path => [:address, :city], :label => "City") } @@ -106,15 +106,15 @@ }]} it "should print one field" do - fields = [name] + fields = [firstname] expected_output = YAML.dump([{ 'Name' => 'John' }]) - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should field with nested data" do fields = [address_city] expected_output = YAML.dump([{ 'City' => 'New York' }]) - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print labeled fields" do @@ -126,7 +126,7 @@ } }] expected_output = YAML.dump(hash) - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print collection" do @@ -146,7 +146,7 @@ }] expected_output = YAML.dump(hash) - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print collection with one element" do @@ -162,7 +162,7 @@ }] expected_output = YAML.dump(hash) - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print unnumbered collection" do @@ -181,7 +181,7 @@ }] expected_output = YAML.dump(hash) - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print unnumbered collection with one element" do @@ -196,24 +196,24 @@ }] expected_output = YAML.dump(hash) - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "hides ids by default" do - fields = [id, name] + fields = [id, firstname] hash = [{'Name' => 'John'}] expected_output = YAML.dump(hash) - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "skips blank values" do - fields = [name, blank] + fields = [firstname, blank] hash = [{'Name' => 'John'}] expected_output = YAML.dump(hash) - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "does not print fields which data are missing from api by default" do @@ -221,7 +221,7 @@ hash = [{ 'Surname' => 'Doe' }] expected_output = YAML.dump(hash) - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "prints fields which data are missing from api when field has hide_missing flag set to false" do @@ -229,7 +229,7 @@ hash = [{ 'Surname' => 'Doe', 'Missing' => HammerCLI::Output::DataMissing.new }] expected_output = YAML.dump(hash) - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end it "should print key -> value" do @@ -250,11 +250,11 @@ }] expected_output = YAML.dump(hash) - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end context 'capitalization' do - let(:fields) { [name, surname] } + let(:fields) { [firstname, surname] } let(:raw_hash) { { 'Name' => 'John', 'Surname' => 'Doe' } } let(:settings) { HammerCLI::Settings } let(:context) { { :capitalization => HammerCLI.capitalization } } @@ -266,7 +266,7 @@ out, = capture_io do adapter.print_collection(fields, data) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end it 'should respect selected capitalize capitalization' do @@ -276,7 +276,7 @@ out, = capture_io do adapter.print_collection(fields, data) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end it 'should respect selected upcase capitalization' do @@ -286,7 +286,7 @@ out, = capture_io do adapter.print_collection(fields, data) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end it 'should print a warn for not supported capitalization' do @@ -297,8 +297,8 @@ out, err = capture_io do adapter.print_collection(fields, data) end - out.must_equal(expected_output) - err.must_equal(expected_error) + _(out).must_equal(expected_output) + _(err).must_equal(expected_error) end it "shouldn't change capitalization if wasn't selected" do @@ -308,7 +308,7 @@ out, = capture_io do adapter.print_collection(fields, data) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end end @@ -326,7 +326,7 @@ let(:collection_data) do HammerCLI::Output::RecordCollection.new(collection) end - let(:fields) { [id, name] } + let(:fields) { [id, firstname] } it 'prints single chunk' do expected_output = YAML.dump(prepared_collection) @@ -334,7 +334,7 @@ out, _err = capture_io do adapter.print_collection(fields, collection_data) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end it 'prints first chunk' do @@ -345,7 +345,7 @@ fields, collection_data[0...10], current_chunk: :first ) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end it 'prints another chunk' do @@ -356,7 +356,7 @@ fields, collection_data[10...20], current_chunk: :another ) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end it 'prints last chunk' do @@ -367,7 +367,7 @@ fields, collection_data[20...30], current_chunk: :last ) end - out.must_equal(expected_output) + _(out).must_equal(expected_output) end end @@ -376,13 +376,13 @@ let(:context) { {:show_ids => true} } it "shows ids if it's required in the context" do - fields = [id, name] + fields = [id, firstname] hash = [{ 'Id' => 112, 'Name' => 'John' }] expected_output = YAML.dump(hash) - proc { adapter.print_collection(fields, data) }.must_output(expected_output) + _{ adapter.print_collection(fields, data) }.must_output(expected_output) end end @@ -393,13 +393,13 @@ let(:context) { {:output_file => tempfile} } it "should not print to stdout when --output-file is set" do - fields = [name] + fields = [firstname] - proc { adapter.print_collection(fields, data) }.must_output("") + _{ adapter.print_collection(fields, data) }.must_output("") end it "should print to file if --output-file is set" do - fields = [name] + fields = [firstname] hash = [{ 'Name' => 'John' }] @@ -407,7 +407,7 @@ adapter.print_collection(fields, data) tempfile.close - IO.read(tempfile.path).must_equal(expected_output) + _(IO.read(tempfile.path)).must_equal(expected_output) end end diff --git a/test/unit/output/definition_test.rb b/test/unit/output/definition_test.rb index fc0c9bec..1e29b57a 100644 --- a/test/unit/output/definition_test.rb +++ b/test/unit/output/definition_test.rb @@ -15,19 +15,19 @@ describe "empty?" do it "returns true for empty definition" do - definition.empty?.must_equal true + _(definition.empty?).must_equal true end it "returns false for definition with fields" do definition.fields << Fields::Field.new - definition.empty?.must_equal false + _(definition.empty?).must_equal false end end it "should be able to add field" do definition.fields << Fields::Field.new - field_count.must_equal 1 + _(field_count).must_equal 1 end it "append should allow to add data from another definition" do @@ -36,14 +36,14 @@ another_def.fields << Fields::Field.new definition.append another_def.fields - field_count.must_equal another_def.fields.length - definition.fields.must_equal another_def.fields + _(field_count).must_equal another_def.fields.length + _(definition.fields).must_equal another_def.fields end it 'clear should delete all fields' do definition.fields << Fields::Field.new definition.clear - definition.empty?.must_equal true + _(definition.empty?).must_equal true end describe 'insert' do @@ -56,23 +56,23 @@ definition.insert(:before, :id1, new_field) end - field_count.must_equal 0 + _(field_count).must_equal 0 end it 'should insert new specified field before the old one' do definition.fields << Fields::Field.new(id: :id1, label: 'oldfield') definition.insert(:before, :id1, new_field) - definition.fields.first.label.must_equal new_field.label - field_count.must_equal 2 + _(definition.fields.first.label).must_equal new_field.label + _(field_count).must_equal 2 end it 'should insert before field with few new specified' do definition.fields << Fields::Field.new(id: :id1, label: 'oldfield') definition.insert(:before, :id1, new_fields) - definition.fields.first.label.must_equal new_field.label - field_count.must_equal 3 + _(definition.fields.first.label).must_equal new_field.label + _(field_count).must_equal 3 end it 'should accept block with new fields' do @@ -82,8 +82,8 @@ field nil, 'newfield2' end - definition.fields.first.label.must_equal new_field.label - field_count.must_equal 3 + _(definition.fields.first.label).must_equal new_field.label + _(field_count).must_equal 3 end it 'should accept both block and new fields' do @@ -93,8 +93,8 @@ field nil, 'newfield4' end - definition.fields.first.label.must_equal new_field.label - field_count.must_equal 5 + _(definition.fields.first.label).must_equal new_field.label + _(field_count).must_equal 5 end it 'should work with labels' do @@ -102,8 +102,8 @@ definition.fields << label_field definition.insert(:before, label_field.label, new_fields) - definition.fields.first.label.must_equal new_field.label - field_count.must_equal 3 + _(definition.fields.first.label).must_equal new_field.label + _(field_count).must_equal 3 end end @@ -114,23 +114,23 @@ definition.insert(:after, :id1, new_field) end - field_count.must_equal 0 + _(field_count).must_equal 0 end it 'should insert new specified field after the old one' do definition.fields << Fields::Field.new(id: :id1, label: 'oldfield') definition.insert(:after, :id1, new_field) - definition.fields.first.label.must_equal 'oldfield' - field_count.must_equal 2 + _(definition.fields.first.label).must_equal 'oldfield' + _(field_count).must_equal 2 end it 'should insert after field with few new specified' do definition.fields << Fields::Field.new(id: :id1, label: 'oldfield') definition.insert(:after, :id1, new_fields) - definition.fields.first.label.must_equal 'oldfield' - field_count.must_equal 3 + _(definition.fields.first.label).must_equal 'oldfield' + _(field_count).must_equal 3 end it 'should accept block with new fields' do @@ -140,8 +140,8 @@ field nil, 'newfield2' end - definition.fields.first.label.must_equal 'oldfield' - field_count.must_equal 3 + _(definition.fields.first.label).must_equal 'oldfield' + _(field_count).must_equal 3 end it 'should accept both block and new fields' do @@ -151,8 +151,8 @@ field nil, 'newfield4' end - definition.fields.first.label.must_equal 'oldfield' - field_count.must_equal 5 + _(definition.fields.first.label).must_equal 'oldfield' + _(field_count).must_equal 5 end it 'should work with labels' do @@ -160,8 +160,8 @@ definition.fields << label_field definition.insert(:after, label_field.label, new_fields) - definition.fields.first.label.must_equal label_field.label - field_count.must_equal 3 + _(definition.fields.first.label).must_equal label_field.label + _(field_count).must_equal 3 end end @@ -172,23 +172,23 @@ definition.insert(:replace, :id1, new_field) end - field_count.must_equal 0 + _(field_count).must_equal 0 end it 'should replace field with new specified' do definition.fields << Fields::Field.new(id: :id1, label: 'oldfield') definition.insert(:replace, :id1, new_field) - definition.fields.first.label.must_equal new_field.label - field_count.must_equal 1 + _(definition.fields.first.label).must_equal new_field.label + _(field_count).must_equal 1 end it 'should replace field with few new specified' do definition.fields << Fields::Field.new(id: :id1, label: 'oldfield') definition.insert(:replace, :id1, new_fields) - definition.fields.first.label.must_equal new_field.label - field_count.must_equal 2 + _(definition.fields.first.label).must_equal new_field.label + _(field_count).must_equal 2 end it 'should accept block with new fields' do @@ -198,7 +198,7 @@ field nil, 'newfield2' end - definition.fields.first.label.must_equal new_field.label + _(definition.fields.first.label).must_equal new_field.label end it 'should accept both block and new fields' do @@ -208,7 +208,7 @@ field nil, 'newfield4' end - field_count.must_equal 4 + _(field_count).must_equal 4 end it 'should work with labels' do @@ -216,7 +216,7 @@ definition.fields << label_field definition.insert(:replace, label_field.label, new_fields) - field_count.must_equal 2 + _(field_count).must_equal 2 end end end @@ -224,21 +224,21 @@ describe 'find_field' do it 'should find a field' do definition.fields += [new_field, label_field] - definition.find_field(:new_id).must_equal new_field + _(definition.find_field(:new_id)).must_equal new_field end it 'should find a field in field output definition' do definition.fields += [label_field, cont_field] nested_definition = definition.find_field(:id1).output_definition nested_definition.fields << new_field - nested_definition.find_field(:new_id).must_equal new_field + _(nested_definition.find_field(:new_id)).must_equal new_field end end describe 'at' do it 'should return self if no specified path or empty' do - definition.at.must_equal definition - definition.at([]).must_equal definition + _(definition.at).must_equal definition + _(definition.at([])).must_equal definition end it 'should return output definition of specified field with path' do @@ -246,7 +246,7 @@ definition.fields << cont_field path = [cont_field.id] - definition.at(path).must_equal cont_field.output_definition + _(definition.at(path)).must_equal cont_field.output_definition end it 'should work with labels' do @@ -254,7 +254,7 @@ definition.fields << label_field path = ['labelfield'] - definition.at(path).must_equal label_field.output_definition + _(definition.at(path)).must_equal label_field.output_definition end end @@ -274,7 +274,7 @@ "Cf/bca | | | x \n" \ "---------|-----|---------|----\n" - definition.sets_table.must_equal sets_table + _(definition.sets_table).must_equal sets_table end end end diff --git a/test/unit/output/dsl_test.rb b/test/unit/output/dsl_test.rb index fe45d11a..55679edd 100644 --- a/test/unit/output/dsl_test.rb +++ b/test/unit/output/dsl_test.rb @@ -17,7 +17,7 @@ def initialize(options) let(:last_field) { dsl.fields[-1] } it "should be empty after initialization" do - dsl.fields.length.must_equal 0 + _(dsl.fields.length).must_equal 0 end describe "fields" do @@ -25,14 +25,14 @@ def initialize(options) dsl.build do field :f, "F" end - first_field.class.must_equal Fields::Field + _(first_field.class).must_equal Fields::Field end it "should create field of desired type" do dsl.build do field :f, "F", CustomFieldType end - first_field.class.must_equal CustomFieldType + _(first_field.class).must_equal CustomFieldType end it "should store all field details" do @@ -40,9 +40,9 @@ def initialize(options) field :f, "F" end - first_field.must_equal last_field - first_field.path.must_equal [:f] - first_field.label.must_equal "F" + _(first_field).must_equal last_field + _(first_field.path).must_equal [:f] + _(first_field.label).must_equal "F" end it "can define multiple fields" do @@ -52,7 +52,7 @@ def initialize(options) field :email, "Email" end - dsl.fields.length.must_equal 3 + _(dsl.fields.length).must_equal 3 end end @@ -64,14 +64,14 @@ def initialize(options) dsl.build do custom_field CustomFieldType, :a => 1, :b => 2 end - first_field.class.must_equal CustomFieldType + _(first_field.class).must_equal CustomFieldType end it "passes all options to the field instance" do dsl.build do custom_field CustomFieldType, :a => 1, :b => 2 end - first_field.options.must_equal options + _(first_field.options).must_equal options end end @@ -84,7 +84,7 @@ def initialize(options) field :email, "Email" end end - last_field.path.must_equal [:key1, :email] + _(last_field.path).must_equal [:key1, :email] end it "path can be nil to handle the parent structure" do @@ -93,7 +93,7 @@ def initialize(options) field nil, "Email" end end - last_field.path.must_equal [:key1] + _(last_field.path).must_equal [:key1] end it "from can be nested" do @@ -107,8 +107,8 @@ def initialize(options) end end end - first_field.path.must_equal [:key1, :key2, :key3, :name] - last_field.path.must_equal [:key1, :key2, :email] + _(first_field.path).must_equal [:key1, :key2, :key3, :name] + _(last_field.path).must_equal [:key1, :key2, :email] end end @@ -120,7 +120,7 @@ def initialize(options) dsl.build do label "Label" end - first_field.class.must_equal Fields::Label + _(first_field.class).must_equal Fields::Label end it "allows to define subfields with dsl" do @@ -131,7 +131,7 @@ def initialize(options) end end - first_field.fields.map(&:label).must_equal ["A", "B"] + _(first_field.fields.map(&:label)).must_equal ["A", "B"] end it "sets correct path to subfields" do @@ -144,7 +144,7 @@ def initialize(options) end end - first_field.fields.map(&:path).must_equal [[:a], [:b]] + _(first_field.fields.map(&:path)).must_equal [[:a], [:b]] end end @@ -156,7 +156,7 @@ def initialize(options) dsl.build do collection :f, "F" end - first_field.class.must_equal Fields::Collection + _(first_field.class).must_equal Fields::Collection end it "allows to define subfields with dsl" do @@ -167,7 +167,7 @@ def initialize(options) end end - first_field.fields.map(&:label).must_equal ["A", "B"] + _(first_field.fields.map(&:label)).must_equal ["A", "B"] end it "sets correct path to subfields" do @@ -178,7 +178,7 @@ def initialize(options) end end - first_field.fields.map(&:path).must_equal [[:a], [:b]] + _(first_field.fields.map(&:path)).must_equal [[:a], [:b]] end end diff --git a/test/unit/output/field_filter_test.rb b/test/unit/output/field_filter_test.rb index f20a1b77..035645aa 100644 --- a/test/unit/output/field_filter_test.rb +++ b/test/unit/output/field_filter_test.rb @@ -22,51 +22,51 @@ it 'lets all fields go by default' do f = HammerCLI::Output::FieldFilter.new(fields) - f.filtered_fields.map(&:label).sort.must_equal ['field', 'collection', 'id'].sort + _(f.filtered_fields.map(&:label).sort).must_equal ['field', 'collection', 'id'].sort end it 'filters fields by class' do f = HammerCLI::Output::FieldFilter.new(fields, classes_filter: [Fields::Id]) - f.filter_by_classes.filtered_fields.map(&:label).sort.must_equal ['field', 'collection'].sort + _(f.filter_by_classes.filtered_fields.map(&:label).sort).must_equal ['field', 'collection'].sort end it 'filters fields by superclass' do f = HammerCLI::Output::FieldFilter.new(fields, classes_filter: [Fields::ContainerField]) - f.filter_by_classes.filtered_fields.map(&:label).sort.must_equal ['field', 'id'].sort + _(f.filter_by_classes.filtered_fields.map(&:label).sort).must_equal ['field', 'id'].sort end it 'filters fields by sets' do f = HammerCLI::Output::FieldFilter.new(fields, sets_filter: ['THIN']) - f.filter_by_sets.filtered_fields.map(&:label).must_equal ['id'] + _(f.filter_by_sets.filtered_fields.map(&:label)).must_equal ['id'] end it 'filters fields by sets with labels' do f = HammerCLI::Output::FieldFilter.new(fields, sets_filter: ['THIN', 'field']) - f.filter_by_sets.filtered_fields.map(&:label).sort.must_equal ['field', 'id'].sort + _(f.filter_by_sets.filtered_fields.map(&:label).sort).must_equal ['field', 'id'].sort end it 'filters by full labels' do f = HammerCLI::Output::FieldFilter.new(container_fields, sets_filter: ['container/first']) - f.filter_by_sets.filtered_fields.first.fields.map(&:label).must_equal ['first'] + _(f.filter_by_sets.filtered_fields.first.fields.map(&:label)).must_equal ['first'] end it 'filters by superclass labels' do f = HammerCLI::Output::FieldFilter.new(container_fields, sets_filter: ['container']) - f.filter_by_sets.filtered_fields.first.fields.map(&:label).must_equal ['first', 'second'] + _(f.filter_by_sets.filtered_fields.first.fields.map(&:label)).must_equal ['first', 'second'] end it 'filters by labels with wildcards' do f = HammerCLI::Output::FieldFilter.new(container_fields, sets_filter: ['container/f*']) - f.filter_by_sets.filtered_fields.first.fields.map(&:label).must_equal ['first'] + _(f.filter_by_sets.filtered_fields.first.fields.map(&:label)).must_equal ['first'] end it 'allows chained filtering' do f = HammerCLI::Output::FieldFilter.new(fields, sets_filter: ['THIN'], classes_filter: [Fields::Id]) - f.filter_by_classes.filter_by_sets.filtered_fields.map(&:label).must_equal [] + _(f.filter_by_classes.filter_by_sets.filtered_fields.map(&:label)).must_equal [] end it 'filters fields by data' do f = HammerCLI::Output::FieldFilter.new(fields) - f.filter_by_data(nil).filtered_fields.map(&:label).sort.must_equal ['id', 'collection'].sort + _(f.filter_by_data(nil).filtered_fields.map(&:label).sort).must_equal ['id', 'collection'].sort end end diff --git a/test/unit/output/fields_test.rb b/test/unit/output/fields_test.rb index ad8411b3..868897b7 100644 --- a/test/unit/output/fields_test.rb +++ b/test/unit/output/fields_test.rb @@ -11,15 +11,15 @@ it "stores label from constructor" do - field.label.must_equal label + _(field.label).must_equal label end it "stores path from constructor" do - field.path.must_equal path + _(field.path).must_equal path end it "default path should be empty array" do - Fields::Field.new.path.must_equal [] + _(Fields::Field.new.path).must_equal [] end describe "parameters" do @@ -30,7 +30,7 @@ :path => path, :some => :parameter } - field.parameters.must_equal expected_params + _(field.parameters).must_equal expected_params end end @@ -40,11 +40,11 @@ context "blank is allowed" do it "returns false the value is nil" do - field.display?(nil).must_equal true + _(field.display?(nil)).must_equal true end it "returns true when there is some data under the path" do - field.display?("some value").must_equal true + _(field.display?("some value")).must_equal true end end @@ -52,11 +52,11 @@ context "blank is not allowed" do it "returns false the value is nil" do - blank_field.display?(nil).must_equal false + _(blank_field.display?(nil)).must_equal false end it "returns true when there is some data under the path" do - blank_field.display?("some value").must_equal true + _(blank_field.display?("some value")).must_equal true end end @@ -65,11 +65,11 @@ describe "hide_blank?" do it "defaults to false" do - Fields::Field.new.hide_blank?.must_equal false + _(Fields::Field.new.hide_blank?).must_equal false end it "can be set to true in the constructor" do - blank_field.hide_blank?.must_equal true + _(blank_field.hide_blank?).must_equal true end end @@ -85,19 +85,19 @@ let(:field) { Fields::ContainerField.new :label => "Label" } it "returns false the value is nil" do - field.display?(nil).must_equal true + _(field.display?(nil)).must_equal true end it "returns false the value is empty array" do - field.display?([]).must_equal true + _(field.display?([])).must_equal true end it "returns false the value is empty hash" do - field.display?({}).must_equal true + _(field.display?({})).must_equal true end it "returns true when there is some data under the path" do - field.display?(["some value"]).must_equal true + _(field.display?(["some value"])).must_equal true end end @@ -106,19 +106,19 @@ let(:field) { Fields::ContainerField.new :label => "Label", :hide_blank => true } it "returns false the value is nil" do - field.display?(nil).must_equal false + _(field.display?(nil)).must_equal false end it "returns false the value is empty array" do - field.display?([]).must_equal false + _(field.display?([])).must_equal false end it "returns false the value is empty hash" do - field.display?({}).must_equal false + _(field.display?({})).must_equal false end it "returns true when there is some data under the path" do - field.display?(["some value"]).must_equal true + _(field.display?(["some value"])).must_equal true end end @@ -141,19 +141,19 @@ end it "returns true when all the keys are present" do - field.display?({:a => 1, :b => 2}).must_equal true + _(field.display?({:a => 1, :b => 2})).must_equal true end it "returns true when some of the keys are present" do - field.display?({:a => 1}).must_equal true + _(field.display?({:a => 1})).must_equal true end it "returns true the hash is empty" do - field.display?({}).must_equal true + _(field.display?({})).must_equal true end it "returns true the hash does not contain the required keys" do - field.display?({:c => 3}).must_equal true + _(field.display?({:c => 3})).must_equal true end end @@ -167,23 +167,23 @@ end it "returns true when all subfields are displayed" do - field.display?({:a => 1, :b => 2}).must_equal true + _(field.display?({:a => 1, :b => 2})).must_equal true end it "returns true when at least one or the subfields is displayed" do - field.display?({:a => 1}).must_equal true + _(field.display?({:a => 1})).must_equal true end it "returns false when none of the subfieldsis displayed" do - field.display?({:c => 3}).must_equal false + _(field.display?({:c => 3})).must_equal false end it "returns false when the value is empty hash" do - field.display?({}).must_equal false + _(field.display?({})).must_equal false end it "returns false when the value is nil" do - field.display?(nil).must_equal false + _(field.display?(nil)).must_equal false end end diff --git a/test/unit/output/formatters_test.rb b/test/unit/output/formatters_test.rb index 7b5e6790..52e28633 100644 --- a/test/unit/output/formatters_test.rb +++ b/test/unit/output/formatters_test.rb @@ -4,30 +4,30 @@ it "accepts formatter" do lib = HammerCLI::Output::Formatters::FormatterLibrary.new( :Id => HammerCLI::Output::Formatters::FieldFormatter.new) - lib.formatter_for_type(Fields::Id).must_be_instance_of HammerCLI::Output::Formatters::FormatterContainer + _(lib.formatter_for_type(Fields::Id)).must_be_instance_of HammerCLI::Output::Formatters::FormatterContainer end it "can add formatter to instance" do lib = HammerCLI::Output::Formatters::FormatterLibrary.new lib.register_formatter :Id, HammerCLI::Output::Formatters::FieldFormatter.new - lib.formatter_for_type(Fields::Id).must_be_instance_of HammerCLI::Output::Formatters::FormatterContainer + _(lib.formatter_for_type(Fields::Id)).must_be_instance_of HammerCLI::Output::Formatters::FormatterContainer end end describe HammerCLI::Output::Formatters::FieldFormatter do let(:formatter) { HammerCLI::Output::Formatters::FieldFormatter.new } it "has format method" do - formatter.respond_to?(:format).must_equal true + _(formatter.respond_to?(:format)).must_equal true end it "has features" do - formatter.required_features.must_be_kind_of Array + _(formatter.required_features).must_be_kind_of Array end it "should know if it has matching features" do formatter.stubs(:required_features).returns([:feature]) - formatter.match?([:feature]).must_equal true - formatter.match?([:nofeature]).must_equal false + _(formatter.match?([:feature])).must_equal true + _(formatter.match?([:nofeature])).must_equal false end end @@ -41,37 +41,37 @@ def format(data, field_params={}) it "accepts formatter" do container = HammerCLI::Output::Formatters::FormatterContainer.new(TestFormatter.new) - container.format('').must_equal '.' + _(container.format('')).must_equal '.' end it "has format method" do container = HammerCLI::Output::Formatters::FormatterContainer.new - container.respond_to?(:format).must_equal true + _(container.respond_to?(:format)).must_equal true end it "can add formatter to instance" do container = HammerCLI::Output::Formatters::FormatterContainer.new(TestFormatter.new) container.add_formatter TestFormatter.new - container.format('').must_equal '..' + _(container.format('')).must_equal '..' end end describe HammerCLI::Output::Formatters::ColorFormatter do it "colorizes the value" do formatter = HammerCLI::Output::Formatters::ColorFormatter.new(:red) - formatter.format('red').must_equal "\e[31mred\e[0m" + _(formatter.format('red')).must_equal "\e[31mred\e[0m" end end describe HammerCLI::Output::Formatters::DateFormatter do it "formats the date" do formatter = HammerCLI::Output::Formatters::DateFormatter.new - formatter.format('2000-01-01 21:01:01').must_equal "2000/01/01 21:01:01" + _(formatter.format('2000-01-01 21:01:01')).must_equal "2000/01/01 21:01:01" end it "returns empty string on wrong value" do formatter = HammerCLI::Output::Formatters::DateFormatter.new - formatter.format('wrong value').must_equal "" + _(formatter.format('wrong value')).must_equal "" end end @@ -79,23 +79,23 @@ def format(data, field_params={}) let(:formatter) { HammerCLI::Output::Formatters::ListFormatter.new } it "serializes the value" do - formatter.format([1, 2]).must_equal '1, 2' + _(formatter.format([1, 2])).must_equal '1, 2' end it "returns empty string when the input is nil" do - formatter.format(nil).must_equal '' + _(formatter.format(nil)).must_equal '' end it "returns string value when the input is not a list" do - formatter.format('some string').must_equal 'some string' + _(formatter.format('some string')).must_equal 'some string' end it 'can put the string on a new line' do - formatter.format([1, 2], :on_new_line => true).must_equal "\n 1, 2" + _(formatter.format([1, 2], :on_new_line => true)).must_equal "\n 1, 2" end it 'allows to change the separator' do - formatter.format([1, 2, 3], :separator => '#').must_equal "1#2#3" + _(formatter.format([1, 2, 3], :separator => '#')).must_equal "1#2#3" end it 'can format list vertically' do @@ -105,7 +105,7 @@ def format(data, field_params={}) ' value 2', ].join("\n") - formatter.format(['value 1', 'value 2'], :separator => "\n", :on_new_line => true).must_equal expected_output + _(formatter.format(['value 1', 'value 2'], :separator => "\n", :on_new_line => true)).must_equal expected_output end end @@ -121,17 +121,17 @@ def format(data, field_params={}) it "serializes the value" do formatter = HammerCLI::Output::Formatters::KeyValueFormatter.new - formatter.format(params).must_equal 'Name => Value' + _(formatter.format(params)).must_equal 'Name => Value' end it "returns empty string when the input is nil" do formatter = HammerCLI::Output::Formatters::KeyValueFormatter.new - formatter.format(nil).must_equal '' + _(formatter.format(nil)).must_equal '' end it "returns empty string value when the input is not a hash" do formatter = HammerCLI::Output::Formatters::KeyValueFormatter.new - formatter.format('some string').must_equal '' + _(formatter.format('some string')).must_equal '' end end @@ -141,17 +141,17 @@ def format(data, field_params={}) it "prepends new line" do formatter = HammerCLI::Output::Formatters::LongTextFormatter.new - formatter.format("Some\nmultiline\ntext").must_equal "\n Some\n multiline\n text" + _(formatter.format("Some\nmultiline\ntext")).must_equal "\n Some\n multiline\n text" end it "accepts nil" do formatter = HammerCLI::Output::Formatters::LongTextFormatter.new - formatter.format(nil).must_equal "\n " + _(formatter.format(nil)).must_equal "\n " end it "enables to switch indentation off" do formatter = HammerCLI::Output::Formatters::LongTextFormatter.new(:indent => false) - formatter.format("Some\nmultiline\ntext").must_equal "\nSome\nmultiline\ntext" + _(formatter.format("Some\nmultiline\ntext")).must_equal "\nSome\nmultiline\ntext" end end @@ -160,11 +160,11 @@ def format(data, field_params={}) let(:formatter) { HammerCLI::Output::Formatters::InlineTextFormatter.new } it 'prints multiline text to one line' do - formatter.format("Some\nmultiline\ntext").must_equal('Some multiline text') + _(formatter.format("Some\nmultiline\ntext")).must_equal('Some multiline text') end it 'accepts nil' do - formatter.format(nil).must_equal('') + _(formatter.format(nil)).must_equal('') end end @@ -175,26 +175,26 @@ def format(data, field_params={}) let(:long_multiline_text) { 'Lorem ipsum dolor' * 5 } it 'prints multiline text' do - formatter.format(multiline_text).must_equal( + _(formatter.format(multiline_text)).must_equal( "#{indentation}Some#{indentation}multiline#{indentation}text" ) end it 'accepts nil' do - formatter.format(nil).must_equal(indentation) + _(formatter.format(nil)).must_equal(indentation) end it 'accepts field width param' do - formatter.format(long_multiline_text, width: 80) + _(formatter.format(long_multiline_text, width: 80)) .must_equal(indentation + long_multiline_text[0..-6] + indentation + long_multiline_text[-5..-1]) end it 'deals with strange params' do - formatter.format(long_multiline_text, width: -1) + _(formatter.format(long_multiline_text, width: -1)) .must_equal(indentation + long_multiline_text[0..-26] + indentation + long_multiline_text[-25..-1]) - formatter.format(long_multiline_text, width: 999) + _(formatter.format(long_multiline_text, width: 999)) .must_equal(indentation + long_multiline_text) end end @@ -204,16 +204,16 @@ def format(data, field_params={}) let(:formatter) { HammerCLI::Output::Formatters::BooleanFormatter.new } it "says yes for true like objects" do - formatter.format(true).must_equal "yes" - formatter.format("yes").must_equal "yes" - formatter.format("no").must_equal "yes" - formatter.format(1).must_equal "yes" + _(formatter.format(true)).must_equal "yes" + _(formatter.format("yes")).must_equal "yes" + _(formatter.format("no")).must_equal "yes" + _(formatter.format(1)).must_equal "yes" end it "says no for false, nil, empty string and 0" do - formatter.format(nil).must_equal "no" - formatter.format(false).must_equal "no" - formatter.format("").must_equal "no" - formatter.format(0).must_equal "no" + _(formatter.format(nil)).must_equal "no" + _(formatter.format(false)).must_equal "no" + _(formatter.format("")).must_equal "no" + _(formatter.format(0)).must_equal "no" end end diff --git a/test/unit/output/output_test.rb b/test/unit/output/output_test.rb index f50ef84f..75b581f7 100644 --- a/test/unit/output/output_test.rb +++ b/test/unit/output/output_test.rb @@ -79,27 +79,27 @@ context "adapters" do it "should register adapter" do out_class.register_adapter(:test, HammerCLI::Output::Adapter::Silent) - out_class.adapters[:test].must_equal(HammerCLI::Output::Adapter::Silent) + _(out_class.adapters[:test]).must_equal(HammerCLI::Output::Adapter::Silent) end it "should return required default adapter" do out = out_class.new({}, {:default_adapter => :silent}) - out.adapter.must_be_instance_of HammerCLI::Output::Adapter::Silent + _(out.adapter).must_be_instance_of HammerCLI::Output::Adapter::Silent end it "should use adapter form context" do out = out_class.new({:adapter => :silent}) - out.adapter.must_be_instance_of HammerCLI::Output::Adapter::Silent + _(out.adapter).must_be_instance_of HammerCLI::Output::Adapter::Silent end it "should prioritize adapter from the context" do out = out_class.new({:adapter => :table}, {:default_adapter => :silent}) - out.adapter.must_be_instance_of HammerCLI::Output::Adapter::Table + _(out.adapter).must_be_instance_of HammerCLI::Output::Adapter::Table end it "should use base adapter if the requested default was not found" do out = out_class.new({}, {:default_adapter => :unknown}) - out.adapter.must_be_instance_of HammerCLI::Output::Adapter::Base + _(out.adapter).must_be_instance_of HammerCLI::Output::Adapter::Base end end @@ -107,8 +107,8 @@ it "should register formatter" do formatter = HammerCLI::Output::Formatters::FieldFormatter.new out_class.register_formatter(formatter, :type1, :type2) - out_class.formatters[:type1].must_equal([formatter]) - out_class.formatters[:type2].must_equal([formatter]) + _(out_class.formatters[:type1]).must_equal([formatter]) + _(out_class.formatters[:type2]).must_equal([formatter]) end end @@ -128,7 +128,7 @@ ) end let(:id) { Fields::Id.new(:path => [:id], :label => 'Id') } - let(:name) { Fields::Field.new(:path => [:name], :label => 'Name') } + let(:firstname) { Fields::Field.new(:path => [:name], :label => 'Name') } let(:surname) { Fields::Field.new(:path => [:surname], :label => 'Surname') } let(:definition) { HammerCLI::Output::Definition.new } let(:expected_record_output) do @@ -174,14 +174,14 @@ end it 'should not print record data' do - definition.append([id, name, surname]) + definition.append([id, firstname, surname]) assert_output('', nil) do output.print_record(definition, data.first) end end it 'should not print collection data' do - definition.append([id, name, surname]) + definition.append([id, firstname, surname]) assert_output('', nil) do output.print_record(definition, data) end @@ -223,14 +223,14 @@ end it 'should print record data' do - definition.append([id, name, surname]) + definition.append([id, firstname, surname]) assert_output(expected_record_output, nil) do output.print_record(definition, data.first) end end it 'should print collection data' do - definition.append([id, name, surname]) + definition.append([id, firstname, surname]) assert_output(expected_record_output, nil) do output.print_record(definition, data) end @@ -271,14 +271,14 @@ end it 'should print record data' do - definition.append([id, name, surname]) + definition.append([id, firstname, surname]) assert_output(expected_record_output, nil) do output.print_record(definition, data.first) end end it 'should print collection data' do - definition.append([id, name, surname]) + definition.append([id, firstname, surname]) assert_output(expected_record_output, nil) do output.print_record(definition, data) end diff --git a/test/unit/output/record_collection_test.rb b/test/unit/output/record_collection_test.rb index 598d0555..3c19325b 100644 --- a/test/unit/output/record_collection_test.rb +++ b/test/unit/output/record_collection_test.rb @@ -7,28 +7,28 @@ let(:set) { HammerCLI::Output::RecordCollection.new(data, meta) } it "should keep records and its meta data" do - set.must_equal data - set.meta.total.must_equal 6 - set.meta.subtotal.must_equal 5 - set.meta.total.must_equal 6 - set.meta.page.must_equal 2 - set.meta.per_page.must_equal 3 - set.meta.search.must_equal 'name~=xx' - set.meta.sort_by.must_equal 'name' - set.meta.sort_order.must_equal 'ASC' + _(set).must_equal data + _(set.meta.total).must_equal 6 + _(set.meta.subtotal).must_equal 5 + _(set.meta.total).must_equal 6 + _(set.meta.page).must_equal 2 + _(set.meta.per_page).must_equal 3 + _(set.meta.search).must_equal 'name~=xx' + _(set.meta.sort_by).must_equal 'name' + _(set.meta.sort_order).must_equal 'ASC' end it "should wrap the data into list" do record = { :key => :value, :key2 => :value } rs = HammerCLI::Output::RecordCollection.new(record) - rs.must_be_kind_of Array + _(rs).must_be_kind_of Array end it "sould accept MetaData as option" do metadata = HammerCLI::Output::MetaData.new(meta) set = HammerCLI::Output::RecordCollection.new(data, :meta => metadata) - set.meta.must_equal metadata - set.meta.total.must_equal 6 + _(set.meta).must_equal metadata + _(set.meta.total).must_equal 6 end end @@ -37,23 +37,23 @@ let(:meta) { HammerCLI::Output::MetaData.new(:total => "6", :page => "2", :per_page => "3", :subtotal => "5") } it "converts numeric metadata to numbers" do - meta.total.must_equal 6 - meta.page.must_equal 2 - meta.per_page.must_equal 3 - meta.subtotal.must_equal 5 + _(meta.total).must_equal 6 + _(meta.page).must_equal 2 + _(meta.per_page).must_equal 3 + _(meta.subtotal).must_equal 5 end describe "pagination_set?" do let(:pagination_data) { { :total => 6, :page => 2, :per_page => 3, :subtotal => 5 } } it "can tell if pagination data are set" do - meta.pagination_set?.must_equal true + _(meta.pagination_set?).must_equal true end it "can tell if pagination data are not set" do pagination_data.keys.each do |key| meta = HammerCLI::Output::MetaData.new(pagination_data.clone.reject { |k| k == key }) - meta.pagination_set?.must_equal false + _(meta.pagination_set?).must_equal false end end end diff --git a/test/unit/settings_test.rb b/test/unit/settings_test.rb index d8de3af1..f0aebf00 100644 --- a/test/unit/settings_test.rb +++ b/test/unit/settings_test.rb @@ -10,83 +10,83 @@ let(:settings) { HammerCLI::Settings } it "returns nil when nothing is loaded" do - settings.get(:a).must_be_nil - settings.get(:a, :b).must_be_nil + _(settings.get(:a)).must_be_nil + _(settings.get(:a, :b)).must_be_nil end it "returns nil on unknown key" do settings.load({:a => 1}) - settings.get(:b).must_be_nil + _(settings.get(:b)).must_be_nil end it "returns correct value" do settings.load({:a => 1}) - settings.get(:a).must_equal 1 + _(settings.get(:a)).must_equal 1 end it "takes both strings and symbols" do settings.load({:a => 1, 'b' => 2}) - settings.get('a').must_equal 1 - settings.get(:b).must_equal 2 + _(settings.get('a')).must_equal 1 + _(settings.get(:b)).must_equal 2 end it "finds nested settings" do settings.load({:a => {:b => 1}}) - settings.get(:a, :b).must_equal 1 - settings.get(:a, 'b').must_equal 1 - settings.get('a', :b).must_equal 1 + _(settings.get(:a, :b)).must_equal 1 + _(settings.get(:a, 'b')).must_equal 1 + _(settings.get('a', :b)).must_equal 1 end it "loads all settings" do settings.load({:a => 1, :b => 2}) - settings.get(:a).must_equal 1 - settings.get(:b).must_equal 2 + _(settings.get(:a)).must_equal 1 + _(settings.get(:b)).must_equal 2 end it "dumps all settings" do settings.empty data = {:a => 1, :b => 2} settings.load(data) - settings.dump.must_equal data + _(settings.dump).must_equal data end it "merges hash settings on second load" do settings.load({:a => 1, :b => 2, :d => {:e => 4, :f => 5}}) settings.load({:b => 'B', :c => 'C', :d => {:e => 'E'}}) - settings.get(:a).must_equal 1 - settings.get(:b).must_equal 'B' - settings.get(:c).must_equal 'C' - settings.get(:d, :e).must_equal 'E' - settings.get(:d, :f).must_equal 5 + _(settings.get(:a)).must_equal 1 + _(settings.get(:b)).must_equal 'B' + _(settings.get(:c)).must_equal 'C' + _(settings.get(:d, :e)).must_equal 'E' + _(settings.get(:d, :f)).must_equal 5 end it "merges array settings on second load" do settings.load({:x => [:a, :b]}) settings.load({:x => [:c, :d]}) - settings.get(:x)[0].must_equal :a - settings.get(:x)[1].must_equal :b - settings.get(:x)[2].must_equal :c - settings.get(:x)[3].must_equal :d - settings.get(:x).size.must_equal 4 + _(settings.get(:x)[0]).must_equal :a + _(settings.get(:x)[1]).must_equal :b + _(settings.get(:x)[2]).must_equal :c + _(settings.get(:x)[3]).must_equal :d + _(settings.get(:x).size).must_equal 4 end it "clear wipes all settings but default values" do settings.load({:a => 1, :b => 2}) settings.clear - settings.get(:a).must_be_nil - settings.get(:b).must_be_nil - settings.default_settings.each { |key, val| settings.get(key).must_equal val } + _(settings.get(:a)).must_be_nil + _(settings.get(:b)).must_be_nil + settings.default_settings.each { |key, val| _(settings.get(key)).must_equal val } end it "empty wipes all settings including default values" do settings.load({:a => 1, :b => 2}) settings.empty - settings.dump.must_equal({}) + _(settings.dump).must_equal({}) end it "initializes settings with default settings" do settings.instance_variable_set(:@settings_hash, nil) - settings.dump.must_equal settings.default_settings + _(settings.dump).must_equal settings.default_settings end context "load from paths" do @@ -115,19 +115,19 @@ it "loads settings from file" do [config1.path, config2.path].each { |config| settings.load_from_file config } - settings.get(:host).must_equal 'https://localhost.localdomain/' - settings.get(:username).must_equal 'admin' + _(settings.get(:host)).must_equal 'https://localhost.localdomain/' + _(settings.get(:username)).must_equal 'admin' end it "clears path history on clear invokation" do settings.load_from_paths [config2.path] settings.clear - settings.path_history.must_equal [] + _(settings.path_history).must_equal [] end it "store config path history" do [config1.path, config2.path].each { |config| settings.load_from_file config } - settings.path_history.must_equal [config1.path, config2.path] + _(settings.path_history).must_equal [config1.path, config2.path] end it "loads settings from dir" do @@ -146,10 +146,10 @@ settings.load_from_paths [dir] settings.load_from_file config1.path - settings.get(:host).must_equal 'https://localhost/' - settings.get(:username).must_equal 'admin' - settings.get(:param1).must_equal 'value1' - settings.get(:module, :param2).must_equal 'value2' + _(settings.get(:host)).must_equal 'https://localhost/' + _(settings.get(:username)).must_equal 'admin' + _(settings.get(:param1)).must_equal 'value1' + _(settings.get(:module, :param2)).must_equal 'value2' ensure FileUtils.remove_entry dir diff --git a/test/unit/utils_test.rb b/test/unit/utils_test.rb index 63914cde..4e2f0661 100644 --- a/test/unit/utils_test.rb +++ b/test/unit/utils_test.rb @@ -16,33 +16,36 @@ class X let(:str_with_percent) { 'Error: AA%s BB%s <%# template error %> verify this %>' } it 'should not fail without expected parameters' do - str.format({}).must_equal 'AA BB' + _(str.format({})).must_equal 'AA BB' end it 'should replace positional parameters' do - pos_str.format(['A', 'B']).must_equal 'AAA BBB' + _(pos_str.format(['A', 'B'])).must_equal 'AAA BBB' end it 'should replace named parameters' do - str.format(:a => 'A', :b => 'B').must_equal 'AAA BBB' + _(str.format(:a => 'A', :b => 'B')).must_equal 'AAA BBB' end it 'should replace named parameters with string keys' do - str.format('a' => 'A', 'b' => 'B').must_equal 'AAA BBB' + _(str.format('a' => 'A', 'b' => 'B')).must_equal 'AAA BBB' end it 'should replace named parameters marked with curly brackets' do - curly_str.format(:a => 'A', :b => 'B').must_equal 'AAA BBB' + _(curly_str.format(:a => 'A', :b => 'B')).must_equal 'AAA BBB' end it 'should not fail due to presence of percent chars in string' do - str_with_percent.format({}).must_equal 'Error: AA BB <%# template error %> verify this %>' + _(str_with_percent.format({})).must_equal 'Error: AA BB <%# template error %> verify this %>' + end + it 'should consider false values' do + _(curly_str.format(:a => false, 'b' => false)).must_equal 'AAfalse BBfalse' end end context "camelize" do it "should camelize string with underscores" do - "one_two_three".camelize.must_equal "OneTwoThree" + _("one_two_three".camelize).must_equal "OneTwoThree" end it "should not camelize string with dashes" do - "one-two-three".camelize.must_equal "One-two-three" + _("one-two-three".camelize).must_equal "One-two-three" end end @@ -51,15 +54,15 @@ class X describe "underscore" do it "converts camelized string to underscore" do - "OneTwoThree".underscore.must_equal "one_two_three" + _("OneTwoThree".underscore).must_equal "one_two_three" end it "converts full class path name to underscore with slashes" do - "HammerCLI::SomeClass".underscore.must_equal "hammer_cli/some_class" + _("HammerCLI::SomeClass".underscore).must_equal "hammer_cli/some_class" end it "converts dashes to underscores" do - "Re-Read".underscore.must_equal "re_read" + _("Re-Read".underscore).must_equal "re_read" end end @@ -67,11 +70,11 @@ class X describe "indent" do it "indents single line string" do - "line one".indent_with(" ").must_equal " line one" + _("line one".indent_with(" ")).must_equal " line one" end it "indents multi line string" do - "line one\nline two".indent_with(" ").must_equal " line one\n line two" + _("line one\nline two".indent_with(" ")).must_equal " line one\n line two" end end @@ -79,23 +82,23 @@ class X describe "constantize" do it "raises NameError for empty string" do - proc { + _{ "".constantize }.must_raise NameError end it "raises NameError for unknown constant" do - proc { + _{ "UnknownClass".constantize }.must_raise NameError end it "returns correct constant" do - "Object".constantize.must_equal Object + _("Object".constantize).must_equal Object end it "returns correct namespaced constant" do - "Constant::Test::X".constantize.must_equal Constant::Test::X + _("Constant::Test::X".constantize).must_equal Constant::Test::X end end @@ -103,11 +106,11 @@ class X describe Hash do context 'transform_keys' do - let(:hash) { { :one => 'one', :two => 'two', 'three' => 3 } } + let(:original_hash) { { :one => 'one', :two => 'two', 'three' => 3 } } let(:transformed_hash) { { :ONE => 'one', :TWO => 'two', 'THREE' => 3 } } it 'should return a new hash with new keys' do - new_hash = hash.transform_keys(&:upcase) - new_hash.must_equal transformed_hash + new_hash = original_hash.transform_keys(&:upcase) + _(new_hash).must_equal transformed_hash end end end @@ -129,21 +132,21 @@ class X HammerCLI::Settings.load({ :ui => { :interactive => nil }, :_params => { :interactive => nil } }) - HammerCLI::interactive?.must_equal true + _(HammerCLI::interactive?).must_equal true end it "should by false when cli arg set" do HammerCLI::Settings.load({ :ui => { :interactive => nil }, :_params => { :interactive => false } }) - HammerCLI::interactive?.must_equal false + _(HammerCLI::interactive?).must_equal false end it "should by false when turned off in cfg" do HammerCLI::Settings.load({ :ui => { :interactive => false }, :_params => { :interactive => nil } }) - HammerCLI::interactive?.must_equal false + _(HammerCLI::interactive?).must_equal false end end @@ -151,21 +154,21 @@ class X describe "constant_path" do it "returns empty array for empty string" do - HammerCLI.constant_path("").must_equal [] + _(HammerCLI.constant_path("")).must_equal [] end it "raises NameError for unknown constant" do - proc { + _{ HammerCLI.constant_path("UnknownClass") }.must_raise NameError end it "returns single constant" do - HammerCLI.constant_path("Object").must_equal [Object] + _(HammerCLI.constant_path("Object")).must_equal [Object] end it "returns correct path for namespaced constant" do - HammerCLI.constant_path("Constant::Test::X").must_equal [Constant, Constant::Test, Constant::Test::X] + _(HammerCLI.constant_path("Constant::Test::X")).must_equal [Constant, Constant::Test, Constant::Test::X] end end