Skip to content

Commit 3041af3

Browse files
authored
[rust] Use drivers found in PATH only when browser version is not specified (#13159)
1 parent 6c58924 commit 3041af3

File tree

1 file changed

+24
-27
lines changed

1 file changed

+24
-27
lines changed

rust/src/lib.rs

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ pub trait SeleniumManager {
210210

211211
fn download_browser(
212212
&mut self,
213-
original_browser_version: String,
213+
original_browser_version: &str,
214214
) -> Result<Option<PathBuf>, Error> {
215215
let browser_version;
216216
let cache_path = self.get_cache_path()?;
@@ -251,10 +251,10 @@ pub trait SeleniumManager {
251251
// If not in metadata, discover version using online metadata
252252
if self.is_browser_version_stable() || self.is_browser_version_empty() {
253253
browser_version =
254-
self.request_latest_browser_version_from_online(&original_browser_version)?;
254+
self.request_latest_browser_version_from_online(original_browser_version)?;
255255
} else {
256256
browser_version =
257-
self.request_fixed_browser_version_from_online(&original_browser_version)?;
257+
self.request_fixed_browser_version_from_online(original_browser_version)?;
258258
}
259259
self.set_browser_version(browser_version.clone());
260260

@@ -280,7 +280,7 @@ pub trait SeleniumManager {
280280
));
281281

282282
// Checking if browser version is in the cache
283-
let browser_binary_path = self.get_browser_binary_path(&original_browser_version)?;
283+
let browser_binary_path = self.get_browser_binary_path(original_browser_version)?;
284284
if browser_binary_path.exists() {
285285
self.get_logger().debug(format!(
286286
"{} {} already exists",
@@ -296,7 +296,7 @@ pub trait SeleniumManager {
296296
)));
297297
}
298298

299-
let browser_url = self.get_browser_url_for_download(&original_browser_version)?;
299+
let browser_url = self.get_browser_url_for_download(original_browser_version)?;
300300
self.get_logger().debug(format!(
301301
"Downloading {} {} from {}",
302302
self.get_browser_name(),
@@ -311,7 +311,7 @@ pub trait SeleniumManager {
311311
.parse::<i32>()
312312
.unwrap_or_default();
313313
let browser_label_for_download =
314-
self.get_browser_label_for_download(&original_browser_version)?;
314+
self.get_browser_label_for_download(original_browser_version)?;
315315
uncompress(
316316
&driver_zip_file,
317317
&self.get_browser_path_in_cache()?,
@@ -510,7 +510,7 @@ pub trait SeleniumManager {
510510

511511
fn download_browser_if_necessary(
512512
&mut self,
513-
original_browser_version: String,
513+
original_browser_version: &str,
514514
) -> Result<(), Error> {
515515
if self.is_download_browser()
516516
&& !self.is_avoid_browser_download()
@@ -751,21 +751,20 @@ pub trait SeleniumManager {
751751
.debug(format!("{} not found in PATH", self.get_driver_name()));
752752
}
753753
}
754+
let use_driver_in_path = driver_in_path_version.is_some()
755+
&& driver_in_path.is_some()
756+
&& original_browser_version.is_empty();
754757

755758
// Discover browser version (or the need to download it, if not available and possible)
756759
match self.discover_local_browser() {
757760
Ok(_) => {}
758-
Err(err) => {
759-
self.check_error_with_driver_in_path(&driver_in_path, &driver_in_path_version, err)?
760-
}
761+
Err(err) => self.check_error_with_driver_in_path(&use_driver_in_path, err)?,
761762
}
762763

763764
// Download browser if necessary
764-
match self.download_browser_if_necessary(original_browser_version) {
765+
match self.download_browser_if_necessary(&original_browser_version) {
765766
Ok(_) => {}
766-
Err(err) => {
767-
self.check_error_with_driver_in_path(&driver_in_path, &driver_in_path_version, err)?
768-
}
767+
Err(err) => self.check_error_with_driver_in_path(&use_driver_in_path, err)?,
769768
}
770769

771770
// With the discovered browser version, discover the proper driver version using online endpoints
@@ -774,18 +773,17 @@ pub trait SeleniumManager {
774773
Ok(driver_version) => {
775774
self.set_driver_version(driver_version);
776775
}
777-
Err(err) => self.check_error_with_driver_in_path(
778-
&driver_in_path,
779-
&driver_in_path_version,
780-
err,
781-
)?,
776+
Err(err) => self.check_error_with_driver_in_path(&use_driver_in_path, err)?,
782777
}
783778
}
784779

785-
// If driver is in path, always use it
786-
if let (Some(version), Some(path)) = (&driver_in_path_version, &driver_in_path) {
787-
// If proper driver version is not the same as the driver in path, display warning
788-
let major_version = self.get_major_version(version)?;
780+
// Use driver in PATH when the user has not specified any browser version
781+
if use_driver_in_path {
782+
let version = driver_in_path_version.unwrap();
783+
let path = driver_in_path.unwrap();
784+
let major_version = self.get_major_version(&version)?;
785+
786+
// Display warning if the discovered driver version is not the same as the driver in PATH
789787
if !self.get_driver_version().is_empty()
790788
&& (self.is_firefox() && !version.eq(self.get_driver_version()))
791789
|| (!self.is_firefox() && !major_version.eq(&self.get_major_browser_version()))
@@ -795,7 +793,7 @@ pub trait SeleniumManager {
795793
the detected {} version ({}); currently, {} {} is recommended for {} {}.*, \
796794
so it is advised to delete the driver in PATH and retry",
797795
self.get_driver_name(),
798-
version,
796+
&version,
799797
path,
800798
self.get_browser_name(),
801799
self.get_browser_version(),
@@ -829,11 +827,10 @@ pub trait SeleniumManager {
829827

830828
fn check_error_with_driver_in_path(
831829
&mut self,
832-
driver_in_path: &Option<String>,
833-
driver_in_path_version: &Option<String>,
830+
is_driver_in_path: &bool,
834831
err: Error,
835832
) -> Result<(), Error> {
836-
if driver_in_path_version.is_some() && driver_in_path.is_some() {
833+
if *is_driver_in_path {
837834
self.get_logger().warn(format!(
838835
"Exception managing {}: {}",
839836
self.get_browser_name(),

0 commit comments

Comments
 (0)