batcave 0.0.6 → 0.0.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.
data/Makefile CHANGED
@@ -35,7 +35,7 @@ $(GEM):
35
35
  test-package: $(GEM)
36
36
  # Sometimes 'gem build' makes a faulty gem.
37
37
  gem unpack $(GEM)
38
- rm -rf ftw-$(VERSION)/
38
+ rm -rf $(NAME)-$(VERSION)/
39
39
 
40
40
  .PHONY: publish
41
41
  publish: test-package
@@ -44,3 +44,7 @@ publish: test-package
44
44
  .PHONY: install
45
45
  install: $(GEM)
46
46
  gem install $(GEM)
47
+
48
+ .PHONY: clean
49
+ clean:
50
+ -rm -rf .yardoc $(GEM) $(NAME)-$(VERSION)/
data/batcave.gemspec CHANGED
@@ -2,7 +2,7 @@ Gem::Specification.new do |spec|
2
2
  files = %x{git ls-files}.split("\n")
3
3
 
4
4
  spec.name = "batcave"
5
- spec.version = "0.0.6"
5
+ spec.version = "0.0.7"
6
6
  spec.summary = "Experiments in tools, boilerplatery, debugging, etc."
7
7
  spec.description = spec.summary
8
8
  spec.add_dependency("clamp")
@@ -0,0 +1,59 @@
1
+ require "clamp"
2
+ require "batcave/namespace"
3
+
4
+ class BatCave::Command::Test < Clamp::Command
5
+ parameter "FILES ...", "Files to test", :attribute_name => :files
6
+
7
+ private
8
+
9
+ def gitroot(dir=Dir.pwd)
10
+ Dir.chdir(dir) do
11
+ return `git rev-parse --show-toplevel 2> /dev/null`.split("\n").first
12
+ end
13
+ end # def root
14
+
15
+ def execute
16
+ # Assume all files are in the same project.
17
+ project_root = gitroot(File.dirname(files.first)) + "/"
18
+
19
+ relative_paths = files.collect { |a| File.realpath(a).gsub(project_root, "") }
20
+ success = true
21
+ Dir.chdir(project_root) do
22
+ commands = relative_paths.collect { |p| path_test_command(p) }.select { |p| !p.nil? }
23
+ commands.each do |command|
24
+ system(*command)
25
+ success &&= $?.success?
26
+ end # commands.each
27
+ end
28
+ return success ? 0 : 1
29
+ end # def execute
30
+
31
+ def path_test_command(path)
32
+ if path =~ /^lib\//
33
+ # Try {spec,test}/path/to/thing.rb for lib/project/path/to/thing.rb
34
+ with(path.gsub(/^lib\/[^\/]+\//, "spec/")) { |p| path = p if File.exists?(p) }
35
+ with(path.gsub(/^lib\/[^\/]+\//, "test/")) { |p| path = p if File.exists?(p) }
36
+
37
+ # Try {spec,test}/path/to/thing.rb for lib/path/to/thing.rb
38
+ with(path.gsub(/^lib\//, "spec/")) { |p| path = p if File.exists?(p) }
39
+ with(path.gsub(/^lib\//, "test/")) { |p| path = p if File.exists?(p) }
40
+ end
41
+
42
+ case path
43
+ when /^spec\/.*\.rb$/ ; return ["rspec", path]
44
+ when /^test\/.*\.rb$/ ; return ["ruby", path]
45
+ when /\.rb$/ ; return [ "ruby", "-c", path]
46
+ when /\.sh$/ ; return [ "sh", "-n", path]
47
+ when /\.pp$/ ; return [ "puppet", "parser", "validate", path ]
48
+ else ; logger.warn("Don't know how to test", :path => path)
49
+ end
50
+
51
+ return nil
52
+ end # def tests_for_path
53
+
54
+ def with(value, &block)
55
+ return block.call(value)
56
+ end # def with
57
+
58
+ public(:execute)
59
+ end
data/lib/batcave/main.rb CHANGED
@@ -2,6 +2,7 @@ require "clamp"
2
2
  require "batcave/namespace"
3
3
  require "batcave/command/add"
4
4
  require "batcave/command/update"
5
+ require "batcave/command/test"
5
6
  require "cabin"
6
7
 
7
8
  class BatCave::Main < Clamp::Command
@@ -18,4 +19,7 @@ class BatCave::Main < Clamp::Command
18
19
  # Update the batcave from upstream. This will keep you updated with
19
20
  # the latest in gadgets and useful tools.
20
21
  subcommand "update", "Update the things in your bat cave.", BatCave::Command::Update
22
+
23
+ # Run a file's tests.
24
+ subcommand "test", "Run the tests for a given file", BatCave::Command::Test
21
25
  end
@@ -35,7 +35,7 @@ $(GEM):
35
35
  test-package: $(GEM)
36
36
  # Sometimes 'gem build' makes a faulty gem.
37
37
  gem unpack $(GEM)
38
- rm -rf ftw-$(VERSION)/
38
+ rm -rf $(NAME)-$(VERSION)/
39
39
 
40
40
  .PHONY: publish
41
41
  publish: test-package
@@ -44,3 +44,7 @@ publish: test-package
44
44
  .PHONY: install
45
45
  install: $(GEM)
46
46
  gem install $(GEM)
47
+
48
+ .PHONY: clean
49
+ clean:
50
+ -rm -rf .yardoc $(GEM) $(NAME)-$(VERSION)/
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: batcave
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-28 00:00:00.000000000 Z
12
+ date: 2012-10-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: clamp
16
- requirement: &4711280 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,12 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *4711280
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  description: Experiments in tools, boilerplatery, debugging, etc.
26
31
  email: jls@semicomplete.com
27
32
  executables:
@@ -38,6 +43,7 @@ files:
38
43
  - bin/dk
39
44
  - lib/batcave/action/add.rb
40
45
  - lib/batcave/command/add.rb
46
+ - lib/batcave/command/test.rb
41
47
  - lib/batcave/command/update.rb
42
48
  - lib/batcave/dsl.rb
43
49
  - lib/batcave/main.rb
@@ -77,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
83
  version: '0'
78
84
  requirements: []
79
85
  rubyforge_project:
80
- rubygems_version: 1.8.16
86
+ rubygems_version: 1.8.24
81
87
  signing_key:
82
88
  specification_version: 3
83
89
  summary: Experiments in tools, boilerplatery, debugging, etc.