Просмотр исходного кода

Integrate strict mode, use it to test file sizes

It’s a good test to be able to switch strict mode on in run.sh and not have it break anything! Now, the EXA_STRICT environment variable will toggle it on. We can even switch it off and see that it doesn’t error.
Benjamin Sago 8 лет назад
Родитель
Сommit
adaa36e1c5
5 измененных файлов с 103 добавлено и 1 удалено
  1. 7 1
      src/options/mod.rs
  2. 1 0
      xtests/errors_useless
  3. 39 0
      xtests/files_l_binary
  4. 39 0
      xtests/files_l_bytes
  5. 17 0
      xtests/run.sh

+ 7 - 1
src/options/mod.rs

@@ -121,7 +121,13 @@ impl Options {
           V: Vars {
         use options::parser::{Matches, Strictness};
 
-        let Matches { flags, frees } = match flags::ALL_ARGS.parse(args, Strictness::UseLastArguments) {
+        let strictness = match vars.get("EXA_STRICT") {
+            None                         => Strictness::UseLastArguments,
+            Some(ref t) if t.is_empty()  => Strictness::UseLastArguments,
+            _                            => Strictness::ComplainAboutRedundantArguments,
+        };
+
+        let Matches { flags, frees } = match flags::ALL_ARGS.parse(args, strictness) {
             Ok(m)   => m,
             Err(e)  => return Err(Misfire::InvalidOptions(e)),
         };

+ 1 - 0
xtests/errors_useless

@@ -0,0 +1 @@
+Option --binary (-b) is useless without option --long (-l).

+ 39 - 0
xtests/files_l_binary

@@ -0,0 +1,39 @@
+.rw-r--r-- 1.0Ki cassowary  1 Jan 12:34 1_KiB
+.rw-r--r-- 1.0Mi cassowary  1 Jan 12:34 1_MiB
+.rw-r--r--     1 cassowary  1 Jan 12:34 1_bytes
+.rw-r--r-- 2.0Ki cassowary  1 Jan 12:34 2_KiB
+.rw-r--r-- 2.0Mi cassowary  1 Jan 12:34 2_MiB
+.rw-r--r--     2 cassowary  1 Jan 12:34 2_bytes
+.rw-r--r-- 3.0Ki cassowary  1 Jan 12:34 3_KiB
+.rw-r--r-- 3.0Mi cassowary  1 Jan 12:34 3_MiB
+.rw-r--r--     3 cassowary  1 Jan 12:34 3_bytes
+.rw-r--r-- 4.0Ki cassowary  1 Jan 12:34 4_KiB
+.rw-r--r-- 4.0Mi cassowary  1 Jan 12:34 4_MiB
+.rw-r--r--     4 cassowary  1 Jan 12:34 4_bytes
+.rw-r--r-- 5.0Ki cassowary  1 Jan 12:34 5_KiB
+.rw-r--r-- 5.0Mi cassowary  1 Jan 12:34 5_MiB
+.rw-r--r--     5 cassowary  1 Jan 12:34 5_bytes
+.rw-r--r-- 6.0Ki cassowary  1 Jan 12:34 6_KiB
+.rw-r--r-- 6.0Mi cassowary  1 Jan 12:34 6_MiB
+.rw-r--r--     6 cassowary  1 Jan 12:34 6_bytes
+.rw-r--r-- 7.0Ki cassowary  1 Jan 12:34 7_KiB
+.rw-r--r-- 7.0Mi cassowary  1 Jan 12:34 7_MiB
+.rw-r--r--     7 cassowary  1 Jan 12:34 7_bytes
+.rw-r--r-- 8.0Ki cassowary  1 Jan 12:34 8_KiB
+.rw-r--r-- 8.0Mi cassowary  1 Jan 12:34 8_MiB
+.rw-r--r--     8 cassowary  1 Jan 12:34 8_bytes
+.rw-r--r-- 9.0Ki cassowary  1 Jan 12:34 9_KiB
+.rw-r--r-- 9.0Mi cassowary  1 Jan 12:34 9_MiB
+.rw-r--r--     9 cassowary  1 Jan 12:34 9_bytes
+.rw-r--r--  10Ki cassowary  1 Jan 12:34 10_KiB
+.rw-r--r--  10Mi cassowary  1 Jan 12:34 10_MiB
+.rw-r--r--    10 cassowary  1 Jan 12:34 10_bytes
+.rw-r--r--  11Ki cassowary  1 Jan 12:34 11_KiB
+.rw-r--r--  11Mi cassowary  1 Jan 12:34 11_MiB
+.rw-r--r--    11 cassowary  1 Jan 12:34 11_bytes
+.rw-r--r--  12Ki cassowary  1 Jan 12:34 12_KiB
+.rw-r--r--  12Mi cassowary  1 Jan 12:34 12_MiB
+.rw-r--r--    12 cassowary  1 Jan 12:34 12_bytes
+.rw-r--r--  13Ki cassowary  1 Jan 12:34 13_KiB
+.rw-r--r--  13Mi cassowary  1 Jan 12:34 13_MiB
+.rw-r--r--    13 cassowary  1 Jan 12:34 13_bytes

+ 39 - 0
xtests/files_l_bytes

@@ -0,0 +1,39 @@
+.rw-r--r--      1,024 cassowary  1 Jan 12:34 1_KiB
+.rw-r--r--  1,048,576 cassowary  1 Jan 12:34 1_MiB
+.rw-r--r--          1 cassowary  1 Jan 12:34 1_bytes
+.rw-r--r--      2,048 cassowary  1 Jan 12:34 2_KiB
+.rw-r--r--  2,097,152 cassowary  1 Jan 12:34 2_MiB
+.rw-r--r--          2 cassowary  1 Jan 12:34 2_bytes
+.rw-r--r--      3,072 cassowary  1 Jan 12:34 3_KiB
+.rw-r--r--  3,145,728 cassowary  1 Jan 12:34 3_MiB
+.rw-r--r--          3 cassowary  1 Jan 12:34 3_bytes
+.rw-r--r--      4,096 cassowary  1 Jan 12:34 4_KiB
+.rw-r--r--  4,194,304 cassowary  1 Jan 12:34 4_MiB
+.rw-r--r--          4 cassowary  1 Jan 12:34 4_bytes
+.rw-r--r--      5,120 cassowary  1 Jan 12:34 5_KiB
+.rw-r--r--  5,242,880 cassowary  1 Jan 12:34 5_MiB
+.rw-r--r--          5 cassowary  1 Jan 12:34 5_bytes
+.rw-r--r--      6,144 cassowary  1 Jan 12:34 6_KiB
+.rw-r--r--  6,291,456 cassowary  1 Jan 12:34 6_MiB
+.rw-r--r--          6 cassowary  1 Jan 12:34 6_bytes
+.rw-r--r--      7,168 cassowary  1 Jan 12:34 7_KiB
+.rw-r--r--  7,340,032 cassowary  1 Jan 12:34 7_MiB
+.rw-r--r--          7 cassowary  1 Jan 12:34 7_bytes
+.rw-r--r--      8,192 cassowary  1 Jan 12:34 8_KiB
+.rw-r--r--  8,388,608 cassowary  1 Jan 12:34 8_MiB
+.rw-r--r--          8 cassowary  1 Jan 12:34 8_bytes
+.rw-r--r--      9,216 cassowary  1 Jan 12:34 9_KiB
+.rw-r--r--  9,437,184 cassowary  1 Jan 12:34 9_MiB
+.rw-r--r--          9 cassowary  1 Jan 12:34 9_bytes
+.rw-r--r--     10,240 cassowary  1 Jan 12:34 10_KiB
+.rw-r--r-- 10,485,760 cassowary  1 Jan 12:34 10_MiB
+.rw-r--r--         10 cassowary  1 Jan 12:34 10_bytes
+.rw-r--r--     11,264 cassowary  1 Jan 12:34 11_KiB
+.rw-r--r-- 11,534,336 cassowary  1 Jan 12:34 11_MiB
+.rw-r--r--         11 cassowary  1 Jan 12:34 11_bytes
+.rw-r--r--     12,288 cassowary  1 Jan 12:34 12_KiB
+.rw-r--r-- 12,582,912 cassowary  1 Jan 12:34 12_MiB
+.rw-r--r--         12 cassowary  1 Jan 12:34 12_bytes
+.rw-r--r--     13,312 cassowary  1 Jan 12:34 13_KiB
+.rw-r--r-- 13,631,488 cassowary  1 Jan 12:34 13_MiB
+.rw-r--r--         13 cassowary  1 Jan 12:34 13_bytes

+ 17 - 0
xtests/run.sh

@@ -15,6 +15,11 @@ testcases="/testcases"
 results="/vagrant/xtests"
 
 
+# We want to use strict mode here. It’s important that no combination of
+# testing flags happens to work by accident!
+export EXA_STRICT=1
+
+
 # Check that no files were created more than a year ago.
 # Files not from the current year use a different date format, meaning
 # that tests will fail until the VM gets re-provisioned.
@@ -56,6 +61,14 @@ COLUMNS=150 $exa $testcases/files/* -lG | diff -q - $results/files_star_lG_150
 COLUMNS=200 $exa $testcases/files/* -lG | diff -q - $results/files_star_lG_200  || exit 1
 
 
+# File size tests
+$exa $testcases/files -l --binary | diff -q - $results/files_l_binary  || exit 1
+$exa $testcases/files -l --bytes  | diff -q - $results/files_l_bytes   || exit 1
+
+EXA_STRICT= $exa $testcases/files -l --bytes --binary   | diff -q - $results/files_l_binary  || exit 1
+EXA_STRICT= $exa $testcases/files -l --binary --bytes   | diff -q - $results/files_l_bytes   || exit 1
+
+
 # Attributes
 # (there are many tests, but they’re all done in one go)
 $exa $testcases/attributes  -l@T | diff -q - $results/attributes        || exit 1
@@ -164,6 +177,10 @@ $exa $testcases/hiddens -l -a  2>&1 | diff -q - $results/hiddens_la   || exit 1
 $exa $testcases/hiddens -l -aa 2>&1 | diff -q - $results/hiddens_laa  || exit 1
 
 
+# Errors
+$exa --binary 2>&1 | diff -q - $results/errors_useless  || exit 1
+
+
 # And finally...
 $exa --help        | diff -q - $results/help      || exit 1
 $exa --help --long | diff -q - $results/help_long || exit 1