branch: externals/denote commit df89c98b42e5e28fe1daafa979998f36bd63d14a Author: Kierin Bell <ferns...@fernseed.me> Commit: Kierin Bell <ferns...@fernseed.me>
Update dt-denote-sequence--get-new-exhaustive for false matches with a common prefix The new tests will detect false matches resulting from confusing sequence "1" with "10", "11", "100", etc. --- tests/denote-test.el | 171 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 106 insertions(+), 65 deletions(-) diff --git a/tests/denote-test.el b/tests/denote-test.el index bcb9a624a9..209f906c7e 100644 --- a/tests/denote-test.el +++ b/tests/denote-test.el @@ -616,9 +616,15 @@ function `denote-sequence-get-relative'." "20241230T075023==1=2--test__testing.txt" "20241230T075023==1=2=1--test__testing.txt" "20241230T075023==1=2=1=1--test__testing.txt" - "20241230T075023==2--test__testing.txt"))) + "20241230T075023==2--test__testing.txt" + "20241230T075023==10--test__testing.txt" + "20241230T075023==10=1--test__testing.txt" + "20241230T075023==10=1=1--test__testing.txt" + "20241230T075023==10=2--test__testing.txt" + "20241230T075023==10=10--test__testing.txt" + "20241230T075023==10=10=1--test__testing.txt"))) (sequences (denote-sequence-get-all-sequences files))) - (should (string= (denote-sequence-get-new 'parent) "3")) + (should (string= (denote-sequence-get-new 'parent) "11")) (should (and (string= (denote-sequence-get-new 'child "1" sequences) "1=3") (string= (denote-sequence-get-new 'child "1=1" sequences) "1=1=3") @@ -626,96 +632,131 @@ function `denote-sequence-get-relative'." (string= (denote-sequence-get-new 'child "1=2" sequences) "1=2=2") (string= (denote-sequence-get-new 'child "1=2=1" sequences) "1=2=1=2") (string= (denote-sequence-get-new 'child "2" sequences) "2=1"))) - (should-error (denote-sequence-get-new 'child "3" sequences)) + (should-error (denote-sequence-get-new 'child "11" sequences)) - (should (and (string= (denote-sequence-get-new 'sibling "1" sequences) "3") + (should (and (string= (denote-sequence-get-new 'sibling "1" sequences) "11") (string= (denote-sequence-get-new 'sibling "1=1" sequences) "1=3") (string= (denote-sequence-get-new 'sibling "1=1=1" sequences) "1=1=3") (string= (denote-sequence-get-new 'sibling "1=1=2" sequences) "1=1=3") (string= (denote-sequence-get-new 'sibling "1=2" sequences) "1=3") (string= (denote-sequence-get-new 'sibling "1=2=1" sequences) "1=2=2") - (string= (denote-sequence-get-new 'sibling "2" sequences) "3"))) - (should-error (denote-sequence-get-new 'sibling "4" sequences)) + (string= (denote-sequence-get-new 'sibling "2" sequences) "11"))) + (should-error (denote-sequence-get-new 'sibling "12" sequences)) (should (string= (denote-sequence-get-relative "1=2=1=1" 'parent files) (expand-file-name "20241230T075023==1=2=1--test__testing.txt" denote-directory))) + (should (string= (denote-sequence-get-relative "10=1=1" 'parent files) + (expand-file-name "20241230T075023==10=1--test__testing.txt" denote-directory))) + (should (string= (denote-sequence-get-relative "10=10=1" 'parent files) + (expand-file-name "20241230T075023==10=10--test__testing.txt" denote-directory))) (should (equal (denote-sequence-get-relative "1=2=1=1" 'all-parents files) (list (expand-file-name "20241230T075023==1--test__testing.txt" denote-directory) (expand-file-name "20241230T075023==1=2--test__testing.txt" denote-directory) (expand-file-name "20241230T075023==1=2=1--test__testing.txt" denote-directory)))) + (should (equal (denote-sequence-get-relative "10=1=1" 'all-parents files) + (list + (expand-file-name "20241230T075023==10--test__testing.txt" denote-directory) + (expand-file-name "20241230T075023==10=1--test__testing.txt" denote-directory)))) + (should (equal (denote-sequence-get-relative "10=10=1" 'all-parents files) + (list + (expand-file-name "20241230T075023==10--test__testing.txt" denote-directory) + (expand-file-name "20241230T075023==10=10--test__testing.txt" denote-directory)))) (should (equal (denote-sequence-get-relative "1=1" 'siblings files) (list (expand-file-name "20241230T075023==1=1--test__testing.txt" denote-directory) (expand-file-name "20241230T075023==1=2--test__testing.txt" denote-directory)))) + (should (equal (denote-sequence-get-relative "10=1" 'siblings files) + (list + (expand-file-name "20241230T075023==10=1--test__testing.txt" denote-directory) + (expand-file-name "20241230T075023==10=2--test__testing.txt" denote-directory) + (expand-file-name "20241230T075023==10=10--test__testing.txt" denote-directory)))) (should (equal (denote-sequence-get-relative "1" 'children files) (list (expand-file-name "20241230T075023==1=1--test__testing.txt" denote-directory) (expand-file-name "20241230T075023==1=2--test__testing.txt" denote-directory)))) + (should (equal (denote-sequence-get-relative "10" 'children files) + (list + (expand-file-name "20241230T075023==10=1--test__testing.txt" denote-directory) + (expand-file-name "20241230T075023==10=2--test__testing.txt" denote-directory) + (expand-file-name "20241230T075023==10=10--test__testing.txt" denote-directory)))) (should (equal (denote-sequence-get-relative "1=1" 'all-children files) (list (expand-file-name "20241230T075023==1=1=1--test__testing.txt" denote-directory) (expand-file-name "20241230T075023==1=1=2--test__testing.txt" denote-directory))))) - (let* ((denote-sequence-scheme 'alphanumeric) - (denote-directory (expand-file-name "denote-test" temporary-file-directory)) - (files - (mapcar - (lambda (file) - (let ((path (expand-file-name file (denote-directory)))) - (if (file-exists-p path) - path - (with-current-buffer (find-file-noselect path) - (save-buffer) - (kill-buffer (current-buffer))) - path))) - '("20241230T075023==1--test__testing.txt" - "20241230T075023==1a--test__testing.txt" - "20241230T075023==1a1--test__testing.txt" - "20241230T075023==1a2--test__testing.txt" - "20241230T075023==1b--test__testing.txt" - "20241230T075023==1b1--test__testing.txt" - "20241230T075023==1b1a--test__testing.txt" - "20241230T075023==2--test__testing.txt"))) - (sequences (denote-sequence-get-all-sequences files))) - (should (string= (denote-sequence-get-new 'parent) "3")) - - (should (and (string= (denote-sequence-get-new 'child "1" sequences) "1c") - (string= (denote-sequence-get-new 'child "1a" sequences) "1a3") - (string= (denote-sequence-get-new 'child "1a2" sequences) "1a2a") - (string= (denote-sequence-get-new 'child "1b" sequences) "1b2") - (string= (denote-sequence-get-new 'child "1b1" sequences) "1b1b") - (string= (denote-sequence-get-new 'child "2" sequences) "2a"))) - (should-error (denote-sequence-get-new 'child "3" sequences)) - - (should (and (string= (denote-sequence-get-new 'sibling "1" sequences) "3") - (string= (denote-sequence-get-new 'sibling "1a" sequences) "1c") - (string= (denote-sequence-get-new 'sibling "1a1" sequences) "1a3") - (string= (denote-sequence-get-new 'sibling "1a2" sequences) "1a3") - (string= (denote-sequence-get-new 'sibling "1b" sequences) "1c") - (string= (denote-sequence-get-new 'sibling "1b1" sequences) "1b2") - (string= (denote-sequence-get-new 'sibling "2" sequences) "3"))) - (should-error (denote-sequence-get-new 'sibling "4" sequences)) - - (should (string= (denote-sequence-get-relative "1b1a" 'parent files) - (expand-file-name "20241230T075023==1b1--test__testing.txt" denote-directory))) - (should (equal (denote-sequence-get-relative "1b1a" 'all-parents files) - (list - (expand-file-name "20241230T075023==1--test__testing.txt" denote-directory) - (expand-file-name "20241230T075023==1b--test__testing.txt" denote-directory) - (expand-file-name "20241230T075023==1b1--test__testing.txt" denote-directory)))) - (should (equal (denote-sequence-get-relative "1a" 'siblings files) - (list - (expand-file-name "20241230T075023==1a--test__testing.txt" denote-directory) - (expand-file-name "20241230T075023==1b--test__testing.txt" denote-directory)))) - (should (equal (denote-sequence-get-relative "1" 'children files) - (list - (expand-file-name "20241230T075023==1a--test__testing.txt" denote-directory) - (expand-file-name "20241230T075023==1b--test__testing.txt" denote-directory)))) - (should (equal (denote-sequence-get-relative "1a" 'all-children files) - (list - (expand-file-name "20241230T075023==1a1--test__testing.txt" denote-directory) - (expand-file-name "20241230T075023==1a2--test__testing.txt" denote-directory)))))) + (let* ((denote-sequence-scheme 'alphanumeric) + (denote-directory (expand-file-name "denote-test" temporary-file-directory)) + (files + (mapcar + (lambda (file) + (let ((path (expand-file-name file (denote-directory)))) + (if (file-exists-p path) + path + (with-current-buffer (find-file-noselect path) + (save-buffer) + (kill-buffer (current-buffer))) + path))) + '("20241230T075023==1--test__testing.txt" + "20241230T075023==1a--test__testing.txt" + "20241230T075023==1a1--test__testing.txt" + "20241230T075023==1a2--test__testing.txt" + "20241230T075023==1b--test__testing.txt" + "20241230T075023==1b1--test__testing.txt" + "20241230T075023==1b1a--test__testing.txt" + "20241230T075023==2--test__testing.txt" + "20241230T075023==10--test__testing.txt" + "20241230T075023==10a--test__testing.txt" + "20241230T075023==10b--test__testing.txt"))) + (sequences (denote-sequence-get-all-sequences files))) + (should (string= (denote-sequence-get-new 'parent) "11")) + + (should (and (string= (denote-sequence-get-new 'child "1" sequences) "1c") + (string= (denote-sequence-get-new 'child "1a" sequences) "1a3") + (string= (denote-sequence-get-new 'child "1a2" sequences) "1a2a") + (string= (denote-sequence-get-new 'child "1b" sequences) "1b2") + (string= (denote-sequence-get-new 'child "1b1" sequences) "1b1b") + (string= (denote-sequence-get-new 'child "2" sequences) "2a"))) + (should-error (denote-sequence-get-new 'child "11" sequences)) + + (should (and (string= (denote-sequence-get-new 'sibling "1" sequences) "11") + (string= (denote-sequence-get-new 'sibling "1a" sequences) "1c") + (string= (denote-sequence-get-new 'sibling "1a1" sequences) "1a3") + (string= (denote-sequence-get-new 'sibling "1a2" sequences) "1a3") + (string= (denote-sequence-get-new 'sibling "1b" sequences) "1c") + (string= (denote-sequence-get-new 'sibling "1b1" sequences) "1b2") + (string= (denote-sequence-get-new 'sibling "2" sequences) "11"))) + (should-error (denote-sequence-get-new 'sibling "12" sequences)) + + (should (string= (denote-sequence-get-relative "1b1a" 'parent files) + (expand-file-name "20241230T075023==1b1--test__testing.txt" denote-directory))) + (should (string= (denote-sequence-get-relative "10a" 'parent files) + (expand-file-name "20241230T075023==10--test__testing.txt" denote-directory))) + (should (equal (denote-sequence-get-relative "1b1a" 'all-parents files) + (list + (expand-file-name "20241230T075023==1--test__testing.txt" denote-directory) + (expand-file-name "20241230T075023==1b--test__testing.txt" denote-directory) + (expand-file-name "20241230T075023==1b1--test__testing.txt" denote-directory)))) + (should (equal (denote-sequence-get-relative "1a" 'siblings files) + (list + (expand-file-name "20241230T075023==1a--test__testing.txt" denote-directory) + (expand-file-name "20241230T075023==1b--test__testing.txt" denote-directory)))) + (should (equal (denote-sequence-get-relative "10a" 'siblings files) + (list + (expand-file-name "20241230T075023==10a--test__testing.txt" denote-directory) + (expand-file-name "20241230T075023==10b--test__testing.txt" denote-directory)))) + (should (equal (denote-sequence-get-relative "1" 'children files) + (list + (expand-file-name "20241230T075023==1a--test__testing.txt" denote-directory) + (expand-file-name "20241230T075023==1b--test__testing.txt" denote-directory)))) + (should (equal (denote-sequence-get-relative "10" 'children files) + (list + (expand-file-name "20241230T075023==10a--test__testing.txt" denote-directory) + (expand-file-name "20241230T075023==10b--test__testing.txt" denote-directory)))) + (should (equal (denote-sequence-get-relative "1a" 'all-children files) + (list + (expand-file-name "20241230T075023==1a1--test__testing.txt" denote-directory) + (expand-file-name "20241230T075023==1a2--test__testing.txt" denote-directory)))))) (ert-deftest dt-denote-sequence-split () "Test that `denote-sequence-split' splits a sequence correctly."