summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2023-04-01 21:26:34 +0100
committerSam James <sam@gentoo.org>2023-04-02 00:18:40 +0100
commitc3dac4390ed021962d0b3e41b536aed955423d48 (patch)
tree0ef0042058a85214b1c7b1062def017af59b7299 /dev-ruby/websocket
parentdev-ruby/typeprof: drop 0.15.2 (diff)
downloadgentoo-c3dac4390ed021962d0b3e41b536aed955423d48.tar.gz
gentoo-c3dac4390ed021962d0b3e41b536aed955423d48.tar.bz2
gentoo-c3dac4390ed021962d0b3e41b536aed955423d48.zip
dev-ruby/websocket: enable ruby32, fix tests
- Enable ruby32 - Fix tests Fixing tests was interesting. I very quickly found the upstream commits touching the port deduction/specification bit, but I had no idea why this would've started failing on all Rubies all of a sudden yet. But ended up, after looking through MRI Ruby release notes, figured out it must be somewhere else (it didn't seem to be a backported bundled gem update). It looks like it's actually because of a change in an (undeclared) test dep - dev-ruby/webrick. It was probably https://github.com/ruby/webrick/pull/55 or similar, but enough to satisfy my curiosity anyway. Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-ruby/websocket')
-rw-r--r--dev-ruby/websocket/files/websocket-1.2.9-default-port.patch134
-rw-r--r--dev-ruby/websocket/websocket-1.2.9-r2.ebuild29
2 files changed, 163 insertions, 0 deletions
diff --git a/dev-ruby/websocket/files/websocket-1.2.9-default-port.patch b/dev-ruby/websocket/files/websocket-1.2.9-default-port.patch
new file mode 100644
index 000000000000..5830036da62e
--- /dev/null
+++ b/dev-ruby/websocket/files/websocket-1.2.9-default-port.patch
@@ -0,0 +1,134 @@
+https://github.com/imanel/websocket-ruby/commit/736a7515aff808a5c268b87066e928b59aed769e
+
+From 736a7515aff808a5c268b87066e928b59aed769e Mon Sep 17 00:00:00 2001
+From: Bernard Potocki <bernard.potocki@imanel.org>
+Date: Thu, 17 Feb 2022 20:02:21 +0100
+Subject: [PATCH] Ensure correct port is always specified (#48)
+
+--- a/lib/websocket/handshake/base.rb
++++ b/lib/websocket/handshake/base.rb
+@@ -7,7 +7,7 @@ class Base
+ include ExceptionHandler
+ include NiceInspect
+
+- attr_reader :host, :port, :path, :query,
++ attr_reader :host, :path, :query,
+ :state, :version, :secure,
+ :headers, :protocols
+
+@@ -66,6 +66,20 @@ def leftovers
+ (@leftovers.to_s.split("\n", reserved_leftover_lines + 1)[reserved_leftover_lines] || '').strip
+ end
+
++ # Return default port for protocol (80 for ws, 443 for wss)
++ def default_port
++ secure ? 443 : 80
++ end
++
++ # Check if provided port is a default one
++ def default_port?
++ port == default_port
++ end
++
++ def port
++ @port || default_port
++ end
++
+ # URI of request.
+ # @return [String] Full URI with protocol
+ # @example
+@@ -73,7 +87,7 @@ def leftovers
+ def uri
+ uri = String.new(secure ? 'wss://' : 'ws://')
+ uri << host
+- uri << ":#{port}" if port
++ uri << ":#{port}" unless default_port?
+ uri << path
+ uri << "?#{query}" if query
+ uri
+--- a/lib/websocket/handshake/client.rb
++++ b/lib/websocket/handshake/client.rb
+@@ -61,7 +61,7 @@ def initialize(args = {})
+ uri = URI.parse(@url || @uri)
+ @secure ||= (uri.scheme == 'wss')
+ @host ||= uri.host
+- @port ||= uri.port
++ @port ||= uri.port || default_port
+ @path ||= uri.path
+ @query ||= uri.query
+ end
+--- a/lib/websocket/handshake/handler/client04.rb
++++ b/lib/websocket/handshake/handler/client04.rb
+@@ -21,7 +21,7 @@ def handshake_keys
+ %w[Connection Upgrade]
+ ]
+ host = @handshake.host
+- host += ":#{@handshake.port}" if @handshake.port
++ host += ":#{@handshake.port}" unless @handshake.default_port?
+ keys << ['Host', host]
+ keys += super
+ keys << ['Sec-WebSocket-Origin', @handshake.origin] if @handshake.origin
+--- a/lib/websocket/handshake/handler/client75.rb
++++ b/lib/websocket/handshake/handler/client75.rb
+@@ -18,7 +18,7 @@ def handshake_keys
+ %w[Connection Upgrade]
+ ]
+ host = @handshake.host
+- host += ":#{@handshake.port}" if @handshake.port
++ host += ":#{@handshake.port}" unless @handshake.default_port?
+ keys << ['Host', host]
+ keys << ['Origin', @handshake.origin] if @handshake.origin
+ keys << ['WebSocket-Protocol', @handshake.protocols.first] if @handshake.protocols.any?
+--- a/lib/websocket/handshake/server.rb
++++ b/lib/websocket/handshake/server.rb
+@@ -129,13 +129,13 @@ def should_respond?
+ # Host of server according to client header
+ # @return [String] host
+ def host
+- @headers['host'].to_s.split(':')[0].to_s
++ @host || @headers['host'].to_s.split(':')[0].to_s
+ end
+
+ # Port of server according to client header
+- # @return [String] port
++ # @return [Integer] port
+ def port
+- @headers['host'].to_s.split(':')[1]
++ (@port || @headers['host'].to_s.split(':')[1] || default_port).to_i
+ end
+
+ private
+--- a/spec/support/all_client_drafts.rb
++++ b/spec/support/all_client_drafts.rb
+@@ -38,6 +38,10 @@ def validate_request
+ expect(handshake.query).to eql('aaa=bbb')
+ end
+
++ it 'returns default port' do
++ expect(handshake.port).to be(80)
++ end
++
+ it 'returns valid port' do
+ @request_params = { port: 123 }
+ expect(handshake.port).to be(123)
+--- a/spec/support/all_server_drafts.rb
++++ b/spec/support/all_server_drafts.rb
+@@ -47,11 +47,17 @@ def validate_request
+ expect(handshake.query).to eql('aaa=bbb')
+ end
+
++ it 'returns default port' do
++ handshake << client_request
++
++ expect(handshake.port).to be(80)
++ end
++
+ it 'returns valid port' do
+ @request_params = { port: 123 }
+ handshake << client_request
+
+- expect(handshake.port).to eql('123')
++ expect(handshake.port).to be(123)
+ end
+
+ it 'returns valid response' do
diff --git a/dev-ruby/websocket/websocket-1.2.9-r2.ebuild b/dev-ruby/websocket/websocket-1.2.9-r2.ebuild
new file mode 100644
index 000000000000..9c9d3b6ac7bf
--- /dev/null
+++ b/dev-ruby/websocket/websocket-1.2.9-r2.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby27 ruby30 ruby31 ruby32"
+
+RUBY_FAKEGEM_RECIPE_TEST="rspec3"
+
+inherit ruby-fakegem
+
+DESCRIPTION="Universal Ruby library to handle WebSocket protocol"
+HOMEPAGE="https://github.com/imanel/websocket-ruby"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+IUSE=""
+
+ruby_add_bdepend "
+ test? (
+ dev-ruby/rspec-its
+ dev-ruby/webrick
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-default-port.patch
+)