A long-lived project that still receives updates
Hammer-CLI-Katello is a plugin for Hammer to provide connectivity to a Katello server.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 3.1.3, < 4.0.0
>= 1.6.3, < 2.0.0
= 4.7.4
~> 2.0
~> 10.0
= 0.42
~> 1.0

Runtime

 Project Readme

hammer-cli-katello

Next-gen CLI tool for Katello (Katello-specific commands)

hammer-cli development docs for help

Development setup

The easiest way to set up a hammer development environment is to use the centos7-hammer-devel box in forklift.

Configuration

Configuration files for all hammer plugins are found at ~/.hammer/cli.modules.d. The centos7-hammer-devel box configures hammer for you, but you may change the configuration files directly as well. The hammer-cli-katello configuration is located at ~/.hammer/cli.modules.d/katello.yml.

The overall hammer config is found at ~/.hammer/cli_config.yml. The hammer-cli docs provide more information on possible configuration values. One useful configuration option is the Katello server to point to; that is found in ~/.hammer/cli.modules.d/foreman.yml.

Running Hammer

Hammer is run as an executable from the root of the hammer-cli-katello repository.

bundle exec hammer -vh

Look for any errors. If you see none, you should be good to go.

Testing

To run the tests with rubocop:

rake

To run the tests only:

rake test

To run a specific test:

rake test TEST="test/functional/content_views/show_test.rb"

There are both unit tests and functional tests. Unit tests are used for supporting code, such as lib/hammer_cli_katello/id_resolver.rb. Functional tests are used for testing the input/output interaction of hammer with the Katello API.

hammer-cli-foreman stubs the API for functional tests. See api_expectations.rb. To regenerate the stubbed API, refer to the test data Readme.

Each subcommand action is tested in its own test file. An example is hammer content-view update; it is stored in test/functional/content_view/update_test.rb.

For most hammer sub-commands, there are common API calls that are used to resolve database object IDs. These are usually accompanied with helpers to test the common API calls. An example is the OrganizationHelpers.

A typical functional test takes this form:

it 'allows minimal options' do
  api_expects(:content_views, :update) do |p| # expect an API call to ContentViews#Update
    p['id'] == 2 # expect the params to include {'id' => 2}
  end

  run_cmd(%w(content-view update --id 2)) # Run the hammer command to test
end