Sha256: 509b8b6e6d6b3b37d1a4b5900178ed15674365c5332730e4d9f82d444c758ae9

Contents?: true

Size: 1.47 KB

Versions: 4

Compression:

Stored size: 1.47 KB

Contents

require 'helper'

module Cri
  class BasicHelpTestCase < Cri::TestCase
    def test_run_without_supercommand
      cmd = Cri::Command.new_basic_help

      assert_raises Cri::NoHelpAvailableError do
        cmd.run([])
      end
    end

    def test_run_with_supercommand
      cmd = Cri::Command.define do
        name 'meh'
      end

      help_cmd = Cri::Command.new_basic_help
      cmd.add_command(help_cmd)

      help_cmd.run([])
    end

    def test_run_with_chain_of_commands
      cmd = Cri::Command.define do
        name 'root'
        summary 'I am root!'

        subcommand do
          name 'foo'
          summary 'I am foo!'

          subcommand do
            name 'subsubby'
            summary 'I am subsubby!'
          end
        end
      end

      help_cmd = Cri::Command.new_basic_help
      cmd.add_command(help_cmd)

      # Simple call
      stdout, stderr = capture_io_while do
        help_cmd.run(['foo'])
      end
      assert_match(/I am foo!/m, stdout)
      assert_equal('', stderr)

      # Subcommand
      stdout, stderr = capture_io_while do
        help_cmd.run(%w[foo subsubby])
      end
      assert_match(/I am subsubby!/m, stdout)
      assert_equal('', stderr)

      # Non-existing subcommand
      stdout, stderr = capture_io_while do
        assert_raises SystemExit do
          help_cmd.run(%w[foo mysterycmd])
        end
      end
      assert_equal '', stdout
      assert_match(/foo: unknown command 'mysterycmd'/, stderr)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cri-2.10.1 test/test_basic_help.rb
cri-2.10.0 test/test_basic_help.rb
cri-2.9.1 test/test_basic_help.rb
cri-2.9.0 test/test_basic_help.rb