jackal 0.3.12 → 0.3.14
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 +4 -4
- data/CHANGELOG.md +4 -0
- data/bin/jackal-test +23 -1
- data/jackal.gemspec +1 -1
- data/lib/jackal/utils/spec.rb +1 -0
- data/lib/jackal/utils/spec/generator.rb +185 -0
- data/lib/jackal/version.rb +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7253602def38f284c8ad696165795a312490d5dd
|
4
|
+
data.tar.gz: 596d502a71246dc3c4534899841e1e63dc4f982d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bac6c34c10109837b87bb9debc3490cb301cee1c5fb0bbab4434fb0a039ff93c021d82e6dcf79961aac09f0e8d2d9d83c648a6edcc76f094b7e8440f35e0ed6e
|
7
|
+
data.tar.gz: 2ff2bb0ff8927e174f008dd36ecd141191a94f7f7f73958e3fe3d5e0567d9b505a8882c817d14c5395951fe7c9d726bbe872d7679dd8c7bd322636c306034700
|
data/CHANGELOG.md
CHANGED
data/bin/jackal-test
CHANGED
@@ -2,4 +2,26 @@
|
|
2
2
|
# -*- mode: ruby -*-
|
3
3
|
# -*- encoding: utf-8 -*-
|
4
4
|
|
5
|
-
require '
|
5
|
+
require 'bogo-cli'
|
6
|
+
require 'jackal'
|
7
|
+
|
8
|
+
# This conditional is necessary since the cli parsing has a no-arg
|
9
|
+
# default of printing the help menu (not able to override the default)
|
10
|
+
if ARGV.empty?
|
11
|
+
require 'jackal/utils/spec/loader'
|
12
|
+
else
|
13
|
+
Bogo::Cli::Setup.define do
|
14
|
+
global_opts = lambda do
|
15
|
+
on :s, 'service-name=', 'Service to test (Eg: Jackal::Mail::Smtp - mail)', :required => true
|
16
|
+
on :m, 'module-name=', 'Module to test (Eg: Jackal::Mail::Smtp - smtp)', :required => true
|
17
|
+
end
|
18
|
+
|
19
|
+
command 'generate' do
|
20
|
+
description 'Generate test boilerplate for jackal-test'
|
21
|
+
self.instance_exec(&global_opts)
|
22
|
+
run do |opts, args|
|
23
|
+
Jackal::Utils::Spec::Generator.new(opts.to_h, args).execute!
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/jackal.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.description = 'Message processing helper'
|
11
11
|
s.require_path = 'lib'
|
12
12
|
s.license = 'Apache 2.0'
|
13
|
-
s.add_dependency 'carnivore', '>= 0.3.
|
13
|
+
s.add_dependency 'carnivore', '>= 0.3.14', '< 1.0.0'
|
14
14
|
s.add_dependency 'bogo', '>= 0.1.24', '< 1.0.0'
|
15
15
|
s.add_dependency 'bogo-cli', '~> 0.1'
|
16
16
|
s.add_dependency 'bogo-config', '>= 0.1.12', '< 1.0.0'
|
data/lib/jackal/utils/spec.rb
CHANGED
@@ -0,0 +1,185 @@
|
|
1
|
+
require 'bogo-cli'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'jackal'
|
4
|
+
|
5
|
+
module Jackal
|
6
|
+
module Utils
|
7
|
+
module Spec
|
8
|
+
# Test files generator
|
9
|
+
class Generator < Bogo::Cli::Command
|
10
|
+
|
11
|
+
# Test directory path
|
12
|
+
TEST_DIR = 'test/specs'
|
13
|
+
# Test configuration directory path
|
14
|
+
TEST_CONFIG_DIR = 'test/specs/config'
|
15
|
+
# Lines required within Gemfile
|
16
|
+
GEMFILE_LINES = [
|
17
|
+
"gem 'carnivore-actor'",
|
18
|
+
"gem 'minitest'",
|
19
|
+
"gem 'pry'"
|
20
|
+
]
|
21
|
+
|
22
|
+
# Create new instance
|
23
|
+
#
|
24
|
+
# @return [self]
|
25
|
+
def initialize(*_)
|
26
|
+
super
|
27
|
+
|
28
|
+
@orig_service_name = options[:service_name].downcase
|
29
|
+
@service_name = Bogo::Utility.snake(@orig_service_name)
|
30
|
+
@service_class_name = Bogo::Utility.camel(@service_name)
|
31
|
+
|
32
|
+
@module_name = options[:module_name].downcase
|
33
|
+
@module_class_name = Bogo::Utility.camel(@module_name)
|
34
|
+
|
35
|
+
@callback_type = 'jackal'
|
36
|
+
@supervisor_name = "jackal_#{@service_name}_input"
|
37
|
+
end
|
38
|
+
|
39
|
+
# Generate test files
|
40
|
+
#
|
41
|
+
# @return [TrueClass]
|
42
|
+
def execute!
|
43
|
+
ui.info 'Generating jackal test files'
|
44
|
+
|
45
|
+
# ensure dependencies are present in Gemfile
|
46
|
+
run_action 'Update Gemfile contents' do
|
47
|
+
update_gemfile
|
48
|
+
nil
|
49
|
+
end
|
50
|
+
|
51
|
+
run_action 'Create testing directory structure' do
|
52
|
+
# Create test directory structure
|
53
|
+
[TEST_DIR, TEST_CONFIG_DIR].each do |dir|
|
54
|
+
FileUtils.mkdir_p(dir)
|
55
|
+
end
|
56
|
+
nil
|
57
|
+
end
|
58
|
+
|
59
|
+
run_action 'Write test configuration file' do
|
60
|
+
conf_path = File.join(Dir.pwd, TEST_CONFIG_DIR, "#{@module_name}.rb")
|
61
|
+
write_file(conf_path, config_file_content)
|
62
|
+
nil
|
63
|
+
end
|
64
|
+
|
65
|
+
run_action 'Write default test spec file' do
|
66
|
+
spec_path = File.join(Dir.pwd, TEST_DIR, "#{@service_name}_spec.rb")
|
67
|
+
write_file(spec_path, spec_file_content)
|
68
|
+
nil
|
69
|
+
end
|
70
|
+
|
71
|
+
ui.info 'Jackal test file generation complete!'
|
72
|
+
true
|
73
|
+
end
|
74
|
+
|
75
|
+
# Configuration file content
|
76
|
+
#
|
77
|
+
# @return [String]
|
78
|
+
def config_file_content
|
79
|
+
<<-TEXT
|
80
|
+
Configuration.new do
|
81
|
+
jackal do
|
82
|
+
require ["carnivore-actor", "jackal-#{@orig_service_name}"]
|
83
|
+
|
84
|
+
mail do
|
85
|
+
config do
|
86
|
+
end
|
87
|
+
|
88
|
+
sources do
|
89
|
+
input { type 'actor' }
|
90
|
+
output { type 'spec' }
|
91
|
+
end
|
92
|
+
|
93
|
+
callbacks ['Jackal::#{@service_class_name}::#{@module_class_name}']
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
TEXT
|
98
|
+
end
|
99
|
+
|
100
|
+
# Spec file content
|
101
|
+
#
|
102
|
+
# @return [String]
|
103
|
+
def spec_file_content
|
104
|
+
<<TEXT
|
105
|
+
require '#{@callback_type}-#{@orig_service_name}'
|
106
|
+
require 'pry'
|
107
|
+
|
108
|
+
# To stub out an api call for your callback
|
109
|
+
class #{callback_class}::#{@service_class_name}::#{@module_class_name}
|
110
|
+
attr_accessor :test_payload
|
111
|
+
|
112
|
+
#def api_call(args)
|
113
|
+
# test_payload.set(:args, args)
|
114
|
+
#end
|
115
|
+
end
|
116
|
+
|
117
|
+
describe #{callback_class}::#{@service_class_name}::#{@module_class_name} do
|
118
|
+
|
119
|
+
before do
|
120
|
+
@runner = run_setup(:#{@module_name})
|
121
|
+
track_execution(#{callback_class}::#{@service_class_name}::#{@module_class_name})
|
122
|
+
end
|
123
|
+
|
124
|
+
after do
|
125
|
+
@runner.terminate
|
126
|
+
end
|
127
|
+
|
128
|
+
let(:actor) { Carnivore::Supervisor.supervisor[:#{@supervisor_name}] }
|
129
|
+
|
130
|
+
it 'executes with empty payload' do
|
131
|
+
result = transmit_and_wait(actor, payload)
|
132
|
+
(!!result).must_equal true
|
133
|
+
callback_executed?(result).must_equal true
|
134
|
+
end
|
135
|
+
|
136
|
+
private
|
137
|
+
|
138
|
+
# payload to send for callback execution
|
139
|
+
def payload
|
140
|
+
Jackal::Utils.new_payload(:test, Smash.new)
|
141
|
+
end
|
142
|
+
|
143
|
+
end
|
144
|
+
TEXT
|
145
|
+
end
|
146
|
+
|
147
|
+
private
|
148
|
+
|
149
|
+
# @return [String] callback class name
|
150
|
+
def callback_class
|
151
|
+
@callback_class ||= Bogo::Utility.camel(@callback_type)
|
152
|
+
end
|
153
|
+
|
154
|
+
# Update the contents of the Gemfile with required items
|
155
|
+
#
|
156
|
+
# @return [TrueClass]
|
157
|
+
def update_gemfile
|
158
|
+
raise Errno::ENOENT.new('Gemfile (ensure file exists)') unless File.exists?('Gemfile')
|
159
|
+
gemfile = File.read('Gemfile')
|
160
|
+
lines = GEMFILE_LINES.select{ |l| !gemfile[l] } # only append items not already present
|
161
|
+
|
162
|
+
unless(lines.empty?)
|
163
|
+
File.open('Gemfile', 'a') do |f|
|
164
|
+
f << "\n"
|
165
|
+
lines.each { |l| f << (l + "\n") }
|
166
|
+
end
|
167
|
+
end
|
168
|
+
true
|
169
|
+
end
|
170
|
+
|
171
|
+
# Write file content to given path if file does not already
|
172
|
+
# exist
|
173
|
+
#
|
174
|
+
# @param path [String] path to write
|
175
|
+
# @param content [String] file content
|
176
|
+
# @return [Integer] number of bytes written
|
177
|
+
def write_file(path, content)
|
178
|
+
raise Errno::EEXIST.new(path) if File.exists?(path)
|
179
|
+
File.write(path, content)
|
180
|
+
end
|
181
|
+
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
data/lib/jackal/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jackal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Roberts
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: carnivore
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.3.
|
19
|
+
version: 0.3.14
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 1.0.0
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.3.
|
29
|
+
version: 0.3.14
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 1.0.0
|
@@ -127,6 +127,7 @@ files:
|
|
127
127
|
- lib/jackal/utils/process.rb
|
128
128
|
- lib/jackal/utils/spec.rb
|
129
129
|
- lib/jackal/utils/spec/callback_local.rb
|
130
|
+
- lib/jackal/utils/spec/generator.rb
|
130
131
|
- lib/jackal/utils/spec/helpers.rb
|
131
132
|
- lib/jackal/utils/spec/loader.rb
|
132
133
|
- lib/jackal/utils/spec/runner.rb
|
@@ -156,3 +157,4 @@ signing_key:
|
|
156
157
|
specification_version: 4
|
157
158
|
summary: Message processing helper
|
158
159
|
test_files: []
|
160
|
+
has_rdoc:
|