launchy 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,6 @@
1
+ *~
2
+ *.swo
3
+ *.swp
4
+ doc/
5
+ coverage/
6
+ pkg/
data/HISTORY CHANGED
@@ -1,5 +1,11 @@
1
1
  = Launchy Changlog
2
2
 
3
+ == Version 2.0.2 - 2011-07-17
4
+
5
+ * Typo fixes from @mtorrent
6
+ * Documentation updates explicitly stating the Public API
7
+ * Increase test coverage
8
+
3
9
  == Version 2.0.1 - 2011-07-16
4
10
 
5
11
  * Almost a complete rewrite
data/README CHANGED
@@ -20,17 +20,32 @@ Currently only launching a browser is supported.
20
20
 
21
21
  == SYNOPSIS
22
22
 
23
- From within your ruby code you can trust launchy to do the right thing:
23
+ You can use launchy on the commandline, or via its API.
24
24
 
25
- Launchy.open("http://www.ruby-lang.org/")
25
+ === Commandline
26
26
 
27
- Or, if you want to launch the application yourself:
27
+ % launchy http://www.ruby-lang.org/
28
28
 
29
- Launchy::Browser.open("http://www.ruby-lang.org/")
29
+ There are additional commandline options, use 'launchy --help' to see them.
30
30
 
31
- OR
31
+ === Public API
32
32
 
33
- Launchy::Browser.new.open("http://www.ruby-lang.org/")
33
+ In the vein of {Semantic Versioning}[http://semver.org], starting with version 2.0.0, this is the
34
+ sole supported public API.
35
+
36
+ Launchy.open( uri, options = {} )
37
+
38
+ At the moment, the only available options are:
39
+
40
+ :debug Turn on debugging output
41
+ :application Explicitly state what application class is going to be used
42
+ :host_os Explicitly state what host operating system to pretend to be
43
+ :ruby_engine Explicitly state what ruby engine to pretend to be under
44
+ :dry_run Do nothing and print the command that would be executed on $stdout
45
+
46
+ An example of using the public API:
47
+
48
+ Launchy.open( "http://www.ruby-lang.org" )
34
49
 
35
50
  == ISC LICENSE
36
51
 
data/Rakefile CHANGED
@@ -45,10 +45,15 @@ _
45
45
  gem.extras = { :platform => Gem::Platform.new( "java" ) }
46
46
  end
47
47
 
48
- depend_on "rake" , "~> 0.9.2", :development => true
49
- depend_on "minitest", "~> 2.3.1", :development => true
50
- depend_on 'bones' , "~> 3.7.0", :development => true
48
+ depend_on "rake" , "~> 0.9.2", :development => true
49
+ depend_on "minitest" , "~> 2.3.1", :development => true
50
+ depend_on 'bones' , "~> 3.7.0", :development => true
51
+ depend_on 'bones-rcov', "~> 1.0.1", :development => true
52
+ depend_on 'rcov' , "~> 0.9.9", :development => true
53
+ depend_on "spoon" , "~> 0.0.1", :development => true
51
54
 
52
55
  test.files = FileList["spec/**/*_spec.rb"]
53
56
  test.opts << "-w -Ilib:spec"
57
+
58
+ rcov.opts << "--exclude gems"
54
59
  }
@@ -1,8 +1,7 @@
1
1
  require 'uri'
2
2
 
3
3
  #
4
- # Top level entry point into Launchy. Almost everyone will just use the single
5
- # call:
4
+ # The entry point into Launchy. This is the sole supported public API.
6
5
  #
7
6
  # Launchy.open( uri, options = {} )
8
7
  #
@@ -12,6 +11,7 @@ require 'uri'
12
11
  # :application Explicitly state what application class is going to be used
13
12
  # :host_os Explicitly state what host operating system to pretend to be
14
13
  # :ruby_engine Explicitly state what ruby engine to pretend to be under
