mirror of
https://github.com/ThrowTheSwitch/Unity.git
synced 2025-08-06 13:50:49 +08:00
Fix broken YAML parsing on later Rubies with Psych >=4.0
YAML.load is now interpreted as YAML.safe_load, which breaks where the YAML file contains aliases. If we can assume our yaml files are trusted (since this a development tool), we can check for the presence of YAML.unsafe_load and use it instead if it exists.
This commit is contained in:
@ -116,8 +116,8 @@ class UnityModuleGenerator
|
|||||||
def self.grab_config(config_file)
|
def self.grab_config(config_file)
|
||||||
options = default_options
|
options = default_options
|
||||||
unless config_file.nil? || config_file.empty?
|
unless config_file.nil? || config_file.empty?
|
||||||
require 'yaml'
|
require_relative 'yaml_helper'
|
||||||
yaml_guts = YAML.load_file(config_file)
|
yaml_guts = YamlHelper.load_file(config_file)
|
||||||
options.merge!(yaml_guts[:unity] || yaml_guts[:cmock])
|
options.merge!(yaml_guts[:unity] || yaml_guts[:cmock])
|
||||||
raise "No :unity or :cmock section found in #{config_file}" unless options
|
raise "No :unity or :cmock section found in #{config_file}" unless options
|
||||||
end
|
end
|
||||||
|
@ -51,8 +51,8 @@ class UnityTestRunnerGenerator
|
|||||||
def self.grab_config(config_file)
|
def self.grab_config(config_file)
|
||||||
options = default_options
|
options = default_options
|
||||||
unless config_file.nil? || config_file.empty?
|
unless config_file.nil? || config_file.empty?
|
||||||
require 'yaml'
|
require_relative 'yaml_helper'
|
||||||
yaml_guts = YAML.load_file(config_file)
|
yaml_guts = YamlHelper.load_file(config_file)
|
||||||
options.merge!(yaml_guts[:unity] || yaml_guts[:cmock])
|
options.merge!(yaml_guts[:unity] || yaml_guts[:cmock])
|
||||||
raise "No :unity or :cmock section found in #{config_file}" unless options
|
raise "No :unity or :cmock section found in #{config_file}" unless options
|
||||||
end
|
end
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# [Released under MIT License. Please refer to license.txt for details]
|
# [Released under MIT License. Please refer to license.txt for details]
|
||||||
# ==========================================
|
# ==========================================
|
||||||
|
|
||||||
require'yaml'
|
require_relative 'yaml_helper'
|
||||||
|
|
||||||
module RakefileHelpers
|
module RakefileHelpers
|
||||||
class TestFileFilter
|
class TestFileFilter
|
||||||
@ -12,9 +12,10 @@ module RakefileHelpers
|
|||||||
@all_files = all_files
|
@all_files = all_files
|
||||||
|
|
||||||
return unless @all_files
|
return unless @all_files
|
||||||
return unless File.exist?('test_file_filter.yml')
|
|
||||||
|
|
||||||
filters = YAML.load_file('test_file_filter.yml')
|
file = 'test_file_filter.yml'
|
||||||
|
return unless File.exist?(file)
|
||||||
|
filters = YamlHelper.load_file(file)
|
||||||
@all_files = filters[:all_files]
|
@all_files = filters[:all_files]
|
||||||
@only_files = filters[:only_files]
|
@only_files = filters[:only_files]
|
||||||
@exclude_files = filters[:exclude_files]
|
@exclude_files = filters[:exclude_files]
|
||||||
|
19
auto/yaml_helper.rb
Normal file
19
auto/yaml_helper.rb
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# ==========================================
|
||||||
|
# Unity Project - A Test Framework for C
|
||||||
|
# Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||||
|
# [Released under MIT License. Please refer to license.txt for details]
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
require 'yaml'
|
||||||
|
|
||||||
|
module YamlHelper
|
||||||
|
def self.load(body)
|
||||||
|
YAML.respond_to?(:unsafe_load) ?
|
||||||
|
YAML.unsafe_load(body) : YAML.load(body)
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.load_file(file)
|
||||||
|
body = File.read(file)
|
||||||
|
self.load(body)
|
||||||
|
end
|
||||||
|
end
|
@ -1,14 +1,19 @@
|
|||||||
require 'yaml'
|
# ==========================================
|
||||||
|
# Unity Project - A Test Framework for C
|
||||||
|
# Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||||
|
# [Released under MIT License. Please refer to license.txt for details]
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
require 'fileutils'
|
require 'fileutils'
|
||||||
require_relative '../../auto/unity_test_summary'
|
require_relative '../../auto/unity_test_summary'
|
||||||
require_relative '../../auto/generate_test_runner'
|
require_relative '../../auto/generate_test_runner'
|
||||||
require_relative '../../auto/colour_reporter'
|
require_relative '../../auto/colour_reporter'
|
||||||
|
require_relative '../../auto/yaml_helper'
|
||||||
C_EXTENSION = '.c'.freeze
|
C_EXTENSION = '.c'.freeze
|
||||||
|
|
||||||
def load_configuration(config_file)
|
def load_configuration(config_file)
|
||||||
$cfg_file = config_file
|
$cfg_file = config_file
|
||||||
$cfg = YAML.load(File.read($cfg_file))
|
$cfg = YamlHelper.load_file($cfg_file)
|
||||||
end
|
end
|
||||||
|
|
||||||
def configure_clean
|
def configure_clean
|
||||||
|
@ -4,11 +4,11 @@
|
|||||||
# [Released under MIT License. Please refer to license.txt for details]
|
# [Released under MIT License. Please refer to license.txt for details]
|
||||||
# ==========================================
|
# ==========================================
|
||||||
|
|
||||||
require 'yaml'
|
|
||||||
require 'fileutils'
|
require 'fileutils'
|
||||||
require_relative '../auto/unity_test_summary'
|
require_relative '../auto/unity_test_summary'
|
||||||
require_relative '../auto/generate_test_runner'
|
require_relative '../auto/generate_test_runner'
|
||||||
require_relative '../auto/colour_reporter'
|
require_relative '../auto/colour_reporter'
|
||||||
|
require_relative '../auto/yaml_helper'
|
||||||
|
|
||||||
module RakefileHelpers
|
module RakefileHelpers
|
||||||
C_EXTENSION = '.c'.freeze
|
C_EXTENSION = '.c'.freeze
|
||||||
@ -16,7 +16,7 @@ module RakefileHelpers
|
|||||||
return if $configured
|
return if $configured
|
||||||
|
|
||||||
$cfg_file = "targets/#{config_file}" unless config_file =~ /[\\|\/]/
|
$cfg_file = "targets/#{config_file}" unless config_file =~ /[\\|\/]/
|
||||||
$cfg = YAML.load(File.read($cfg_file))
|
$cfg = YamlHelper.load_file($cfg_file)
|
||||||
$colour_output = false unless $cfg['colour']
|
$colour_output = false unless $cfg['colour']
|
||||||
$configured = true if config_file != DEFAULT_CONFIG_FILE
|
$configured = true if config_file != DEFAULT_CONFIG_FILE
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user