Browse Source

Strict mode and tests for colour scale

Benjamin Sago 8 years ago
parent
commit
30f3c6eb00
1 changed files with 13 additions and 3 deletions
  1. 13 3
      src/options/view.rs

+ 13 - 3
src/options/view.rs

@@ -390,8 +390,8 @@ impl Colours {
 
 
         let tc = TerminalColours::deduce(matches)?;
         let tc = TerminalColours::deduce(matches)?;
         if tc == Always || (tc == Automatic && TERM_WIDTH.is_some()) {
         if tc == Always || (tc == Automatic && TERM_WIDTH.is_some()) {
-            let scale = matches.has(&flags::COLOR_SCALE)? || matches.has(&flags::COLOUR_SCALE)?;
-            Ok(Colours::colourful(scale))
+            let scale = matches.has_where(|f| f.matches(&flags::COLOR_SCALE) || f.matches(&flags::COLOUR_SCALE))?;
+            Ok(Colours::colourful(scale.is_some()))
         }
         }
         else {
         else {
             Ok(Colours::plain())
             Ok(Colours::plain())
@@ -452,7 +452,7 @@ mod test {
 
 
     static TEST_ARGS: &[&Arg] = &[ &flags::BINARY, &flags::BYTES,    &flags::TIME_STYLE,
     static TEST_ARGS: &[&Arg] = &[ &flags::BINARY, &flags::BYTES,    &flags::TIME_STYLE,
                                    &flags::TIME,   &flags::MODIFIED, &flags::CREATED, &flags::ACCESSED,
                                    &flags::TIME,   &flags::MODIFIED, &flags::CREATED, &flags::ACCESSED,
-                                   &flags::COLOR,  &flags::COLOUR,
+                                   &flags::COLOR,  &flags::COLOUR,  &flags::COLOR_SCALE, &flags::COLOUR_SCALE,
                                    &flags::HEADER, &flags::GROUP,  &flags::INODE, &flags::GIT,
                                    &flags::HEADER, &flags::GROUP,  &flags::INODE, &flags::GIT,
                                    &flags::LINKS,  &flags::BLOCKS, &flags::LONG,  &flags::LEVEL,
                                    &flags::LINKS,  &flags::BLOCKS, &flags::LONG,  &flags::LEVEL,
                                    &flags::GRID,   &flags::ACROSS, &flags::ONE_LINE ];
                                    &flags::GRID,   &flags::ACROSS, &flags::ONE_LINE ];
@@ -641,6 +641,16 @@ mod test {
         test!(overridden_6: TerminalColours <- ["--color=auto",  "--colour=never"];  Complain => err Misfire::Duplicate(Flag::Long("color"),  Flag::Long("colour")));
         test!(overridden_6: TerminalColours <- ["--color=auto",  "--colour=never"];  Complain => err Misfire::Duplicate(Flag::Long("color"),  Flag::Long("colour")));
         test!(overridden_7: TerminalColours <- ["--colour=auto", "--color=never"];   Complain => err Misfire::Duplicate(Flag::Long("colour"), Flag::Long("color")));
         test!(overridden_7: TerminalColours <- ["--colour=auto", "--color=never"];   Complain => err Misfire::Duplicate(Flag::Long("colour"), Flag::Long("color")));
         test!(overridden_8: TerminalColours <- ["--color=auto",  "--color=never"];   Complain => err Misfire::Duplicate(Flag::Long("color"),  Flag::Long("color")));
         test!(overridden_8: TerminalColours <- ["--color=auto",  "--color=never"];   Complain => err Misfire::Duplicate(Flag::Long("color"),  Flag::Long("color")));
+
+        test!(scale_1: Colours <- ["--color=always", "--color-scale", "--colour-scale"];   Last => like Ok(Colours { scale: true,  .. }));
+        test!(scale_2: Colours <- ["--color=always", "--color-scale",                 ];   Last => like Ok(Colours { scale: true,  .. }));
+        test!(scale_3: Colours <- ["--color=always",                  "--colour-scale"];   Last => like Ok(Colours { scale: true,  .. }));
+        test!(scale_4: Colours <- ["--color=always",                                  ];   Last => like Ok(Colours { scale: false, .. }));
+
+        test!(scale_5: Colours <- ["--color=always", "--color-scale", "--colour-scale"];   Complain => err Misfire::Duplicate(Flag::Long("color-scale"),  Flag::Long("colour-scale")));
+        test!(scale_6: Colours <- ["--color=always", "--color-scale",                 ];   Complain => like Ok(Colours { scale: true,  .. }));
+        test!(scale_7: Colours <- ["--color=always",                  "--colour-scale"];   Complain => like Ok(Colours { scale: true,  .. }));
+        test!(scale_8: Colours <- ["--color=always",                                  ];   Complain => like Ok(Colours { scale: false, .. }));
     }
     }