From d7d1e598de6bcc0912510066384999fa5f0f305e Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Fri, 1 Nov 2024 12:22:58 -0400 Subject: [PATCH] Minor: Document how to test for trailing whitespace --- datafusion/sqllogictest/README.md | 33 +++++++++++++++++++ .../sqllogictest/test_files/functions.slt | 17 ++++++++++ 2 files changed, 50 insertions(+) diff --git a/datafusion/sqllogictest/README.md b/datafusion/sqllogictest/README.md index 5becc75c985a..901fb19e43a2 100644 --- a/datafusion/sqllogictest/README.md +++ b/datafusion/sqllogictest/README.md @@ -102,6 +102,39 @@ SELECT * from foo; Assuming it looks good, check it in! +## Cookbook: Testing for whitespace + +The `sqllogictest` runner will automatically strip trailing whitespace, meaning +it additional effort to verify that trailing whitespace is correctly produced + +For example, the following test can't distinguish between `Andrew` and `Andrew ` +(with trailing space): + +```text +query T +select substr('Andrew Lamb', 1, 7) +---- +Andrew +``` + +To test trailing whitespace, project additional non-whitespace column on the +right. For example, by selecting `'XX'` after the column of interest, the test +can distinguish between `Andrew` and `Andrew `: + +```text +# Note two spaces between `Andrew` and `XX` +query TT +select substr('Andrew Lamb', 1, 7), 'XX'; +---- +Andrew XX + +# Note only one space between `Andrew` and `XX` +query TT +select substr('Andrew Lamb', 1, 6), 'XX'; +---- +Andrew XX +``` + # Reference ## Running tests: Validation Mode diff --git a/datafusion/sqllogictest/test_files/functions.slt b/datafusion/sqllogictest/test_files/functions.slt index 5b6017b08a00..5bc3d2b6b220 100644 --- a/datafusion/sqllogictest/test_files/functions.slt +++ b/datafusion/sqllogictest/test_files/functions.slt @@ -735,3 +735,20 @@ query B select contains('', ''); ---- true + + +## Demonstrate how to test for trailing whitespace +query T +select substr('Andrew Lamb', 1, 7) +---- +Andrew + +query TT +select substr('Andrew Lamb', 1, 7), 'XX' +---- +Andrew XX + +query TT +select substr('Andrew Lamb', 1, 6), 'XX' +---- +Andrew XX