Prechádzať zdrojové kódy

Fix default binary fallback behavior

Let setting localhost and port attrs use a remote driver, but using
neither attempt to start a binary.
Daniel Gempesaw 10 rokov pred
rodič
commit
533f7012e1
1 zmenil súbory, kde vykonal 26 pridanie a 12 odobranie
  1. 26 12
      lib/Selenium/BinaryModeBuilder.pm

+ 26 - 12
lib/Selenium/BinaryModeBuilder.pm

@@ -16,23 +16,37 @@ has 'binary_mode' => (
     builder => 1
 );
 
+has 'try_binary' => (
+    is => 'lazy',
+    default => sub { 0 },
+    trigger => sub {
+        my ($self) = @_;
+        $self->binary_mode if $self->try_binary;
+    }
+);
+
+sub BUILDARGS {
+    my ( $class, %args ) = @_;
+
+    if ( ! exists $args{remote_server_addr} && ! exists $args{port} ) {
+        $args{try_binary} = 1;
+    }
+
+    return { %args };
+}
+
 sub _build_binary_mode {
     my ($self) = @_;
 
-    if (! $self->has_remote_server_addr && ! $self->has_port) {
-        try {
-            my $port = start_binary_on_port($self->binary_name, $self->binary_port);
-            $self->port($port);
-            return 1;
-        }
-        catch {
-            warn $_;
-            return 0;
-        }
+    return try {
+        my $port = start_binary_on_port($self->binary_name, $self->binary_port);
+        $self->port($port);
+        return 1;
     }
-    else {
+    catch {
+        warn $_;
         return 0;
-    }
+    };
 }
 
 sub probe_port {