Files
SecGen/lib/CyBOK/validate_xml_all_scenarios.rb
Z. Cliffe Schreuders 1e2333f2d8 CyBOK metadata
2021-04-26 21:37:49 +01:00

42 lines
1.1 KiB
Ruby

require 'nokogiri'
require_relative '../helpers/print.rb'
require_relative '../helpers/constants.rb'
Print.std "Reading scenarios! ***************************"
scenarios = []
# Get a list of all the scenarios
scenarios_dir = "#{ROOT_DIR}/scenarios"
Dir.chdir(scenarios_dir) do
scenarios = Dir["**/*.xml"].sort
end
scenarios.each { |scenario|
Print.verbose "Reading #{scenario}"
doc, xsd = nil
begin
doc = Nokogiri::XML(File.read("#{ROOT_DIR}/scenarios/#{scenario}"))
rescue
Print.err "Failed to read scenario configuration file (#{scenario})"
exit
end
# validate scenario XML against schema
begin
xsd = Nokogiri::XML::Schema(File.open(SCENARIO_SCHEMA_FILE))
xsd.validate("#{ROOT_DIR}/scenarios/#{scenario}").each do |error|
Print.err "Error in scenario configuration file (#{scenario}):"
Print.err " #{error.line}: #{error.message}"
exit
end
Print.verbose " Valid XML"
rescue Exception => e
Print.err "Failed to validate scenario configuration file (#{scenario}): against schema (#{SCENARIO_SCHEMA_FILE})"
Print.err e.message
# exit
end
}