diff options
Diffstat (limited to 'test/lisp')
| -rw-r--r-- | test/lisp/progmodes/sql-tests.el | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/test/lisp/progmodes/sql-tests.el b/test/lisp/progmodes/sql-tests.el index 604c02172ea..a68f9319c2f 100644 --- a/test/lisp/progmodes/sql-tests.el +++ b/test/lisp/progmodes/sql-tests.el | |||
| @@ -53,5 +53,106 @@ | |||
| 53 | (error "some error")))) | 53 | (error "some error")))) |
| 54 | (should-not (sql-postgres-list-databases)))) | 54 | (should-not (sql-postgres-list-databases)))) |
| 55 | 55 | ||
| 56 | (defvar sql-test-login-params nil) | ||
| 57 | (defmacro with-sql-test-connect-harness (id login-params connection expected) | ||
| 58 | "Set-up and tear-down SQL connect related test. | ||
| 59 | |||
| 60 | Identify tests by ID. Set :sql-login dialect attribute to | ||
| 61 | LOGIN-PARAMS. Provide the CONNECTION parameters and the EXPECTED | ||
| 62 | string of values passed to the comint function for validation." | ||
| 63 | (declare (indent 2)) | ||
| 64 | `(cl-letf | ||
| 65 | ((sql-test-login-params ' ,login-params) | ||
| 66 | ((symbol-function 'sql-comint-test) | ||
| 67 | (lambda (product options &optional buf-name) | ||
| 68 | (with-current-buffer (get-buffer-create buf-name) | ||
| 69 | (insert (pp-to-string (list product options sql-user sql-password sql-server sql-database)))))) | ||
| 70 | ((symbol-function 'sql-run-test) | ||
| 71 | (lambda (&optional buffer) | ||
| 72 | (interactive "P") | ||
| 73 | (sql-product-interactive 'sqltest buffer))) | ||
| 74 | (sql-user nil) | ||
| 75 | (sql-server nil) | ||
| 76 | (sql-database nil) | ||
| 77 | (sql-product-alist | ||
| 78 | '((ansi) | ||
| 79 | (sqltest | ||
| 80 | :name "SqlTest" | ||
| 81 | :sqli-login sql-test-login-params | ||
| 82 | :sqli-comint-func sql-comint-test))) | ||
| 83 | (sql-connection-alist | ||
| 84 | '((,(format "test-%s" id) | ||
| 85 | ,@connection))) | ||
| 86 | (sql-password-wallet | ||
| 87 | (list | ||
| 88 | (make-temp-file | ||
| 89 | "sql-test-netrc" nil nil | ||
| 90 | (mapconcat #'identity | ||
| 91 | '("machine aMachine user aUserName password \"netrc-A aPassword\"" | ||
| 92 | "machine aServer user aUserName password \"netrc-B aPassword\"" | ||
| 93 | "machine aMachine server aServer user aUserName password \"netrc-C aPassword\"" | ||
| 94 | "machine aMachine database aDatabase user aUserName password \"netrc-D aPassword\"" | ||
| 95 | "machine aDatabase user aUserName password \"netrc-E aPassword\"" | ||
| 96 | "machine aMachine server aServer database aDatabase user aUserName password \"netrc-F aPassword\"" | ||
| 97 | "machine \"aServer/aDatabase\" user aUserName password \"netrc-G aPassword\"" | ||
| 98 | ) "\n"))))) | ||
| 99 | |||
| 100 | (let* ((connection ,(format "test-%s" id)) | ||
| 101 | (buffername (format "*SQL: ERT TEST <%s>*" connection))) | ||
| 102 | (when (get-buffer buffername) | ||
| 103 | (kill-buffer buffername)) | ||
| 104 | (sql-connect connection buffername) | ||
| 105 | (should (get-buffer buffername)) | ||
| 106 | (should (string-equal (with-current-buffer buffername (buffer-string)) ,expected)) | ||
| 107 | (when (get-buffer buffername) | ||
| 108 | (kill-buffer buffername)) | ||
| 109 | (delete-file (car sql-password-wallet))))) | ||
| 110 | |||
| 111 | (ert-deftest sql-test-connect () | ||
| 112 | "Test of basic `sql-connect'." | ||
| 113 | (with-sql-test-connect-harness 1 (user password server database) | ||
| 114 | ((sql-product 'sqltest) | ||
| 115 | (sql-user "aUserName") | ||
| 116 | (sql-password "test-1 aPassword") | ||
| 117 | (sql-server "aServer") | ||
| 118 | (sql-database "aDatabase")) | ||
| 119 | "(sqltest nil \"aUserName\" \"test-1 aPassword\" \"aServer\" \"aDatabase\")\n")) | ||
| 120 | |||
| 121 | (ert-deftest sql-test-connect-password-func () | ||
| 122 | "Test of password function." | ||
| 123 | (with-sql-test-connect-harness 2 (user password server database) | ||
| 124 | ((sql-product 'sqltest) | ||
| 125 | (sql-user "aUserName") | ||
| 126 | (sql-password (lambda () (concat [?t ?e ?s ?t ?- ?2 ?\s | ||
| 127 | ?a ?P ?a ?s ?s ?w ?o ?r ?d]))) | ||
| 128 | (sql-server "aServer") | ||
| 129 | (sql-database "aDatabase")) | ||
| 130 | "(sqltest nil \"aUserName\" \"test-2 aPassword\" \"aServer\" \"aDatabase\")\n")) | ||
| 131 | |||
| 132 | (ert-deftest sql-test-connect-wallet-server-database () | ||
| 133 | "Test of password function." | ||
| 134 | (with-sql-test-connect-harness 3 (user password server database) | ||
| 135 | ((sql-product 'sqltest) | ||
| 136 | (sql-user "aUserName") | ||
| 137 | (sql-server "aServer") | ||
| 138 | (sql-database "aDatabase")) | ||
| 139 | "(sqltest nil \"aUserName\" \"netrc-G aPassword\" \"aServer\" \"aDatabase\")\n")) | ||
| 140 | |||
| 141 | (ert-deftest sql-test-connect-wallet-database () | ||
| 142 | "Test of password function." | ||
| 143 | (with-sql-test-connect-harness 4 (user password database) | ||
| 144 | ((sql-product 'sqltest) | ||
| 145 | (sql-user "aUserName") | ||
| 146 | (sql-database "aDatabase")) | ||
| 147 | "(sqltest nil \"aUserName\" \"netrc-E aPassword\" nil \"aDatabase\")\n")) | ||
| 148 | |||
| 149 | (ert-deftest sql-test-connect-wallet-server () | ||
| 150 | "Test of password function." | ||
| 151 | (with-sql-test-connect-harness 5 (user password server) | ||
| 152 | ((sql-product 'sqltest) | ||
| 153 | (sql-user "aUserName") | ||
| 154 | (sql-server "aServer")) | ||
| 155 | "(sqltest nil \"aUserName\" \"netrc-B aPassword\" \"aServer\" nil)\n")) | ||
| 156 | |||
| 56 | (provide 'sql-tests) | 157 | (provide 'sql-tests) |
| 57 | ;;; sql-tests.el ends here | 158 | ;;; sql-tests.el ends here |