qbash 0.3.0 → 0.3.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9db87ce0fe83225ddc40e2b699957b8f1d3dd9a736865e5a43f4d1cdcd37d429
4
- data.tar.gz: 0c9b65c4f1be9e553b572b8e75a6d3954b69e90af91adde800802c04978b2bb1
3
+ metadata.gz: 591a7745f928f69d9111510c29aad5f71640b9ee143f0d61ae56c194563b47a8
4
+ data.tar.gz: 54f4ed6e09f65e51d308f09692be14e1b11046c25b9b16960ee82f75e813b239
5
5
  SHA512:
6
- metadata.gz: d7be9b834c66b171c4dc56b843b51de47213e1e13c14106dd456800eae8a017ec08dc78b78c0ad9d9ff910bcfc6fba3e7883ecd1808e6736b6e0e89d6ae6a8b8
7
- data.tar.gz: d3165d8d72eb52b2f13668da36f74cbf5ac55cf59db60682dd2f1434c21eeede46e509c053cd7862192b258e6b890c995bf87b2fd17ba3398d58e5085c7e99f1
6
+ metadata.gz: 99461451f3a2461088d8b4fd396f28c61b1ad255b3118b77e11b8117dc31f19cc9802a225d286e16e3a0de8d12e8e37983290b788bc5a7b0da8b34fca8ded52f
7
+ data.tar.gz: 3d45686b23e8cbd75efd5041af8767fc059c82cde1a088a29ed6b7a1a0ab0591eb55897f9cb9e478d097645ff69af7cf42ac481e28de1aa173d1cf3951e32f98
@@ -28,6 +28,7 @@ name: actionlint
28
28
  - master
29
29
  jobs:
30
30
  actionlint:
31
+ timeout-minutes: 15
31
32
  runs-on: ubuntu-24.04
32
33
  steps:
33
34
  - uses: actions/checkout@v4
@@ -25,6 +25,7 @@ name: codecov
25
25
  - master
26
26
  jobs:
27
27
  codecov:
28
+ timeout-minutes: 15
28
29
  runs-on: ubuntu-24.04
29
30
  steps:
30
31
  - uses: actions/checkout@v4
@@ -32,8 +33,9 @@ jobs:
32
33
  with:
33
34
  ruby-version: 3.3
34
35
  bundler-cache: true
36
+ - run: bundle config set --global path "$(pwd)/vendor/bundle"
35
37
  - run: bundle install
36
38
  - run: bundle exec rake
37
- - uses: codecov/codecov-action@v4.0.0-beta.3
39
+ - uses: codecov/codecov-action@v5
38
40
  with:
39
41
  token: ${{ secrets.CODECOV_TOKEN }}
@@ -28,6 +28,7 @@ name: copyrights
28
28
  - master
29
29
  jobs:
30
30
  copyrights:
31
+ timeout-minutes: 15
31
32
  runs-on: ubuntu-24.04
32
33
  steps:
33
34
  - uses: actions/checkout@v4
@@ -32,6 +32,7 @@ concurrency:
32
32
  cancel-in-progress: true
33
33
  jobs:
34
34
  markdown-lint:
35
+ timeout-minutes: 15
35
36
  runs-on: ubuntu-24.04
36
37
  steps:
37
38
  - uses: actions/checkout@v4
@@ -19,7 +19,7 @@
19
19
  # SOFTWARE.
20
20
  ---
21
21
  name: pdd
22
- on:
22
+ 'on':
23
23
  push:
24
24
  branches:
25
25
  - master
@@ -28,6 +28,7 @@ on:
28
28
  - master
29
29
  jobs:
30
30
  pdd:
31
+ timeout-minutes: 15
31
32
  runs-on: ubuntu-24.04
32
33
  steps:
33
34
  - uses: actions/checkout@v4
@@ -19,7 +19,7 @@
19
19
  # SOFTWARE.
20
20
  ---
21
21
  name: rake
22
- on:
22
+ 'on':
23
23
  push:
24
24
  branches:
25
25
  - master
@@ -28,7 +28,6 @@ on:
28
28
  - master
29
29
  jobs:
30
30
  rake:
31
- name: test
32
31
  strategy:
33
32
  matrix:
34
33
  os: [ubuntu-24.04, macos-15]
@@ -40,5 +39,6 @@ jobs:
40
39
  with:
