瀏覽代碼

Merge pull request #836 from ariasuni/fix-exa-grid-rows

Fix `EXA_GRID_ROWS` not working in some cases
Benjamin Sago 4 年之前
父節點
當前提交
f3ae6a9bd9

+ 10 - 11
src/output/grid_details.rs

@@ -174,22 +174,21 @@ impl<'a> Render<'a> {
             };
 
             if the_grid_fits {
-                if column_count == file_names.len() {
-                    return Some((grid, column_count));
-                } else { 
-                    last_working_grid = grid;
-                }
-            } else {
-                // If we’ve figured out how many columns can fit in the user’s
-                // terminal, and it turns out there aren’t enough rows to
-                // make it worthwhile, then just resort to the lines view.
+                last_working_grid = grid;
+            }
+            
+            if !the_grid_fits || column_count == file_names.len() {
+                let last_column_count = if the_grid_fits { column_count } else { column_count - 1 };
+                // If we’ve figured out how many columns can fit in the user’s terminal,
+                // and it turns out there aren’t enough rows to make it worthwhile
+                // (according to EXA_GRID_ROWS), then just resort to the lines view.
                 if let RowThreshold::MinimumRows(thresh) = self.row_threshold {
-                    if last_working_grid.fit_into_columns(column_count - 1).row_count() < thresh {
+                    if last_working_grid.fit_into_columns(last_column_count).row_count() < thresh {
                         return None;
                     }
                 }
 
-                return Some((last_working_grid, column_count - 1));
+                return Some((last_working_grid, last_column_count));
             }
         }
 

+ 34 - 4
xtests/grid-details-view.toml

@@ -81,19 +81,49 @@ tags = [ 'env', 'long', 'grid' ]
 # check if exa is using the minimum number of columns with headers
 
 [[cmd]]
-name = "‘COLUMN=200 exa -lGh’ with one file don’t produce extra columns even if there place for more"
+name = "‘COLUMNS=200 exa -lGh’ with one file don’t produce extra columns even if there place for more"
 shell = "exa -lGh /testcases/files/10_bytes"
 environment = { COLUMNS = "200" }
-stdout = { file = "outputs/files_paths_long_grid_header_1file.ansitxt" }
+stdout = { file = "outputs/files_long_grid_header_1file.ansitxt" }
 stderr = { empty = true }
 status = 0
 tags = [ 'env', 'long', 'grid' ]
 
 [[cmd]]
-name = "‘COLUMN=200 exa -lGh’ with several files don’t produce extra columns even if there place for more"
+name = "‘COLUMNS=200 exa -lGh’ with several files don’t produce extra columns even if there place for more"
 shell = "exa -lGh /testcases/files/10_{bytes,KiB}"
 environment = { COLUMNS = "200" }
-stdout = { file = "outputs/files_paths_long_grid_header_2files.ansitxt" }
+stdout = { file = "outputs/files_long_grid_header_2files.ansitxt" }
+stderr = { empty = true }
+status = 0
+tags = [ 'env', 'long', 'grid' ]
+
+
+# check if EXA_GRID_ROWS is working
+
+[[cmd]]
+name = "‘COLUMNS=200 EXA_GRID_ROWS=2 exa -lG’ with three files produces a grid details of 1 column"
+shell = "exa -lG /testcases/files/1_*"
+environment = { COLUMNS = "200", EXA_GRID_ROWS = "2" }
+stdout = { file = "outputs/files_long_grid_exa_grid_rows_2_3files.ansitxt" }
+stderr = { empty = true }
+status = 0
+tags = [ 'env', 'long', 'grid' ]
+
+[[cmd]]
+name = "‘COLUMNS=200 EXA_GRID_ROWS=5 exa -lG’ with 15 files produces a grid details of 3 columns"
+shell = "exa -lG /testcases/files/1*"
+environment = { COLUMNS = "200", EXA_GRID_ROWS = "5" }
+stdout = { file = "outputs/files_long_grid_exa_grid_rows_5_15files.ansitxt" }
+stderr = { empty = true }
+status = 0
+tags = [ 'env', 'long', 'grid' ]
+
+[[cmd]]
+name = "‘COLUMNS=200 EXA_GRID_ROWS=6 exa -lG’ with 15 files produces a grid details of 1 column"
+shell = "exa -lG /testcases/files/1*"
+environment = { COLUMNS = "200", EXA_GRID_ROWS = "6" }
+stdout = { file = "outputs/files_long_grid_exa_grid_rows_6_15files.ansitxt" }
 stderr = { empty = true }
 status = 0
 tags = [ 'env', 'long', 'grid' ]

+ 3 - 0
xtests/outputs/files_long_grid_exa_grid_rows_2_3files.ansitxt

@@ -0,0 +1,3 @@
+.rw-r--r--    1 cassowary  1 Jan 12:34 /testcases/files/1_bytes
+.rw-r--r-- 1.0k cassowary  1 Jan 12:34 /testcases/files/1_KiB
+.rw-r--r-- 1.0M cassowary  1 Jan 12:34 /testcases/files/1_MiB

+ 5 - 0
xtests/outputs/files_long_grid_exa_grid_rows_5_15files.ansitxt

@@ -0,0 +1,5 @@
+.rw-r--r--  10 cassowary  1 Jan 12:34 /testcases/files/10_bytes    .rw-r--r-- 12M cassowary  1 Jan 12:34 /testcases/files/11_MiB      .rw-r--r--  13k cassowary  1 Jan 12:34 /testcases/files/13_KiB
+.rw-r--r-- 10k cassowary  1 Jan 12:34 /testcases/files/10_KiB      .rw-r--r--  12 cassowary  1 Jan 12:34 /testcases/files/12_bytes    .rw-r--r--  14M cassowary  1 Jan 12:34 /testcases/files/13_MiB
+.rw-r--r-- 10M cassowary  1 Jan 12:34 /testcases/files/10_MiB      .rw-r--r-- 12k cassowary  1 Jan 12:34 /testcases/files/12_KiB      .rw-r--r--    1 cassowary  1 Jan 12:34 /testcases/files/1_bytes
+.rw-r--r--  11 cassowary  1 Jan 12:34 /testcases/files/11_bytes    .rw-r--r-- 13M cassowary  1 Jan 12:34 /testcases/files/12_MiB      .rw-r--r-- 1.0k cassowary  1 Jan 12:34 /testcases/files/1_KiB
+.rw-r--r-- 11k cassowary  1 Jan 12:34 /testcases/files/11_KiB      .rw-r--r--  13 cassowary  1 Jan 12:34 /testcases/files/13_bytes    .rw-r--r-- 1.0M cassowary  1 Jan 12:34 /testcases/files/1_MiB

+ 15 - 0
xtests/outputs/files_long_grid_exa_grid_rows_6_15files.ansitxt

@@ -0,0 +1,15 @@
+.rw-r--r--    1 cassowary  1 Jan 12:34 /testcases/files/1_bytes
+.rw-r--r-- 1.0k cassowary  1 Jan 12:34 /testcases/files/1_KiB
+.rw-r--r-- 1.0M cassowary  1 Jan 12:34 /testcases/files/1_MiB
+.rw-r--r--   10 cassowary  1 Jan 12:34 /testcases/files/10_bytes
+.rw-r--r--  10k cassowary  1 Jan 12:34 /testcases/files/10_KiB
+.rw-r--r--  10M cassowary  1 Jan 12:34 /testcases/files/10_MiB
+.rw-r--r--   11 cassowary  1 Jan 12:34 /testcases/files/11_bytes
+.rw-r--r--  11k cassowary  1 Jan 12:34 /testcases/files/11_KiB
+.rw-r--r--  12M cassowary  1 Jan 12:34 /testcases/files/11_MiB
+.rw-r--r--   12 cassowary  1 Jan 12:34 /testcases/files/12_bytes
+.rw-r--r--  12k cassowary  1 Jan 12:34 /testcases/files/12_KiB
+.rw-r--r--  13M cassowary  1 Jan 12:34 /testcases/files/12_MiB
+.rw-r--r--   13 cassowary  1 Jan 12:34 /testcases/files/13_bytes
+.rw-r--r--  13k cassowary  1 Jan 12:34 /testcases/files/13_KiB
+.rw-r--r--  14M cassowary  1 Jan 12:34 /testcases/files/13_MiB

+ 0 - 0
xtests/outputs/files_paths_long_grid_header_1file.ansitxt → xtests/outputs/files_long_grid_header_1file.ansitxt


+ 0 - 0
xtests/outputs/files_paths_long_grid_header_2files.ansitxt → xtests/outputs/files_long_grid_header_2files.ansitxt