baf 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 672e4191f970498cfc78fbd220ebddd74e3fb7ac
4
- data.tar.gz: a15fce79c005964a645fcc233fc95cd184aa99b2
3
+ metadata.gz: f1a22622dd602a592828ff11f450a861883355d1
4
+ data.tar.gz: 83d308e32b89f49d4298122231fbd457ae3f0c70
5
5
  SHA512:
6
- metadata.gz: d99b934bbacd1a65e6aade6688700e0b7761e82d260e4707305220e050e6ffcf5255eaa139d2ac8498f612bf88bc806b2c2f266ceeaa1eb67f8b2ee4f282050c
7
- data.tar.gz: a12f12a1c7aa33e312ffbc28321982af67b50fcaf70f2ba9f446c5e0758fc26751c8b63f4f78b1de95376f17d845fd70179db237831a0fdfbc45ddc739b2a640
6
+ metadata.gz: e286d14950f9dffd81ea0d642489b15ad140cbd10d6ca00f278dfb313a0bd4f8f2150a1118ab64b5aba7b4e43f57b861c3e0b30f80d160b8dee1454a9eb76f7f
7
+ data.tar.gz: bb3d0466a293136ffac2f1453718b4fb7e82fa1e4b06a5ddc543faeafde189d780067406cdc7b2ab537b6b86dca8cf0fe2a5d969fa0f6b9b6d92bb1857bdbaef
@@ -1,8 +1,12 @@
1
- def program_run check: false, opts: nil, args: nil
1
+ def program_run check: false, opts: nil, args: nil, wait: true
2
2
  cmd = [*@_baf_program ||= %w[ruby baf]]
3
3
  cmd << opts if opts
4
4
  cmd << args.split(' ') if args
5
- run_simple cmd.join(' '), fail_on_error: false
5
+ if wait
6
+ run_simple cmd.join(' '), fail_on_error: false
7
+ else
8
+ run cmd.join ' '
9
+ end
6
10
  program_run_check if check
7
11
  end
8
12
 
@@ -20,16 +24,16 @@ rescue RSpec::Expectations::ExpectationNotMetError => e
20
24
  end
21
25
 
22
26
 
23
- When /^I( successfully)? run the program$/ do |check|
24
- program_run check: !!check
27
+ When /^I( successfully)? (run|\w+) the program$/ do |check, run|
28
+ program_run check: !!check, wait: run == 'run'
25
29
  end
26
30
 
27
- When /^I( successfully)? run the program with arguments (.+)$/ do |check, args|
28
- program_run check: !!check, args: args
31
+ When /^I( successfully)? (run|\w+) the program with arguments (.+)$/ do |check, run, args|
32
+ program_run check: !!check, args: args, wait: run == 'run'
29
33
  end
30
34
 
31
- When /^I( successfully)? run the program with options? (-.+)$/ do |check, opts|
32
- program_run check: !!check, opts: opts
35
+ When /^I( successfully)? (run|\w+) the program with options? (-.+)$/ do |check, run, opts|
36
+ program_run check: !!check, opts: opts, wait: run == 'run'
33
37
  end
34
38
 
35
39
 
@@ -0,0 +1,50 @@
1
+ require 'timeout'
2
+
3
+ module Baf
4
+ module Testing
5
+ class WaitError < ::StandardError
6
+ attr_reader :timeout
7
+
8
+ def initialize message, timeout
9
+ super message
10
+ @timeout = timeout
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ def wait_output! pattern
17
+ output = -> { last_command_started.output }
18
+ wait_until do
19
+ case pattern
20
+ when Regexp then output.call =~ pattern
21
+ when String then output.call.include? pattern
22
+ end
23
+ end
24
+ rescue Baf::Testing::WaitError => e
25
+ fail <<-eoh
26
+ expected `#{pattern}' not seen after #{e.timeout} seconds in:
27
+ ```\n#{output.call.lines.map { |l| " #{l}" }.join} ```
28
+ eoh
29
+ end
30
+
31
+ def wait_until message: 'condition not met after %d seconds'
32
+ timeout = 2
33
+ Timeout.timeout(timeout) do
34
+ loop do
35
+ break if yield
36
+ sleep 0.05
37
+ end
38
+ end
39
+ rescue Timeout::Error
40
+ raise Baf::Testing::WaitError.new(message % timeout, timeout)
41
+ end
42
+
43
+
44
+ Then /^the output will match \/([^\/]+)\/([a-z]*)$/ do |pattern, options|
45
+ wait_output! build_regexp(pattern, options)
46
+ end
47
+
48
+ Then /^the output will contain "([^"]+)"$/ do |content|
49
+ wait_output! content
50
+ end
@@ -1,3 +1,3 @@
1
1
  module Baf
2
- VERSION = '0.6.1'.freeze
2
+ VERSION = '0.6.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thibault Jouan
@@ -53,6 +53,7 @@ files:
53
53
  - lib/baf/testing/cucumber.rb
54
54
  - lib/baf/testing/cucumber/steps/execution.rb
55
55
  - lib/baf/testing/cucumber/steps/output.rb
56
+ - lib/baf/testing/cucumber/steps/output_wait.rb
56
57
  - lib/baf/version.rb
57
58
  homepage: https://rubygems.org/gems/baf
58
59
  licenses: