From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eduardo Bellani Subject: [PATCH] Fix table variable with commas in ob-sqlite Date: Tue, 05 Sep 2017 18:17:22 -0300 Message-ID: <87zia8yhel.fsf@brickabode.com> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57090) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dpLE8-0008Q2-PY for emacs-orgmode@gnu.org; Tue, 05 Sep 2017 17:17:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dpLE3-0005Qb-OD for emacs-orgmode@gnu.org; Tue, 05 Sep 2017 17:17:44 -0400 Received: from mail-vk0-x229.google.com ([2607:f8b0:400c:c05::229]:33906) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dpLE3-0005Q7-JW for emacs-orgmode@gnu.org; Tue, 05 Sep 2017 17:17:39 -0400 Received: by mail-vk0-x229.google.com with SMTP id o22so9167105vke.1 for ; Tue, 05 Sep 2017 14:17:38 -0700 (PDT) Received: from personal ([189.4.72.113]) by smtp.gmail.com with ESMTPSA id x194sm313260vke.39.2017.09.05.14.17.35 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 05 Sep 2017 14:17:36 -0700 (PDT) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: emacs-orgmode@gnu.org --=-=-= Content-Type: text/plain 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 -- --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEARECAAYFAlmvFGIACgkQSbLl0kCTjGkcXgCfVOo4Qby+iuGcg7Xax51pljpG JZkAni332RR8VvoJ7Ubx6igxAClDUrd+ =v3s3 -----END PGP SIGNATURE----- --=-=-=--