41
40
  ruby-version: ${{ matrix.ruby }}
42
41
  bundler-cache: true
42
+ - run: bundle config set --global path "$(pwd)/vendor/bundle"
43
43
  - run: bundle install
44
44
  - run: bundle exec rake
@@ -28,6 +28,7 @@ name: xcop
28
28
  - master
29
29
  jobs:
30
30
  xcop:
31
+ timeout-minutes: 15
31
32
  runs-on: ubuntu-24.04
32
33
  steps:
33
34
  - uses: actions/checkout@v4
@@ -28,6 +28,7 @@ name: yamllint
28
28
  - master
29
29
  jobs:
30
30
  yamllint:
31
+ timeout-minutes: 15
31
32
  runs-on: ubuntu-24.04
32
33
  steps:
33
34
  - uses: actions/checkout@v4
data/.gitignore CHANGED
@@ -6,4 +6,4 @@ coverage/
6
6
  rdoc/
7
7
  doc/
8
8
  .yardoc/
9
- temp/
9
+ temp/
data/.rubocop.yml CHANGED
@@ -27,7 +27,13 @@ AllCops:
27
27
  TargetRubyVersion: 3.2
28
28
  SuggestExtensions: false
29
29
  NewCops: enable
30
+ require:
31
+ - rubocop-minitest
32
+ - rubocop-performance
33
+ - rubocop-rake
30
34
 
35
+ Minitest/EmptyLineBeforeAssertionMethods:
36
+ Enabled: false
31
37
  Metrics/ParameterLists:
32
38
  Enabled: false
33
39
  Style/GlobalVars:
data/Gemfile CHANGED
@@ -23,16 +23,18 @@
23
23
  source 'https://rubygems.org'
24
24
  gemspec
25
25
 
26
- gem 'cucumber', '9.2.0', require: false
26
+ gem 'cucumber', '9.2.1', require: false
27
27
  gem 'minitest', '5.25.4', require: false
28
28
  gem 'minitest-reporters', '1.7.1', require: false
29
29
  gem 'net-ping', '2.0.8', require: false
30
30
  gem 'rake', '13.2.1', require: false
31
31
  gem 'random-port', '~>0.0', require: false
32
32
  gem 'rspec-rails', '7.1.0', require: false
33
- gem 'rubocop', '1.69.2', require: false
33
+ gem 'rubocop', '1.71.2', require: false
34
+ gem 'rubocop-minitest', '0.36.0', require: false
34
35
  gem 'rubocop-performance', '1.23.1', require: false
35
- gem 'rubocop-rspec', '3.3.0', require: false
36
+ gem 'rubocop-rake', '0.6.0', require: false
37
+ gem 'rubocop-rspec', '3.4.0', require: false
36
38
  gem 'simplecov', '0.22.0', require: false
37
39
  gem 'simplecov-cobertura', '2.1.0', require: false
38
40
  gem 'w3c_validators', '1.3.7', require: false
data/Gemfile.lock CHANGED
@@ -10,24 +10,23 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- actionpack (7.2.2)
14
- actionview (= 7.2.2)
15
- activesupport (= 7.2.2)
13
+ actionpack (8.0.1)
14
+ actionview (= 8.0.1)
15
+ activesupport (= 8.0.1)
16
16
  nokogiri (>= 1.8.5)
17
- racc
18
- rack (>= 2.2.4, < 3.2)
17
+ rack (>= 2.2.4)
19
18
  rack-session (>= 1.0.1)
20
19
  rack-test (>= 0.6.3)
21
20
  rails-dom-testing (~> 2.2)
22
21
  rails-html-sanitizer (~> 1.6)
23
22
  useragent (~> 0.16)
24
- actionview (7.2.2)
25
- activesupport (= 7.2.2)
23
+ actionview (8.0.1)
24
+ activesupport (= 8.0.1)
26
25
  builder (~> 3.1)
27
26
  erubi (~> 1.11)
28
27
  rails-dom-testing (~> 2.2)
29
28
  rails-html-sanitizer (~> 1.6)
30
- activesupport (7.2.2)
29
+ activesupport (8.0.1)
31
30
  base64
32
31
  benchmark (>= 0.3)
33
32
  bigdecimal
@@ -39,6 +38,7 @@ GEM
39
38
  minitest (>= 5.1)
40
39
  securerandom (>= 0.3)
