clintegracon 0.4.1 → 0.5.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 +7 -7
- data/.travis.yml +7 -7
- data/README.md +10 -13
- data/Rakefile +7 -4
- data/lib/CLIntegracon/adapter/bacon.rb +12 -12
- data/lib/CLIntegracon/configuration.rb +22 -2
- data/lib/CLIntegracon/file_tree_spec.rb +1 -1
- data/lib/CLIntegracon/file_tree_spec_context.rb +3 -2
- data/lib/CLIntegracon/subject.rb +14 -11
- data/lib/CLIntegracon/version.rb +1 -1
- data/spec/bacon/execution_output.txt +22 -26
- data/spec/bacon/spec_helper.rb +5 -5
- data/spec/unit/adapter/bacon_spec.rb +5 -5
- metadata +121 -85
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
---
|
|
2
|
-
SHA1:
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
SHA512:
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 25fcbf3498d6a95409593f24de5d6885bf1d7e33
|
|
4
|
+
data.tar.gz: a6e78918b216994abe40dba9c275fba234f903d0
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 32aa4fc119befca2f816fa6566c525de80a05dbaadf870b687021ae80549c2ef688437d020771d297eedeec8687b12443d4a65b5ba9a7130a2a2b1245226eb35
|
|
7
|
+
data.tar.gz: 6a8ae5276a8eecbeff4e024820de3f9098d2f1f0e2f21e1c5664e23dd9d47fd6c9bea2bf6d9d8fd0541c3482523b294b310abb73719e9b5c74735d61554a21bc
|
data/.travis.yml
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
language: ruby
|
|
2
|
+
rvm:
|
|
3
|
+
- 1.8.7
|
|
4
|
+
- 2.1.1
|
|
5
|
+
|
|
1
6
|
#addons:
|
|
2
7
|
# code_climate:
|
|
3
8
|
# repo_token: #TODO
|
|
4
9
|
|
|
5
|
-
|
|
6
|
-
- RVM_RUBY_VERSION=system
|
|
7
|
-
- RVM_RUBY_VERSION=1.8.7-p358
|
|
8
|
-
|
|
9
|
-
install:
|
|
10
|
-
- bundle install --without=documentation --path ./travis_bundle_dir
|
|
10
|
+
bundler_args: --without=documentation
|
|
11
11
|
|
|
12
|
-
script: rake spec
|
|
12
|
+
script: bundle exec rake spec
|
data/README.md
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
[](http://rubygems.org/gems/clintegracon)
|
|
4
4
|
[](https://travis-ci.org/mrackwitz/CLIntegracon)
|
|
5
|
-
[](https://codeclimate.com/github/mrackwitz/CLIntegracon)
|
|
6
5
|
[](https://codeclimate.com/github/mrackwitz/CLIntegracon)
|
|
7
6
|
|
|
8
7
|
CLIntegracon allows you to build *Integration* specs for your *CLI*,
|
|
@@ -66,8 +65,15 @@ This is not fixed, but if yours differ, you have to change paths accordingly.
|
|
|
66
65
|
|
|
67
66
|
```ruby
|
|
68
67
|
CLIntegracon.configure do |c|
|
|
69
|
-
c.
|
|
70
|
-
c.
|
|
68
|
+
c.spec_path = File.expand_path('../integration', __FILE__)
|
|
69
|
+
c.temp_path = File.expand_path('../../tmp', __FILE__)
|
|
70
|
+
|
|
71
|
+
# Ignore certain files ...
|
|
72
|
+
c.ignores '.gitkeep'
|
|
73
|
+
|
|
74
|
+
# ... or explicitly ignore all hidden files. (While the default is that they
|
|
75
|
+
# are included in the file tree diff.)
|
|
76
|
+
c.include_hidden_files = true
|
|
71
77
|
|
|
72
78
|
c.hook_into :bacon
|
|
73
79
|
end
|
|
@@ -101,16 +107,7 @@ This is not fixed, but if yours differ, you have to change paths accordingly.
|
|
|
101
107
|
# Replace special paths in execution output by a placeholder, so that the
|
|
102
108
|
# compared outputs doesn't differ dependent on the absolute location where
|
|
103
109
|
# your tested CLI was executed.
|
|
104
|
-
s.
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
context do |c|
|
|
108
|
-
# Ignore certain files ...
|
|
109
|
-
c.ignores '.gitkeep'
|
|
110
|
-
|
|
111
|
-
# ... or explicitly ignore all hidden files. (While the default is that they
|
|
112
|
-
# are included in the file tree diff.)
|
|
113
|
-
c.include_hidden_files = true
|
|
110
|
+
s.replace_path ROOT.to_s, 'ROOT'
|
|
114
111
|
end
|
|
115
112
|
|
|
116
113
|
describe 'Brew recipes' do
|
data/Rakefile
CHANGED
|
@@ -22,7 +22,7 @@ begin
|
|
|
22
22
|
if ok
|
|
23
23
|
puts '✓ Spec for bacon passed.'.green
|
|
24
24
|
else
|
|
25
|
-
|
|
25
|
+
fail '✗ Spec for bacon failed.'.red
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
end
|
|
@@ -31,8 +31,11 @@ begin
|
|
|
31
31
|
task :bacon_integration_runner do
|
|
32
32
|
sh [
|
|
33
33
|
'bundle exec bacon spec/bacon/spec_helper.rb',
|
|
34
|
-
'sed -e "s|$(
|
|
35
|
-
|
|
34
|
+
'sed -e "s|$(dirname ~/.)|\$HOME|g"',
|
|
35
|
+
# Keep exception formatting of different ruby versions clean and compatible
|
|
36
|
+
'sed -E "s|^([[:space:]])./|\1|g"',
|
|
37
|
+
'sed -e "s|:in \`.*\'$||g"',
|
|
38
|
+
'awk "!/\/bin\/ruby_executable_hooks/"'
|
|
36
39
|
].join " | "
|
|
37
40
|
end
|
|
38
41
|
|
|
@@ -42,7 +45,7 @@ begin
|
|
|
42
45
|
]
|
|
43
46
|
|
|
44
47
|
desc 'Run all unit specs'
|
|
45
|
-
task :unit do
|
|
48
|
+
task :unit => [:prepare] do
|
|
46
49
|
sh "bundle exec bacon #{specs('unit/**/*')}"
|
|
47
50
|
end
|
|
48
51
|
|
|
@@ -28,10 +28,10 @@ module CLIntegracon::Adapter::Bacon
|
|
|
28
28
|
instance_exec(@subject, &block)
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
# Get or configure the current context
|
|
31
|
+
# Get or configure the current context for FileTreeSpecs
|
|
32
32
|
#
|
|
33
33
|
# @note On first call this will create a new context on base of the
|
|
34
|
-
# shared configuration and store it in the ivar `@
|
|
34
|
+
# shared configuration and store it in the ivar `@file_tree_spec_context`.
|
|
35
35
|
#
|
|
36
36
|
# @param [Block<(FileTreeSpecContext) -> ()>]
|
|
37
37
|
# This block, if given, will be evaluated on the caller.
|
|
@@ -40,10 +40,10 @@ module CLIntegracon::Adapter::Bacon
|
|
|
40
40
|
# @return [FileTreeSpecContext]
|
|
41
41
|
# the spec context, will be lazily created if not already present.
|
|
42
42
|
#
|
|
43
|
-
def
|
|
44
|
-
@
|
|
45
|
-
return @
|
|
46
|
-
instance_exec(@
|
|
43
|
+
def file_tree_spec_context &block
|
|
44
|
+
@file_tree_spec_context ||= CLIntegracon.shared_config.file_tree_spec_context.dup
|
|
45
|
+
return @file_tree_spec_context if block.nil?
|
|
46
|
+
instance_exec(@file_tree_spec_context, &block)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
# Works like `behaves_like`, but takes arguments for the shared example
|
|
@@ -63,8 +63,8 @@ module CLIntegracon::Adapter::Bacon
|
|
|
63
63
|
#
|
|
64
64
|
# behaves_like cli_spec('my_spec_dir', 'install --verbose')
|
|
65
65
|
#
|
|
66
|
-
# @note This expects that a method `
|
|
67
|
-
# instance of {FileTreeSpecContext}.
|
|
66
|
+
# @note This expects that a method `file_tree_spec_context` is defined, which is
|
|
67
|
+
# returning an instance of {FileTreeSpecContext}.
|
|
68
68
|
#
|
|
69
69
|
# @param [String] spec_dir
|
|
70
70
|
# the concrete directory of the spec, see {file_spec}.
|
|
@@ -95,8 +95,8 @@ module CLIntegracon::Adapter::Bacon
|
|
|
95
95
|
# # do some changes to the current dir
|
|
96
96
|
# end
|
|
97
97
|
#
|
|
98
|
-
# @note This expects that a method `
|
|
99
|
-
# instance of {FileTreeSpecContext}.
|
|
98
|
+
# @note This expects that a method `file_tree_spec_context` is defined, which is
|
|
99
|
+
# returning an instance of {FileTreeSpecContext}.
|
|
100
100
|
#
|
|
101
101
|
# @param [String] spec_dir
|
|
102
102
|
# the concrete directory of the spec to be passed to
|
|
@@ -116,7 +116,7 @@ module CLIntegracon::Adapter::Bacon
|
|
|
116
116
|
shared_name = spec_dir
|
|
117
117
|
|
|
118
118
|
shared shared_name do
|
|
119
|
-
|
|
119
|
+
file_tree_spec_context.spec(spec_dir).run do |spec|
|
|
120
120
|
instance_eval &block
|
|
121
121
|
|
|
122
122
|
spec.compare do |diff|
|
|
@@ -148,7 +148,7 @@ module CLIntegracon::Adapter::Bacon
|
|
|
148
148
|
|
|
149
149
|
# Describe a command line interface
|
|
150
150
|
# This method basically behaves like {Bacon::Context.describe}, but it provides
|
|
151
|
-
# automatically the methods #subject, #
|
|
151
|
+
# automatically the methods #subject, #file_tree_spec_context, #cli_spec and #file_spec.
|
|
152
152
|
#
|
|
153
153
|
# @param [String] subject_name
|
|
154
154
|
# the subject name will be used as first argument to initialize
|
|
@@ -34,8 +34,28 @@ module CLIntegracon
|
|
|
34
34
|
#
|
|
35
35
|
# @return [FileTreeSpecContext]
|
|
36
36
|
#
|
|
37
|
-
def
|
|
38
|
-
@
|
|
37
|
+
def file_tree_spec_context
|
|
38
|
+
@file_tree_spec_context ||= FileTreeSpecContext.new()
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Delegate missing methods to #file_tree_spec_context
|
|
42
|
+
#
|
|
43
|
+
def method_missing(method, *args, &block)
|
|
44
|
+
if file_tree_spec_context.respond_to?(method)
|
|
45
|
+
file_tree_spec_context.send(method, *args, &block)
|
|
46
|
+
else
|
|
47
|
+
super
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Take care of delegation to #file_tree_spec_context
|
|
52
|
+
#
|
|
53
|
+
def respond_to?(method)
|
|
54
|
+
if file_tree_spec_context.respond_to?(method)
|
|
55
|
+
true
|
|
56
|
+
else
|
|
57
|
+
super
|
|
58
|
+
end
|
|
39
59
|
end
|
|
40
60
|
|
|
41
61
|
# Hook this gem in a test framework by a supported adapter
|
|
@@ -167,7 +167,7 @@ module CLIntegracon
|
|
|
167
167
|
#
|
|
168
168
|
def glob_all(path=nil)
|
|
169
169
|
Dir.chdir path || '.' do
|
|
170
|
-
Dir.glob("**/*", context.include_hidden_files? ? File::FNM_DOTMATCH : 0).map { |path|
|
|
170
|
+
Dir.glob("**/*", context.include_hidden_files? ? File::FNM_DOTMATCH : 0).sort.map { |path|
|
|
171
171
|
Pathname(path)
|
|
172
172
|
}
|
|
173
173
|
end
|
|
@@ -93,7 +93,7 @@ module CLIntegracon
|
|
|
93
93
|
# Temp dir, doesn't have to exist itself, it will been created, but let's ensure
|
|
94
94
|
# that at least the last but one path component exist.
|
|
95
95
|
raise "temp_path's parent directory doesn't exist" unless (Pathname(temp_path) + '..').exist?
|
|
96
|
-
@temp_path = Pathname(temp_path)
|
|
96
|
+
@temp_path = Pathname(temp_path)
|
|
97
97
|
end
|
|
98
98
|
|
|
99
99
|
def before_dir=(before_dir)
|
|
@@ -159,10 +159,11 @@ module CLIntegracon
|
|
|
159
159
|
|
|
160
160
|
# @!group Interaction
|
|
161
161
|
|
|
162
|
-
# Prepare the temporary directory
|
|
162
|
+
# Prepare the temporary directory and the attribute #temp_path itself.
|
|
163
163
|
#
|
|
164
164
|
def prepare!
|
|
165
165
|
temp_path.mkpath
|
|
166
|
+
@temp_path = temp_path.realpath
|
|
166
167
|
end
|
|
167
168
|
|
|
168
169
|
# Get a specific spec with given folder to run it
|
data/lib/CLIntegracon/subject.rb
CHANGED
|
@@ -25,10 +25,11 @@ module CLIntegracon
|
|
|
25
25
|
attr_accessor :default_args
|
|
26
26
|
|
|
27
27
|
# @return [Hash<String,String>]
|
|
28
|
-
# The
|
|
29
|
-
#
|
|
28
|
+
# The replace paths, whose keys are expected to occur in the output,
|
|
29
|
+
# which are not printed relative to the project, when the subject will
|
|
30
|
+
# be executed. These are e.g. paths were side-effects occur, like manipulation
|
|
30
31
|
# of user configurations in dot files or caching-specific directories.
|
|
31
|
-
attr_accessor :
|
|
32
|
+
attr_accessor :replace_paths
|
|
32
33
|
|
|
33
34
|
# @return [String]
|
|
34
35
|
# The path where the output of the executable will be written to.
|
|
@@ -52,7 +53,7 @@ module CLIntegracon
|
|
|
52
53
|
self.executable = executable || name
|
|
53
54
|
self.environment_vars = {}
|
|
54
55
|
self.default_args = []
|
|
55
|
-
self.
|
|
56
|
+
self.replace_paths = {}
|
|
56
57
|
self.output_path = 'execution_output.txt'
|
|
57
58
|
end
|
|
58
59
|
|
|
@@ -61,7 +62,8 @@ module CLIntegracon
|
|
|
61
62
|
|
|
62
63
|
# @!group DSL-like Setter
|
|
63
64
|
|
|
64
|
-
# Define a path in the
|
|
65
|
+
# Define a path, whose occurrences in the output should been replaced by
|
|
66
|
+
# either its basename or a given placeholder.
|
|
65
67
|
#
|
|
66
68
|
# @param [String] path
|
|
67
69
|
# The path
|
|
@@ -69,12 +71,13 @@ module CLIntegracon
|
|
|
69
71
|
# @param [String] name
|
|
70
72
|
# The name of the path, or the basename of the given path
|
|
71
73
|
#
|
|
72
|
-
def
|
|
74
|
+
def replace_path(path, name=nil)
|
|
73
75
|
name ||= File.basename path
|
|
74
|
-
self.
|
|
76
|
+
self.replace_paths[name] = path
|
|
75
77
|
end
|
|
76
78
|
|
|
77
|
-
# Define a path in the user directory
|
|
79
|
+
# Define a path in the user directory, whose occurrences in the output
|
|
80
|
+
# should been replaced by either its basename or a given placeholder.
|
|
78
81
|
#
|
|
79
82
|
# @param [String] path
|
|
80
83
|
# The path
|
|
@@ -82,8 +85,8 @@ module CLIntegracon
|
|
|
82
85
|
# @param [String] name
|
|
83
86
|
# The name of the path, or the basename of the given path
|
|
84
87
|
#
|
|
85
|
-
def
|
|
86
|
-
self.
|
|
88
|
+
def replace_user_path(path, name=nil)
|
|
89
|
+
self.replace_path %r[/Users/.*/#{path.to_s}], name
|
|
87
90
|
end
|
|
88
91
|
|
|
89
92
|
#-----------------------------------------------------------------------------#
|
|
@@ -114,7 +117,7 @@ module CLIntegracon
|
|
|
114
117
|
file.write command.sub(executable, name)
|
|
115
118
|
file.write "\n"
|
|
116
119
|
|
|
117
|
-
|
|
120
|
+
replace_paths.each do |key, path|
|
|
118
121
|
output.gsub!(path, key)
|
|
119
122
|
end
|
|
120
123
|
|
data/lib/CLIntegracon/version.rb
CHANGED
|
@@ -6,16 +6,16 @@ CLIntegracon::Adapter::Bacon
|
|
|
6
6
|
- BlackEye.brewed-coffee
|
|
7
7
|
- CaPheSuaDa.brewed-coffee
|
|
8
8
|
- Coffeemakerfile.yml
|
|
9
|
-
- execution_output.txt
|
|
10
9
|
- RedTux.brewed-coffee
|
|
10
|
+
- execution_output.txt
|
|
11
11
|
- should not produce unexpected files [FAILED]
|
|
12
12
|
with honey as sweetner
|
|
13
13
|
- $ coffee-maker --sweetner=honey
|
|
14
14
|
- Affogato.brewed-coffee [FAILED]
|
|
15
15
|
- BlackEye.brewed-coffee [FAILED]
|
|
16
16
|
- Coffeemakerfile.yml
|
|
17
|
-
- execution_output.txt
|
|
18
17
|
- RedTux.brewed-coffee [FAILED]
|
|
18
|
+
- execution_output.txt
|
|
19
19
|
- should not produce unexpected files
|
|
20
20
|
Get help
|
|
21
21
|
- $ coffee-maker --help
|
|
@@ -24,12 +24,11 @@ CLIntegracon::Adapter::Bacon
|
|
|
24
24
|
|
|
25
25
|
Bacon::Error: Unexpected files for coffeemaker_no_milk:
|
|
26
26
|
* [32mAffogato.brewed-coffee[0m
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
$GEM_HOME/bin/ruby_executable_hooks:15
|
|
27
|
+
spec/bacon/spec_helper.rb:45
|
|
28
|
+
spec/bacon/spec_helper.rb:44
|
|
29
|
+
spec/bacon/spec_helper.rb:42
|
|
30
|
+
spec/bacon/spec_helper.rb:17
|
|
31
|
+
spec/bacon/spec_helper.rb:15
|
|
33
32
|
|
|
34
33
|
Bacon::Error: File comparison error `Affogato.brewed-coffee` for coffeemaker_sweetner_honey:
|
|
35
34
|
--- DIFF -----------------------------------------------------------------------
|
|
@@ -38,21 +37,19 @@ Bacon::Error: File comparison error `Affogato.brewed-coffee` for coffeemaker_swe
|
|
|
38
37
|
@sweetner = honey
|
|
39
38
|
--- END ------------------------------------------------------------------------
|
|
40
39
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
$GEM_HOME/bin/ruby_executable_hooks:15
|
|
40
|
+
spec/bacon/spec_helper.rb:49
|
|
41
|
+
spec/bacon/spec_helper.rb:48
|
|
42
|
+
spec/bacon/spec_helper.rb:42
|
|
43
|
+
spec/bacon/spec_helper.rb:17
|
|
44
|
+
spec/bacon/spec_helper.rb:15
|
|
47
45
|
|
|
48
46
|
Bacon::Error: Missing file for coffeemaker_sweetner_honey:
|
|
49
47
|
* [31mBlackEye.brewed-coffee[0m
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
$GEM_HOME/bin/ruby_executable_hooks:15
|
|
48
|
+
spec/bacon/spec_helper.rb:49
|
|
49
|
+
spec/bacon/spec_helper.rb:48
|
|
50
|
+
spec/bacon/spec_helper.rb:42
|
|
51
|
+
spec/bacon/spec_helper.rb:17
|
|
52
|
+
spec/bacon/spec_helper.rb:15
|
|
56
53
|
|
|
57
54
|
Bacon::Error: File comparison error `RedTux.brewed-coffee` for coffeemaker_sweetner_honey:
|
|
58
55
|
--- DIFF -----------------------------------------------------------------------
|
|
@@ -62,11 +59,10 @@ Bacon::Error: File comparison error `RedTux.brewed-coffee` for coffeemaker_sweet
|
|
|
62
59
|
[32m+ @sweetner = honey[0m
|
|
63
60
|
--- END ------------------------------------------------------------------------
|
|
64
61
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
$GEM_HOME/bin/ruby_executable_hooks:15
|
|
62
|
+
spec/bacon/spec_helper.rb:49
|
|
63
|
+
spec/bacon/spec_helper.rb:48
|
|
64
|
+
spec/bacon/spec_helper.rb:42
|
|
65
|
+
spec/bacon/spec_helper.rb:17
|
|
66
|
+
spec/bacon/spec_helper.rb:15
|
|
71
67
|
|
|
72
68
|
17 specifications (27 requirements), 4 failures, 0 errors
|
data/spec/bacon/spec_helper.rb
CHANGED
|
@@ -5,8 +5,8 @@ ROOT = Pathname.new(File.expand_path('../../../', __FILE__))
|
|
|
5
5
|
BIN = ROOT + 'spec/fixtures/bin'
|
|
6
6
|
|
|
7
7
|
CLIntegracon.configure do |c|
|
|
8
|
-
c.
|
|
9
|
-
c.
|
|
8
|
+
c.spec_path = ROOT + 'spec/integration'
|
|
9
|
+
c.temp_path = ROOT + 'tmp/bacon_specs'
|
|
10
10
|
|
|
11
11
|
c.hook_into :bacon
|
|
12
12
|
end
|
|
@@ -26,11 +26,11 @@ describe CLIntegracon::Adapter::Bacon do
|
|
|
26
26
|
'--verbose',
|
|
27
27
|
'--no-ansi'
|
|
28
28
|
]
|
|
29
|
-
s.
|
|
30
|
-
s.
|
|
29
|
+
s.replace_path ROOT.to_s, 'ROOT'
|
|
30
|
+
s.replace_path `bundle show claide`.rstrip, 'CLAIDE_SRC'
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
file_tree_spec_context do |c|
|
|
34
34
|
c.ignores '.DS_Store'
|
|
35
35
|
c.ignores '.gitkeep'
|
|
36
36
|
|
|
@@ -33,7 +33,7 @@ describe 'CLIntegracon::Adapter::Bacon' do
|
|
|
33
33
|
|
|
34
34
|
it 'can access to methods defined in CLIntegracon::Adapter::Bacon::Context' do
|
|
35
35
|
@context.should.respond_to? :subject
|
|
36
|
-
@context.should.respond_to? :
|
|
36
|
+
@context.should.respond_to? :file_tree_spec_context
|
|
37
37
|
@context.should.respond_to? :cli_spec
|
|
38
38
|
@context.should.respond_to? :file_spec
|
|
39
39
|
end
|
|
@@ -111,7 +111,7 @@ describe 'CLIntegracon::Adapter::Bacon' do
|
|
|
111
111
|
get_ivar.should.be.an.instance_of? @type
|
|
112
112
|
end
|
|
113
113
|
|
|
114
|
-
it 'should get a new by duplicating from shared
|
|
114
|
+
it 'should get a new by duplicating from shared config' do
|
|
115
115
|
CLIntegracon.shared_config.expects(@method).returns mock(:dup)
|
|
116
116
|
call_accessor
|
|
117
117
|
end
|
|
@@ -149,9 +149,9 @@ describe 'CLIntegracon::Adapter::Bacon' do
|
|
|
149
149
|
behaves_like 'mutating accessor'
|
|
150
150
|
end
|
|
151
151
|
|
|
152
|
-
describe '#
|
|
152
|
+
describe '#file_tree_spec_context' do
|
|
153
153
|
before do
|
|
154
|
-
@method = :
|
|
154
|
+
@method = :file_tree_spec_context
|
|
155
155
|
@type = CLIntegracon::FileTreeSpecContext
|
|
156
156
|
end
|
|
157
157
|
|
|
@@ -175,7 +175,7 @@ describe 'CLIntegracon::Adapter::Bacon' do
|
|
|
175
175
|
|
|
176
176
|
it 'executes the FileTreeSpecContext' do
|
|
177
177
|
describe_cli 'git' do
|
|
178
|
-
|
|
178
|
+
file_tree_spec_context.expects(:spec).once.returns mock(:run => true)
|
|
179
179
|
behaves_like file_spec('git')
|
|
180
180
|
end
|
|
181
181
|
end
|
metadata
CHANGED
|
@@ -1,103 +1,138 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: clintegracon
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
|
-
authors:
|
|
6
|
+
authors:
|
|
7
7
|
- Marius Rackwitz
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
- !ruby/object:Gem::Dependency
|
|
11
|
+
date: 2014-08-08 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: bundler
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
version: "1.3"
|
|
22
|
-
version_requirements: *id001
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.3'
|
|
23
20
|
type: :development
|
|
24
|
-
- !ruby/object:Gem::Dependency
|
|
25
|
-
name: rake
|
|
26
21
|
prerelease: false
|
|
27
|
-
|
|
28
|
-
requirements:
|
|
29
|
-
- - ~>
|
|
30
|
-
- !ruby/object:Gem::Version
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.3'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
31
33
|
version: 10.1.0
|
|
32
|
-
version_requirements: *id002
|
|
33
34
|
type: :development
|
|
34
|
-
- !ruby/object:Gem::Dependency
|
|
35
|
-
name: bacon
|
|
36
35
|
prerelease: false
|
|
37
|
-
|
|
38
|
-
requirements:
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: 10.1.0
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: bacon
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
44
48
|
type: :development
|
|
45
|
-
- !ruby/object:Gem::Dependency
|
|
46
|
-
name: mocha
|
|
47
49
|
prerelease: false
|
|
48
|
-
|
|
49
|
-
requirements:
|
|
50
|
-
- -
|
|
51
|
-
- !ruby/object:Gem::Version
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: mocha
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
52
61
|
version: 1.0.0
|
|
53
|
-
version_requirements: *id004
|
|
54
62
|
type: :development
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: mocha-on-bacon
|
|
57
63
|
prerelease: false
|
|
58
|
-
|
|
59
|
-
requirements:
|
|
60
|
-
-
|
|
61
|
-
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: 1.0.0
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: mocha-on-bacon
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
62
76
|
type: :development
|
|
63
|
-
- !ruby/object:Gem::Dependency
|
|
64
|
-
name: claide
|
|
65
77
|
prerelease: false
|
|
66
|
-
|
|
67
|
-
requirements:
|
|
68
|
-
-
|
|
69
|
-
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: claide
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
70
90
|
type: :development
|
|
71
|
-
- !ruby/object:Gem::Dependency
|
|
72
|
-
name: colored
|
|
73
91
|
prerelease: false
|
|
74
|
-
|
|
75
|
-
requirements:
|
|
76
|
-
- -
|
|
77
|
-
- !ruby/object:Gem::Version
|
|
78
|
-
version:
|
|
79
|
-
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: colored
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - "~>"
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '1.2'
|
|
80
104
|
type: :runtime
|
|
81
|
-
- !ruby/object:Gem::Dependency
|
|
82
|
-
name: diffy
|
|
83
105
|
prerelease: false
|
|
84
|
-
|
|
85
|
-
requirements:
|
|
86
|
-
-
|
|
87
|
-
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '1.2'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: diffy
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - ">="
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0'
|
|
88
118
|
type: :runtime
|
|
89
|
-
|
|
90
|
-
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ">="
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0'
|
|
125
|
+
description: CLIntegracon allows you to build Integration specs for your CLI,independent
|
|
126
|
+
if they are based on Ruby or another technology.It is especially useful if your
|
|
127
|
+
command modifies the file system.It provides an integration for Bacon.
|
|
128
|
+
email:
|
|
91
129
|
- git@mariusrackwitz.de
|
|
92
130
|
executables: []
|
|
93
|
-
|
|
94
131
|
extensions: []
|
|
95
|
-
|
|
96
132
|
extra_rdoc_files: []
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
- .
|
|
100
|
-
- .travis.yml
|
|
133
|
+
files:
|
|
134
|
+
- ".gitignore"
|
|
135
|
+
- ".travis.yml"
|
|
101
136
|
- Gemfile
|
|
102
137
|
- LICENSE.txt
|
|
103
138
|
- README.md
|
|
@@ -132,29 +167,30 @@ files:
|
|
|
132
167
|
- spec/unit/adapter/bacon_spec.rb
|
|
133
168
|
- spec/unit/configuration_spec.rb
|
|
134
169
|
homepage: https://github.com/mrackwitz/CLIntegracon
|
|
135
|
-
licenses:
|
|
170
|
+
licenses:
|
|
136
171
|
- MIT
|
|
137
172
|
metadata: {}
|
|
138
|
-
|
|
139
173
|
post_install_message:
|
|
140
174
|
rdoc_options: []
|
|
141
|
-
|
|
142
|
-
require_paths:
|
|
175
|
+
require_paths:
|
|
143
176
|
- lib
|
|
144
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
145
|
-
requirements:
|
|
146
|
-
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
177
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
178
|
+
requirements:
|
|
179
|
+
- - ">="
|
|
180
|
+
- !ruby/object:Gem::Version
|
|
181
|
+
version: '0'
|
|
182
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
183
|
+
requirements:
|
|
184
|
+
- - ">="
|
|
185
|
+
- !ruby/object:Gem::Version
|
|
186
|
+
version: '0'
|
|
150
187
|
requirements: []
|
|
151
|
-
|
|
152
188
|
rubyforge_project:
|
|
153
|
-
rubygems_version: 2.
|
|
189
|
+
rubygems_version: 2.2.2
|
|
154
190
|
signing_key:
|
|
155
191
|
specification_version: 4
|
|
156
192
|
summary: Integration specs for your CLI
|
|
157
|
-
test_files:
|
|
193
|
+
test_files:
|
|
158
194
|
- spec/bacon/execution_output.txt
|
|
159
195
|
- spec/bacon/spec_helper.rb
|
|
160
196
|
- spec/fixtures/bin/coffeemaker.rb
|