jet_black 0.1.0 → 0.2.0

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
  SHA256:
3
- metadata.gz: 9d0380fc2fc0e5a1a92c769bd696b8b6ed50ff314299f41dee11b9a1637ba7af
4
- data.tar.gz: 2e5d5cef1ba46569904b89cd4af6893cad9b7041bcba910fe987ba885441cd32
3
+ metadata.gz: aa0fa42b8b1218e280038ce18fa583a3a8288d4cd91c5a6445c34d03b8c68c5f
4
+ data.tar.gz: d5c94f0eb5852106f2959dd4745f27d401f67adcc2d79247e9979dd3760a8935
5
5
  SHA512:
6
- metadata.gz: 586f355aa9142484c739bde06cd412e8096932b7557e28fed5c93c98f850263517226139592308cf0063447da12d457494a859a852e660ac9f2585f1aaa0b81c
7
- data.tar.gz: aac1249839146336bb8a414b01073bbfb70ff457a27b3160094c868b61a92b798c578f38e2ae73d5ca126a14ae5b9d42fa71aafa4cfcd612a1d5ab4dcb6a0f57
6
+ metadata.gz: 5ca15f316fac15876965b704f37432ee80ceb4867c13b1a0cc0e4063f79bd50ec3b60a2a462f600afb753c08c260c665a71065ba3e35d8dd470436acb0128e83
7
+ data.tar.gz: c371bf859447eeac0514167f9f1869132595cf745d6086dcb1482d0feb7622c886ed3f89ffd8cd881c8f5855718be2386bb0c17bd236ad664a9594e8353dbdde
@@ -0,0 +1,41 @@
1
+ version: 2
2
+ jobs:
3
+ build:
4
+ docker:
5
+ - image: circleci/ruby:2.5
6
+
7
+ working_directory: ~/repo
8
+
9
+ steps:
10
+ - checkout
11
+
12
+ - restore_cache:
13
+ keys:
14
+ - v1-dependencies-{{ checksum "Gemfile.lock" }}
15
+ # fallback to using the latest cache if no exact match is found
16
+ - v1-dependencies-
17
+
18
+ - run:
19
+ name: install dependencies
20
+ command: |
21
+ bundle install --jobs=4 --retry=3 --path vendor/bundle
22
+
23
+ - save_cache:
24
+ paths:
25
+ - ./vendor/bundle
26
+ key: v1-dependencies-{{ checksum "Gemfile.lock" }}
27
+
28
+ - run:
29
+ name: run tests
30
+ command: |
31
+ mkdir /tmp/test-results
32
+ bundle exec rspec --format progress \
33
+ --format RspecJunitFormatter \
34
+ --out /tmp/test-results/rspec.xml
35
+
36
+ # collect reports
37
+ - store_test_results:
38
+ path: /tmp/test-results
39
+ - store_artifacts:
40
+ path: /tmp/test-results
41
+ destination: test-results
@@ -0,0 +1,13 @@
1
+ # Changelog
2
+
3
+ ## v0.2.0
4
+
5
+ - Adds RSpec matchers `have_stdout`, `have_stderr`, `have_no_stdout`, &
6
+ `have_no_stderr`.
7
+ - Adds support for RSpec predicate matchers `be_success` & `be_failure`.
8
+ - Requiring `jet_black/rspec` sets up inference of spec type and inclusion
9
+ matchers (place specs in `spec/black_box`).
10
+
11
+ ## v0.1.0
12
+
13
+ - Initial release.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- jet_black (0.1.0)
4
+ jet_black (0.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -26,6 +26,8 @@ GEM
26
26
  diff-lcs (>= 1.2.0, < 2.0)
27
27
  rspec-support (~> 3.7.0)
28
28
  rspec-support (3.7.1)
29
+ rspec_junit_formatter (0.3.0)
30
+ rspec-core (>= 2, < 4, != 2.12.0)
29
31
 
30
32
  PLATFORMS
31
33
  ruby
@@ -36,6 +38,7 @@ DEPENDENCIES
36
38
  pry
37
39
  rake (~> 10.0)
38
40
  rspec (~> 3.0)
41
+ rspec_junit_formatter
39
42
 
40
43
  BUNDLED WITH
41
44
  1.16.1
data/README.md CHANGED
@@ -1,12 +1,16 @@
1
1
  # JetBlack
2
2
 
3
- A black-box testing utility for Ruby. Features:
3
+ [![CircleCI](https://circleci.com/gh/odlp/jet_black.svg?style=svg)](https://circleci.com/gh/odlp/jet_black)
4
+
5
+ A black-box testing utility for command line tools, written in Ruby. Features:
4
6
 
5
7
  - Each session runs in a temporary directory
6
- - Captures stdout, stderr and exit status of a command
8
+ - Captures `stdout`, `stderr` and exit status of a command
7
9
  - Keeps a history of commands executed
8
10
  - Temporarily overriding environment variables for a command
9
11
  - Copying fixture files to the temporary directory
10
12
  - Appending content to files in the temporary directory
11
13
  - Adding a path prefix to include your executable
12
- - Option to escape the Bundler environment, to "bundle exec" new Gemfiles
14
+ - Option to escape the Bundler environment (allowing `bundle exec` with
15
+ different Gemfiles)
16
+ - RSpec matchers for `stdout` and `stderr`
@@ -19,7 +19,8 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.16"
22
+ spec.add_development_dependency "pry"
22
23
  spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "rspec_junit_formatter"
23
25
  spec.add_development_dependency "rspec", "~> 3.0"
24
- spec.add_development_dependency "pry"
25
26
  end
@@ -8,5 +8,13 @@ module JetBlack
8
8
  @stderr = stderr.chomp
9
9
  @exit_status = exit_status.to_i
10
10
  end
11
+
12
+ def success?
13
+ exit_status.zero?
14
+ end
15
+
16
+ def failure?
17
+ !success?
18
+ end
11
19
  end
12
20
  end
@@ -0,0 +1,15 @@
1
+ require "rspec/core"
2
+ require_relative "rspec/matchers"
3
+
4
+ module JetBlack
5
+ module RSpec
6
+ end
7
+ end
8
+
9
+ RSpec.configure do |config|
10
+ config.define_derived_metadata(file_path: %r{/spec/black_box/}) do |metadata|
11
+ metadata[:type] = :black_box
12
+ end
13
+
14
+ config.include JetBlack::RSpec::Matchers, type: :black_box
15
+ end
@@ -0,0 +1,53 @@
1
+ require "rspec/expectations"
2
+
3
+ module JetBlack
4
+ module RSpec
5
+ module Matchers
6
+ extend ::RSpec::Matchers::DSL
7
+
8
+ def have_stdout(expected)
9
+ HaveStdout.new(expected)
10
+ end
11
+
12
+ def have_stderr(expected)
13
+ HaveStderr.new(expected)
14
+ end
15
+
16
+ matcher(:have_no_stdout) do
17
+ match { |result| result.stdout.empty? }
18
+
19
+ failure_message do |result|
20
+ <<~MSG
21
+ expected command to have no stdout output. Got:
22
+ ---
23
+ #{result.stdout}
24
+ MSG
25
+ end
26
+ end
27
+
28
+ matcher(:have_no_stderr) do
29
+ match { |result| result.stderr.empty? }
30
+
31
+ failure_message do |result|
32
+ <<~MSG
33
+ expected command to have no stderr output. Got:
34
+ ---
35
+ #{result.stderr}
36
+ MSG
37
+ end
38
+ end
39
+
40
+ class HaveStdout < ::RSpec::Matchers::BuiltIn::Match
41
+ def matches?(actual)
42
+ super(actual.stdout)
43
+ end
44
+ end
45
+
46
+ class HaveStderr < ::RSpec::Matchers::BuiltIn::Match
47
+ def matches?(actual)
48
+ super(actual.stderr)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -93,7 +93,7 @@ module JetBlack
93
93
 
94
94
  def command_context(options)
95
95
  if options[:clean_bundler_env]
96
- Bundler.with_original_env { yield }
96
+ Bundler.with_clean_env { yield }
97
97
  else
98
98
  yield
99
99
  end
@@ -1,3 +1,3 @@
1
1
  module JetBlack
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jet_black
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oli Peate
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-26 00:00:00.000000000 Z
11
+ date: 2018-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -25,35 +25,35 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.16'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '10.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
54
+ version: '10.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: pry
56
+ name: rspec_junit_formatter
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -66,15 +66,31 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
69
83
  description:
70
84
  email:
71
85
  executables: []
72
86
  extensions: []
73
87
  extra_rdoc_files: []
74
88
  files:
89
+ - ".circleci/config.yml"
75
90
  - ".gitignore"
76
91
  - ".rspec"
77
92
  - ".travis.yml"
93
+ - CHANGELOG.md
78
94
  - Gemfile
79
95
  - Gemfile.lock
80
96
  - LICENSE.txt
@@ -88,6 +104,8 @@ files:
88
104
  - lib/jet_black/environment.rb
89
105
  - lib/jet_black/errors.rb
90
106
  - lib/jet_black/executed_command.rb
107
+ - lib/jet_black/rspec.rb
108
+ - lib/jet_black/rspec/matchers.rb
91
109
  - lib/jet_black/session.rb
92
110
  - lib/jet_black/version.rb
93
111
  homepage: https://github.com/odlp/jet_black