bahia 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.3
2
+ * Add support for quoted args
3
+ * Allow no arguments
4
+
1
5
  == 0.2
2
6
  * Tests!
3
7
  * Improve finding project directory
data/README.md CHANGED
@@ -7,8 +7,31 @@ onde nasceu capoeira. In other words, aruba for any non-cucumber test framework.
7
7
  Usage
8
8
  =====
9
9
 
10
- Say you want to test your gem's executable, blarg. So in your
11
- {test,spec}/helper.rb, you:
10
+ Say you want to test your gem's executable, blarg:
11
+
12
+ describe "blarg" do
13
+ it "prints usage without args" do
14
+ blarg
15
+ stdout.should == 'Usage: blarg COMMAND'
16
+ end
17
+
18
+ it 'prints error for double blarging' do
19
+ blarg "blarg"
20
+ stderr.should == "Bad human! No double blarging allowed"
21
+ process.success?.should == false
22
+ end
23
+
24
+ it "prints message for quoted args" do
25
+ blarg %[please handle 'blarg multiple' "blarg words"]
26
+ stdout.should == "Why u like quote so much?"
27
+ process.success?.should == true
28
+ end
29
+ end
30
+
31
+ As you can see, bahia provided helpers stdout, stderr and process as well as
32
+ automatically creates a method to invoke your executable.
33
+
34
+ Setting it up in your {test,spec}/helper.rb is just a simple include:
12
35
 
13
36
  require 'bahia'
14
37
 
@@ -28,25 +51,6 @@ Say you want to test your gem's executable, blarg. So in your
28
51
  # for your preferred framework
29
52
  include some shit ...
30
53
 
31
- Now acceptance test away your executable:
32
-
33
- describe "blarg" do
34
- it "prints usage without args" do
35
- blarg ""
36
- stdout.should == 'Usage: blarg COMMAND'
37
- process.success?.should == true
38
- end
39
-
40
- it 'prints error for double blarging' do
41
- blarg "blarg"
42
- stderr.should == "Bad human! No double blarging allowed"
43
- process.success?.should == false
44
- end
45
- end
46
-
47
- As you can see, bahia provided helpers stdout, stderr and process as well as
48
- automatically creates a blarg method.
49
-
50
54
  If the above doesn't automagically work for you, configure Bahia before
51
55
  including it:
52
56
 
data/lib/bahia.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  require 'open3'
2
+ require 'shellwords'
2
3
 
3
4
  module Bahia
4
- VERSION = '0.2.0'
5
+ VERSION = '0.3.0'
5
6
 
6
7
  class DetectionError < StandardError
7
8
  def initialize(name)
@@ -18,8 +19,8 @@ module Bahia
18
19
  raise DetectionError.new(:command)
19
20
  self.command_method ||= File.basename(command)
20
21
 
21
- define_method(command_method) do |cmd|
22
- args = cmd.split(/\s+/)
22
+ define_method(command_method) do |cmd = ''|
23
+ args = Shellwords.split(cmd)
23
24
  args.unshift Bahia.command
24
25
  args.unshift({'RUBYLIB' => "#{Bahia.project_directory}/lib:" +
25
26
  ENV['RUBYLIB']})
data/spec/bahia_spec.rb CHANGED
@@ -67,10 +67,36 @@ describe Bahia do
67
67
  Bahia.instance_method(:blarg).should_not be_nil
68
68
  end
69
69
 
70
- it "helper method blarg calls Open3.capture with correct args" do
71
- Open3.should_receive(:capture3).with(
72
- {'RUBYLIB' => "/dir/lib:#{ENV['RUBYLIB']}"}, executable, 'arg1', 'arg2')
73
- test_class.new.blarg('arg1 arg2')
70
+ context "helper method blarg correctly calls Open3.capture" do
71
+ def open3_receives(*args)
72
+ Open3.should_receive(:capture3).with(
73
+ {'RUBYLIB' => "/dir/lib:#{ENV['RUBYLIB']}"}, executable, *args)
74
+ end
75
+
76
+ it "with no arguments" do
77
+ open3_receives
78
+ test_class.new.blarg
79
+ end
80
+
81
+ it "with word arguments" do
82
+ open3_receives 'is', 'blarg'
83
+ test_class.new.blarg('is blarg')
84
+ end
85
+
86
+ it "with single quoted arguments" do
87
+ open3_receives 'this', 'single quoteness'
88
+ test_class.new.blarg("this 'single quoteness'")
89
+ end
90
+
91
+ it "with double quoted arguments" do
92
+ open3_receives 'this', 'double quoteness'
93
+ test_class.new.blarg('this "double quoteness"')
94
+ end
95
+
96
+ it "with escaped quote arguments" do
97
+ open3_receives "can't", 'be', 'stopped'
98
+ test_class.new.blarg("can\\'t be stopped")
99
+ end
74
100
  end
75
101
  end
76
102
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: bahia
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.0
5
+ version: 0.3.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Gabriel Horner
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-12-16 00:00:00 -05:00
13
+ date: 2011-12-17 00:00:00 -05:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency