Skip to content

Commit a9d6878

Browse files
User Gem:::Version for Node version comparisons
Simplify writing of source to Gemfile
1 parent a424bd7 commit a9d6878

File tree

3 files changed

+37
-7
lines changed

3 files changed

+37
-7
lines changed

lib/install/web.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
def node_version
2-
ENV["NODE_VERSION"] || `node --version`[/\d+\.\d+\.\d+/]
2+
version = ENV["NODE_VERSION"] || `node --version`[/\d+\.\d+\.\d+/]
3+
4+
return if version.blank?
5+
6+
Gem::Version.new(version)
37
end
48

59
def node_not_installed?
610
node_version.blank?
711
end
812

913
def node_version_unsupported?
10-
node_version < "20.0.0"
14+
minimum_node_version = Gem::Version.new("20.0.0")
15+
16+
node_version < minimum_node_version
1117
end
1218

1319
def apply_template!

lib/suspenders/generators.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,21 @@ def rspec_test_helper_present?
2020
end
2121

2222
def node_version
23-
ENV["NODE_VERSION"] || `node --version`[/\d+\.\d+\.\d+/]
23+
version = ENV["NODE_VERSION"] || `node --version`[/\d+\.\d+\.\d+/]
24+
25+
return if version.blank?
26+
27+
Gem::Version.new(version)
2428
end
2529

2630
def node_not_installed?
2731
node_version.blank?
2832
end
2933

3034
def node_version_unsupported?
31-
node_version < Suspenders::MINIMUM_NODE_VERSION
35+
minimum_node_version = Gem::Version.new(Suspenders::MINIMUM_NODE_VERSION)
36+
37+
node_version < minimum_node_version
3238
end
3339
end
3440

test/generators/suspenders/install/web_generator_test.rb

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,32 @@ class WebGeneratorTest < Rails::Generators::TestCase
4848
end
4949
end
5050

51+
test "evaluates support for Node versions correctly" do
52+
web_generator = Generators::Install::WebGenerator.new
53+
54+
unsupported_versions = %w[1.0.0 1.100.200 10.0.0 19.0.0 19.9.9 19.9999.99999]
55+
56+
unsupported_versions.each do |unsupported_version|
57+
Generators::Install::WebGenerator.any_instance.stubs(:node_version).returns(unsupported_version)
58+
59+
assert_predicate web_generator, :node_version_unsupported?, "Node version #{unsupported_version} should not be supported"
60+
end
61+
62+
supported_versions = %w[20.0.0 20.1.0 20.100.200 50.0.0 100.0.0]
63+
64+
supported_versions.each do |supported_version|
65+
Generators::Install::WebGenerator.any_instance.stubs(:node_version).returns(supported_version)
66+
67+
assert_not_predicate web_generator, :node_version_unsupported?, "Node version #{supported_version} should be supported"
68+
end
69+
end
70+
5171
private
5272

5373
def prepare_destination
5474
touch "Gemfile"
5575

56-
File.open("test/dummy/Gemfile", "w") do |f|
57-
f.write('source "https://rubygems.org"')
58-
end
76+
File.write("test/dummy/Gemfile", 'source "https://rubygems.org"')
5977
end
6078

6179
def restore_destination

0 commit comments

Comments
 (0)