14
+ # :dry_run Do nothing and print the command that would be executed on $stdout
15
15
  #
16
16
  # Other options may be used, and those will be passed directly to the
17
17
  # application class
@@ -26,13 +26,8 @@ module Launchy
26
26
  begin
27
27
  extract_global_options( options )
28
28
  uri = URI.parse( uri )
29
- if app = Launchy::Application.for_scheme( uri ) then
30
- app.new.open( uri, options )
31
- else
32
- msg = "Unable to launch #{uri} with options #{options.inspect}"
33
- Launchy.log "#{self.name} : #{msg}"
34
- $stderr.puts msg
35
- end
29
+ app = Launchy::Application.for_scheme( uri )
30
+ app.new.open( uri, options )
36
31
  rescue Exception => e
37
32
  msg = "Failure in opening #{uri} with options #{options.inspect}: #{e}"
38
33
  Launchy.log "#{self.name} : #{msg}"
@@ -63,6 +63,7 @@ module Launchy
63
63
  attr_reader :host_os_family
64
64
  attr_reader :ruby_engine
65
65
  attr_reader :runner
66
+
66
67
  def initialize
67
68
  @host_os_family = Launchy::Detect::HostOsFamily.detect
68
69
  @ruby_engine = Launchy::Detect::RubyEngine.detect
@@ -12,7 +12,7 @@ class Launchy::Application
12
12
  end
13
13
 
14
14
  def cygwin_app_list
15
- [ "cmd /C start 'launchy' /d" ]
15
+ [ 'cmd /C start "Launchy" /d' ]
16
16
  end
17
17
 
18
18
  def darwin_app_list
@@ -20,7 +20,7 @@ class Launchy::Application
20
20
  end
21
21
 
22
22
  def nix_app_list
23
- nix_de = Launchy::Detect::NixDekstopEnvironment.browser
23
+ nix_de = Launchy::Detect::NixDesktopEnvironment.detect
24
24
  app_list = %w[ xdg-open ]
25
25
  app_list << nix_de.browser
26
26
  app_list << nix_de.fallback_browsers
@@ -44,25 +44,30 @@ class Launchy::Application
44
44
  end
45
45
 
46
46
  # Get the full commandline of what we are going to add the uri to
47
- def browser
47
+ def browser_cmdline
48
48
  possibilities = (browser_env + app_list).flatten
49
49
  possibilities.each do |p|
50
50
  Launchy.log "#{self.class.name} : possibility : #{p}"
51
51
  end
52
- b = possibilities.shift
53
- Launchy.log "#{self.class.name} : Using browser value '#{b}'"
54
- return b
52
+ browser = possibilities.shift
53
+ Launchy.log "#{self.class.name} : Using browser value '#{browser}'"
54
+ return browser
55
+ end
56
+
57
+ def cmd_and_args( uri, options = {} )
58
+ cmd = browser_cmdline
59
+ args = [ uri.to_s ]
60
+ if cmd =~ /%s/ then
61
+ cmd.gsub!( /%s/, args.shift )
62
+ end
63
+ return [cmd, args]
55
64
  end
56
65
 
57
66
  # final assembly of the command and do %s substitution
58
67
  # http://www.catb.org/~esr/BROWSER/index.html
59
68
  def open( uri, options = {} )
60
- b = browser
61
- args = [ uri.to_s ]
62
- if b =~ /%s/ then
63
- b.gsub!( /%s/, args.shift )
64
- end
65
- run( b, args )
69
+ cmd, args = cmd_and_args( uri, options )
70
+ run( cmd, args )
66
71
  end
67
72
  end
68
73
  end
@@ -17,26 +17,26 @@ module Launchy
17
17
 
18
18
  op.on( "-a", "--application APPLICATION",
19
19
  "Explicitly specify the application class to use in the launch") do |app|
20
- options[:application] = app
20
+ @options[:application] = app
21
21
  end
22
22
 
