Skip to content

Commit 71c8bd3

Browse files
ihabadhamclaude
andcommitted
test: fill coverage gaps in PortSelector and procfile_port
- Assert webpack defaults to 3035 when only PORT is set - Assert rails defaults to 3000 when only SHAKAPACKER_DEV_SERVER_PORT is set - Assert no port probing in both single-env-var cases - Add context for both env vars set simultaneously - Cover procfile_port dynamic PORT reading and all four combinations Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent f98bd7e commit 71c8bd3

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

react_on_rails/spec/react_on_rails/dev/port_selector_spec.rb

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@
6969
expect(result[:rails]).to eq(4000)
7070
end
7171

72+
it "defaults webpack to 3035 when SHAKAPACKER_DEV_SERVER_PORT is not set" do
73+
result = described_class.select_ports
74+
expect(result[:webpack]).to eq(3035)
75+
end
76+
7277
it "does not probe for free ports" do
7378
expect(described_class).not_to receive(:port_available?)
7479
described_class.select_ports
@@ -87,6 +92,39 @@
8792
result = described_class.select_ports
8893
expect(result[:webpack]).to eq(4035)
8994
end
95+
96+
it "defaults Rails to 3000 when PORT is not set" do
97+
result = described_class.select_ports
98+
expect(result[:rails]).to eq(3000)
99+
end
100+
101+
it "does not probe for free ports" do
102+
expect(described_class).not_to receive(:port_available?)
103+
described_class.select_ports
104+
end
105+
end
106+
107+
context "when both PORT and SHAKAPACKER_DEV_SERVER_PORT are set" do
108+
around do |example|
109+
old_port = ENV.fetch("PORT", nil)
110+
old_wp = ENV.fetch("SHAKAPACKER_DEV_SERVER_PORT", nil)
111+
ENV["PORT"] = "4000"
112+
ENV["SHAKAPACKER_DEV_SERVER_PORT"] = "4035"
113+
example.run
114+
ENV["PORT"] = old_port
115+
ENV["SHAKAPACKER_DEV_SERVER_PORT"] = old_wp
116+
end
117+
118+
it "returns both explicit ports" do
119+
result = described_class.select_ports
120+
expect(result[:rails]).to eq(4000)
121+
expect(result[:webpack]).to eq(4035)
122+
end
123+
124+
it "does not probe for free ports" do
125+
expect(described_class).not_to receive(:port_available?)
126+
described_class.select_ports
127+
end
90128
end
91129

92130
context "when no port is available within max attempts" do

react_on_rails/spec/react_on_rails/dev/server_manager_spec.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,28 @@ def mock_system_calls
302302
end
303303
end
304304

305+
describe ".procfile_port" do
306+
after { ENV.delete("PORT") }
307+
308+
it "returns 3000 for Procfile.dev when PORT is unset" do
309+
expect(described_class.send(:procfile_port, "Procfile.dev")).to eq(3000)
310+
end
311+
312+
it "returns 3001 for Procfile.dev-prod-assets when PORT is unset" do
313+
expect(described_class.send(:procfile_port, "Procfile.dev-prod-assets")).to eq(3001)
314+
end
315+
316+
it "returns the auto-detected port for Procfile.dev when PORT is set" do
317+
ENV["PORT"] = "3001"
318+
expect(described_class.send(:procfile_port, "Procfile.dev")).to eq(3001)
319+
end
320+
321+
it "returns the PORT value for Procfile.dev-prod-assets when PORT is set" do
322+
ENV["PORT"] = "4000"
323+
expect(described_class.send(:procfile_port, "Procfile.dev-prod-assets")).to eq(4000)
324+
end
325+
end
326+
305327
describe ".show_help" do
306328
it "displays help information" do
307329
expect { described_class.show_help }.to output(%r{Usage: bin/dev \[command\]}).to_stdout_from_any_process

0 commit comments

Comments
 (0)