|
5 | 5 | ;;; Code: |
6 | 6 |
|
7 | 7 | (load-file "./ob-sql.el") |
| 8 | + |
| 9 | +(require 'org) |
| 10 | +(require 'sql) |
| 11 | +(require 'ert) |
8 | 12 | (org-version nil t t) |
9 | 13 | ;; redefine (or patch...) |
10 | 14 | (defun sql-comint-sqlite (product &optional options buf-name) |
@@ -69,43 +73,70 @@ Compare the result against EXPECT." |
69 | 73 | (org-babel-next-src-block) |
70 | 74 | (org-babel-execute-src-block) |
71 | 75 | (message "=>\n%s" (results-block-contents)) |
72 | | - (should (string= expect (results-block-contents))) |
| 76 | + (should (equal expect (results-block-contents))) |
73 | 77 | ))))) |
74 | 78 |
|
75 | | -(defun sqlite-test (code expect) |
76 | | - "SQL test CODE block, EXPECT 'ing this result." |
| 79 | +(defun sqlite-test (code expect &optional header-args) |
| 80 | + "Test CODE block with optional HEADER-ARGS, EXPECT ing this result." |
| 81 | + (babel-block-test |
| 82 | + #'setup (concat "sql :engine sqlite :results raw " header-args) |
| 83 | + code expect)) |
| 84 | + |
| 85 | +(defun sqlite-test-table (code expect &optional header-args) |
| 86 | + "Test CODE block with optional HEADER-ARGS, EXPECT ing this result." |
77 | 87 | (babel-block-test |
78 | | - #'setup "sql :engine sqlite :session sqlite::tests :results raw" |
| 88 | + #'setup (concat "sql :engine sqlite :results table output " header-args) |
79 | 89 | code expect)) |
80 | 90 |
|
| 91 | +(ert-deftest 000-sqlite:test-select () |
| 92 | + "Basic select." |
| 93 | + (sqlite-test "select 1" "1\n" )) |
| 94 | + |
| 95 | +(ert-deftest 000-sqlite:test-session-select () |
| 96 | + "Basic select." |
| 97 | + (sqlite-test "select 1,2" "1|2\n" ":session sqlite::tests" )) |
| 98 | + |
| 99 | +(ert-deftest 000-sqlite:test-select-table () |
| 100 | + "Select table." |
| 101 | + (sqlite-test-table ".headers on |
| 102 | + select 1 as a, 2 as b;" '(("a" "b") (1 2)) nil)) |
| 103 | + |
81 | 104 | (ert-deftest 000-sqlite:test-header () |
82 | | - "Create table." |
| 105 | + "Hedaers off." |
83 | 106 | (sqlite-test ".headers off" nil)) |
84 | 107 |
|
85 | 108 |
|
86 | 109 | (ert-deftest 001-sqlite:test-create () |
87 | | - "Create table." |
| 110 | + "Header off, Create table." |
88 | 111 | (sqlite-test ".headers off |
89 | 112 |
|
90 | | -create table test(one varchar(10), two int);" nil)) |
| 113 | +create table test(one varchar(10), two int);" |
| 114 | + nil |
| 115 | + ":session sqlite::tests" |
| 116 | + )) |
91 | 117 |
|
92 | 118 | (ert-deftest 002-sqlite:test-insert () |
93 | 119 | "Insert into table." |
94 | | - (sqlite-test "insert into test values(\'hello\',\'world\');" nil)) |
| 120 | + (sqlite-test "insert into test values(\'hello\',\'world\');" |
| 121 | + nil |
| 122 | + ":session sqlite::tests")) |
95 | 123 |
|
96 | 124 | (ert-deftest 003-sqlite:test-select () |
97 | 125 | "Select from table." |
98 | 126 | (sqlite-test "select * from test;" |
99 | | - "hello|world\n")) |
| 127 | + "hello|world\n" |
| 128 | + ":session sqlite::tests")) |
100 | 129 |
|
101 | 130 | (ert-deftest 004-sqlite:test-filter-tabs () |
102 | 131 | "Insert with tabs." |
103 | 132 | (sqlite-test " |
104 | | - --create table test(x,y); |
105 | | - select * from test; |
| 133 | + --create table test(x,y); |
| 134 | + select * from test; |
106 | 135 |
|
107 | 136 | " |
108 | | - "hello|world\n")) |
| 137 | + "hello|world\n" |
| 138 | + ":session sqlite::tests" |
| 139 | + )) |
109 | 140 |
|
110 | 141 | ;; gh is on SQLite version 3.37.2 2022-01-06, |
111 | 142 | ;; and its error message is slightly different |
@@ -149,20 +180,20 @@ create table test(one varchar(10), two int);" nil)) |
149 | 180 | "one|two |
150 | 181 | sqlite|3.4 |
151 | 182 | 1|2 |
152 | | -")) |
| 183 | +" ":session sqlite::tests")) |
153 | 184 |
|
154 | 185 | ;; additionally, an error after a command can clutter the next shell |
155 | 186 | ;; |
156 | 187 |
|
157 | 188 | (defun pg-test (code expect) |
158 | | - "Test Postgres SQL CODE, with EXPECT 'ed result." |
| 189 | + "Test Postgres sql CODE, with EXPECT ed result." |
159 | 190 | (babel-block-test |
160 | 191 | #'setup |
161 | 192 | "sql :engine postgres :dbhost localhost :database pg :dbuser pg :dbpassword pg :results raw :var var=33" |
162 | 193 | code expect)) |
163 | 194 |
|
164 | 195 | (defun pg-test-session (code expect) |
165 | | - "Test Postgres SQL CODE, with EXPECT 'ed result." |
| 196 | + "Test Postgres SQL CODE in a session, with EXPECT ed result." |
166 | 197 | (babel-block-test |
167 | 198 | #'setup |
168 | 199 | "sql :engine postgres :dbhost localhost :database pg :dbuser pg :dbpassword pg :results raw \ |
|
0 commit comments