rosh 0.9.3 → 0.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/rosh/version.rb +1 -1
- data/lib/rosh.rb +10 -9
- data/rosh.gemspec +1 -0
- data/test/rosh_forwarding_test.rb +36 -2
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3934908cd1559287bd808f7774a044e7e598850d814bfcfe15604df715653114
|
4
|
+
data.tar.gz: 71f530ac4d74d582a4c4145f07f941e7ca63323a0bc054e33ac7cffd72b475ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 922807c829ec873dbcb5a617cbcfd5b50a3d3da0cdfac24c6914223c27da717c9c29d109893402ca6f2666e3287035d34827b9efced35eaf4bc8cb7cdb6459e9
|
7
|
+
data.tar.gz: 0da6edde2a9f4825d029d2e8a37b5edf728e518d31997ede1522562e8d24d8ebd0f4a74f93211529ebb412824508a4105d0c50046775b042f3ee59469cb8851c
|
data/lib/rosh/version.rb
CHANGED
data/lib/rosh.rb
CHANGED
@@ -227,23 +227,24 @@ private
|
|
227
227
|
|
228
228
|
def sh_has_session?
|
229
229
|
# tmux has-session -t <session_name>
|
230
|
-
|
231
|
-
"ssh",
|
232
|
-
*@ssh_opts,
|
233
|
-
resolv,
|
234
|
-
"'tmux has-session -t #{@name} 2>/dev/null'"
|
235
|
-
]*' '
|
236
|
-
puts cmd if @verbose
|
237
|
-
system cmd
|
230
|
+
ssh_tmux("tmux has-session -t #{@name} 2>/dev/null")
|
238
231
|
end
|
239
232
|
|
240
233
|
def sh_new_session?
|
241
234
|
# tmux new-session -s <session_name> -d
|
235
|
+
create_with_override = "tmux new-session -s #{@name} -d \\; set-option -t #{@name} destroy-unattached off"
|
236
|
+
return true if ssh_tmux(create_with_override)
|
237
|
+
|
238
|
+
puts "retrying tmux new-session without destroy-unattached override" if @verbose
|
239
|
+
ssh_tmux("tmux new-session -s #{@name} -d")
|
240
|
+
end
|
241
|
+
|
242
|
+
def ssh_tmux(command)
|
242
243
|
cmd = [
|
243
244
|
"ssh",
|
244
245
|
*@ssh_opts,
|
245
246
|
resolv,
|
246
|
-
"'
|
247
|
+
"'#{command}'"
|
247
248
|
]*' '
|
248
249
|
puts cmd if @verbose
|
249
250
|
system cmd
|
data/rosh.gemspec
CHANGED
@@ -24,14 +24,24 @@ class RoshForwardingTest < Minitest::Test
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_ssh_opts_include_local_forwarding_from_ssh_config
|
27
|
-
|
27
|
+
klass = Class.new(Rosh) do
|
28
|
+
def local_forward_available?(_spec)
|
29
|
+
true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
rosh = klass.new('grav')
|
28
33
|
ssh_opts = rosh.instance_variable_get(:@ssh_opts)
|
29
34
|
|
30
35
|
assert_includes ssh_opts, '-L 127.0.0.1:3131:localhost:3131'
|
31
36
|
end
|
32
37
|
|
33
38
|
def test_ssh_opts_include_remote_forwarding_from_ssh_config
|
34
|
-
|
39
|
+
klass = Class.new(Rosh) do
|
40
|
+
def local_forward_available?(_spec)
|
41
|
+
true
|
42
|
+
end
|
43
|
+
end
|
44
|
+
rosh = klass.new('grav')
|
35
45
|
ssh_opts = rosh.instance_variable_get(:@ssh_opts)
|
36
46
|
|
37
47
|
assert_includes ssh_opts, '-R 8082:localhost:8082'
|
@@ -84,4 +94,28 @@ class RoshForwardingTest < Minitest::Test
|
|
84
94
|
out_again, _ = capture_io { rosh.send(:report_oom_if_needed, 'ssh grav') }
|
85
95
|
assert_equal '', out_again
|
86
96
|
end
|
97
|
+
|
98
|
+
def test_tmux_new_session_disables_destroy_unattached
|
99
|
+
rosh = Rosh.new('grav', 'grav')
|
100
|
+
commands = []
|
101
|
+
rosh.stub(:system, ->(cmd) { commands << cmd; true }) do
|
102
|
+
assert rosh.send(:sh_new_session?)
|
103
|
+
end
|
104
|
+
|
105
|
+
assert_equal 1, commands.size
|
106
|
+
assert_includes commands.first, 'set-option -t grav destroy-unattached off'
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_tmux_new_session_fallback_without_override
|
110
|
+
rosh = Rosh.new('grav', 'grav')
|
111
|
+
commands = []
|
112
|
+
results = [false, true].each
|
113
|
+
|
114
|
+
rosh.stub(:system, ->(cmd) { commands << cmd; results.next rescue true }) do
|
115
|
+
assert rosh.send(:sh_new_session?)
|
116
|
+
end
|
117
|
+
|
118
|
+
assert_includes commands.first, 'set-option -t grav destroy-unattached off'
|
119
|
+
refute_includes commands.last, 'set-option -t grav destroy-unattached off'
|
120
|
+
end
|
87
121
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rosh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Genki Takiuchi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-09
|
11
|
+
date: 2025-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-ssh
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|