command-unit 0.0.0
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 +15 -0
- data/.ruby-version +1 -0
- data/README.md +2 -0
- data/command-unit.gemspec +30 -0
- data/lib/command-unit.rb +88 -0
- data/test/quick-test.rb +23 -0
- metadata +48 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
Njk2YmM5MjE0MTgzYjlhMGZlZDdhOTNlZWMzMWZlN2I2YjdhNzk4ZA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YjdiNzVmYzE3MzFiYmQyMzIwNWQ3ZmZlYzk3M2ZkODE5NTE0MjVmNA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MDQ4ZTIzZjQ5MjdjMTdlYmU1MjUwYjIwZWFlZTBjNmM1MjUzYjc3Mjk0MTQ2
|
10
|
+
MmZjMzg4YTA3MTYyNDg0N2NiNzZhOGI5N2IxZTQ1OTI0NjNmMzBjODU1OTY1
|
11
|
+
ODM5MTFiZjBlYjZhMDZiZWJkNjgwMWE2ZDdmYzdkZDIwMDE2MWU=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YWM5ZjU5OGEyZTA3NDQxZTE0YmE1YmQxMTliODhlNmRmOTlkMzdkOWY4NThl
|
14
|
+
NWI5OWUwMjU1M2NlN2IxN2M3Y2Q5Mzc2N2U4YzRiMTUyNmM5ZWIzOTA5YWZk
|
15
|
+
YjY2ZDljZTRlMGYwNGNkNzgwMDkxNDViNTg0YmZmMjE4Y2ZjYmY=
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-1.9.3-p448
|
data/README.md
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = "command-unit"
|
3
|
+
s.version = "0.0.0"
|
4
|
+
s.platform = Gem::Platform::RUBY
|
5
|
+
s.author = "Samuel R. Salisbury"
|
6
|
+
s.email = "samsalisbury@gmail.com"
|
7
|
+
s.homepage = "http://github.com/samsalisbury/command-unit"
|
8
|
+
s.summary = "ALPHA: Simple test runner for command line tools."
|
9
|
+
s.description = "ALPHA: Test runner for one-shot command line tools. This was built to support writing git hooks over at http://github.com/samsalisbury/righteous-git-hooks"
|
10
|
+
|
11
|
+
s.rubyforge_project = s.name
|
12
|
+
|
13
|
+
s.required_rubygems_version = ">= 1.3.6"
|
14
|
+
|
15
|
+
# If you have runtime dependencies, add them here
|
16
|
+
# s.add_runtime_dependency "other", "~> 1.2"
|
17
|
+
|
18
|
+
# If you have development dependencies, add them here
|
19
|
+
# s.add_development_dependency "another", "= 0.9"
|
20
|
+
|
21
|
+
# The list of files to be contained in the gem
|
22
|
+
s.files = `git ls-files`.split("\n")
|
23
|
+
# s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
24
|
+
# s.extensions = `git ls-files ext/extconf.rb`.split("\n")
|
25
|
+
|
26
|
+
s.require_path = 'lib'
|
27
|
+
|
28
|
+
# For C extensions
|
29
|
+
# s.extensions = "ext/extconf.rb"
|
30
|
+
end
|
data/lib/command-unit.rb
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
module CommandUnit
|
2
|
+
|
3
|
+
@@scenarios = []
|
4
|
+
@@current_scenario = nil
|
5
|
+
attr_reader :current_scenario
|
6
|
+
|
7
|
+
def scenario(description, &block)
|
8
|
+
@@scenarios.push Scenario.new(description, &block)
|
9
|
+
end
|
10
|
+
|
11
|
+
def run
|
12
|
+
@@scenarios.each do |scenario|
|
13
|
+
scenario.run
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def set_up(&set_up_block)
|
18
|
+
raise 'set_up must be called from inside a scenario block' if @@current_scenario == nil
|
19
|
+
@@current_scenario.set_up_block = set_up_block
|
20
|
+
end
|
21
|
+
|
22
|
+
def when_i(desc, &when_i_block)
|
23
|
+
raise 'when_i must be called from inside a scenario block' if @@current_scenario == nil
|
24
|
+
@@current_scenario.add_test Test.new(desc, &when_i_block)
|
25
|
+
end
|
26
|
+
|
27
|
+
def i_expect(desc, &i_expect_block)
|
28
|
+
raise 'i_expect must be called from inside a scenario block' if @@current_scenario == nil
|
29
|
+
@@current_scenario.current_test.add_expectation Expectation.new(desc, &i_expect_block)
|
30
|
+
end
|
31
|
+
|
32
|
+
class Scenario
|
33
|
+
def initialize(desc, &block)
|
34
|
+
@desc = desc
|
35
|
+
@block = block
|
36
|
+
@set_up_block = nil
|
37
|
+
@tests = []
|
38
|
+
@current_test = nil
|
39
|
+
@tear_down_block = nil
|
40
|
+
end
|
41
|
+
|
42
|
+
def run
|
43
|
+
puts "Running scenario: #{@desc}"
|
44
|
+
@@current_scenario = self
|
45
|
+
@block.call
|
46
|
+
@tests.each do |test|
|
47
|
+
puts "When I #{test.when_i_text}"
|
48
|
+
context = {}
|
49
|
+
@set_up_block.call(context) unless @set_up_block.nil?
|
50
|
+
test.when_i_block.call(context) unless test.when_i_block.nil?
|
51
|
+
print 'I expect '
|
52
|
+
test.expectations.each do |expectation|
|
53
|
+
puts expectation.desc
|
54
|
+
expectation.block.call(context) unless expectation.block.nil?
|
55
|
+
end
|
56
|
+
end
|
57
|
+
@@current_scenario = nil
|
58
|
+
end
|
59
|
+
|
60
|
+
def add_test(test)
|
61
|
+
@tests.push test
|
62
|
+
@current_test = test
|
63
|
+
end
|
64
|
+
|
65
|
+
attr_accessor :desc, :block, :set_up_block, :tests, :tear_down_block, :current_test
|
66
|
+
end
|
67
|
+
|
68
|
+
class Test
|
69
|
+
def initialize(when_i_text, &when_i_block)
|
70
|
+
@when_i_text = when_i_text
|
71
|
+
@when_i_block = when_i_block
|
72
|
+
@expectations = []
|
73
|
+
end
|
74
|
+
attr_reader :when_i_text, :when_i_block, :expectations
|
75
|
+
def add_expectation(expectation)
|
76
|
+
@expectations.push expectation
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
class Expectation
|
81
|
+
def initialize(expectation_text, &expectaton_block)
|
82
|
+
@desc = expectation_text
|
83
|
+
@block = expectaton_block
|
84
|
+
end
|
85
|
+
attr_accessor :desc, :block
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
data/test/quick-test.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
include CommandUnit
|
2
|
+
|
3
|
+
scenario 'When blahblahs are whatnots' do
|
4
|
+
|
5
|
+
set_up do |context|
|
6
|
+
puts 'set_up called!'
|
7
|
+
context[:thing] = 'some property set in set_up'
|
8
|
+
end
|
9
|
+
|
10
|
+
when_i "don't do anything" do |context|
|
11
|
+
# Doing nothing
|
12
|
+
puts 'when_i called!'
|
13
|
+
context[:thing2] = 'thing'
|
14
|
+
end
|
15
|
+
|
16
|
+
i_expect 'to see a nice success message' do |context|
|
17
|
+
puts 'i_expect called!'
|
18
|
+
context[:thing3] = 'thang'
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
run
|
metadata
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: command-unit
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Samuel R. Salisbury
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-08-16 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: ! 'ALPHA: Test runner for one-shot command line tools. This was built
|
14
|
+
to support writing git hooks over at http://github.com/samsalisbury/righteous-git-hooks'
|
15
|
+
email: samsalisbury@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- .ruby-version
|
21
|
+
- README.md
|
22
|
+
- command-unit.gemspec
|
23
|
+
- lib/command-unit.rb
|
24
|
+
- test/quick-test.rb
|
25
|
+
homepage: http://github.com/samsalisbury/command-unit
|
26
|
+
licenses: []
|
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: 1.3.6
|
42
|
+
requirements: []
|
43
|
+
rubyforge_project: command-unit
|
44
|
+
rubygems_version: 2.0.6
|
45
|
+
signing_key:
|
46
|
+
specification_version: 4
|
47
|
+
summary: ! 'ALPHA: Simple test runner for command line tools.'
|
48
|
+
test_files: []
|