From ac61ae92ad0ce2f0096dd1a14df76129947f4509 Mon Sep 17 00:00:00 2001 From: Marvin Klerx Date: Mon, 14 Sep 2026 23:41:18 +0200 Subject: [PATCH] fix: fixed issue-45 with single data row --- src/Tables/keywords/getter.py | 2 +- src/Tables/utils/file_reader.py | 4 ++- tests/atest/test_reader.robot | 31 ++++++++++++++++++++ tests/utest/keywords/test_keywords_getter.py | 10 +++++++ 4 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/Tables/keywords/getter.py b/src/Tables/keywords/getter.py index 77e7b2fa..3e70bb84 100644 --- a/src/Tables/keywords/getter.py +++ b/src/Tables/keywords/getter.py @@ -60,7 +60,7 @@ def read_table( if self.file_type == FileType.Parquet and not self.ignore_header: data.insert(0, list(table_df.columns)) - if self.ignore_header and self.file_type != FileType.Parquet: + if self.ignore_header and self.file_type != FileType.Parquet and len(data) > 1: table_df = table_df.iloc[1:] data = data[1:] diff --git a/src/Tables/utils/file_reader.py b/src/Tables/utils/file_reader.py index 5dbd49ac..e8f586c9 100644 --- a/src/Tables/utils/file_reader.py +++ b/src/Tables/utils/file_reader.py @@ -235,7 +235,9 @@ def validate_table_to_dataframe( column = self.cast_column_type(column) self.validate_column(data, column) - if self.file_type != FileType.Parquet and (isinstance(column, str) or self.ignore_header): + if self.file_type != FileType.Parquet and ( + isinstance(column, str) or (self.ignore_header and len(data) > 1) + ): data.columns = data.iloc[0].to_list() data = data[1:].reset_index(drop=True) return data diff --git a/tests/atest/test_reader.robot b/tests/atest/test_reader.robot index 38a1b3cc..cb5710ec 100644 --- a/tests/atest/test_reader.robot +++ b/tests/atest/test_reader.robot @@ -1,5 +1,6 @@ *** Settings *** Library Tables separator=, +Library OperatingSystem *** Test Cases *** @@ -162,6 +163,30 @@ CSV has No Headers - Open CSV Table and Not Ignore Header ${data} = Tables.Get Table Length Should Be ${data} ${57} +Issue 45 - Keep Single Data Row When Ignoring Header + [Teardown] Reset Issue 45 Test File + VAR @{single_row} = 11:00:00 230.56 + VAR @{table} = ${single_row} + ${file_path} = Set Variable ${TEMPDIR}${/}tablelibrary_issue45.csv + + Tables.Configure Ignore Header ${True} + Tables.Write Table ${table} ${file_path} + Tables.Open Table ${file_path} + ${data} = Tables.Get Table + Length Should Be ${data} ${1} + Length Should Be ${data}[0] ${2} + Should Be Equal As Strings ${data}[0][0] 11:00:00 + Should Be Equal As Strings ${data}[0][1] 230.56 + + Tables.Close Table + Tables.Configure Ignore Header ${False} + Tables.Open Table ${file_path} + ${data} = Tables.Get Table + Length Should Be ${data} ${1} + Length Should Be ${data}[0] ${2} + Should Be Equal As Strings ${data}[0][0] 11:00:00 + Should Be Equal As Strings ${data}[0][1] 230.56 + ######################################################################################## # TXT ######################################################################################## @@ -249,4 +274,10 @@ Read Row and Column Count - Parquet Tables.Count Table ${parquet_path} Rows == ${1000} Tables.Count Table ${parquet_path} Columns == ${2} +*** Keywords *** +Reset Issue 45 Test File + Tables.Close Table + Tables.Configure Ignore Header ${False} + Remove File ${TEMPDIR}${/}tablelibrary_issue45.csv + diff --git a/tests/utest/keywords/test_keywords_getter.py b/tests/utest/keywords/test_keywords_getter.py index 2da5d9da..05d0ea36 100644 --- a/tests/utest/keywords/test_keywords_getter.py +++ b/tests/utest/keywords/test_keywords_getter.py @@ -187,6 +187,16 @@ def test_getter_ignore_header(getter, tmp_path, write_csv): assert table == [ROW_1, ROW_2] +def test_getter_ignore_header_keeps_single_data_row(getter, tmp_path, write_csv): + path = tmp_path / "data.csv" + write_csv(path, [["11:00:00", 230.56]]) + getter.library.scope_stack["ignore_header"].set(True) + + getter.open_table(path, alias="t_single_row") + + assert getter.get_table() == [["11:00:00", 230.56]] + + def test_getter_invalid_assertion_operator(getter, tmp_path, write_csv): path = tmp_path / "data.csv" write_csv(path, ROWS)