bahia 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (7) hide show
  1. data/.gemspec +17 -0
  2. data/CHANGELOG.rdoc +2 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +66 -0
  5. data/Rakefile +35 -0
  6. data/lib/bahia.rb +37 -0
  7. metadata +54 -0
data/.gemspec ADDED
@@ -0,0 +1,17 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'rubygems' unless Object.const_defined?(:Gem)
3
+ require File.dirname(__FILE__) + "/lib/bahia"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "bahia"
7
+ s.version = Bahia::VERSION
8
+ s.authors = ["Gabriel Horner"]
9
+ s.email = "gabriel.horner@gmail.com"
10
+ s.homepage = "http://github.com/cldwalker/bahia"
11
+ s.summary = "aruba for non-cucumber test frameworks"
12
+ s.description = "Bahia - where commandline acceptance tests are easy, the people are festive and onde nasceu capoeira. In other words, aruba for any non-cucumber test framework."
13
+ s.required_rubygems_version = ">= 1.3.6"
14
+ s.files = Dir.glob(%w[{lib,test}/**/*.rb bin/* [A-Z]*.{md,txt,rdoc} ext/**/*.{rb,c} **/deps.rip]) + %w{Rakefile .gemspec}
15
+ s.extra_rdoc_files = ["README.md", "LICENSE.txt"]
16
+ s.license = 'MIT'
17
+ end
data/CHANGELOG.rdoc ADDED
@@ -0,0 +1,2 @@
1
+ == 0.1
2
+ * Bahia viva!
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ The MIT LICENSE
2
+
3
+ Copyright (c) 2011 Gabriel Horner
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,66 @@
1
+ Description
2
+ ===========
3
+
4
+ Bahia - where commandline acceptance tests are easy, the people are festive and
5
+ onde nasceu capoeira. In other words, aruba for any non-cucumber test framework.
6
+
7
+ Usage
8
+ =====
9
+
10
+ Say you want to test your gem's executable, blarg. So in your
11
+ {test,spec}/helper.rb, you:
12
+
13
+ require 'bahia'
14
+
15
+ # for rspec
16
+ Rspec.configure {|c| c.include Bahia }
17
+
18
+ # for minitest
19
+ class MiniTest::Unit::TestCase
20
+ include Bahia
21
+ end
22
+
23
+ # for bacon
24
+ class Bacon::Context
25
+ include Bahia
26
+ end
27
+
28
+ # for your preferred framework
29
+ include some shit ...
30
+
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
+ If the above doesn't automagically work for you, configure Bahia before
51
+ including it:
52
+
53
+ Bahia.command = 'blarg 3.0'
54
+ Bahia.command_method = 'not blarg'
55
+ Bahia.project_directory = '/path/to/gem/root/dir'
56
+
57
+ About
58
+ =====
59
+
60
+ Bahia uses open3 and is dead simple - so simple that you probably should've read
61
+ the source instead of this readme. Ha!
62
+
63
+ Todo
64
+ ====
65
+
66
+ * Tests!
data/Rakefile ADDED
@@ -0,0 +1,35 @@
1
+ require 'rake'
2
+ require 'fileutils'
3
+
4
+ def gemspec
5
+ @gemspec ||= eval(File.read('.gemspec'), binding, '.gemspec')
6
+ end
7
+
8
+ desc "Build the gem"
9
+ task :gem=>:gemspec do
10
+ sh "gem build .gemspec"
11
+ FileUtils.mkdir_p 'pkg'
12
+ FileUtils.mv "#{gemspec.name}-#{gemspec.version}.gem", 'pkg'
13
+ end
14
+
15
+ desc "Install the gem locally"
16
+ task :install => :gem do
17
+ sh %{gem install pkg/#{gemspec.name}-#{gemspec.version}}
18
+ end
19
+
20
+ desc "Generate the gemspec"
21
+ task :generate do
22
+ puts gemspec.to_ruby
23
+ end
24
+
25
+ desc "Validate the gemspec"
26
+ task :gemspec do
27
+ gemspec.validate
28
+ end
29
+
30
+ desc 'Run tests'
31
+ task :test do |t|
32
+ sh 'bacon -q -Ilib -I. test/*_test.rb'
33
+ end
34
+
35
+ task :default => :test
data/lib/bahia.rb ADDED
@@ -0,0 +1,37 @@
1
+ require 'open3'
2
+
3
+ module Bahia
4
+ VERSION = '0.1.0'
5
+
6
+ class DetectionError < StandardError
7
+ def initialize(name)
8
+ super "Unable to detect #{name}. Set it with Bahia.#{name}"
9
+ end
10
+ end
11
+
12
+ class << self; attr_accessor :command, :project_directory, :command_method; end
13
+ attr_reader :stdout, :stderr, :process
14
+
15
+ def self.included(mod)
16
+ self.project_directory = set_project_directory(caller)
17
+ self.command = Dir[self.project_directory + '/bin/*'][0] or
18
+ raise DetectionError.new(:command)
19
+ self.command_method ||= File.basename(command)
20
+
21
+ define_method(command_method) do |cmd|
22
+ args = cmd.split(/\s+/)
23
+ args.unshift Bahia.command
24
+ args.unshift({'RUBYLIB' => "#{Bahia.project_directory}/lib:" +
25
+ ENV['RUBYLIB']})
26
+ @stdout, @stderr, @process = Open3.capture3(*args)
27
+ end
28
+ end
29
+
30
+ def self.set_project_directory(arr)
31
+ arr[0][/^([^:]+):\d+/] or raise DetectionError.new(:project_directory)
32
+ file = $1
33
+ raise DetectionError.new(:project_directory) unless File.exists?(file)
34
+ # Assume include happens in {spec,test}/helper.rb
35
+ File.dirname File.dirname(file)
36
+ end
37
+ end
metadata ADDED
@@ -0,0 +1,54 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bahia
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Gabriel Horner
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-12-12 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Bahia - where commandline acceptance tests are easy, the people are festive
15
+ and onde nasceu capoeira. In other words, aruba for any non-cucumber test framework.
16
+ email: gabriel.horner@gmail.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files:
20
+ - README.md
21
+ - LICENSE.txt
22
+ files:
23
+ - lib/bahia.rb
24
+ - README.md
25
+ - LICENSE.txt
26
+ - CHANGELOG.rdoc
27
+ - Rakefile
28
+ - .gemspec
29
+ homepage: http://github.com/cldwalker/bahia
30
+ licenses:
31
+ - MIT
32
+ post_install_message:
33
+ rdoc_options: []
34
+ require_paths:
35
+ - lib
36
+ required_ruby_version: !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ! '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ required_rubygems_version: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: 1.3.6
48
+ requirements: []
49
+ rubyforge_project:
50
+ rubygems_version: 1.8.10
51
+ signing_key:
52
+ specification_version: 3
53
+ summary: aruba for non-cucumber test frameworks
54
+ test_files: []