ob-sqlite.el: Enable table with fields containing commas to be used as arguments to sqlite source blocks * lisp/ob-sqlite.el: Stop interfering with the 'orgtbl-to-csv' default formatting. * testing/lisp/test-ob-sqlite.el:: Adds a test using a table with commas in the content of any of its fields as an argument for a sqlite source block. Use the 'org-test-with-temp-text' pattern. The problem here was that ob-sqlite was providing a format to the 'orgtbl-to-csv' that actually overwrote the default format in that function, and in the case where there were commas in the content of the table, broke the table as argument mechanism. TINYCHANGE --- lisp/ob-sqlite.el | 5 +---- testing/lisp/test-ob-sqlite.el | 45 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 testing/lisp/test-ob-sqlite.el diff --git a/lisp/ob-sqlite.el b/lisp/ob-sqlite.el index 8094019..f381f43 100644 --- a/lisp/ob-sqlite.el +++ b/lisp/ob-sqlite.el @@ -123,10 +123,7 @@ This function is called by `org-babel-execute-src-block'." (if (listp val) (let ((data-file (org-babel-temp-file "sqlite-data-"))) (with-temp-file data-file - (insert (orgtbl-to-csv - val '(:fmt (lambda (el) (if (stringp el) - el - (format "%S" el))))))) + (insert (orgtbl-to-csv val nil))) data-file) (if (stringp val) val (format "%S" val)))) body))) diff --git a/testing/lisp/test-ob-sqlite.el b/testing/lisp/test-ob-sqlite.el new file mode 100644 index 0000000..f732515 --- /dev/null +++ b/testing/lisp/test-ob-sqlite.el @@ -0,0 +1,45 @@ +;;; test-ob-sqlite.el --- tests for ob-sqlite.el + +;; Copyright (C) 2017 Eduardo Bellani + +;; Author: Eduardo Bellani +;; Keywords: lisp + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Code: +(org-test-for-executable "sqlite") +(unless (featurep 'ob-sqlite) + (signal 'missing-test-dependency "Support for sqlite code blocks")) + +(ert-deftest ob-sqlite/table-variables-with-commas () + "Test of a table variable that contains commas. This garantees that this code path results in a valid CSV." + (should + (equal '(("Mr Test A. Sql" + "Minister for Science, Eternal Happiness, and Finance")) + (org-test-with-temp-text + "#+name: test_table1 +| \"Mr Test A. Sql\" | Minister for Science, Eternal Happiness, and Finance | + +#+begin_src sqlite :db /tmp/test.db :var tb=test_table1 + drop table if exists TestTable; + create table TestTable(person, job); + .mode csv TestTable + .import $tb TestTable + select * from TestTable; +#+end_src" + (org-babel-next-src-block) + (org-babel-execute-src-block))))) + +;;; test-ob-sqlite.el ends here --