23
23
  op.on( "-d", "--debug",
24
24
  "Force debug. Output lots of information.") do |d|
25
- options[:debug] = 'true'
25
+ @options[:debug] = 'true'
26
26
  end
27
27
 
28
28
  op.on( "-e", "--engine RUBY_ENGINE",
29
29
  "Force launchy to behave as if it was on a particular ruby engine.") do |e|
30
- options[:ruby_engine] = e
30
+ @options[:ruby_engine] = e
31
31
  end
32
32
 
33
33
  op.on( "-n", "--dry-run", "Don't launchy, print the command to be executed on stdout" ) do |x|
34
- options[:dry_run] = true
34
+ @options[:dry_run] = true
35
35
  end
36
36
 
37
37
  op.on( "-o", "--host-os HOST_OS",
38
38
  "Force launchy to behave as if it was on a particular host os.") do |os|
39
- options[:host_os] = os
39
+ @options[:host_os] = os
40
40
  end
41
41
 
42
42
 
@@ -44,27 +44,40 @@ module Launchy
44
44
  op.separator "Standard Options:"
45
45
 
46
46
  op.on( "-h", "--help", "Print this message.") do |h|
47
- puts op.to_s
47
+ $stdout.puts op.to_s
48
48
  exit 0
49
49
  end
50
50
 
51
51
  op.on( "-v", "--version", "Output the version of Launchy") do |v|
52
- puts "Launchy version #{Launchy::VERSION}"
52
+ $stdout.puts "Launchy version #{Launchy::VERSION}"
53
53
  exit 0
54
54
  end
55
55
 
56
56
  end
57
57
  end
58
58
 
59
- def run( argv = ARGV, env = ENV )
59
+ def parse( argv, env )
60
60
  begin
61
61
  parser.parse!( argv )
62
- Launchy.open( argv.shift, options )
62
+ return true
63
63
  rescue ::OptionParser::ParseError => pe
64
64
  $stderr.puts "#{parser.program_name}: #{pe}"
65
65
  $stderr.puts "Try `#{parser.program_name} --help for more information."
66
- exit 1
66
+ return false
67
67
  end
68
68
  end
69
+
70
+ def good_run( argv, env )
71
+ if parse( argv, env ) then
72
+ Launchy.open( argv.shift, options )
73
+ return true
74
+ else
75
+ return false
76
+ end
77
+ end
78
+
79
+ def run( argv = ARGV, env = ENV )
80
+ exit 1 unless good_run( argv, env )
81
+ end
69
82
  end
70
83
  end
@@ -8,7 +8,17 @@ module Launchy::Detect
8
8
 
9
9
  # Detect the current command runner
10
10
  #
11
+ # This will return an instance of the Runner to be used to do the
12
+ # application launching.
13
+ #
11
14
  # If a runner cannot be detected then raise Runner::NotFoundError
15
+ #
16
+ # The runner rules are, in order:
17
+ #
18
+ # 1) If you are on windows, you use the Windows Runner no matter what
19
+ # 2) If you are using the jruby engine, use the Jruby Runner. Unless rule
20
+ # (1) took effect
21
+ # 3) Use Forkable (barring rules (1) and (2))
12
22
  def self.detect
13
23
  host_os_family = Launchy::Detect::HostOsFamily.detect
14
24
  ruby_engine = Launchy::Detect::RubyEngine.detect
@@ -28,8 +38,8 @@ module Launchy::Detect
28
38
  #
29
39
  def shell_commands( cmd, args )
30
40
  cmdline = [ cmd.shellsplit ]
31
- cmdline << args.collect{ |a| a.to_s.shellescape }
32
- return commanddline_normalize( cmdline )
41
+ cmdline << args.flatten.collect{ |a| a.to_s.shellescape }
42
+ return commandline_normalize( cmdline )
33
43
  end
34
44
 
35
45
  def commandline_normalize( cmdline )
