threaded_runner 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5acfd9fec8fcca6aaf8b75462f7d141028d31c1e
4
+ data.tar.gz: 47ed3909f322800ac4573d3093deb06ee8c1f88e
5
+ SHA512:
6
+ metadata.gz: c306932afe243916f3b0d530e91c709cdaf594c292edf252b000f053ee4c5ef7a8b8209d6ab9cf51d57dfc83f8197b72cc4e3de8b020e4fb71170c3b77544071
7
+ data.tar.gz: ef7ba20e72b15208e16df89e606a6577ea1a865a14031dc8835c0f9467be64cc1524b5dad4f8aa768c8844a7b54e0d35b979d8120d03e6d1b31df1500a151a11
@@ -0,0 +1,36 @@
1
+ class ThreadedRunner
2
+ def initialize(cmd)
3
+ @cmd = cmd
4
+ end
5
+
6
+ attr_reader :thread
7
+
8
+ def start(wait_for=nil)
9
+ @thread = Thread.new do
10
+ IO.popen(@cmd) do |f|
11
+ @pid = f.pid
12
+ f.each_line do |line|
13
+ line.strip!
14
+ yield line if block_given?
15
+ if @regex && line =~ @regex
16
+ @gotit = true
17
+ @regex = nil
18
+ end
19
+ end
20
+ end
21
+ end
22
+ nil
23
+ wait_for(wait_for) if wait_for
24
+ end
25
+
26
+ def wait_for(output)
27
+ @regex = output
28
+ sleep 0.2 until @gotit
29
+ @gotit = false
30
+ nil
31
+ end
32
+
33
+ def stop
34
+ Process.kill("TERM", @pid)
35
+ end
36
+ end
@@ -0,0 +1,11 @@
1
+ #!/bin/sh
2
+
3
+ echo hello
4
+ sleep 1
5
+ echo hello after 1 second
6
+ sleep 1
7
+ echo hello after 2 seconds
8
+ sleep 1
9
+ echo hello after 3 seconds
10
+ sleep 2
11
+ echo hello after 5 seconds
metadata ADDED
@@ -0,0 +1,48 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: threaded_runner
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - James Fairbairn
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-12-13 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |2
14
+ This class allows you to wait for your subprocess to output a line matching a
15
+ given regex, and also yields each line of the subprocess' output to an optional
16
+ block.
17
+ email: james@netlagoon.com
18
+ executables: []
19
+ extensions: []
20
+ extra_rdoc_files: []
21
+ files:
22
+ - lib/threaded_runner.rb
23
+ - long_talkative_process.sh
24
+ homepage: https://github.com/jfairbairn/threaded_runner
25
+ licenses:
26
+ - MIT
27
+ metadata: {}
28
+ post_install_message:
29
+ rdoc_options: []
30
+ require_paths:
31
+ - lib
32
+ required_ruby_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ required_rubygems_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ requirements: []
43
+ rubyforge_project:
44
+ rubygems_version: 2.5.1
45
+ signing_key:
46
+ specification_version: 4
47
+ summary: A simple class to run subprocesses under test in a thread
48
+ test_files: []