Avoid nil bug in detect_since_tag

This commit is contained in:
Olle Jonsson 2016-04-16 23:20:36 +02:00 committed by Petr Korolev
parent 0dddc4a44c
commit 01a254e412
2 changed files with 27 additions and 25 deletions

View File

@ -54,13 +54,14 @@ module GitHubChangelogGenerator
# @return [Object] try to find newest tag using #Reader and :base option if specified otherwise returns nil # @return [Object] try to find newest tag using #Reader and :base option if specified otherwise returns nil
def detect_since_tag def detect_since_tag
@since_tag ||= @options[:since_tag] @since_tag ||= @options.fetch(:since_tag) { version_of_first_item }
if @since_tag.nil? && @options[:base] && File.file?(@options[:base])
reader = GitHubChangelogGenerator::Reader.new
content = reader.read(@options[:base])
@since_tag = content[0]["version"] if content.count && content
end end
@since_tag
def version_of_first_item
return unless File.file?(@options[:base].to_s)
sections = GitHubChangelogGenerator::Reader.new.read(@options[:base])
sections.first["version"] if sections && sections.any?
end end
# Return tags after filtering tags in lists provided by option: --between-tags & --exclude-tags # Return tags after filtering tags in lists provided by option: --between-tags & --exclude-tags

View File

@ -206,7 +206,7 @@ describe GitHubChangelogGenerator::Generator do
@generator.instance_variable_set :@fetcher, mock @generator.instance_variable_set :@fetcher, mock
end end
subject do subject do
of_tag = @generator.get_time_of_tag tag_mash_with_name("valid_tag") of_tag = @generator.get_time_of_tag(tag_mash_with_name("valid_tag"))
of_tag of_tag
end end
it { is_expected.to be_a_kind_of(Time) } it { is_expected.to be_a_kind_of(Time) }
@ -215,31 +215,32 @@ describe GitHubChangelogGenerator::Generator do
end end
describe "#sort_tags_by_date" do describe "#sort_tags_by_date" do
time1 = Time.now let(:time1) { Time.now }
time2 = Time.now let(:time2) { Time.now }
time3 = Time.now let(:time3) { Time.now }
before(:all) do before(:all) do
@generator = GitHubChangelogGenerator::Generator.new @generator = GitHubChangelogGenerator::Generator.new
end end
context "sort unsorted tags" do
tags = tags_mash_from_strings %w(valid_tag1 valid_tag2 valid_tag3)
before do before do
@generator.instance_variable_set :@tag_times_hash, "valid_tag1" => time1, "valid_tag2" => time2, "valid_tag3" => time3 @generator.instance_variable_set(:@tag_times_hash, "valid_tag1" => time1,
"valid_tag2" => time2,
"valid_tag3" => time3)
end end
subject do subject do
@generator.sort_tags_by_date tags @generator.sort_tags_by_date(tags)
end end
context "sort unsorted tags" do
let(:tags) { tags_mash_from_strings %w(valid_tag1 valid_tag2 valid_tag3) }
it { is_expected.to be_a_kind_of(Array) } it { is_expected.to be_a_kind_of(Array) }
it { is_expected.to match_array(tags.reverse!) } it { is_expected.to match_array(tags.reverse!) }
end end
context "sort sorted tags" do context "sort sorted tags" do
tags = tags_mash_from_strings %w(valid_tag3 valid_tag2 valid_tag1) let(:tags) { tags_mash_from_strings %w(valid_tag3 valid_tag2 valid_tag1) }
before do
@generator.instance_variable_set :@tag_times_hash, "valid_tag1" => time1, "valid_tag2" => time2, "valid_tag3" => time3
end
subject do
@generator.sort_tags_by_date tags
end
it { is_expected.to be_a_kind_of(Array) } it { is_expected.to be_a_kind_of(Array) }
it { is_expected.to match_array(tags) } it { is_expected.to match_array(tags) }
end end