Skip to content

Commit 9bf26f8

Browse files
committed
emp: use TCPServer instead of WEBrick for test
Related: * Homebrew#161976
1 parent e150e53 commit 9bf26f8

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

Formula/e/emp.rb

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,15 @@ def install
3131
(buildpath/"src/github.com/remind101/").mkpath
3232
ln_s buildpath, buildpath/"src/github.com/remind101/empire"
3333

34-
system "go", "build", "-o", bin/"emp", "./src/github.com/remind101/empire/cmd/emp"
34+
system "go", "build", *std_go_args, "./src/github.com/remind101/empire/cmd/emp"
3535
end
3636

3737
test do
38-
require "webrick"
38+
port = free_port
3939

40-
server = WEBrick::HTTPServer.new Port: 8035
41-
server.mount_proc "/apps/foo/releases" do |_req, res|
40+
# Mock an API server response to test the CLI
41+
fork do
42+
server = TCPServer.new(port)
4243
resp = {
4344
"created_at" => "2015-10-12T0:00:00.00000000-00:00",
4445
"description" => "my awesome release",
@@ -49,17 +50,23 @@ def install
4950
},
5051
"version" => 1,
5152
}
52-
res.body = JSON.generate([resp])
53+
body = JSON.generate([resp])
54+
55+
loop do
56+
socket = server.accept
57+
socket.write "HTTP/1.1 200 OK\r\n" \
58+
"Content-Type: application/json; charset=utf-8\r\n" \
59+
"Content-Length: #{body.bytesize}\r\n" \
60+
"\r\n"
61+
socket.write body
62+
socket.close
63+
end
5364
end
5465

55-
Thread.new { server.start }
66+
sleep 1
5667

57-
begin
58-
ENV["EMPIRE_API_URL"] = "http://127.0.0.1:8035"
59-
assert_match(/v1 zab Oct 1(1|2|3) 2015 my awesome release/,
60-
shell_output("#{bin}/emp releases -a foo").strip)
61-
ensure
62-
server.shutdown
63-
end
68+
ENV["EMPIRE_API_URL"] = "http://127.0.0.1:#{port}"
69+
assert_match(/v1 zab Oct 1(1|2|3) 2015 my awesome release/,
70+
shell_output("#{bin}/emp releases -a foo").strip)
6471
end
6572
end

0 commit comments

Comments
 (0)