From 16ea9f84f650a96ed248b555bd0cb312a8778330 Mon Sep 17 00:00:00 2001 From: Matt Trzcinski Date: Sat, 31 Dec 2022 12:56:51 -0500 Subject: [PATCH] Refactor ob-shell/bash-uses-assoc-arrays * testing/lisp/test-ob-shell.el (ob-shell/bash-uses-assoc-arrays): Split test cases into separate tests, `test-ob-shell/bash-uses-assoc-arrays' and `test-ob-shell/bash-uses-assoc-arrays-with-lists'. Rename prefix from "ob-shell" to "test-ob-shell". (ob-shell/bash-uses-assoc-arrays): Move comments from testing/examples/ob-shell-test.org to docstrings. (ob-shell/bash-uses-assoc-arrays): Remove dependency on testing/examples/ob-shell-test.org. --- testing/lisp/test-ob-shell.el | 53 +++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/testing/lisp/test-ob-shell.el b/testing/lisp/test-ob-shell.el index a39c99d9f..78267880b 100644 --- a/testing/lisp/test-ob-shell.el +++ b/testing/lisp/test-ob-shell.el @@ -118,21 +118,44 @@ echo ${table} (equal "bread 2 kg spaghetti 20 cm milk 50 dl" (org-trim (org-babel-execute-src-block)))))) -(ert-deftest ob-shell/bash-uses-assoc-arrays () - "Bash associative arrays" - (should - (equal "two" - (org-test-at-id - "bec1a5b0-4619-4450-a8c0-2a746b44bf8d" - (org-babel-next-src-block 2) - (org-trim (org-babel-execute-src-block))))) - ;; Bash associative arrays as strings for the row. - (should - (equal "20 cm" - (org-test-at-id - "82320a48-3409-49d7-85c9-5de1c6d3ff87" - (org-babel-next-src-block 2) - (org-trim (org-babel-execute-src-block)))))) +(ert-deftest test-ob-shell/bash-uses-assoc-arrays () + "Bash shell: support for associative arrays + +Bash will see a table that contains the first column as the +'index' of the associative array, and the second column as the +value. " + (org-test-with-temp-text + "#+NAME: sample_mapping_table +| first | one | +| second | two | +| third | three | + +#+begin_src bash :exports :results output results :var table=sample_mapping_table +echo ${table[second]} + +#+end_src " + (should + (equal "two" + (org-trim (org-babel-execute-src-block)))))) + +(ert-deftest test-ob-shell/bash-uses-assoc-arrays-with-lists () + "Bash shell: support for associative arrays with lists + +Bash will see an associative array that contains each row as a single +string. Bash cannot handle lists in associative arrays." + (org-test-with-temp-text + "#+NAME: sample_big_table +| bread | 2 | kg | +| spaghetti | 20 | cm | +| milk | 50 | dl | + +#+begin_src bash :exports results :results output :var table=sample_big_table +echo ${table[spaghetti]} + +#+end_src" + (should + (equal "20 cm" + (org-trim (org-babel-execute-src-block)))))) (ert-deftest ob-shell/simple-list () "Test list variables in shell."