41
40
  tzinfo (~> 2.0, >= 2.0.5)
41
+ uri (>= 0.13.1)
42
42
  addressable (2.8.7)
43
43
  public_suffix (>= 2.0.2, < 7.0)
44
44
  ansi (1.5.0)
@@ -46,15 +46,15 @@ GEM
46
46
  backtrace (0.4.0)
47
47
  base64 (0.2.0)
48
48
  benchmark (0.4.0)
49
- bigdecimal (3.1.8)
49
+ bigdecimal (3.1.9)
50
50
  builder (3.3.0)
51
- concurrent-ruby (1.3.4)
52
- connection_pool (2.4.1)
51
+ concurrent-ruby (1.3.5)
52
+ connection_pool (2.5.0)
53
53
  crack (1.0.0)
54
54
  bigdecimal
55
55
  rexml
56
56
  crass (1.0.6)
57
- cucumber (9.2.0)
57
+ cucumber (9.2.1)
58
58
  builder (~> 3.2)
59
59
  cucumber-ci-environment (> 9, < 11)
60
60
  cucumber-core (> 13, < 14)
@@ -75,39 +75,42 @@ GEM
75
75
  bigdecimal
76
76
  cucumber-gherkin (27.0.0)
77
77
  cucumber-messages (>= 19.1.4, < 23)
78
- cucumber-html-formatter (21.7.0)
79
- cucumber-messages (> 19, < 27)
78
+ cucumber-html-formatter (21.9.0)
79
+ cucumber-messages (> 19, < 28)
80
80
  cucumber-messages (22.0.0)
81
- cucumber-tag-expressions (6.1.0)
81
+ cucumber-tag-expressions (6.1.2)
82
+ date (3.4.1)
82
83
  diff-lcs (1.5.1)
83
84
  docile (1.4.1)
84
85
  drb (2.2.1)
85
86
  elapsed (0.0.1)
86
87
  loog (> 0)
87
88
  tago (> 0)
88
- erubi (1.13.0)
89
- ffi (1.17.0-aarch64-linux-gnu)
90
- ffi (1.17.0-arm-linux-gnu)
91
- ffi (1.17.0-arm64-darwin)
92
- ffi (1.17.0-x64-mingw-ucrt)
93
- ffi (1.17.0-x86-linux-gnu)
94
- ffi (1.17.0-x86_64-darwin)
95
- ffi (1.17.0-x86_64-linux-gnu)
96
- hashdiff (1.1.1)
97
- i18n (1.14.6)
89
+ erubi (1.13.1)
90
+ ffi (1.17.1-aarch64-linux-gnu)
91
+ ffi (1.17.1-arm-linux-gnu)
92
+ ffi (1.17.1-arm64-darwin)
93
+ ffi (1.17.1-x64-mingw-ucrt)
94
+ ffi (1.17.1-x86-linux-gnu)
95
+ ffi (1.17.1-x86_64-darwin)
96
+ ffi (1.17.1-x86_64-linux-gnu)
97
+ hashdiff (1.1.2)
98
+ i18n (1.14.7)
98
99
  concurrent-ruby (~> 1.0)
99
- io-console (0.7.2)
100
- irb (1.14.1)
100
+ io-console (0.8.0)
101
+ irb (1.15.1)
102
+ pp (>= 0.6.0)
101
103
  rdoc (>= 4.0.0)
102
104
  reline (>= 0.4.2)
103
105
  json (2.9.1)
104
- language_server-protocol (3.17.0.3)
105
- logger (1.6.1)
106
- loofah (2.23.1)
106
+ language_server-protocol (3.17.0.4)
107
+ logger (1.6.5)
108
+ loofah (2.24.0)
107
109
  crass (~> 1.0.2)
108
110
  nokogiri (>= 1.12.0)
109
111
  loog (0.6.0)
110
112
  mini_mime (1.1.5)
113
+ mini_portile2 (2.8.8)
111
114
  minitest (5.25.4)
112
115
  minitest-reporters (1.7.1)
113
116
  ansi
@@ -116,45 +119,51 @@ GEM
116
119
  ruby-progressbar
117
120
  multi_test (1.1.0)
118
121
  net-ping (2.0.8)
119
- nokogiri (1.16.7-aarch64-linux)
122
+ nokogiri (1.18.2)
123
+ mini_portile2 (~> 2.8.2)
120
124
  racc (~> 1.4)
