Skip to content

Commit

Permalink
Mobile: Add script that aids in debugging + Spec Fix (#16251)
Browse files Browse the repository at this point in the history
* Add script that aids in debugging
Update spec that's failing

* Rubocop

---------

Co-authored-by: Tonksthebear <[email protected]>
  • Loading branch information
Tonksthebear and jasonhoc authored Apr 9, 2024
1 parent cf9f579 commit 3aa7256
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 0 deletions.
66 changes: 66 additions & 0 deletions modules/mobile/lib/scripts/parse_rspec_xml.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# frozen_string_literal: true

require 'nokogiri'
require 'optparse'

def relative_file_path(file_path)
file_path.start_with?('/') ? ".#{file_path}" : file_path
end

def extract_xml_attributes(file_path, mode)
# Load XML content from the file
xml_content = File.read(file_path)

# Parse XML content using Nokogiri
doc = Nokogiri::XML(xml_content)

# Extract attributes from XML nodes
seed = nil
files = []
doc.traverse do |node|
seed = node.attributes['value'].value if node['name'] == 'seed'

if node.element? && node.attributes['file']
case mode
when 'errors'
if node.children.any? { |child| child.name == 'failure' }
files << relative_file_path(node.attributes['file'].value)
end
when 'full'
files << relative_file_path(node.attributes['file'].value)
end
end
end

# Flatten the array of attributes and join them into a string
"bundle exec rspec --seed #{seed} --bisect #{files.uniq.join(' ')}"
rescue => e
puts "Error: #{e.message}"
end

options = {}

OptionParser.new do |opts|
opts.banner = 'Usage: ruby extract_xml_attributes.rb [options] FILE_PATH'
opts.on('-m', '--mode MODE', 'Mode: full or errors (default: errors)') do |m|
options[:mode] = m.downcase
end
end.parse!

file_path = ARGV.join(' ')

# Check if file path is provided
if file_path.nil?
puts 'Error: File path is required.'
puts 'Usage: ruby script.rb [options] FILE_PATH'
exit(1)
end

# Set default mode to 'errors' if mode is not specified
mode = options[:mode] || 'errors'

# Call the method to extract XML attributes
xml_attributes = extract_xml_attributes(file_path, mode)

# Output the XML attributes
puts "\nRun the following commands in vets-api in order to debug:\n\n#{xml_attributes}"
1 change: 1 addition & 0 deletions modules/mobile/spec/request/v1/user_request_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

context 'with no upstream errors' do
before do
Flipper.enable('va_online_scheduling')
VCR.use_cassette('mobile/payment_information/payment_information') do
VCR.use_cassette('mobile/user/get_facilities') do
VCR.use_cassette('mobile/va_profile/demographics/demographics') do
Expand Down

0 comments on commit 3aa7256

Please sign in to comment.