Sfoglia il codice sorgente

Implement simple strategies for locating Firefox binary

Daniel Gempesaw 10 anni fa
parent
commit
aba7440602
2 ha cambiato i file con 51 aggiunte e 0 eliminazioni
  1. 43 0
      lib/Selenium/Firefox/Binary.pm
  2. 8 0
      t/binary.t

+ 43 - 0
lib/Selenium/Firefox/Binary.pm

@@ -0,0 +1,43 @@
+package Selenium::Firefox::Binary;
+
+# ABSTRACT: Portable handler to start the firefox binary
+use File::Which qw/which/;
+
+require Exporter;
+our @ISA = qw/Exporter/;
+our @EXPORT_OK = qw/path/;
+
+sub _windows_path {
+    # TODO: make this slightly less dumb
+    return which('firefox');
+}
+
+sub _darwin_path {
+    my $default_firefox = '/Applications/Firefox.app/Contents/MacOS/firefox-bin';
+
+    if (-e $default_firefox) {
+        return $default_firefox
+    }
+    else {
+        return which('firefox-bin');
+    }
+}
+
+sub _unix_path {
+    # TODO: maybe which('firefox3'), which('firefox2') ?
+    return which('firefox') || '/usr/bin/firefox';
+}
+
+sub path {
+    if ($^O eq 'MSWin32') {
+        return _windows_path();
+    }
+    elsif ($^O eq 'darwin') {
+        return _darwin_path();
+    }
+    else {
+        return _unix_path;
+    }
+}
+
+1;

+ 8 - 0
t/binary.t

@@ -4,8 +4,10 @@ use strict;
 use warnings;
 use Test::More;
 use Selenium::Binary;
+use Selenium::Firefox::Binary;
 use Selenium::Chrome;
 use Selenium::PhantomJS;
+use Selenium::Firefox;
 
 use FindBin;
 use lib $FindBin::Bin . '/lib';
@@ -31,4 +33,10 @@ CHROME: {
     $chrome->quit;
 }
 
+FIREFOX: {
+    my $binary = Selenium::Firefox::Binary::path();
+    ok(-x $binary, 'we can find some sort of firefox');
+
+}
+
 done_testing;