diff --git a/src/output/grid_details.rs b/src/output/grid_details.rs index df8e53c..35ff023 100644 --- a/src/output/grid_details.rs +++ b/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)); } } diff --git a/xtests/grid-details-view.toml b/xtests/grid-details-view.toml index a76ba15..3488acf 100644 --- a/xtests/grid-details-view.toml +++ b/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' ] diff --git a/xtests/outputs/files_long_grid_exa_grid_rows_2_3files.ansitxt b/xtests/outputs/files_long_grid_exa_grid_rows_2_3files.ansitxt new file mode 100644 index 0000000..1a50d75 --- /dev/null +++ b/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 diff --git a/xtests/outputs/files_long_grid_exa_grid_rows_5_15files.ansitxt b/xtests/outputs/files_long_grid_exa_grid_rows_5_15files.ansitxt new file mode 100644 index 0000000..e02074e --- /dev/null +++ b/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 diff --git a/xtests/outputs/files_long_grid_exa_grid_rows_6_15files.ansitxt b/xtests/outputs/files_long_grid_exa_grid_rows_6_15files.ansitxt new file mode 100644 index 0000000..98ff7d1 --- /dev/null +++ b/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 diff --git a/xtests/outputs/files_paths_long_grid_header_1file.ansitxt b/xtests/outputs/files_long_grid_header_1file.ansitxt similarity index 100% rename from xtests/outputs/files_paths_long_grid_header_1file.ansitxt rename to xtests/outputs/files_long_grid_header_1file.ansitxt diff --git a/xtests/outputs/files_paths_long_grid_header_2files.ansitxt b/xtests/outputs/files_long_grid_header_2files.ansitxt similarity index 100% rename from xtests/outputs/files_paths_long_grid_header_2files.ansitxt rename to xtests/outputs/files_long_grid_header_2files.ansitxt