Skip to content

Commit 4efb084

Browse files
committed
Handle multiple Ruby versions
1 parent eafdb48 commit 4efb084

File tree

13 files changed

+128
-49
lines changed

13 files changed

+128
-49
lines changed

.github/workflows/main.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@ on:
44
- pull_request_target
55
jobs:
66
ci:
7+
strategy:
8+
fail-fast: false
9+
matrix:
10+
ruby:
11+
- '2.7'
12+
- '3.0'
13+
- '3.1'
14+
- head
715
name: CI
816
runs-on: ubuntu-latest
917
env:
@@ -13,7 +21,7 @@ jobs:
1321
- uses: ruby/setup-ruby@v1
1422
with:
1523
bundler-cache: true
16-
ruby-version: '3.1'
24+
ruby-version: ${{ matrix.ruby }}
1725
- name: Test
1826
run: bundle exec rake test
1927
automerge:

Gemfile.lock

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ GEM
2626

2727
PLATFORMS
2828
arm64-darwin-21
29+
ruby
2930
x86_64-darwin-19
3031
x86_64-darwin-21
3132
x86_64-linux

lib/syntax_tree/node.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3295,9 +3295,10 @@ def to_json(*opts)
32953295
private
32963296

32973297
def align?(node)
3298-
if node.arguments in Args[parts: [Def | Defs | DefEndless]]
3298+
case node.arguments
3299+
in Args[parts: [Def | Defs | DefEndless]]
32993300
false
3300-
elsif node.arguments in Args[parts: [Command => command]]
3301+
in Args[parts: [Command => command]]
33013302
align?(command)
33023303
else
33033304
true

test/fixtures/begin.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,3 @@
55
begin
66
expression
77
end
8-
%
9-
case value
10-
in ^(expression)
11-
end

test/fixtures/command.rb

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,3 @@
2323
%
2424
meta3 meta2 meta1 def self.foo
2525
end
26-
%
27-
meta1 def foo = 1
28-
%
29-
meta2 meta1 def foo = 1
30-
%
31-
meta3 meta2 meta1 def foo = 1
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
%
2+
meta1 def foo = 1
3+
%
4+
meta2 meta1 def foo = 1
5+
%
6+
meta3 meta2 meta1 def foo = 1

test/fixtures/pinned_begin.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
%
2+
case value
3+
in ^(expression)
4+
end

test/fixtures/var_field.rb

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,3 @@
88
foo = bar
99
%
1010
@foo = bar
11-
%
12-
foo in bar
13-
%
14-
foo in ^bar
15-
%
16-
foo in ^@bar
17-
%
18-
foo in ^@@bar
19-
%
20-
foo in ^$gvar

test/fixtures/var_field_rassign.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
%
2+
foo in bar
3+
%
4+
foo in ^bar
5+
%
6+
foo in ^@bar
7+
%
8+
foo in ^@@bar
9+
%
10+
foo in ^$gvar

test/formatting_test.rb

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,28 @@
44

55
module SyntaxTree
66
class FormattingTest < Minitest::Test
7-
delimiter = /%(?: # (.+?))?\n/
7+
FIXTURES_3_0_0 = %w[
8+
command_def_endless
9+
def_endless
10+
fndptn
11+
rassign
12+
rassign_rocket
13+
]
14+
15+
FIXTURES_3_1_0 = %w[
16+
pinned_begin
17+
var_field_rassign
18+
]
819

9-
Dir[File.join(__dir__, "fixtures", "*.rb")].each do |filepath|
10-
basename = File.basename(filepath, ".rb")
11-
sources = File.readlines(filepath).slice_before(delimiter)
20+
fixtures = Dir[File.join(__dir__, "fixtures", "*.rb")].map { |filepath| File.basename(filepath, ".rb") }
21+
fixtures -= FIXTURES_3_1_0 if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("3.1.0")
22+
fixtures -= FIXTURES_3_0_0 if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("3.0.0")
23+
24+
delimiter = /%(?: # (.+?))?\n/
25+
fixtures.each do |fixture|
26+
filepath = File.join(__dir__, "fixtures", "#{fixture}.rb")
1227

13-
sources.each_with_index do |source, index|
28+
File.readlines(filepath).slice_before(delimiter).each_with_index do |source, index|
1429
comment = source.shift.match(delimiter)[1]
1530
original, expected = source.join.split("-\n")
1631

@@ -22,7 +37,7 @@ class FormattingTest < Minitest::Test
2237
next if Gem::Version.new(RUBY_VERSION) < version
2338
end
2439

25-
define_method(:"test_formatting_#{basename}_#{index}") do
40+
define_method(:"test_formatting_#{fixture}_#{index}") do
2641
assert_equal(expected || original, SyntaxTree.format(original))
2742
end
2843
end

0 commit comments

Comments
 (0)