cog-rb 0.1.6 → 0.1.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9c85716fe9a3338d8b3ee2fcbdcf0ec3b0906663
4
- data.tar.gz: f1ae7c9d1f07b433fa5abb0cb89296ce6eb7e42a
3
+ metadata.gz: 198ee7dcc7e2ffe311fd27f2d69c8073c57f0d28
4
+ data.tar.gz: 460812701e1b25690b48c71fc51fc9b6de67b24d
5
5
  SHA512:
6
- metadata.gz: c1c3242add224b2907bf82c22f1d7759933afb936371d24c28bc0f844b3732003334765fe33a17eebc26085f7f4a9d1c553a0d3aa05d0798082e78af01247b7c
7
- data.tar.gz: 711dc5b707c09ced2afa48684f00c2279ebfa521ebef601ff246ab31873f14246dd1abc4430ec00e0786535f9feaa84fa49e44d66e80bf81a43d622b188b3fe7
6
+ metadata.gz: bbca4897dbe208a38ada307dd7e40c4d53263e5e28aa80037ad6ebda3abfd38341989393cbe5657ea037092303bba26bd2e9d0e068fdaf1569e3cf52f90708eb
7
+ data.tar.gz: d8d646b04325f58f792a260b28324efede5c705976fbfec45ae9b2606390d2a2d6981a86cbc7115ca661d2c097c4fa5e84e013172f64a2ede7c9b06a6e9dfe36
data/lib/cog/command.rb CHANGED
@@ -1,5 +1,5 @@
1
-
2
1
  require 'json'
2
+ require 'cog/exceptions'
3
3
 
4
4
  class Cog
5
5
  class Command
@@ -38,6 +38,9 @@ class Cog
38
38
  accumulate_input if config[:input] == :accumulate
39
39
  run_command
40
40
  response.send
41
+ rescue Cog::Error => e
42
+ STDERR.puts(e.message)
43
+ exit 1
41
44
  end
42
45
 
43
46
  def env_var(var, suffix: nil, required: false, failure_message: nil)
@@ -53,8 +56,7 @@ class Cog
53
56
  end
54
57
 
55
58
  def fail(message)
56
- STDERR.puts(message)
57
- exit 1
59
+ raise Cog::Error, message
58
60
  end
59
61
 
60
62
  def self.input(value=nil)
@@ -0,0 +1,4 @@
1
+ class Cog
2
+ class Error < RuntimeError
3
+ end
4
+ end
data/lib/cog/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Cog
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
data/lib/rspec/cog.rb ADDED
@@ -0,0 +1,4 @@
1
+ require 'rspec/core'
2
+
3
+ require 'rspec/cog/matchers'
4
+ require 'rspec/cog/setup'
@@ -0,0 +1,17 @@
1
+ # This is what you want to use for commands that return raw text
2
+ RSpec::Matchers.define :respond_with_text do |expected|
3
+ match do |command|
4
+ @actual = command.response.content["body"]
5
+ @actual == expected
6
+ end
7
+ diffable
8
+ end
9
+
10
+ # Use this when dealing with commands that return data structures
11
+ RSpec::Matchers.define :respond_with do |expected|
12
+ match do |command|
13
+ @actual = command.response.content
14
+ @actual == expected
15
+ end
16
+ diffable
17
+ end
@@ -0,0 +1,76 @@
1
+ require 'yaml'
2
+ require 'securerandom'
3
+ require 'rspec/core'
4
+
5
+ module Cog::RSpec::Setup
6
+ extend RSpec::SharedContext
7
+
8
+ before(:each) do
9
+ # Ensure a clean ENV, as far as Cog cares
10
+ # NOTE: Does not do anything pertaining to dynamic config
11
+ # variables yet
12
+ ENV.delete_if{|name, value| name.start_with?("COG_")}
13
+ end
14
+
15
+ let(:base_dir) do
16
+ # Cog Ruby commands expect to be run from a script in the
17
+ # top-level directory. This code thus assumes that the tests are
18
+ # being run from that same top-level directory.
19
+ File.absolute_path(Dir.pwd)
20
+ end
21
+
22
+ let(:config_file) do
23
+ File.join(base_dir, "config.yaml")
24
+ end
25
+
26
+ let(:bundle_name) do
27
+ # Read the bundle name from the bundle configuration; no need to
28
+ # repeat that everywhere
29
+ YAML.load(File.read(config_file))["name"]
30
+ end
31
+
32
+ let!(:bundle) do
33
+ # This is `let!` instead of `let` because this call actually
34
+ # *creates* the bundle module that our commands live in; we want
35
+ # to ensure that this gets called before we start doing anything else
36
+ Cog::Bundle.new(bundle_name, base_dir: base_dir, config_file: config_file)
37
+ end
38
+
39
+ let(:command_name){ raise "Must supply a :command_name!" }
40
+
41
+ let(:command) do
42
+ Object.const_get("CogCmd::#{bundle_name.capitalize}::#{command_name.capitalize}").new
43
+ end
44
+
45
+ let(:invocation_id) { SecureRandom.uuid }
46
+
47
+ let(:service_root) { "http://localhost:4002" }
48
+
49
+ let(:cog_env) { [] }
50
+
51
+ def run_command(args: [], options: {})
52
+ ENV["COG_COMMAND"] = command_name
53
+ ENV["COG_INVOCATION_ID"] = invocation_id
54
+ ENV["COG_SERVICES_ROOT"] = service_root
55
+
56
+ # populate arguments
57
+ ENV["COG_ARGC"] = args.size.to_s
58
+ args.each_with_index{|arg, i| ENV["COG_ARGV_#{i}"] = arg.to_s}
59
+
60
+ # populate_options
61
+ if !options.keys.empty?
62
+ ENV["COG_OPTS"] = options.keys.join(",")
63
+ options.each{|k,v| ENV["COG_OPT_#{k.upcase}"] = v.to_s}
64
+ end
65
+
66
+ # TODO: receive a single input on STDIN, multiple for :fetch_input
67
+
68
+ # Expose previous inputs on STDIN
69
+ expect(STDIN).to receive(:read).and_return(cog_env.to_json)
70
+
71
+ # Use allow because not all commands will need to do this
72
+ allow(command).to receive(:fetch_input).and_return(cog_env)
73
+ command.run_command
74
+ end
75
+
76
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cog-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Imbriaco
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-15 00:00:00.000000000 Z
11
+ date: 2016-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -48,12 +48,16 @@ files:
48
48
  - lib/cog/bundle.rb
49
49
  - lib/cog/command.rb
50
50
  - lib/cog/config.rb
51
+ - lib/cog/exceptions.rb
51
52
  - lib/cog/request.rb
52
53
  - lib/cog/response.rb
53
54
  - lib/cog/service.rb
54
55
  - lib/cog/services/memory.rb
55
56
  - lib/cog/services/metadata.rb
56
57
  - lib/cog/version.rb
58
+ - lib/rspec/cog.rb
59
+ - lib/rspec/cog/matchers.rb
60
+ - lib/rspec/cog/setup.rb
57
61
  homepage: https://github.com/cog-bundles/cog-rb
58
62
  licenses: []
59
63
  metadata: {}
@@ -78,3 +82,4 @@ signing_key:
78
82
  specification_version: 4
79
83
  summary: Cog command helper library
80
84
  test_files: []
85
+ has_rdoc: