From e9901aed1d6d3979fafb5b75f31efa2d3a717b08 Mon Sep 17 00:00:00 2001 From: Russell Garner Date: Tue, 3 Jun 2025 11:18:41 +0100 Subject: [PATCH 1/5] Perform steep:check before spec/rubo Seems to make more sense up front --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 336115d..d1bd74f 100644 --- a/Rakefile +++ b/Rakefile @@ -11,4 +11,4 @@ require "rubocop/rake_task" RuboCop::RakeTask.new -task default: %i[spec rubocop steep:check] +task default: %i[steep:check spec rubocop] From 2f822f15a8014fdff88220c4316c45eb021ac4ce Mon Sep 17 00:00:00 2001 From: Russell Garner Date: Tue, 3 Jun 2025 11:23:11 +0100 Subject: [PATCH 2/5] Add spec for Snapbot::RSpec::Lets A little tricksy because :subject is an implicitly-named let, but hey --- lib/snapbot/rspec/lets.rb | 2 +- spec/snapbot/rspec/lets_spec.rb | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 spec/snapbot/rspec/lets_spec.rb diff --git a/lib/snapbot/rspec/lets.rb b/lib/snapbot/rspec/lets.rb index 8543846..acb2d57 100644 --- a/lib/snapbot/rspec/lets.rb +++ b/lib/snapbot/rspec/lets.rb @@ -16,7 +16,7 @@ def collect def _collect(klass, lets) lets.tap do - next if klass.to_s == "RSpec::ExampleGroups" + next if klass.to_s == "RSpec::ExampleGroups" # stop when we hit the top lets.concat(klass::LetDefinitions.instance_methods(false)) parent_class = klass.to_s.deconstantize.constantize diff --git a/spec/snapbot/rspec/lets_spec.rb b/spec/snapbot/rspec/lets_spec.rb new file mode 100644 index 0000000..33d9ebb --- /dev/null +++ b/spec/snapbot/rspec/lets_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +RSpec.describe Snapbot::RSpec::Lets do + describe "#collect" do + subject { described_class.new(self).collect } + + context "when there are lets" do + let(:foo) { "bar" } + let(:bar) { "baz" } + + it { is_expected.to match_array %i[foo bar subject] } + end + end + + describe "#collect when there are no lets" do # (cannot use a `subject`, separate describe) + it "returns an empty array" do + expect(described_class.new(self).collect).to be_empty + end + end +end From 3c8671ca51cd75c78f6cb54edc1405e9f6e82b1b Mon Sep 17 00:00:00 2001 From: Russell Garner Date: Tue, 3 Jun 2025 11:30:32 +0100 Subject: [PATCH 3/5] Ignore Gemfile.lock, .ruby_version --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index b04a8c8..2cc7067 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,6 @@ # rspec failure tracking .rspec_status + +Gemfile.lock +.ruby-version \ No newline at end of file From 8405c5795bef69f4c35d76b99a28d403a5cfeaa6 Mon Sep 17 00:00:00 2001 From: Russell Garner Date: Tue, 3 Jun 2025 11:37:53 +0100 Subject: [PATCH 4/5] Pin rubocop to same as Gemfile Bit old, but issues with build necessitate --- snapbot.gemspec | 1 + 1 file changed, 1 insertion(+) diff --git a/snapbot.gemspec b/snapbot.gemspec index 2a1447d..9b3c4ad 100644 --- a/snapbot.gemspec +++ b/snapbot.gemspec @@ -37,6 +37,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency "launchy" spec.add_development_dependency "rbs" + spec.add_development_dependency "rubocop", "~> 1.21" spec.add_development_dependency "sqlite3" spec.add_development_dependency "steep" From 71108cc242e42799ea003a9a00d8b5aa7415aba8 Mon Sep 17 00:00:00 2001 From: Russell Garner Date: Tue, 3 Jun 2025 11:42:52 +0100 Subject: [PATCH 5/5] Script CI Rubo to gemspec version --- .github/workflows/main.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3ae98ce..f51e757 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -21,6 +21,12 @@ jobs: - name: Setup Graphviz uses: ts-graphviz/setup-graphviz@v1 - uses: actions/checkout@v3 + - name: Generate lockfile from gemspec + run: bundle lock --add-platform x86_64-linux + - name: Install dependencies + run: bundle install --jobs 4 --retry 3 + - name: Check RuboCop version + run: bundle exec rubocop -V - name: Set up Ruby uses: ruby/setup-ruby@v1 with: