@@ -98,6 +98,12 @@ module Beaker
             @cmd_options[:timeout] = value
           end
 
+          opts.on '-r RUNNER', '--runner RUNNER',
+                  'Specify which test runner to use',
+                  'supported runners: beaker, minitest' do |value|
+            @cmd_options[:runner] = value
+          end
+
           opts.on '-i URI', '--install URI',
                   'Install a project repo/app on the SUTs',
                   'Provide full git URI or use short form KEYWORD/name',
module Beaker
  module Options
    #An object that parses arguments in the format ['--option', 'value', '--option2', 'value2', '--switch']
    class CommandLineParser

      # @example Create a CommanLineParser
      #   a = CommandLineParser.new
      #
      # @note All of Beaker's supported command line options are defined here
      def initialize
        @cmd_options = Beaker::Options::OptionsHash.new

        @optparse = OptionParser.new do|opts|
          # Set a banner
          opts.banner = "Usage: #{File.basename($0)} [options...]"

          opts.on '-h', '--hosts FILE',
                  'Use host configuration FILE',
                  '(default sample.cfg)'  do |file|
            @cmd_options[:hosts_file] = file
          end

          opts.on '-o', '--options-file FILE',
                  'Read options from FILE',
                  'This should evaluate to a ruby hash.',
                  'CLI optons are given precedence.' do |file|
            @cmd_options[:options_file] =  file
          end

          opts.on '--helper PATH/TO/SCRIPT',
                  'Ruby file evaluated prior to tests',
                  '(a la spec_helper)' do |script|
            @cmd_options[:helper] = script
          end

          opts.on  '--load-path /PATH/TO/DIR,/ADDITIONAL/DIR/PATHS',
                   'Add paths to LOAD_PATH'  do |value|
            @cmd_options[:load_path] = value
          end

          opts.on  '-t', '--tests /PATH/TO/DIR,/ADDITIONA/DIR/PATHS,/PATH/TO/FILE.rb',
                   'Execute tests from paths and files' do |value|
            @cmd_options[:tests] = value
          end

          opts.on '--pre-suite /PRE-SUITE/DIR/PATH,/ADDITIONAL/DIR/PATHS,/PATH/TO/FILE.rb',
                  'Path to project specific steps to be run BEFORE testing' do |value|
            @cmd_options[:pre_suite] = value
          end

          opts.on '--post-suite /POST-SUITE/DIR/PATH,/OPTIONAL/ADDITONAL/DIR/PATHS,/PATH/TO/FILE.rb',
                  'Path to project specific steps to be run AFTER testing' do |value|
            @cmd_options[:post_suite] = value
          end

          opts.on '--[no-]provision',
                  'Do not provision vm images before testing',
                  '(default: true)' do |bool|
            @cmd_options[:provision] = bool
            unless bool
              @cmd_options[:validate]  = false
              @cmd_options[:configure] = false
            end
          end

          opts.on '--[no-]configure',
                  'Do not configure vm images before testing',
                  '(default: true)' do |bool|
            @cmd_options[:configure] = bool
          end

          opts.on '--preserve-hosts [MODE]',
                  'How should SUTs be treated post test',
                  'Possible values:',
                  'always (keep SUTs alive)',
                  'onfail (keep SUTs alive if failures occur during testing)',
                  'onpass (keep SUTs alive if no failures occur during testing)',
                  'never (cleanup SUTs - shutdown and destroy any changes made during testing)',
                  '(default: never)'  do |mode|
            @cmd_options[:preserve_hosts] = mode || 'always'
          end

          opts.on '--root-keys',
                  'Install puppetlabs pubkeys for superuser',
                  '(default: false)' do |bool|
            @cmd_options[:root_keys] = bool
          end

          opts.on '--keyfile /PATH/TO/SSH/KEY',
                  'Specify alternate SSH key',
                  '(default: ~/.ssh/id_rsa)' do |key|
            @cmd_options[:keyfile] = key
          end

          opts.on '--timeout TIMEOUT',
                  '(vCloud only) Specify a provisioning timeout (in seconds)',
                  '(default: 300)' do |value|
            @cmd_options[:timeout] = value
          end

          opts.on '-i URI', '--install URI',
                  'Install a project repo/app on the SUTs',
                  'Provide full git URI or use short form KEYWORD/name',
                  'supported keywords: PUPPET, FACTER, HIERA, HIERA-PUPPET' do |value|
            @cmd_options[:install] = value
          end

          opts.on('-m', '--modules URI', 'Select puppet module git install URI') do |value|
            @cmd_options[:modules] = value
          end

          opts.on '-q', '--[no-]quiet',
                  'Do not log output to STDOUT',
                  '(default: false)' do |bool|
            @cmd_options[:quiet] = bool
          end

          opts.on '--[no-]color',
                  'Do not display color in log output',
                  '(default: true)' do |bool|
            @cmd_options[:color] = bool
          end

          opts.on '--[no-]color-host-output',
                  'Ensure SUT colored output is preserved',
                  '(default: false)' do |bool|
            @cmd_options[:color_host_output] = bool
            if bool
              @cmd_options[:color_host_output] = true
            end
          end

          opts.on '--log-level LEVEL',
                  'Log level',
                  'Supported LEVEL keywords:',
                  'trace   : all messages, full stack trace of errors, file copy details',
                  'debug   : all messages, plus full stack trace of errors',
                  'verbose : all messages',
                  'info    : info messages, notifications and warnings',
                  'notify  : notifications and warnings',
                  'warn    : warnings only',
                  '(default: info)' do |val|
            @cmd_options[:log_level] = val
          end

          opts.on '--log-prefix PREFIX',
                  'Use a custom prefix for your Beaker log files',
                  'can provide nested directories (ie. face/man)',
                  '(defaults to hostfile name. ie. ../i/07.yml --> "07")' do |val|
            @cmd_options[:log_prefix] = val
          end

          opts.on  '-d', '--[no-]dry-run',
                   'Report what would happen on targets',
                   '(default: false)' do |bool|
            @cmd_options[:dry_run] = bool
            $dry_run = bool
          end

          opts.on '--fail-mode [MODE]',
                  'How should the harness react to errors/failures',
                  'Possible values:',
                  'fast (skip all subsequent tests)',
                  'slow (attempt to continue run post test failure)',
                  'stop (DEPRECATED, please use fast)',
                  '(default: slow)'  do |mode|
            @cmd_options[:fail_mode] = mode =~ /stop/ ? 'fast' :  mode
          end

          opts.on '--[no-]ntp',
                  'Sync time on SUTs before testing',
                  '(default: false)' do |bool|
            @cmd_options[:timesync] = bool
          end

          opts.on '--repo-proxy',
                  'Proxy packaging repositories on ubuntu, debian, cumulus and solaris-11',
                  '(default: false)' do
            @cmd_options[:repo_proxy] = true
          end

          opts.on '--add-el-extras',
                  'Add Extra Packages for Enterprise Linux (EPEL) repository to el-* hosts',
                  '(default: false)' do
            @cmd_options[:add_el_extras] = true
          end

          opts.on '--package-proxy URL', 'Set proxy url for package managers (yum and apt)' do |value|
            @cmd_options[:package_proxy] = value
          end

          opts.on '--[no-]validate',
                  'Validate that SUTs are correctly provisioned before running tests',
                  '(default: true)' do |bool|
            @cmd_options[:validate] = bool
          end

          opts.on '--collect-perf-data [MODE]',
                  'Collect SUT performance and load data',
                  'Possible values:',
                  'aggressive (poll every minute)',
                  'normal (poll every 10 minutes)',
                  'none (do not collect perf data)',
                  '(default: normal)' do |mode|
            @cmd_options[:collect_perf_data] = mode || 'normal'
          end

          opts.on('--version', 'Report currently running version of beaker' ) do
            @cmd_options[:beaker_version_print] = true
          end

          opts.on('--parse-only', 'Display beaker parsed options and exit' ) do
            @cmd_options[:parse_only] = true
          end

          opts.on('--help', 'Display this screen' ) do
            @cmd_options[:help] = true
          end

          opts.on '-c', '--config FILE',
                  'DEPRECATED, use --hosts' do |file|
            @cmd_options[:hosts_file] = file
          end

          opts.on '--[no-]debug',
                  'DEPRECATED, use --log-level' do |bool|
            @cmd_options[:log_level] =  bool ? 'debug' : 'info'
          end

          opts.on '-x', '--[no-]xml',
                  'DEPRECATED - JUnit XML now generated by default' do
            #noop
          end

          opts.on '--type TYPE',
                  'DEPRECATED - pe/foss/aio determined during runtime' do |type|
            #backwards compatability, oh how i hate you
            @cmd_options[:type] = type
          end

          opts.on '--tag TAGS', 'Run the set of tests matching ALL of the provided single or comma separated list of tags' do |value|
            @cmd_options[:tag_includes] = value
          end

          opts.on '--exclude-tag TAGS', 'Run the set of tests that do not contain ANY of the provided single or command separated list of tags' do |value|
            @cmd_options[:tag_excludes] = value
          end

          opts.on '--xml-time-order',
                  'Output an additional JUnit XML file, sorted by execution time' do |bool|
            @cmd_options[:xml_time_enabled] = bool
          end

        end

      end

      # Parse an array of arguments into a Hash of options
      # @param [Array] args The array of arguments to consume
      #
      # @example
      #   args = ['--option', 'value', '--option2', 'value2', '--switch']
      #   parser = CommandLineParser.new
      #   parser.parse(args) == {:option => 'value, :options2 => value, :switch => true}
      #
      # @return [Hash] Return the Hash of options
      def parse( args = ARGV )
        @optparse.parse(args)
        @cmd_options
      end

      # Generate a string representing the supported arguments
      #
      # @example
      #    parser = CommandLineParser.new
      #    parser.usage = "Options:  ..."
      #
      # @return [String] Return a string representing the available arguments
      def usage
        @optparse.help
      end
    end
  end
end

The minitest runner itself doesn't look like it runs at this point, is that true? I'm fine with that being the case, but I'd like to update this line that says it can until it's true.