@@ -39,9 +49,13 @@ module Launchy::Detect
39
49
  return c
40
50
  end
41
51
 
52
+ def dry_run( cmd, *args )
53
+ shell_commands(cmd, args).join(" ")
54
+ end
55
+
42
56
  def run( cmd, *args )
43
57
  if Launchy.dry_run? then
44
- puts dry_run( cmd, *args )
58
+ $stdout.puts dry_run( cmd, *args )
45
59
  else
46
60
  wet_run( cmd, *args )
47
61
  end
@@ -53,40 +67,36 @@ module Launchy::Detect
53
67
  #---------------------------------------
54
68
 
55
69
  class Windows < Runner
70
+
71
+ def all_args( cmd, *args )
72
+ [ 'cmd', '/c', *shell_commands( cmd, *args ) ]
73
+ end
74
+
56
75
  def dry_run( cmd, *args )
57
- "cmd /c #{shell_commands( cmd, args).join(" " )}"
76
+ all_args( cmd, *args ).join(" ")
58
77
  end
59
78
 
60
- def shell_commands( cmd, args )
79
+ def shell_commands( cmd, *args )
61
80
  cmdline = [ cmd ]
62
- cmdline << args.collect { |a| a.to_s.gsub("&", "^&") }
81
+ cmdline << args.flatten.collect { |a| a.to_s.gsub("&", "^&") }
63
82
  return commandline_normalize( cmdline )
64
83
  end
65
84
 
66
85
  def wet_run( cmd, *args )
67
- system( 'cmd', '/c', *shell_commands( cmd, *args ) )
86
+ system( *all_args( cmd, *args ) )
68
87
  end
69
88
  end
70
89
 
71
90
  class Jruby < Runner
72
-
73
- def dry_run( cmd, *args )
74
- shell_commands(cmd, args).join(" ")
75
- end
76
-
77
91
  def wet_run( cmd, *args )
78
- Spoon.spawnp( *shell_commands( cmd, args ) )
92
+ Spoon.spawnp( *shell_commands( cmd, *args ) )
79
93
  end
80
94
  end
81
95
 
82
96
  class Forkable < Runner
83
- def dry_run( cmd, *args )
84
- shell_commands(cmd, args).join(" ")
85
- end
86
-
87
97
  def wet_run( cmd, *args )
88
98
  child_pid = fork do
89
- exec( *shell_commands( cmd, args ))
99
+ exec( *shell_commands( cmd, *args ))
90
100
  exit!
91
101
  end
92
102
  Process.detach( child_pid )
@@ -1,5 +1,5 @@
1
1
  module Launchy
2
- VERSION = "2.0.1"
2
+ VERSION = "2.0.2"
3
3
 
4
4
  module Version