121
- nokogiri (1.16.7-arm-linux)
125
+ nokogiri (1.18.2-aarch64-linux-gnu)
122
126
  racc (~> 1.4)
123
- nokogiri (1.16.7-arm64-darwin)
127
+ nokogiri (1.18.2-arm-linux-gnu)
124
128
  racc (~> 1.4)
125
- nokogiri (1.16.7-x64-mingw-ucrt)
129
+ nokogiri (1.18.2-arm64-darwin)
126
130
  racc (~> 1.4)
127
- nokogiri (1.16.7-x86-linux)
131
+ nokogiri (1.18.2-x64-mingw-ucrt)
128
132
  racc (~> 1.4)
129
- nokogiri (1.16.7-x86_64-darwin)
133
+ nokogiri (1.18.2-x86_64-darwin)
130
134
  racc (~> 1.4)
131
- nokogiri (1.16.7-x86_64-linux)
135
+ nokogiri (1.18.2-x86_64-linux-gnu)
132
136
  racc (~> 1.4)
133
137
  parallel (1.26.3)
134
- parser (3.3.6.0)
138
+ parser (3.3.7.0)
135
139
  ast (~> 2.4.1)
136
140
  racc
137
- psych (5.2.0)
141
+ pp (0.6.2)
142
+ prettyprint
143
+ prettyprint (0.2.0)
144
+ psych (5.2.3)
145
+ date
138
146
  stringio
139
147
  public_suffix (6.0.1)
140
148
  racc (1.8.1)
141
- rack (3.1.8)
142
- rack-session (2.0.0)
149
+ rack (3.1.9)
150
+ rack-session (2.1.0)
151
+ base64 (>= 0.1.0)
143
152
  rack (>= 3.0.0)
144
- rack-test (2.1.0)
153
+ rack-test (2.2.0)
145
154
  rack (>= 1.3)
146
- rackup (2.2.0)
155
+ rackup (2.2.1)
147
156
  rack (>= 3)
148
157
  rails-dom-testing (2.2.0)
149
158
  activesupport (>= 5.0.0)
150
159
  minitest
151
160
  nokogiri (>= 1.6)
152
- rails-html-sanitizer (1.6.0)
161
+ rails-html-sanitizer (1.6.2)
153
162
  loofah (~> 2.21)
154
- nokogiri (~> 1.14)
155
- railties (7.2.2)
156
- actionpack (= 7.2.2)
157
- activesupport (= 7.2.2)
163
+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
164
+ railties (8.0.1)
165
+ actionpack (= 8.0.1)
166
+ activesupport (= 8.0.1)
158
167
  irb (~> 1.13)
159
168
  rackup (>= 1.0.0)
160
169
  rake (>= 12.2)
@@ -162,14 +171,14 @@ GEM
162
171
  zeitwerk (~> 2.6)
163
172
  rainbow (3.1.1)
164
173
  rake (13.2.1)
165
- random-port (0.7.4)
174
+ random-port (0.7.5)
166
175
  tago (> 0)
167
- rdoc (6.7.0)
176
+ rdoc (6.11.0)
168
177
  psych (>= 4.0.0)
169
- regexp_parser (2.9.3)
170
- reline (0.5.11)
178
+ regexp_parser (2.10.0)
179
+ reline (0.6.0)
171
180
  io-console (~> 0.5)
172
- rexml (3.3.8)
181
+ rexml (3.4.0)
173
182
  rspec-core (3.13.2)
174
183
  rspec-support (~> 3.13.0)
175
184
  rspec-expectations (3.13.3)
@@ -186,26 +195,31 @@ GEM
186
195
  rspec-expectations (~> 3.13)
187
196
  rspec-mocks (~> 3.13)
188
197
  rspec-support (~> 3.13)
189
- rspec-support (3.13.1)
190
- rubocop (1.69.2)
198
+ rspec-support (3.13.2)
199
+ rubocop (1.71.2)
191
200
  json (~> 2.3)
192
201
  language_server-protocol (>= 3.17.0)
193
202
  parallel (~> 1.10)
194
203
  parser (>= 3.3.0.2)
195
204
  rainbow (>= 2.2.2, < 4.0)
196
205
  regexp_parser (>= 2.9.3, < 3.0)
197
- rubocop-ast (>= 1.36.2, < 2.0)
206
+ rubocop-ast (>= 1.38.0, < 2.0)
198
207
  ruby-progressbar (~> 1.7)
199
208
  unicode-display_width (>= 2.4.0, < 4.0)
200
- rubocop-ast (1.36.2)
209
+ rubocop-ast (1.38.0)
201
210
  parser (>= 3.3.1.0)
211
+ rubocop-minitest (0.36.0)
212
+ rubocop (>= 1.61, < 2.0)
213
+ rubocop-ast (>= 1.31.1, < 2.0)
202
214
  rubocop-performance (1.23.1)
203
215
  rubocop (>= 1.48.1, < 2.0)
204
216
  rubocop-ast (>= 1.31.1, < 2.0)
205
- rubocop-rspec (3.3.0)
217
+ rubocop-rake (0.6.0)
218
+ rubocop (~> 1.0)
219
+ rubocop-rspec (3.4.0)
206
220
  rubocop (~> 1.61)
207
221
  ruby-progressbar (1.13.0)
208
- securerandom (0.3.1)
222
+ securerandom (0.4.1)
209
223
  simplecov (0.22.0)
210
224
  docile (~> 1.1)
211
225
  simplecov-html (~> 0.11)
@@ -216,14 +230,17 @@ GEM
216
230
  simplecov-html (0.13.1)
217
231
  simplecov_json_formatter (0.1.4)
218
232
  stringio (3.1.2)
219
- sys-uname (1.3.0)
233
+ sys-uname (1.3.1)
220
234
  ffi (~> 1.1)
221
235
  tago (0.0.2)
222
236
  thor (1.3.2)
223
237
  tzinfo (2.0.6)
224
238
  concurrent-ruby (~> 1.0)
225
- unicode-display_width (2.6.0)
226
- useragent (0.16.10)
239
+ unicode-display_width (3.1.4)
240
+ unicode-emoji (~> 4.0, >= 4.0.4)
241
+ unicode-emoji (4.0.4)
242
+ uri (1.0.2)
243
+ useragent (0.16.11)
227
244
  w3c_validators (1.3.7)
228
245
  json (>= 1.8)
229
246
  nokogiri (~> 1.6)
@@ -239,13 +256,14 @@ PLATFORMS
239
256
  aarch64-linux
240
257
  arm-linux
241
258
  arm64-darwin
259
+ arm64-darwin-23
242
260
  x64-mingw-ucrt
243
261
  x86-linux
244
262
  x86_64-darwin
245
263
  x86_64-linux
246
264
 
247
265
  DEPENDENCIES
248
- cucumber (= 9.2.0)
266
+ cucumber (= 9.2.1)
249
267
  minitest (= 5.25.4)
250
268
  minitest-reporters (= 1.7.1)
251
269
  net-ping (= 2.0.8)
@@ -253,9 +271,11 @@ DEPENDENCIES
253
271
  rake (= 13.2.1)
254
272
  random-port (~> 0.0)
255
273
  rspec-rails (= 7.1.0)
256
- rubocop (= 1.69.2)
274
+ rubocop (= 1.71.2)
275
+ rubocop-minitest (= 0.36.0)
257
276
  rubocop-performance (= 1.23.1)
258
- rubocop-rspec (= 3.3.0)
277
+ rubocop-rake (= 0.6.0)
278
+ rubocop-rspec (= 3.4.0)
259
279
  simplecov (= 0.22.0)
260
280
  simplecov-cobertura (= 2.1.0)
261
281
  w3c_validators (= 1.3.7)
data/Rakefile CHANGED
@@ -35,7 +35,7 @@ end
35
35
 
36
36
  ENV['RACK_ENV'] = 'test'
37
37
 
38
- task default: %i[clean test rubocop yard copyright]
38
+ task default: %i[clean test rubocop yard]
39
39
 
40
40
  require 'rake/testtask'
41
41
  desc 'Run all unit tests'
@@ -59,12 +59,3 @@ RuboCop::RakeTask.new(:rubocop) do |task|
59
59
  task.fail_on_error = true
60
60
  task.requires << 'rubocop-rspec'
61
61
  end
62
-
63
- task :copyright do
64
- sh "grep -q -r '#{Date.today.strftime('%Y')}' \
65
- --include '*.rb' \
66
- --include '*.yml' \
67
- --include '*.txt' \
68
- --include 'Rakefile' \
69
- ."
70
- end
data/lib/qbash.rb CHANGED
@@ -89,6 +89,24 @@ module Kernel
89
89
  sin.write(stdin)
