Bug 1398057 - Not all command arguments are printed to the log. draft
authorHenrik Skupin <mail@hskupin.info>
Wed, 13 Sep 2017 09:15:42 +0200
changeset 664599 cb0b36791beeab3fef8da514fba257cb5c6727a6
parent 664598 cb717386aec8601a301babd4156aabc4cccff0b0
child 731488 d9299b3e6da5abd163f52885ed9d6d61571e2060
push id79743
push userbmo:hskupin@gmail.com
push dateThu, 14 Sep 2017 05:44:56 +0000
bugs1398057
milestone57.0a1
Bug 1398057 - Not all command arguments are printed to the log. By logging the used browser arguments from geckodriver only the -marionette argument ends up in the log. Instead mozrunner should be used which knows about any of them. MozReview-Commit-ID: J9px0pWSwQm
testing/geckodriver/CHANGES.md
testing/geckodriver/Cargo.toml
testing/geckodriver/src/logging.rs
testing/geckodriver/src/marionette.rs
--- a/testing/geckodriver/CHANGES.md
+++ b/testing/geckodriver/CHANGES.md
@@ -12,16 +12,18 @@ Unreleased
 - Added crashreporter environment variables to better control the browser
   in case of crashes
 
 - Added preference `dom.file.createInChild` set to true to allow file
   object creation in content processes
 
 ### Changed
 
+- Log all used application arguments and not only `-marionette`
+
 - Early abort connection attempts to Marionette if the Firefox process
   closed unexpectetly
 
 - Removed deprecated `socksProxyVersion` in favor of `socksVersion`
 
 - Removed `ftpProxyPort`, `httpProxyPort`, `sslProxyPort`, and
   `socksProxyPort` because _ports_ have to be set for `ftpProxy`,
   `httpProxy`, `sslProxy`, and `socksProxy` using ":<PORT>"
@@ -36,17 +38,17 @@ Unreleased
   `path`, containing an addon as a Base64 string
 
 - The [`WindowRectParameters`] have been updated to return signed 32-bit
   integers in accordance with the CSS and WebDriver specifications, and
   to be more liberal with the input types
 
 - [webdriver crate] upgraded to version 0.30.0
 
-- [mozrunner crate] upgraded to version 0.4.2
+- [mozrunner crate] upgraded to version 0.5.0
 
 
 0.18.0 (2017-07-10)
 -------------------
 
 ### Changed
 
 - [`RectResponse`] permits returning floats for `width` and `height`
--- a/testing/geckodriver/Cargo.toml
+++ b/testing/geckodriver/Cargo.toml
@@ -1,14 +1,15 @@
 [package]
 name = "geckodriver"
 version = "0.18.0"
 authors = [
   "James Graham <james@hoppipolla.co.uk>",
   "Andreas Tolfsen <ato@sny.no>",
+  "Henrik Skupin <mail@hskupin.info"
 ]
 description = "Proxy for using WebDriver clients to interact with Gecko-based browsers."
 keywords = ["webdriver", "w3c", "httpd", "mozilla", "firefox"]
 repository = "https://hg.mozilla.org/mozilla-central/file/tip/testing/geckodriver"
 readme = "README.md"
 license = "MPL-2.0"
 
 [dependencies]
--- a/testing/geckodriver/src/logging.rs
+++ b/testing/geckodriver/src/logging.rs
@@ -125,17 +125,18 @@ fn filtered_gecko_log(level: &LogLevel) 
 
 struct GeckoFormat;
 
 impl Format for GeckoFormat {
     fn format(&self, io: &mut io::Write, record: &Record, _: &OwnedKeyValueList) -> io::Result<()> {
         // TODO(ato): Quite sure this is the wrong way to filter records with slog,
         // but I do not comprehend how slog works.
         let module = record.module();
-        if module.starts_with("geckodriver") || module.starts_with("webdriver") {
+        if module.starts_with("geckodriver") || module.starts_with("webdriver") ||
+           module.starts_with("mozrunner") {
             let ts = format_ts(Local::now());
             let level = record.level().to_gecko();
             let _ = try!(write!(io, "{}\t{}\t{}\t{}\n", ts, module, level, record.msg()));
         }
         Ok(())
     }
 }
 
--- a/testing/geckodriver/src/marionette.rs
+++ b/testing/geckodriver/src/marionette.rs
@@ -461,17 +461,16 @@ impl MarionetteHandler {
         };
 
         try!(self.set_prefs(port, &mut runner.profile, custom_profile, options.prefs)
             .map_err(|e| {
                 WebDriverError::new(ErrorStatus::SessionNotCreated,
                                     format!("Failed to set preferences: {}", e))
             }));
 
-        info!("Starting browser {} with args {:?}", binary.display(), runner.args());
         try!(runner.start()
             .map_err(|e| {
                 WebDriverError::new(ErrorStatus::SessionNotCreated,
                                     format!("Failed to start browser {}: {}",
                                             binary.display(), e))
             }));
         self.browser = Some(runner);