Method: PDK::Test::Unit.list

Defined in:
lib/pdk/tests/unit.rb

.listObject

Returns array of { :id, :full_description }.

Returns:

  • array of { :id, :full_description }

Raises:



148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# File 'lib/pdk/tests/unit.rb', line 148

def self.list
  PDK::Util::Bundler.ensure_bundle!
  PDK::Util::Bundler.ensure_binstubs!('rake')

  command_argv = [File.join(PDK::Util.module_root, 'bin', 'rake'), 'spec_list_json']
  command_argv.unshift('ruby') if Gem.win_platform?
  list_command = PDK::CLI::Exec::Command.new(*command_argv)
  list_command.context = :module
  output = list_command.execute!

  rspec_json = PDK::Util.find_first_json_in(output[:stdout])
  raise PDK::CLI::FatalError, _('Failed to find valid JSON in output from rspec: %{output}' % { output: output[:stdout] }) unless rspec_json
  if rspec_json['examples'].empty?
    rspec_message = rspec_json['messages'][0]
    return [] if rspec_message == 'No examples found.'

    raise PDK::CLI::FatalError, _('Unable to enumerate examples. rspec reported: %{message}' % { message: rspec_message })
  else
    examples = []
    rspec_json['examples'].each do |example|
      examples << { id: example['id'], full_description: example['full_description'] }
    end
    examples
  end
end