90
90
  sin.close
91
91
  if block_given?
92
+ Thread.new do
93
+ until sout.closed?
94
+ begin
95
+ ln = sout.gets
96
+ rescue IOError => e
97
+ ln = Backtrace.new(e).to_s
98
+ end
99
+ ln = "##{thr.pid}: #{ln}"
100
+ if log.nil?
101
+ # no logging
102
+ elsif log.respond_to?(mtd)
103
+ log.__send__(mtd, ln)
104
+ else
105
+ log.print("#{ln}\n")
106
+ end
107
+ buf += ln
108
+ end
109
+ end
92
110
  yield thr.pid
93
111
  else
94
112
  until sout.eof?
data/qbash.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
  s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
27
27
  s.required_ruby_version = '>=3.2'
28
28
  s.name = 'qbash'
29
- s.version = '0.3.0'
29
+ s.version = '0.3.1'
30
30
  s.license = 'MIT'
31
31
  s.summary = 'Quick Executor of a BASH Command'
32
32
  s.description =
data/test/test_qbash.rb CHANGED
@@ -36,7 +36,7 @@ class TestQbash < Minitest::Test
36
36
  def test_basic_run
37
37
  Dir.mktmpdir do |home|
38
38
  qbash("cd #{Shellwords.escape(home)}; echo $FOO | cat > a.txt", env: { 'FOO' => '42' })
39
- assert(File.exist?(File.join(home, 'a.txt')))
39
+ assert_path_exists(File.join(home, 'a.txt'))
40
40
  assert_equal("42\n", File.read(File.join(home, 'a.txt')))
41
41
  end
42
42
  end
@@ -71,7 +71,7 @@ class TestQbash < Minitest::Test
71
71
  Dir.mktmpdir do |home|
72
72
  f = File.join(home, 'a b c.txt')
73
73
  qbash("cat > #{Shellwords.escape(f)}", stdin: 'hello')
74
- assert(File.exist?(f))
74
+ assert_path_exists(f)
75
75
  assert_equal('hello', File.read(f))
76
76
  end
77
77
  end
@@ -82,12 +82,12 @@ class TestQbash < Minitest::Test
82
82
 
83
83
  def test_with_error
84
84
  Dir.mktmpdir do |home|
85
- assert_raises { qbash("cat #{Shellwords.escape(File.join(home, 'b.txt'))}") }
85
+ assert_raises(StandardError) { qbash("cat #{Shellwords.escape(File.join(home, 'b.txt'))}") }
86
86
  end
87
87
  end
88
88
 
89
89
  def test_fails_when_nil_env
90
- assert_raises { qbash('echo hi', env: { a: nil }) }
90
+ assert_raises(StandardError) { qbash('echo hi', env: { a: nil }) }
91
91
  end
92
92
 
93
93
  def test_ignore_errors
@@ -104,11 +104,30 @@ class TestQbash < Minitest::Test
104
104
  end.join
105
105
  end
106
106
 
107
+ def test_logs_in_background
108
+ stdout = nil
109
+ buf = Loog::Buffer.new
110
+ Dir.mktmpdir do |home|
111
+ flag = File.join(home, 'started.txt')
112
+ Thread.new do
113
+ stdout =
114
+ qbash("while true; do date; touch #{Shellwords.escape(flag)}; sleep 0.001; done", log: buf) do |pid|
115
+ loop { break if File.exist?(flag) }
116
+ Process.kill('KILL', pid)
117
+ end
118
+ end.join
119
+ end
120
+ refute_empty(buf.to_s)
121
+ refute_empty(stdout)
122
+ refute_includes(stdout, "\n\n")
123
+ refute_includes(buf.to_s, "\n\n")
124
+ end
125
+
107
126
  def test_with_both
108
127
  Dir.mktmpdir do |home|
109
128
  stdout, code = qbash("cat #{Shellwords.escape(File.join(home, 'foo.txt'))}", accept: nil, both: true)
110
- assert(code.positive?)
111
- assert(!stdout.empty?)
129
+ assert_predicate(code, :positive?)
130
+ refute_empty(stdout)
112
131
  end
113
132
  end
114
133
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qbash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-07 00:00:00.000000000 Z
11
+ date: 2025-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backtrace