about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-08-11 11:06:08 +0000
committerbors <bors@rust-lang.org>2014-08-11 11:06:08 +0000
commit6faad3ec3aba8e9ea7c68331b7c6561890929658 (patch)
tree4b5a4f08fcae1e7ce82d3623e40a307de532abd1
parent5e720f0e5453e7b113f313df7827f3ad0a6dbe46 (diff)
parent81241dce8036c6e84e5640c179f53bf8cfc038a6 (diff)
downloadrust-6faad3ec3aba8e9ea7c68331b7c6561890929658.tar.gz
rust-6faad3ec3aba8e9ea7c68331b7c6561890929658.zip
auto merge of #16416 : nick29581/rust/log, r=pnkfelix
Previously we would accept an empty log level without an equals sign, but not with one. This addresses that minor nit. E.g., `RUST_LOG=rustc::middle::trans=` will work the same as `RUST_LOG=rustc::middle::trans`.
-rw-r--r--src/liblog/directive.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/liblog/directive.rs b/src/liblog/directive.rs
index a8def3e289d..d692c99e8c2 100644
--- a/src/liblog/directive.rs
+++ b/src/liblog/directive.rs
@@ -38,7 +38,7 @@ pub fn parse_logging_spec(spec: &str) -> Vec<LogDirective> {
     for s in spec.split(',') {
         if s.len() == 0 { continue }
         let mut parts = s.split('=');
-        let (log_level, name) = match (parts.next(), parts.next(), parts.next()) {
+        let (log_level, name) = match (parts.next(), parts.next().map(|s| s.trim()), parts.next()) {
             (Some(part0), None, None) => {
                 // if the single argument is a log-level string or number,
                 // treat that as a global fallback
@@ -47,6 +47,7 @@ pub fn parse_logging_spec(spec: &str) -> Vec<LogDirective> {
                     None => (::MAX_LOG_LEVEL, Some(part0)),
                 }
             }
+            (Some(part0), Some(""), None) => (::MAX_LOG_LEVEL, Some(part0)),
             (Some(part0), Some(part1), None) => {
                 match parse_log_level(part1) {
                     Some(num) => (num, Some(part0)),
@@ -121,6 +122,16 @@ mod tests {
     }
 
     #[test]
+    fn parse_logging_spec_empty_log_level() {
+        // test parse_logging_spec with '' as log level
+        let dirs = parse_logging_spec("crate1::mod1=wrong,crate2=");
+        let dirs = dirs.as_slice();
+        assert_eq!(dirs.len(), 1);
+        assert_eq!(dirs[0].name, Some("crate2".to_string()));
+        assert_eq!(dirs[0].level, ::MAX_LOG_LEVEL);
+    }
+
+    #[test]
     fn parse_logging_spec_global() {
         // test parse_logging_spec with no crate
         let dirs = parse_logging_spec("warn,crate2=4");