Sha256: 39505c70de2e008c7a1ae52512e8a2e25ac88b7d8cc9260fa481f8544349eeb9

Contents?: true

Size: 1.48 KB

Versions: 8

Compression:

Stored size: 1.48 KB

Contents

# frozen_string_literal: true

require 'eac_cli/runner'
require 'eac_cli/runner_with/subcommands'

RSpec.describe ::EacCli::RunnerWith::Subcommands do
  let(:parent_runner) do
    the_module = described_class
    the_child = child_runner
    Class.new do
      include ::EacCli::Runner
      include the_module
      const_set('ChildCmd', the_child)

      runner_definition do
        desc 'A stub root runner.'
        arg_opt '-r', '--root-var', 'A root variable.'
        subcommands
      end

      delegate :root_var, to: :parsed
    end
  end

  let(:child_runner) do
    ::Class.new do
      include ::EacCli::Runner

      runner_definition do
        bool_opt '-c', '--child-opt', 'A boolean option.'
        pos_arg :child_var
      end

      def run; end
    end
  end

  let(:instance) { parent_runner.create(argv: parent_argv) }

  context 'when subcommand is supplied' do
    let(:parent_argv) { %w[--root-var 123 child-cmd --child-opt 456] }

    it { expect(instance.parsed.root_var).to eq('123') }
    it { expect(instance.parsed.subcommand).to eq('child-cmd') }
    it { expect(instance.parsed.subcommand_args).to eq(%w[--child-opt 456]) }
    it { expect(instance.subcommand_runner.parsed.child_opt).to eq(true) }
    it { expect(instance.subcommand_runner.parsed.child_var).to eq('456') }
  end

  context 'when subcommand is not supplied' do
    let(:instance) { parent_runner.create(%w[456]) }

    it do
      expect { instance.run }.to raise_error(::EacCli::Parser::Error)
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
avm-tools-0.80.0 vendor/eac_cli/spec/lib/eac_cli/runner_with/subcommands_spec.rb
avm-tools-0.79.0 vendor/eac_cli/spec/lib/eac_cli/runner_with/subcommands_spec.rb
avm-tools-0.78.0 vendor/eac_cli/spec/lib/eac_cli/runner_with/subcommands_spec.rb
ehbrs-tools-0.16.2 vendor/eac_cli/spec/lib/eac_cli/runner_with/subcommands_spec.rb
avm-tools-0.77.0 vendor/eac_cli/spec/lib/eac_cli/runner_with/subcommands_spec.rb
ehbrs-tools-0.16.1 vendor/eac_cli/spec/lib/eac_cli/runner_with/subcommands_spec.rb
avm-tools-0.76.1 vendor/eac_cli/spec/lib/eac_cli/runner_with/subcommands_spec.rb
ehbrs-tools-0.16.0 vendor/eac_cli/spec/lib/eac_cli/runner_with/subcommands_spec.rb