diff options
| author | Michael R. Mauger | 2019-04-24 20:59:25 -0400 |
|---|---|---|
| committer | Michael R. Mauger | 2019-04-24 20:59:25 -0400 |
| commit | a1386fa6a7698c04902354cd5fefb39056b0a901 (patch) | |
| tree | 9d4ee7ae5b4d3cc13e0b88a445ec2e1c35e36117 /test | |
| parent | 2bf957394cdcb93396966d3289f5e200886cb424 (diff) | |
| download | emacs-a1386fa6a7698c04902354cd5fefb39056b0a901.tar.gz emacs-a1386fa6a7698c04902354cd5fefb39056b0a901.zip | |
* lisp/progmodes/sql.el
(sql-is-sqli-buffer-p): New function.
(sql-generate-unique-sqli-buffer-name): Refactor and use it.
(sql-product-interactive): Simplify name logic.
* test/lisp/progmodes/sql-tests.el
(sql-tests-placeholder-filter-harness): New macro.
(sql-tests-placeholder-filter-simple)
(sql-tests-placeholder-filter-ampersand)
(sql-tests-placeholder-filter-period): Refactored tests and use macro.
(sql-tests-buffer-naming-harness): New macro.
(sql-tests-buffer-naming-default)
(sql-tests-buffer-naming-multiple)
(sql-tests-buffer-naming-explicit)
(sql-tests-buffer-naming-universal-argument)
(sql-tests-buffer-naming-existing): New tests.
Diffstat (limited to 'test')
| -rw-r--r-- | test/lisp/progmodes/sql-tests.el | 167 |
1 files changed, 136 insertions, 31 deletions
diff --git a/test/lisp/progmodes/sql-tests.el b/test/lisp/progmodes/sql-tests.el index 5ac34907c2d..ad1f7976526 100644 --- a/test/lisp/progmodes/sql-tests.el +++ b/test/lisp/progmodes/sql-tests.el | |||
| @@ -271,37 +271,142 @@ Perform ACTION and validate results" | |||
| 271 | (should-not (sql-get-product-feature 'd :Z)))) | 271 | (should-not (sql-get-product-feature 'd :Z)))) |
| 272 | 272 | ||
| 273 | ;;; SQL Oracle SCAN/DEFINE | 273 | ;;; SQL Oracle SCAN/DEFINE |
| 274 | (ert-deftest sql-tests-placeholder-filter () | 274 | (defmacro sql-tests-placeholder-filter-harness (orig repl outp) |
| 275 | "Test that placeholder relacement is as expected." | 275 | "Set-up and tear-down of testing of placeholder filter. |
| 276 | (let ((syntab (syntax-table)) | 276 | |
| 277 | (sql-oracle-scan-on t) | 277 | The placeholder in ORIG will be replaced by REPL which should |
| 278 | (placeholder-value "")) | 278 | yield OUTP." |
| 279 | (set-syntax-table sql-mode-syntax-table) | 279 | |
| 280 | 280 | (declare (indent 0)) | |
| 281 | (cl-letf | 281 | `(let ((syntab (syntax-table)) |
| 282 | (((symbol-function 'read-from-minibuffer) | 282 | (sql-oracle-scan-on t)) |
| 283 | (lambda (&rest _) placeholder-value))) | 283 | (set-syntax-table sql-mode-syntax-table) |
| 284 | 284 | ||
| 285 | (setq placeholder-value "XX") | 285 | (cl-letf |
| 286 | (should (equal | 286 | (((symbol-function 'read-from-minibuffer) |
| 287 | (sql-placeholders-filter "select '&x' from dual;") | 287 | (lambda (&rest _) ,repl))) |
| 288 | "select 'XX' from dual;")) | 288 | |
| 289 | 289 | (should (equal (sql-placeholders-filter ,orig) ,outp))) | |
| 290 | (setq placeholder-value "&Y") | 290 | |
| 291 | (should (equal | 291 | (set-syntax-table syntab))) |
| 292 | (sql-placeholders-filter "select '&x' from dual;") | 292 | |
| 293 | "select '&Y' from dual;")) | 293 | (ert-deftest sql-tests-placeholder-filter-simple () |
| 294 | (should (equal | 294 | "Test that placeholder relacement of simple replacement text." |
| 295 | (sql-placeholders-filter "select '&x' from dual;") | 295 | (sql-tests-placeholder-filter-harness |
| 296 | "select '&Y' from dual;")) | 296 | "select '&x' from dual;" "XX" |
| 297 | (should (equal | 297 | "select 'XX' from dual;")) |
| 298 | (sql-placeholders-filter "select '&x.' from dual;") | 298 | |
| 299 | "select '&Y' from dual;")) | 299 | (ert-deftest sql-tests-placeholder-filter-ampersand () |
| 300 | (should (equal | 300 | "Test that placeholder relacement of replacement text with ampersand." |
| 301 | (sql-placeholders-filter "select '&x.y' from dual;") | 301 | (sql-tests-placeholder-filter-harness |
| 302 | "select '&Yy' from dual;"))) | 302 | "select '&x' from dual;" "&Y" |
| 303 | 303 | "select '&Y' from dual;") | |
| 304 | (set-syntax-table syntab))) | 304 | |
| 305 | (sql-tests-placeholder-filter-harness | ||
| 306 | "select '&x' from dual;" "Y&" | ||
| 307 | "select 'Y&' from dual;") | ||
| 308 | |||
| 309 | (sql-tests-placeholder-filter-harness | ||
| 310 | "select '&x' from dual;" "Y&Y" | ||
| 311 | "select 'Y&Y' from dual;")) | ||
| 312 | |||
| 313 | (ert-deftest sql-tests-placeholder-filter-period () | ||
| 314 | "Test that placeholder relacement of token terminated by a period." | ||
| 315 | (sql-tests-placeholder-filter-harness | ||
| 316 | "select '&x.' from dual;" "&Y" | ||
| 317 | "select '&Y' from dual;") | ||
| 318 | |||
| 319 | (sql-tests-placeholder-filter-harness | ||
| 320 | "select '&x.y' from dual;" "&Y" | ||
| 321 | "select '&Yy' from dual;") | ||
| 322 | |||
| 323 | (sql-tests-placeholder-filter-harness | ||
| 324 | "select '&x..y' from dual;" "&Y" | ||
| 325 | "select '&Y.y' from dual;")) | ||
| 326 | |||
| 327 | ;; Buffer naming | ||
| 328 | (defmacro sql-tests-buffer-naming-harness (product &rest action) | ||
| 329 | "Set-up and tear-down of test of buffer naming. | ||
| 330 | |||
| 331 | The ACTION will be tested after set-up of PRODUCT." | ||
| 332 | |||
| 333 | (declare (indent 1)) | ||
| 334 | `(let (new-bufs) | ||
| 335 | (cl-letf | ||
| 336 | (((symbol-function 'make-comint-in-buffer) | ||
| 337 | (lambda (_name buffer _program &optional _startfile &rest _switches) | ||
| 338 | (let ((b (get-buffer-create buffer))) | ||
| 339 | (message ">>make-comint-in-buffer %S" b) | ||
| 340 | (cl-pushnew b new-bufs) ;; Keep track of what we create | ||
| 341 | b)))) | ||
| 342 | |||
| 343 | (let (,(intern (format "sql-%s-login-params" product))) | ||
| 344 | ,@action) | ||
| 345 | |||
| 346 | (let (kill-buffer-query-functions) ;; Kill what we create | ||
| 347 | (mapc #'kill-buffer new-bufs))))) | ||
| 348 | |||
| 349 | (ert-deftest sql-tests-buffer-naming-default () | ||
| 350 | "Test buffer naming." | ||
| 351 | (sql-tests-buffer-naming-harness sqlite | ||
| 352 | (sql-sqlite) | ||
| 353 | (message ">> %S" (current-buffer)) | ||
| 354 | (should (equal (buffer-name) "*SQL: SQLite*")))) | ||
| 355 | |||
| 356 | (ert-deftest sql-tests-buffer-naming-multiple () | ||
| 357 | "Test buffer naming of multiple buffers." | ||
| 358 | (sql-tests-buffer-naming-harness sqlite | ||
| 359 | (sql-sqlite) | ||
| 360 | (should (equal (buffer-name) "*SQL: SQLite*")) | ||
| 361 | |||
| 362 | (switch-to-buffer "*scratch*") | ||
| 363 | |||
| 364 | (sql-sqlite) | ||
| 365 | (should (equal (buffer-name) "*SQL: SQLite*")))) | ||
| 366 | |||
| 367 | (ert-deftest sql-tests-buffer-naming-explicit () | ||
| 368 | "Test buffer naming with explicit name." | ||
| 369 | (sql-tests-buffer-naming-harness sqlite | ||
| 370 | (sql-sqlite "A") | ||
| 371 | (should (equal (buffer-name) "*SQL: A*")) | ||
| 372 | |||
| 373 | (switch-to-buffer "*scratch*") | ||
| 374 | |||
| 375 | (sql-sqlite "A") | ||
| 376 | (should (equal (buffer-name) "*SQL: A*")))) | ||
| 377 | |||
| 378 | (ert-deftest sql-tests-buffer-naming-universal-argument () | ||
| 379 | "Test buffer naming with explicit name." | ||
| 380 | (sql-tests-buffer-naming-harness sqlite | ||
| 381 | (cl-letf | ||
| 382 | (((symbol-function 'read-string) | ||
| 383 | (lambda (_prompt &optional _initial-input _history _default-value _inherit-input-method) | ||
| 384 | "1"))) | ||
| 385 | (sql-sqlite '(4)) | ||
| 386 | (should (equal (buffer-name) "*SQL: 1*"))) | ||
| 387 | |||
| 388 | (switch-to-buffer "*scratch*") | ||
| 389 | |||
| 390 | (cl-letf | ||
| 391 | (((symbol-function 'read-string) | ||
| 392 | (lambda (_prompt &optional _initial-input _history _default-value _inherit-input-method) | ||
| 393 | "2"))) | ||
| 394 | (sql-sqlite '(16)) | ||
| 395 | (should (equal (buffer-name) "*SQL: 2*"))))) | ||
| 396 | |||
| 397 | (ert-deftest sql-tests-buffer-naming-existing () | ||
| 398 | "Test buffer naming with an existing non-SQLi buffer." | ||
| 399 | (sql-tests-buffer-naming-harness sqlite | ||
| 400 | (get-buffer-create "*SQL: exist*") | ||
| 401 | |||
| 402 | (cl-letf | ||
| 403 | (((symbol-function 'read-string) | ||
| 404 | (lambda (_prompt &optional _initial-input _history _default-value _inherit-input-method) | ||
| 405 | "exist"))) | ||
| 406 | (sql-sqlite '(4)) | ||
| 407 | (should (equal (buffer-name) "*SQL: exist-1*"))) | ||
| 408 | |||
| 409 | (kill-buffer "*SQL: exist*"))) | ||
| 305 | 410 | ||
| 306 | 411 | ||
| 307 | (provide 'sql-tests) | 412 | (provide 'sql-tests) |