diff --git a/CHANGELOG.md b/CHANGELOG.md index 25eacd6..96343e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # main [(unreleased)](https://github.com/fastruby/next_rails/compare/v1.5.0...main) +- [BUGFIX: Fix Ruby 2.3 compatibility in DeprecationTracker#normalized_deprecation_messages](https://github.com/fastruby/next_rails/pull/180) - [BUGFIX: example](https://github.com/fastruby/next_rails/pull/) - [BUGFIX: Compare mode now checks only buckets the current process ran, fixing parallel test support](https://github.com/fastruby/next_rails/pull/179) diff --git a/lib/deprecation_tracker.rb b/lib/deprecation_tracker.rb index 08379c6..7828dc9 100644 --- a/lib/deprecation_tracker.rb +++ b/lib/deprecation_tracker.rb @@ -184,7 +184,7 @@ def compare changed_buckets = [] - normalized_deprecation_messages.each do |bucket, messages| + deprecation_messages.each do |bucket, messages| if stored[bucket] != messages changed_buckets << bucket end @@ -252,7 +252,7 @@ def normalized_deprecation_messages # not using `to_h` here to support older ruby versions {}.tap do |h| - normalized.reject {|_key, value| value.empty? }.sort_by {|key, _value| key }.each do |k ,v| + normalized.reject {|_key, value| value.empty? }.sort_by {|key, _value| key }.each do |k, v| h[k] = v end end diff --git a/spec/deprecation_tracker_spec.rb b/spec/deprecation_tracker_spec.rb index 193afd0..0302117 100644 --- a/spec/deprecation_tracker_spec.rb +++ b/spec/deprecation_tracker_spec.rb @@ -226,6 +226,60 @@ end end + describe "#normalized_deprecation_messages" do + it "merges stored and current messages" do + setup_tracker = DeprecationTracker.new(shitlist_path) + setup_tracker.bucket = "bucket 1" + setup_tracker.add("a") + setup_tracker.save + + subject = DeprecationTracker.new(shitlist_path) + subject.bucket = "bucket 2" + subject.add("b") + + normalized = subject.normalized_deprecation_messages + expect(normalized).to eq( + "bucket 1" => ["a"], + "bucket 2" => ["b"] + ) + end + + it "sorts messages per bucket" do + subject = DeprecationTracker.new(shitlist_path) + subject.bucket = "bucket 1" + subject.add("c") + subject.add("a") + subject.add("b") + + normalized = subject.normalized_deprecation_messages + expect(normalized["bucket 1"]).to eq(["a", "b", "c"]) + end + + it "rejects empty buckets" do + setup_tracker = DeprecationTracker.new(shitlist_path) + setup_tracker.bucket = "bucket 1" + setup_tracker.add("a") + setup_tracker.save + + subject = DeprecationTracker.new(shitlist_path) + # Don't add anything, just read + + normalized = subject.normalized_deprecation_messages + expect(normalized).to eq("bucket 1" => ["a"]) + end + + it "sorts by bucket name" do + subject = DeprecationTracker.new(shitlist_path) + subject.bucket = "z_bucket" + subject.add("a") + subject.bucket = "a_bucket" + subject.add("b") + + normalized = subject.normalized_deprecation_messages + expect(normalized.keys).to eq(["a_bucket", "z_bucket"]) + end + end + describe "#after_run" do let(:shitlist_path) { "some_path" }