ocrunner 0.1.0 → 0.2.0

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/README.rdoc CHANGED
@@ -1,6 +1,19 @@
1
1
  = ocrunner
2
2
 
3
- ocrunner is a little Ruby wrapper for running OCUnit tests in XCode from the command line. Its main purpose is to parse the huge output from xcodebuild and display a pretty summary to the user.
3
+ ocrunner is a little Ruby wrapper for running OCUnit tests in Xcode from the command line. Its main purpose is to parse the huge output from xcodebuild and display a pretty summary to the user.
4
+
5
+ To use this, you'll need to be set up with a test target. See http://developer.apple.com/mac/articles/tools/unittestingwithxcode3.html
6
+
7
+ == Usage
8
+
9
+ cd path/to/xcode/project/directory
10
+ ocrunner
11
+
12
+ To run tests as files are changed (autotest-style), use:
13
+
14
+ ocrunner --auto
15
+
16
+ You can see all the available options by running ocrunner -h.
4
17
 
5
18
  == Note on Patches/Pull Requests
6
19
 
data/Rakefile CHANGED
@@ -11,6 +11,7 @@ begin
11
11
  gem.homepage = "http://github.com/jim/ocrunner"
12
12
  gem.authors = ["Jim Benton"]
13
13
  gem.add_dependency('trollop')
14
+ gem.add_dependency('fssm')
14
15
  gem.executables = ['ocrunner']
15
16
  end
16
17
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
data/lib/ocrunner/cli.rb CHANGED
@@ -1,8 +1,12 @@
1
1
  require 'trollop'
2
+ require 'fssm'
2
3
 
3
4
  module OCRunner
4
5
  module CLI
5
6
  def self.run
7
+
8
+ Kernel.trap('INT') { exit }
9
+
6
10
  opts = Trollop::options do
7
11
  v = File.read(File.join(File.dirname(__FILE__), '../../VERSION')).strip
8
12
  version "#{v} (c) 2010 Jim Benton github.com/jim/ocrunner"
@@ -17,11 +21,26 @@ module OCRunner
17
21
  opt :target, 'Target to build', :default => 'Test'
18
22
  opt :config, "Configuration to use", :default => 'Debug'
19
23
  opt :parallel, "Use multiple processors to build (parallelizeTargets)", :type => :boolean, :default => true
24
+ opt :auto, "Watch filesystem for changes and run tests when they occur", :type => :boolean, :default => false
25
+ opt :growl, "Report results using Growl", :type => :boolean, :default => false
20
26
  opt :debug_command, "Print xcodebuild command and exit", :type => :boolean, :default => false
21
27
  opt :verbose, "Display all xcodebuild output after summary", :type => :boolean, :default => false
22
28
  end
23
29
 
24
- OCRunner::TestRunner.new(opts)
30
+ execute = Proc.new{ OCRunner::TestRunner.new(opts) }
31
+
32
+ if opts[:auto]
33
+ execute.call
34
+
35
+ FSSM.monitor(Dir.pwd, %w{**/*.m **/*.h}) do
36
+ create { |base, relative| execute.call }
37
+ update { |base, relative| execute.call }
38
+ delete { |base, relative| execute.call }
39
+ end
40
+
41
+ end
42
+
43
+ execute.call
25
44
 
26
45
  end
27
46
  end
@@ -52,10 +52,14 @@ module OCRunner
52
52
  failed = suite.cases.reject {|c| c.passed}
53
53
  puts "Suite '#{suite.name}': #{suite.cases.size - failed.size} passes and #{failed.size} failures in #{suite.time} seconds."
54
54
  end
55
+
55
56
  puts
57
+
56
58
  if passed
57
- puts green('*** BUILD SUCCEEDED ***')
59
+ growl('Build succeeded.')
60
+ puts green('*** BUILD SUCCEEDED ***')
58
61
  else
62
+ growl('BUILD FAILED!')
59
63
  puts red('*** BUILD FAILED ***')
60
64
  end
61
65
  end
@@ -115,5 +119,11 @@ module OCRunner
115
119
  path.gsub(@current_directory + '/', '')
116
120
  end
117
121
 
122
+ def growl(message)
123
+ if @options[:growl]
124
+ `growlnotify -i "xcodeproj" -m "#{message}" `
125
+ end
126
+ end
127
+
118
128
  end
119
129
  end
data/ocrunner.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ocrunner}
8
- s.version = "0.1.0"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jim Benton"]
@@ -52,11 +52,14 @@ Gem::Specification.new do |s|
52
52
 
53
53
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
54
54
  s.add_runtime_dependency(%q<trollop>, [">= 0"])
55
+ s.add_runtime_dependency(%q<fssm>, [">= 0"])
55
56
  else
56
57
  s.add_dependency(%q<trollop>, [">= 0"])
58
+ s.add_dependency(%q<fssm>, [">= 0"])
57
59
  end
58
60
  else
59
61
  s.add_dependency(%q<trollop>, [">= 0"])
62
+ s.add_dependency(%q<fssm>, [">= 0"])
60
63
  end
61
64
  end
62
65
 
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
7
+ - 2
8
8
  - 0
9
- version: 0.1.0
9
+ version: 0.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jim Benton
@@ -29,6 +29,18 @@ dependencies:
29
29
  version: "0"
30
30
  type: :runtime
31
31
  version_requirements: *id001
32
+ - !ruby/object:Gem::Dependency
33
+ name: fssm
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ segments:
40
+ - 0
41
+ version: "0"
42
+ type: :runtime
43
+ version_requirements: *id002
32
44
  description: Provides pretty console output
33
45
  email: jim@autonomousmachine.com
34
46
  executables: