launchy 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDc4OTYyY2FlMDJjZGIzM2Q2Zjg3MWI4MDdlMjg1MzU4Zjc5ZmI1OA==
4
+ NWUzNmEyNDA5NGVkMjUyYjU2MDVmMzQxY2FkMDJhZjQxNzMwYmE4OA==
5
5
  data.tar.gz: !binary |-
6
- ZjJjMDQ3ZmFmNDE3NDNmZWY4NWUwZGM3M2Y3NGJkYmZmMWFkYWIxMw==
7
- !binary "U0hBNTEy":
6
+ MmUxYmRlODUyNDhhZmRlY2U2MWY1NTc5ZThlMDdkYTkwYjYzYTE3MQ==
7
+ SHA512:
8
8
  metadata.gz: !binary |-
9
- YmY4YTlhMmEyMWRjZTA0OTRjYTZiNTNlMDFmN2Q0NDY3NjMxOTI0NmFmMmQ3
10
- YzMyY2NiODRkZjFjZGQzMTE0YzUxODc5ZGQ1OWNiYTc4MmY2MzgzMmQyYjNm
11
- MTQ0M2Y1ZjZkZGRiMjY3OThkOTlkZGRmNmVjM2M0NzI2OTkyODA=
9
+ OTlkMzhjYThhMjYzMGNkZTVkMDNlZmU0MDU0N2RkNDc0NzlmNzMwNDEwMzY4
10
+ NTg3MDc0ZDEyMDRlMTZjYzcxZjkyNTY4N2MwZmNkZDhiZWVkNjA0Zjk1YzUw
11
+ MjNmZGM1ZjAxM2Y5ODg2NGE0NTUwMDk3ODg2ZjAzODBkOWJjN2M=
12
12
  data.tar.gz: !binary |-
13
- OWM0ZTI2YTk4NzMxZjg4ZGI1YWQ5NzVmMDg0MzExNjM3ZjI0ODI5OGViY2My
14
- NDFmNjkzMzdmYTdhZDAxMjFmZWRiYzE5MzYyYTc5NzdhM2FmYzYxMDFkYmNi
15
- MGI3YmFiOWE2ZGVlODViOGNhODEzY2VlZmFhZWUzNjNmMzA3YTg=
13
+ NDQ5YWMzNTRhYmJjZTNmNTU2OGNjN2UyMzBjMTcxMTllNmUwMGY0ZDRjZTA3
14
+ NTEzM2NiZjJmMGZlZTYwMjZlYmIzNjRiMDRiMmI5MTMzZmI0MDZiYjIxNTQ1
15
+ OTMwMmRlMTA1MDRiZjczOGQyMTMzNjIxYjNiYjQ4NzZlMzNlMzc=
@@ -43,6 +43,8 @@ easiest way to contribute.
43
43
  * [Mariusz Pietrzyk](https://github.com/wijet)
44
44
  * [Bogdan Gusiev](https://github.com/bogdan)
45
45
  * [Miquel Rodríguez Telep](https://github.com/mrtorrent)
46
+ * [Chris Schmich](https://github.com/schmich)
47
+ * [Gioele Barabucci](https://github.com/gioele)
46
48
 
47
49
  [GitHub Account]: https://github.com/signup/free "GitHub Signup"
48
50
  [GitHub Issues]: https://github.com/copiousfreetime/launchy/issues "Launchy Issues"
data/HISTORY.md CHANGED
@@ -1,44 +1,52 @@
1
1
  # Launchy Changelog
2
2
 
3
+ ## Version 2.4.0 - 2013-11-12
4
+ * Support `Launchy.open( url, :debug => true )` - <http://github.com/copiousfreetime/launchy/issues/63> - schmich
5
+ * Fix inconsistencies in `debug?` and `dry_run?` methods - <http://github.com/copiousfreetime/launchy/issues/63> - schmich
6
+ * Fix detection of missing *nix desktops - <http://github.com/copiousfreetime/launchy/issues/70>
7
+ * Fix running tests in bare Linux environment - <http://github.com/copiousfreetime/launchy/issues/67> - gioele
8
+ * Fix mistaking windows drive as uri schema - <http://github.com/copiousfreetime/launchy/issues/65>
9
+ * Attempt fixing windows `start` command oddities, again - <http://github.com/copiousfreetime/launchy/issues/62>
10
+
3
11
  ## Version 2.3.0 - 2013-04-11
4
12
 
5
13
  * Add the option to call a block on error instead of raising an exception
6
14
 
7
15
  ## Version 2.2.0 - 2013-02-06
8
16
 
9
- * Change XFCE detection to not depend on grep (copiousfreetime/launchy#52 - thanks bogdan)
10
- * Suppress forked process output (copiousfreetime/launchy#51)
11
- * Display help/usage if no url is given (copiousfreetime/launchy#54)
12
- * Detect the fluxbox environment (copiousfreetime/launchy#53)
13
- * Automatically detect `http` url's if they are missing the `http://` (copiousfreetime/launchy#55)
17
+ * Change XFCE detection to not depend on grep <http://github.com/copiousfreetime/launchy/issues/52> - bogdan
18
+ * Suppress forked process output <http://github.com/copiousfreetime/launchy/issues/51>
19
+ * Display help/usage if no url is given <http://github.com/copiousfreetime/launchy/issues/54>
20
+ * Detect the fluxbox environment <http://github.com/copiousfreetime/launchy/issues/53>
21
+ * Automatically detect `http` url's if they are missing the `http://` <http://github.com/copiousfreetime/launchy/issues/55>
14
22
  * Update to latest project management rake tasks
15
23
 
16
24
  ## Version 2.1.2 - 2012-08-06
17
25
 
18
- * Fix where HostOS would fail to convert to string on JRuby in 1.9 mode (copiousfreetime/launchy#45)
26
+ * Fix where HostOS would fail to convert to string on JRuby in 1.9 mode <http://github.com/copiousfreetime/launchy/issues/45>
19
27
 
20
28
  ## Version 2.1.1 - 2012-07-28
21
29
 
22
- * Update addressable runtime dependency (copiousfreetime/launchy#47)
30
+ * Update addressable runtime dependency <http://github.com/copiousfreetime/launchy/issues/47>
23
31
  * Bring minitest and ffi development dependencies up to date
24
32
 
25
33
  ## Version 2.1.0 - 2012-03-18
26
34
 
27
- * Fix raising exception when no browser program found (copiousfreetime/launchy#42)
28
- * Add LAUNCHY_DRY_RUN environment variable (thanks Mariusz Pietrzyk / wijet)
35
+ * Fix raising exception when no browser program found <http://github.com/copiousfreetime/launchy/issues/42>
36
+ * Add `LAUNCHY_DRY_RUN` environment variable (Mariusz Pietrzyk / wijet)
29
37
  * Update dependencies
30
38
 
31
39
  ## Version 2.0.5 - 2011-07-24
32
40
 
33
- * Fix the case where $BROWSER is set and no *nix desktop was found (copiousfreetime/launchy#33)
41
+ * Fix the case where `$BROWSER` is set and no *nix desktop was found <http://github.com/copiousfreetime/launchy/issues/33>
34
42
 
35
43
  ## Version 2.0.4 - 2011-07-23
36
44
 
37
- * Fix windows 'start' commandline (copiousfreetime/launchy#5)
38
- * Add capability to open local files with no file: scheme present (copiousfreetime/launchy#29)
39
- * Added 'rake how_to_contribute' task (copiousfreetime/launchy#30)
40
- * Make better decisions on when to do shell escaping (copiousfreetime/launchy#31)
41
- * Switch to Addressable::URI so UTF-8 urls may be parsed. (copiousfreetime/launchy#32)
45
+ * Fix windows `start` commandline <http://github.com/copiousfreetime/launchy/issues/5>
46
+ * Add capability to open local files with no file: scheme present <http://github.com/copiousfreetime/launchy/issues/29>
47
+ * Added `rake how_to_contribute` task <http://github.com/copiousfreetime/launchy/issues/30>
48
+ * Make better decisions on when to do shell escaping <http://github.com/copiousfreetime/launchy/issues/31>
49
+ * Switch to Addressable::URI so UTF-8 urls may be parsed. <http://github.com/copiousfreetime/launchy/issues/32>
42
50
 
43
51
  ## Version 2.0.3 - 2011-07-17
44
52
 
@@ -101,7 +109,7 @@
101
109
  ## Version 0.3.0 - 2007-08-30
102
110
 
103
111
  * reorganize the code structure, removing Spawnable namespace
104
- * removed 'do_magic' method, changed it to 'open'
112
+ * removed `do_magic` method, changed it to `open`
105
113
  * added override environment variable LAUNCHY_HOST_OS for testing
106
114
  * fix broken cygwin support [Bug #13472]
107
115
 
@@ -112,15 +120,15 @@
112
120
  ## Version 0.2.0 - 2007-08-11
113
121
 
114
122
  * rework browser finding
115
- * manual override with LAUNCHY_BROWSER environment variable
123
+ * manual override with `LAUNCHY_BROWSER` environment variable
116
124
  * on *nix use desktop application launcher with fallback to list of browsers
117
125
  * On windows, switch to 'start' command and remove dependency on win32-process
118
126
  * removed win32 gem
119
- * Add debug output by setting LAUNCHY_DEBUG environment variable to 'true'
127
+ * Add debug output by setting `LAUNCHY_DEBUG` environment variable to `true`
120
128
 
121
129
  ## Version 0.1.2 - 2007-08-11
122
130
 
123
- * forked child exits without calling at_exit handlers
131
+ * forked child exits without calling `at_exit` handlers
124
132
 
125
133
  ## Version 0.1.1
126
134
 
@@ -129,7 +137,7 @@
129
137
  ## Version 0.1.0
130
138
 
131
139
  * Initial public release
132
- * switched to using fork to spawn process and require 'win32/process' if on windows
140
+ * switched to using fork to spawn process and `require 'win32/process'` if on windows
133
141
 
134
142
  ## Version 0.0.2
135
143
 
data/README.md CHANGED
@@ -60,7 +60,7 @@ exception that was raised.
60
60
 
61
61
  ## UPGRADING from versions before 2.0.0
62
62
 
63
- The previously published versino of Launchy before the 2.0.0 series was 0.4.0.
63
+ The previously published version of Launchy before the 2.0.0 series was 0.4.0.
64
64
  There have been so many changes, and a mistaken tag at 1.0.0, that I have
65
65
  decided to bump all the way to 2.x.y.
66
66
 
@@ -90,7 +90,7 @@ in the github gem if it was updated to use 2.0.x but not use the supported API.
90
90
  WARNING:
91
91
  WARNING: If this is not the case, please file a bug. Please file a bug at https://github.com/copiousfreetime/launchy/issues/new
92
92
 
93
- These deprecation notices will go away with version 3.0 and the only availabel
93
+ These deprecation notices will go away with version 3.0 and the only available
94
94
  API will be the documented one.
95
95
 
96
96
  ## ISC LICENSE
data/Rakefile CHANGED
@@ -9,8 +9,8 @@ This.homepage = "http://github.com/copiousfreetime/#{ This.name }"
9
9
  This.ruby_gemspec do |spec|
10
10
  spec.add_dependency( 'addressable', '~> 2.3')
11
11
 
12
- spec.add_development_dependency( 'rake' , '~> 10.0.3')
13
- spec.add_development_dependency( 'minitest' , '~> 4.5.0' )
12
+ spec.add_development_dependency( 'rake' , '~> 10.1')
13
+ spec.add_development_dependency( 'minitest' , '~> 5.0' )
14
14
  spec.add_development_dependency( 'rdoc' , '~> 3.12' )
15
15
  end
16
16
 
@@ -76,13 +76,13 @@ module Launchy
76
76
  end
77
77
 
78
78
  def debug=( d )
79
- @debug = (d == "true")
79
+ @debug = to_bool( d )
80
80
  end
81
81
 
82
82
  # we may do logging before a call to 'open', hence the need to check
83
83
  # LAUNCHY_DEBUG here
84
84
  def debug?
85
- @debug || (ENV['LAUNCHY_DEBUG'] == 'true')
85
+ @debug || to_bool( ENV['LAUNCHY_DEBUG'] )
86
86
  end
87
87
 
88
88
  def application=( app )
@@ -110,11 +110,11 @@ module Launchy
110
110
  end
111
111
 
112
112
  def dry_run=( dry_run )
113
- @dry_run = dry_run
113
+ @dry_run = to_bool( dry_run )
114
114
  end
115
115
 
116
116
  def dry_run?
117
- @dry_run
117
+ @dry_run || to_bool( ENV['LAUNCHY_DRY_RUN'] )
118
118
  end
119
119
 
120
120
  def bug_report_message
@@ -124,7 +124,22 @@ module Launchy
124
124
  def log(msg)
125
125
  $stderr.puts "LAUNCHY_DEBUG: #{msg}" if Launchy.debug?
126
126
  end
127
+
128
+ private
129
+ def to_bool( arg )
130
+ if arg.is_a? String
131
+ arg == 'true'
132
+ elsif arg.is_a? TrueClass
133
+ true
134
+ else
135
+ # All other values mapped to false.
136
+ false
137
+ end
138
+ end
127
139
  end
140
+
141
+ # Iniitialize the global options to sane defaults during parse time.
142
+ Launchy.reset_global_options
128
143
  end
129
144
 
130
145
  require 'launchy/version'
@@ -9,30 +9,28 @@ class Launchy::Application
9
9
 
10
10
  def self.handles?( uri )
11
11
  return true if schemes.include?( uri.scheme )
12
- return true if File.exist?( uri.path ) and uri.scheme.nil?
12
+ return true if File.exist?( uri.path )
13
13
  end
14
14
 
15
15
  def windows_app_list
16
- [ 'start /b' ]
16
+ [ 'start "launchy" /b' ]
17
17
  end
18
18
 
19
19
  def cygwin_app_list
20
- [ 'cmd /C start /b' ]
20
+ [ 'cmd /C start "launchy" /b' ]
21
21
  end
22
22
 
23
+ # hardcode this to open?
23
24
  def darwin_app_list
24
25
  [ find_executable( "open" ) ]
25
26
  end
26
27
 
27
28
  def nix_app_list
28
- app_list = %w[ xdg-open ]
29
- if nix_de = Launchy::Detect::NixDesktopEnvironment.detect then
30
- app_list << nix_de.browser
31
- app_list << nix_de.fallback_browsers
32
- end
33
- app_list.flatten!
34
- app_list.delete_if { |b| b.nil? || (b.strip.size == 0) }
35
- app_list.collect { |bin| find_executable( bin ) }.find_all { |x| not x.nil? }
29
+ nix_de = Launchy::Detect::NixDesktopEnvironment.detect
30
+ list = nix_de.browsers
31
+
32
+ list.delete_if { |b| b.nil? || (b.strip.size == 0) }
33
+ list.collect { |bin| find_executable( bin ) }.find_all { |x| not x.nil? }
36
34
  end
37
35
 
38
36
  # use a call back mechanism to get the right app_list that is decided by the
@@ -51,10 +49,15 @@ class Launchy::Application
51
49
 
52
50
  # Get the full commandline of what we are going to add the uri to
53
51
  def browser_cmdline
54
- possibilities = (browser_env + app_list).flatten
55
- possibilities.each do |p|
56
- Launchy.log "#{self.class.name} : possibility : #{p}"
52
+ browser_env.each do |p|
53
+ Launchy.log "#{self.class.name} : possibility from BROWSER environment variable : #{p}"
54
+ end
55
+ app_list.each do |p|
56
+ Launchy.log "#{self.class.name} : possibility from app_list : #{p}"
57
57
  end
58
+
59
+ possibilities = (browser_env + app_list).flatten
60
+
58
61
  if browser = possibilities.shift then
59
62
  Launchy.log "#{self.class.name} : Using browser value '#{browser}'"
60
63
  return browser
@@ -22,7 +22,7 @@ module Launchy
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",
@@ -30,7 +30,7 @@ module Launchy
30
30
  #
31
31
  def children
32
32
  unless defined? @children
33
- @children = Set.new
33
+ @children = Array.new
34
34
  end
35
35
  return @children
36
36
  end
@@ -22,6 +22,10 @@ module Launchy::Detect
22
22
  %w[ firefox seamonkey opera mozilla netscape galeon ]
23
23
  end
24
24
 
25
+ def self.browsers
26
+ [ browser, fallback_browsers ].flatten
27
+ end
28
+
25
29
  #---------------------------------------
26
30
  # The list of known desktop environments
27
31
  #---------------------------------------
@@ -60,15 +64,28 @@ module Launchy::Detect
60
64
  end
61
65
  end
62
66
 
63
- class Fluxbox < NixDesktopEnvironment
67
+ # Fall back environment as the last case
68
+ class Xdg < NixDesktopEnvironment
64
69
  def self.is_current_desktop_environment?
65
- ENV['DESKTOP_SESSION'] == 'fluxbox'
70
+ Launchy::Application.find_executable( browser )
66
71
  end
67
72
 
68
73
  def self.browser
69
74
  'xdg-open'
70
75
  end
71
76
  end
77
+
78
+ # The one that is found when all else fails. And this must be declared last
79
+ class NotFound < NixDesktopEnvironment
80
+ def self.is_current_desktop_environment?
81
+ true
82
+ end
83
+
84
+ def self.browser
85
+ []
86
+ end
87
+ end
88
+
72
89
  end
73
90
  end
74
91
 
@@ -81,8 +81,21 @@ module Launchy::Detect
81
81
 
82
82
  # escape the reserved shell characters in windows command shell
83
83
  # http://technet.microsoft.com/en-us/library/cc723564.aspx
84
+ #
85
+ # Also make sure that the item after 'start' is guaranteed to be quoted.
86
+ # https://github.com/copiousfreetime/launchy/issues/62
84
87
  def shell_commands( cmd, *args )
85
- cmdline = [ cmd.shellsplit ]
88
+ parts = cmd.shellsplit
89
+
90
+ if start_idx = parts.index('start') then
91
+ title_idx = start_idx + 1
92
+ title = parts[title_idx]
93
+ title = title.sub(/^/,'"') unless title[0] == '"'
94
+ title = title.sub(/$/,'"') unless title[-1] == '"'
95
+ parts[title_idx] = title
96
+ end
97
+
98
+ cmdline = [ parts ]
86
99
  cmdline << args.flatten.collect { |a| a.to_s.gsub(/([&|()<>^])/, "^\\1") }
87
100
  return commandline_normalize( cmdline )
88
101
  end
@@ -1,5 +1,5 @@
1
1
  module Launchy
2
- VERSION = "2.3.0"
2
+ VERSION = "2.4.0"
3
3
 
4
4
  module Version
5
5
 
@@ -30,8 +30,8 @@ describe Launchy::Application do
30
30
  lambda { Launchy::Application.handling( uri ) }.must_raise( Launchy::ApplicationNotFoundError )
31
31
  end
32
32
 
33
- it "can find open or curl" do
34
- found = %w[ open curl ].any? do |app|
33
+ it "can find open or curl or xdg-open" do
34
+ found = %w[ open curl xdg-open ].any? do |app|
35
35
  Launchy::Application.find_executable( app )
36
36
  end
37
37
  found.must_equal true
@@ -10,11 +10,12 @@ describe Launchy::Application::Browser do
10
10
  after do
11
11
  Launchy.reset_global_options
12
12
  ENV.delete( 'KDE_FULL_SESSION' )
13
+ ENV.delete( 'BROWSER' )
13
14
  end
14
15
 
15
- { 'windows' => 'start /b' ,
16
+ { 'windows' => 'start "launchy" /b' ,
16
17
  'darwin' => '/usr/bin/open',
17
- 'cygwin' => 'cmd /C start /b',
18
+ 'cygwin' => 'cmd /C start "launchy" /b',
18
19
 
19
20
  # when running these tests on a linux box, this test will fail
20
21
  'linux' => nil }.each do |host_os, cmdline|
@@ -22,24 +22,17 @@ describe Launchy::Detect::NixDesktopEnvironment do
22
22
  end
23
23
  end
24
24
 
25
- it "detects the fluxbox desktop environment" do
26
- ENV['DESKTOP_SESSION'] = 'fluxbox'
27
- fluxbox_env = Launchy::Detect::NixDesktopEnvironment.detect
28
- fluxbox_env.must_equal( Launchy::Detect::NixDesktopEnvironment::Fluxbox )
29
- fluxbox_env.browser.must_equal( Launchy::Detect::NixDesktopEnvironment::Fluxbox.browser )
30
- ENV.delete( 'DESKTOP_SESSION' )
31
- end
32
-
33
25
  it "returns false for XFCE if xprop is not found" do
34
26
  Launchy.host_os = "linux"
35
27
  Launchy::Detect::NixDesktopEnvironment::Xfce.is_current_desktop_environment?.must_equal( false )
36
28
  end
37
29
 
38
- it "returns nil if it cannot determine the *nix desktop environment" do
30
+ it "returns NotFound if it cannot determine the *nix desktop environment" do
39
31
  Launchy.host_os = "linux"
40
32
  ENV.delete( "KDE_FULL_SESSION" )
41
33
  ENV.delete( "GNOME_DESKTOP_SESSION_ID" )
42
- Launchy::Detect::NixDesktopEnvironment.detect.must_equal( nil )
34
+ not_found = Launchy::Detect::NixDesktopEnvironment.detect
35
+ not_found.must_equal( Launchy::Detect::NixDesktopEnvironment::NotFound )
36
+ not_found.browser.must_equal( [] )
43
37
  end
44
-
45
38
  end
@@ -6,12 +6,15 @@ describe Launchy do
6
6
  Launchy.reset_global_options
7
7
  @stderr = $stderr
8
8
  $stderr = StringIO.new
9
+ @stdout = $stdout
10
+ $stdout = StringIO.new
9
11
  @invalid_url = 'blah://example.com/invalid'
10
12
  end
11
13
 
12
14
  after do
13
15
  Launchy.reset_global_options
14
16
  $stderr = @stderr
17
+ $stdout = @stdout
15
18
  end
16
19
 
17
20
  it "logs to stderr when LAUNCHY_DEBUG environment variable is set" do
@@ -24,16 +27,32 @@ describe Launchy do
24
27
  ENV["LAUNCHY_DEBUG"] = nil
25
28
  end
26
29
 
27
- it "sets the global option :dry_run to value of LAUNCHY_DRY_RUN environment variable" do
30
+ it "sets the global option :dry_run to true if LAUNCHY_DRY_RUN environment variable is 'true'" do
28
31
  ENV['LAUNCHY_DRY_RUN'] = 'true'
29
32
  Launchy.extract_global_options({})
30
- Launchy.dry_run?.must_equal 'true'
33
+ Launchy.dry_run?.must_equal true
31
34
  ENV['LAUNCHY_DRY_RUN'] = nil
32
35
  end
33
36
 
37
+ it "sets the global option :debug to true if LAUNCHY_DEBUG environment variable is 'true'" do
38
+ ENV['LAUNCHY_DEBUG'] = 'true'
39
+ Launchy.extract_global_options({})
40
+ Launchy.debug?.must_equal true
41
+ ENV['LAUNCHY_DEBUG'] = nil
42
+ end
43
+
34
44
  it "has the global option :debug" do
35
45
  Launchy.extract_global_options( { :debug => 'true' } )
36
46
  Launchy.debug?.must_equal true
47
+ Launchy.extract_global_options( { :debug => true } )
48
+ Launchy.debug?.must_equal true
49
+ end
50
+
51
+ it "has the global option :dry_run" do
52
+ Launchy.extract_global_options( { :dry_run => 'true' } )
53
+ Launchy.dry_run?.must_equal true
54
+ Launchy.extract_global_options( { :dry_run => true } )
55
+ Launchy.dry_run?.must_equal true
37
56
  end
38
57
 
39
58
  it "has the global option :application" do
@@ -55,8 +74,16 @@ describe Launchy do
55
74
  lambda { Launchy.open( @invalid_url ) }.must_raise Launchy::ApplicationNotFoundError
56
75
  end
57
76
 
58
- it "raises an exception if we have an invalid scheme and a valid path" do
59
- lambda { Launchy.open( "blah://example.com/" ) }.must_raise Launchy::ApplicationNotFoundError
77
+ it "asssumes we open a local file if we have an exception if we have an invalid scheme and a valid path" do
78
+ uri = "blah://example.com/#{__FILE__}"
79
+ Launchy.open( uri , :dry_run => true )
80
+ $stdout.string.strip.must_equal "/usr/bin/open #{uri}"
81
+ end
82
+
83
+ it "opens a local file if we have a drive letter and a valid path on windows" do
84
+ uri = "C:#{__FILE__}"
85
+ Launchy.open( uri, :dry_run => true, :host_os => 'windows' )
86
+ $stdout.string.strip.must_equal 'cmd /c start "launchy" /b ' + uri
60
87
  end
61
88
 
62
89
  it "calls the block if instead of raising an exception if there is an error" do
@@ -74,7 +101,7 @@ describe Launchy do
74
101
  lambda { Launchy.open( @invalid_url ) { raise StandardError, "KABOOM!" } }.must_raise StandardError
75
102
  end
76
103
 
77
- [ 'www.example.com', 'www.example.com/foo/bar' ].each do |x|
104
+ [ 'www.example.com', 'www.example.com/foo/bar', "C:#{__FILE__}" ].each do |x|
78
105
  it "picks a Browser for #{x}" do
79
106
  app = Launchy.app_for_uri_string( x )
80
107
  app.must_equal( Launchy::Application::Browser )
@@ -1,5 +1,6 @@
1
1
  # vim: syntax=ruby
2
2
  require 'rake/clean'
3
+ require 'digest'
3
4
  #------------------------------------------------------------------------------
4
5
  # If you want to Develop on this project just run 'rake develop' and you'll
5
6
  # have all you need to get going. If you want to use bundler for development,
@@ -11,7 +12,7 @@ namespace :develop do
11
12
  # gemspec.
12
13
  task :default do
13
14
  require 'rubygems/dependency_installer'
14
- installer = Gem::DependencyInstaller.new
15
+ installer = ::Gem::DependencyInstaller.new
15
16
 
16
17
  This.set_coverage_gem
17
18
 
@@ -30,7 +31,7 @@ namespace :develop do
30
31
  # Create a Gemfile that just references the gemspec
31
32
  file 'Gemfile' => :gemspec do
32
33
  File.open( "Gemfile", "w+" ) do |f|
33
- f.puts 'source :rubygems'
34
+ f.puts 'source "https://rubygems.org/"'
34
35
  f.puts 'gemspec'
35
36
  end
36
37
  end
@@ -53,8 +54,8 @@ begin
53
54
  require 'rake/testtask'
54
55
  Rake::TestTask.new( :test ) do |t|
55
56
  t.ruby_opts = %w[ -w -rubygems ]
56
- t.libs = %w[ lib spec ]
57
- t.pattern = "spec/**/*_spec.rb"
57
+ t.libs = %w[ lib spec test ]
58
+ t.pattern = "{test,spec}/**/{test_*,*_spec}.rb"
58
59
  end
59
60
 
60
61
  task :test_requirements
@@ -79,7 +80,7 @@ begin
79
80
  t.rdoc_files.include( FileList['*.{rdoc,md,txt}'], FileList['ext/**/*.c'],
80
81
  FileList['lib/**/*.rb'] )
81
82
  end
82
- rescue LoadError => le
83
+ rescue StandardError, LoadError
83
84
  This.task_warning( 'rdoc' )
84
85
  end
85
86
 
@@ -234,7 +235,7 @@ CLOBBER << FileList["**/*.rbc"]
234
235
 
235
236
  # The standard gem packaging task, everyone has it.
236
237
  require 'rubygems/package_task'
237
- Gem::PackageTask.new( This.platform_gemspec ) do
238
+ ::Gem::PackageTask.new( This.platform_gemspec ) do
238
239
  # nothing
239
240
  end
240
241
 
@@ -25,7 +25,7 @@ class ThisProject
25
25
  #
26
26
  # Yields self
27
27
  def initialize(&block)
28
- @exclude_from_manifest = %r/\.(git|DS_Store)|^(doc|coverage|pkg|tmp)|Gemfile*|\.(gemspec|swp|jar|bundle|so|rvmrc)$|~$/
28
+ @exclude_from_manifest = %r/\.(git|DS_Store)|^(doc|coverage|pkg|tmp|Gemfile(\.lock)?)|^[^\/]+\.gemspec|\.(swp|jar|bundle|so|rvmrc)$|~$/
29
29
  @gemspecs = Hash.new
30
30
  yield self if block_given?
31
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: launchy
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Hinegardner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-16 00:00:00.000000000 Z
11
+ date: 2013-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -30,28 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 10.0.3
33
+ version: '10.1'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: 10.0.3
40
+ version: '10.1'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 4.5.0
47
+ version: '5.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 4.5.0
54
+ version: '5.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rdoc
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -141,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
141
  version: '0'
142
142
  requirements: []
143
143
  rubyforge_project:
144
- rubygems_version: 2.0.3
144
+ rubygems_version: 2.1.5
145
145
  signing_key:
146
146
  specification_version: 4
147
147
  summary: Launchy is helper class for launching cross-platform applications in a fire