5
5
 
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe Launchy::Application::Browser do
4
+ before do
5
+ Launchy.reset_global_options
6
+ ENV['KDE_FULL_SESSION'] = "launchy"
7
+ @test_url = "http://example.com/"
8
+ end
9
+
10
+ after do
11
+ Launchy.reset_global_options
12
+ ENV.delete( 'KDE_FULL_SESSION' )
13
+ end
14
+
15
+ { 'windows' => 'start "Launchy" /d' ,
16
+ 'darwin' => '/usr/bin/open',
17
+ 'cygwin' => 'cmd /C start "Launchy" /d',
18
+
19
+ # when running these tests on a linux box, this test will fail
20
+ 'linux' => nil }.each do |host_os, cmdline|
21
+ it "when host_os is '#{host_os}' the appropriate 'app_list' method is called" do
22
+ Launchy.host_os = host_os
23
+ browser = Launchy::Application::Browser.new
24
+ browser.app_list.first.must_equal cmdline
25
+ end
26
+ end
27
+
28
+ %w[ linux windows darwin cygwin ].each do |host_os|
29
+ it "the BROWSER environment variable overrides any host defaults on '#{host_os}'" do
30
+ ENV['BROWSER'] = "my_special_browser --new-tab '%s'"
31
+ Launchy.host_os = host_os
32
+ browser = Launchy::Application::Browser.new
33
+ cmd, args = browser.cmd_and_args( @test_url )
34
+ cmd.must_equal "my_special_browser --new-tab 'http://example.com/'"
35
+ args.must_equal []
36
+ end
37
+ end
38
+ end
39
+
@@ -0,0 +1,75 @@
1
+ require 'spec_helper'
2
+
3
+ describe Launchy::Cli do
4
+
5
+ before do
6
+ @old_stderr = $stderr
7
+ $stderr = StringIO.new
8
+
9
+ @old_stdout = $stdout
10
+ $stdout = StringIO.new
11
+ Launchy.reset_global_options
12
+ end
13
+
14
+ after do
15
+ Launchy.reset_global_options
16
+ $stderr = @old_stderr
17
+ $stdout = @old_stdout
18
+ end
19
+
20
+ def cli_test( argv, env, exit_val, stderr_regex, stdout_regex )
21
+ begin
22
+ Launchy::Cli.new.run( argv, env )
23
+ rescue SystemExit => se
24
+ se.status.must_equal exit_val
25
+ $stderr.string.must_match stderr_regex if stderr_regex
26
+ $stdout.string.must_match stdout_regex if stdout_regex
27
+ end
28
+ end
29
+
30
+ it "exits 1 when invalid options are given" do
31
+ cli_test( %w[ -z foo ], {}, 1, /invalid option/, nil )
32
+ end
33
+
34
+ %w[ -h --help ].each do |opt|
35
+ it "output help and exits 0 when using #{opt}" do
36
+ cli_test( [ opt ], {}, 0, nil, /Print this message/m )
37
+ end
38
+ end
39
+
40
+ %w[ -v --version ].each do |opt|
41
+ it "outputs version and exits 0 when using #{opt}" do
42
+ cli_test( [ opt ], {}, 0, nil, /Launchy version/ )
43
+ end
44
+ end
45
+
46
+ it "leaves the url on argv after parsing" do
47
+ l = Launchy::Cli.new
48
+ argv = %w[ --debug --dry-run http://github.com/copiousfreetime/launchy ]
49
+ l.parse( argv , {} )
50
+ argv.size.must_equal 1
51
+ argv[0].must_equal "http://github.com/copiousfreetime/launchy"
52
+ end
53
+
54
+ it "prints the command on stdout when using --dry-run" do
55
+ argv = %w[ --debug --dry-run http://github.com/copiousfreetime/launchy ]
56
+ rc = Launchy::Cli.new.good_run( argv, {} )
57
+ $stdout.string.must_match %r[github.com]
58
+ end
59
+
60
+ {
61
+ '--application' => [ :application, 'Browser'],
62
+ '--engine' => [ :ruby_engine, 'rbx'],
63
+ '--host-os' => [ :host_os, 'cygwin'] }.each_pair do |opt, val|
64
+ it "the commandline option #{opt} sets the program option #{val[0]}" do
65
+ argv = [ opt, val[1], "http://github.com/copiousfreetime/launchy" ]
66
+ l = Launchy::Cli.new
67
+ rc = l.parse( argv, {} )
68
+ rc.must_equal true
69
+ argv.size.must_equal 1
70
+ argv[0].must_equal "http://github.com/copiousfreetime/launchy"
71
+ l.options[val[0]].must_equal val[1]
72
+ end
73
+ end
74
+ end
75
+
@@ -2,12 +2,31 @@ require 'spec_helper'
2
2
 
3
3
  describe Launchy::Detect::NixDesktopEnvironment do
4
4
 
5
- { "KDE_FULL_SESSION" => Launchy::Detect::NixDesktopEnvironment::Kde,
6
- "GNOME_DESKTOP_SESSION_ID" => Launchy::Detect::NixDesktopEnvironment::Gnome }.each_pair do |k,v|
5
+ before do
6
+ Launchy.reset_global_options
7
+ end
8
+
9
+ after do
10
+ Launchy.reset_global_options
11
+ end
12
+
13
+
14
+ { "KDE_FULL_SESSION" => Launchy::Detect::NixDesktopEnvironment::Kde,
15
+ "GNOME_DESKTOP_SESSION_ID" => Launchy::Detect::NixDesktopEnvironment::Gnome }.each_pair do |k,v|
7
16
  it "can detect the desktop environment of a *nix machine using ENV[#{k}]" do
8
17
  ENV[k] = "launchy-test"
9
- Launchy::Detect::NixDesktopEnvironment.detect.must_equal v
18
+ nix_env = Launchy::Detect::NixDesktopEnvironment.detect
19
+ nix_env.must_equal( v )
20
+ nix_env.browser.must_equal( v.browser )
10
21
  ENV.delete( k )
11
22
  end
23
+ end
24
+
25
+
26
+ it "raises an error if it cannot determine the *nix desktop environment" do
27
+ Launchy.host_os = "linux"
28
+ ENV.delete( "KDE_FULL_SESSION" )
29
+ ENV.delete( "GNOME_DESKTOP_SESSION_ID" )
30
+ lambda { Launchy::Detect::NixDesktopEnvironment.detect }.must_raise Launchy::Detect::NixDesktopEnvironment::NotFoundError
12
31
  end
13
32
  end
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+
3
+ describe Launchy::Detect::Runner do
4
+ before do
5
+ Launchy.reset_global_options
6
+ @test_url = "http://example.com/?foo=bar&baz=wibble"
7
+ end
8
+
9
+ after do
10
+ Launchy.reset_global_options
11
+ end
12
+
13
+ it "raises an error when there is an unknown host os" do
14
+ Launchy.host_os = "foo"
15
+ lambda{ Launchy::Detect::Runner.detect }.must_raise Launchy::Detect::HostOsFamily::NotFoundError
16
+ end
17
+
18
+ it "raises an error when there is an unknown ruby engine" do
19
+ Launchy.ruby_engine = "wibble"
20
+ lambda{ Launchy::Detect::Runner.detect }.must_raise Launchy::Detect::RubyEngine::NotFoundError
21
+ end
22
+
23
+ # On anything that has fork, use Forkable
24
+ %w[ linux darwin cygwin ].each do |host_os|
25
+ %w[ ruby rbx macruby ].each do |engine_name|
26
+ it "engine '#{engine_name}' on OS '#{host_os}' uses runner Forkable" do
27
+ Launchy.host_os = host_os
28
+ Launchy.ruby_engine = engine_name
29
+ engine = Launchy::Detect::Runner.detect
30
+ engine.must_be_instance_of Launchy::Detect::Runner::Forkable
31
+ end
32
+ end
33
+ end
34
+
35
+
36
+ # Jruby always uses the Jruby runner except on Windows
37
+ { 'mingw' => Launchy::Detect::Runner::Windows,
38
+ 'linux' => Launchy::Detect::Runner::Jruby,
39
+ 'darwin' => Launchy::Detect::Runner::Jruby,
40
+ 'cygwin' => Launchy::Detect::Runner::Jruby, }.each_pair do |host_os, runner|
41
+ it "engine 'jruby' on OS '#{host_os}' uses runner #{runner.name}" do
42
+ Launchy.host_os = host_os
43
+ Launchy.ruby_engine = 'jruby'
44
+ engine = Launchy::Detect::Runner.detect
45
+ engine.must_be_instance_of runner
46
+ end
47
+ end
48
+
49
+ # If you are on windows, no matter what engine, you use the windows runner
50
+ %w[ ruby rbx jruby macruby ].each do |engine_name|
51
+ it "uses a Windows runner when the engine is '#{engine_name}'" do
52
+ Launchy.host_os = "mingw"
53
+ Launchy.ruby_engine = engine_name
54
+ e = Launchy::Detect::Runner.detect
55
+ e.must_be_instance_of Launchy::Detect::Runner::Windows
56
+ end
57
+ end
58
+
59
+ it "Windows launches use the 'cmd' command" do
60
+ win = Launchy::Detect::Runner::Windows.new
61
+ cmd = win.dry_run( "not-really", [ "http://example.com" ] )
62
+ cmd.must_equal 'cmd /c not-really http://example.com'
63
+ end
64
+
65
+ it "Windows escapes '&' in urls" do
66
+ win = Launchy::Detect::Runner::Windows.new
67
+ win.all_args( "not-really", [ @test_url ] ).must_equal [ 'cmd', '/c', 'not-really', 'http://example.com/?foo=bar^&baz=wibble' ]
68
+
69
+ cmd = win.dry_run( "not-really", [ @test_url ] )
70
+ cmd.must_equal 'cmd /c not-really http://example.com/?foo=bar^&baz=wibble'
71
+ end
72
+
73
+ it "Jruby escapes '&' in urls" do
74
+ jruby = Launchy::Detect::Runner::Jruby.new
75
+ cmd = jruby.dry_run( "not-really", [ @test_url ])
76
+ cmd.must_equal 'not-really http://example.com/\\?foo\\=bar\\&baz\\=wibble'
77
+ end
78
+
79
+ end
@@ -4,10 +4,13 @@ describe Launchy do
4
4
 
5
5
  before do
6
6
  Launchy.reset_global_options
7
+ @stderr = $stderr
8
+ $stderr = StringIO.new
7
9
  end
8
10
 
9
11
  after do
10
12
  Launchy.reset_global_options
13
+ $stderr = @stderr
11
14
  end
12
15
 
13
16
  it "logs to stderr when LAUNCHY_DEBUG environment variable is set" do
@@ -39,4 +42,10 @@ describe Launchy do
39
42
  Launchy.extract_global_options( { :ruby_engine => "myruby" } )
40
43
  Launchy.ruby_engine.must_equal 'myruby'
41
44
  end
45
+
46
+ it "prints an error on stderr when no scheme is found for the given uri" do
47
+ Launchy.open( "blah://something/invalid" )
48
+ $stderr.string.must_match( /Failure in opening/ )
49
+ end
50
+
42
51
  end
@@ -1,4 +1,4 @@
1
- require 'rubygems'
1
+ gem 'minitest'
2
2
  require 'minitest/autorun'
3
3
  require 'minitest/pride'
4
4
  require 'launchy'
@@ -2,7 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe 'Launchy::VERSION' do
4
4
  it "should have a #.#.# format" do
5
- Launchy::VERSION.must_match /\d+\.\d+\.\d+/
5
+ Launchy::VERSION.must_match( /\d+\.\d+\.\d+/ )
6
+ Launchy::Version.to_s.must_match( /\d+\.\d+\.\d+/ )
6
7
  Launchy::Version.to_a.each do |n|
7
8
  n.to_i.must_be :>=, 0
8
9
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: launchy
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 0
9
- - 1
10
- version: 2.0.1
9
+ - 2
10
+ version: 2.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jeremy Hinegardner
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-07-16 00:00:00 -06:00
18
+ date: 2011-07-17 00:00:00 -06:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -67,9 +67,57 @@ dependencies:
67
67
  type: :development
68
68
  version_requirements: *id003
69
69
  - !ruby/object:Gem::Dependency
70
- name: bones
70
+ name: bones-rcov
71
71
  prerelease: false
72
72
  requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ hash: 21
78
+ segments:
79
+ - 1
80
+ - 0
81
+ - 1
82
+ version: 1.0.1
83
+ type: :development
84
+ version_requirements: *id004
85
+ - !ruby/object:Gem::Dependency
86
+ name: rcov
87
+ prerelease: false
88
+ requirement: &id005 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ hash: 41
94
+ segments:
95
+ - 0
96
+ - 9
97
+ - 9
98
+ version: 0.9.9
99
+ type: :development
100
+ version_requirements: *id005
101
+ - !ruby/object:Gem::Dependency
102
+ name: spoon
103
+ prerelease: false
104
+ requirement: &id006 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ hash: 29
110
+ segments:
111
+ - 0
112
+ - 0
113
+ - 1
114
+ version: 0.0.1
115
+ type: :development
116
+ version_requirements: *id006
117
+ - !ruby/object:Gem::Dependency
118
+ name: bones
119
+ prerelease: false
120
+ requirement: &id007 !ruby/object:Gem::Requirement
73
121
  none: false
74
122
  requirements:
75
123
  - - ">="
@@ -81,7 +129,7 @@ dependencies:
81
129
  - 0
82
130
  version: 3.7.0
83
131
  type: :development
84
- version_requirements: *id004
132
+ version_requirements: *id007
85
133
  description: |
86
134
  Launchy is helper class for launching cross-platform applications in a
87
135
  fire and forget manner.
@@ -102,7 +150,7 @@ extra_rdoc_files:
102
150
  - README
103
151
  - bin/launchy
104
152
  files:
105
- - .autotest
153
+ - .gitignore
106
154
  - HISTORY
107
155
  - LICENSE
108
156
  - NOTES
@@ -124,10 +172,13 @@ files:
124
172
  - lib/launchy/os_family.rb
125
173
  - lib/launchy/version.rb
126
174
  - spec/application_spec.rb
175
+ - spec/applications/browser_spec.rb
176
+ - spec/cli_spec.rb
127
177
  - spec/detect/host_os_family_spec.rb
128
178
  - spec/detect/host_os_spec.rb
129
179
  - spec/detect/nix_desktop_environment_spec.rb
130
180
  - spec/detect/ruby_engine_spec.rb
181
+ - spec/detect/runner_spec.rb
131
182
  - spec/launchy_spec.rb
132
183
  - spec/mock_scheme.rb
133
184
  - spec/spec_helper.rb
@@ -170,9 +221,12 @@ specification_version: 3
170
221
  summary: Launchy is helper class for launching cross-platform applications in a fire and forget manner.
171
222
  test_files:
172
223
  - spec/application_spec.rb
224
+ - spec/applications/browser_spec.rb
225
+ - spec/cli_spec.rb
173
226
  - spec/detect/host_os_family_spec.rb
174
227
  - spec/detect/host_os_spec.rb
175
228
  - spec/detect/nix_desktop_environment_spec.rb
176
229
  - spec/detect/ruby_engine_spec.rb
230
+ - spec/detect/runner_spec.rb
177
231
  - spec/launchy_spec.rb
178
232
  - spec/version_spec.rb
data/.autotest DELETED
@@ -1,28 +0,0 @@
1
- # vim: ft=ruby
2
-
3
- require 'autotest/growl'
4
-
5
- Autotest.add_hook :initialize do |at|
6
-
7
- at.libs = "lib:spec"
8
- at.testlib = 'minitest/autorun'
9
-
10
- at.add_exception 'coverage.info'
11
- at.add_exception 'coverage'
12
- at.add_exception '.git'
13
-
14
- at.clear_mappings
15
-
16
- at.add_mapping(%r|^spec/.*_spec\.rb$|) do |filename, _|
17
- filename
18
- end
19
-
20
- at.add_mapping(%r|^lib/(.*)\.rb$|) do |_, match|
21
- [ "test/#{match[1]}_spec.rb" ]
22
- end
23
-
24
- at.add_mapping(%r|^spec/spec_helper\.rb|) do
25
- at.files_matching( %r|^spec/.*_spec\.rb| )
26
- end
27
- end
28
-