diff options
author | Eduardo Bellani <ebellani@gmail.com> | 2017-09-05 18:17:22 -0300 |
---|---|---|
committer | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2017-09-06 13:18:30 +0200 |
commit | 6edec1bef56c5f27aff924c69e5393e0702a98df (patch) | |
tree | d5ede588836078fdc6dff7649d71b2fe38efba6d | |
parent | 601b8e1d52c36a75da1361074855d92f3da111b6 (diff) | |
download | org-mode-6edec1bef56c5f27aff924c69e5393e0702a98df.tar.gz |
Fix table variable with commas in ob-sqlite
* lisp/ob-sqlite.el (org-babel-sqlite-expand-vars): Stop interfering
with the 'orgtbl-to-csv' default formatting.
* testing/lisp/test-ob-sqlite.el: New file.
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
-rw-r--r-- | lisp/ob-sqlite.el | 5 | ||||
-rw-r--r-- | testing/lisp/test-ob-sqlite.el | 45 |
2 files changed, 46 insertions, 4 deletions
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 <ebellani@gmail.com> +;; 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 <http://www.gnu.org/licenses/>. + +;;; 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 |