[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [ANN] lisp/ob-tangle-sync.el
From: |
Ihor Radchenko |
Subject: |
Re: [ANN] lisp/ob-tangle-sync.el |
Date: |
Sat, 22 Jul 2023 08:02:24 +0000 |
Mehmet Tekman <mtekman89@gmail.com> writes:
>> P.S. There going to be Emacs meetup this Saturday, July 22
>> (https://emacs-apac.gitlab.io/announcements/july-2023/). I plan to be
>> there and, if you need it, we can try to resolve difficulties in more
>> interactive way.
>
> I am currently travelling this weekend, otherwise I happily would
> attend so that this patch could speed forward. Next month maybe?
Another meetup is on July 26. https://emacs-berlin.org/
Or we can arrange a jitsi call.
>> Side note: You are re-implementing the already available ERT
>> features for failed test reporting. Instead of controlling
>> which tests failed manually, you should better follow the
>> example of all other tests and simply use a sequence of
>> `should'/`should-not' forms.
>
> Okay, I've re-written this to conform to the `should' macros. I
> *really* wish these macros could be named so that I could debug
> failing statements better, but for now numbering them in the
> comments and using the `l' binding works well enough for
> debugging.
To name them, you can use separate ert-deftest statements.
Also, see the attached modified version of your diff - I made it so that
`should' failures immediately provide some clue about expected result
value, that can help to identify which of the should clauses fails.
> I have two tests that I've set to "should-not" pass for now, but
> once the correct merging behaviour has been implemented, I
> believe that I will change them to "should" pass statements:
>
> - 9. do-not-tangle-this-block
> - 12. tangle-file-with-spaces
The tests are indeed not passing on vanilla Org. I assume that you
tested them with your other patch applied.
diff --git a/testing/lisp/test-ob.el b/testing/lisp/test-ob.el
index c8dbd44f4..de92cb90b 100644
--- a/testing/lisp/test-ob.el
+++ b/testing/lisp/test-ob.el
@@ -314,6 +314,147 @@ (ert-deftest test-ob/parse-header-args2 ()
(org-babel-next-src-block)
(should (= 14 (org-babel-execute-src-block)))))
+(defun test-ob/get-src-block-property (properties)
+ "Get plist of PROPERTIES and values for the first src block in buffer.
+PROPERTIES is a list of property keywords or a single keyword."
+ (org-with-wide-buffer
+ (goto-char (point-min))
+ (org-babel-next-src-block)
+ (org-set-regexps-and-options)
+ (let ((all-props (nth 2 (org-babel-get-src-block-info))))
+ (if (listp properties)
+ (apply #'nconc (mapcar (lambda (p) (list p (cdr (assoc p
all-props)))) properties))
+ (list properties (cdr (assoc properties all-props)))))))
+
+(ert-deftest test-ob/merge-params ()
+ "Test the output of merging multiple header parameters. The
+expected output is given in the contents of the source code block
+in each test. The desired test header parameters are given
+either as a symbol or a list in the `idtest-alist' variable.
+Multiple header parameters must be separated by a newline and
+exactly two spaces in the block contents."
+ (should ;; 1. inherit-document-header-args
+ (equal '(:tangle "/tmp/default_tangle.txt")
+ (org-test-with-temp-text
+ "\
+#+PROPERTY: header-args :tangle /tmp/default_tangle.txt
+* One
+#+begin_src conf
+#+end_src"
+ (test-ob/get-src-block-property :tangle))))
+ (should ;; 2. inherit-document-header-with-local-sync-action
+ (equal '(:tangle "/tmp/default_tangle.txt skip")
+ (org-test-with-temp-text
+ "\
+#+PROPERTY: header-args :tangle /tmp/default_tangle.txt
+* One
+#+begin_src conf :tangle skip
+#+end_src"
+ (test-ob/get-src-block-property :tangle))))
+ (should ;; 3. override-document-header-with-local-tfile
+ (equal '(:tangle "randomfile sync")
+ (org-test-with-temp-text
+ "\
+#+PROPERTY: header-args :tangle /tmp/default_tangle.txt
+* One
+#+begin_src conf :tangle randomfile sync
+#+end_src"
+ (test-ob/get-src-block-property :tangle))))
+ (should ;; 4.
override-document-and-parent-header-with-local-tfile-and-action
+ (equal '(:tangle "randomfile sync")
+ (org-test-with-temp-text
+ "\
+#+PROPERTY: header-args :tangle /tmp/default_tangle.txt
+* One
+:PROPERTIES:
+:header-args: :tangle \"newfile.txt\" import
+:END:
+** Two
+#+begin_src conf :tangle randomfile sync
+#+end_src"
+ (test-ob/get-src-block-property :tangle))))
+ (should ;; 5. test-tangle-and-default-results-param-together
+ (equal '(:tangle "randomfile" :results "replace")
+ (org-test-with-temp-text
+ "\
+* One
+#+begin_src conf :tangle randomfile
+#+end_src"
+ (test-ob/get-src-block-property '(:tangle :results)))))
+ (should ;; 6. inherit-document-tfile-take-only-last-local-sync-action
+ (equal '(:tangle "/tmp/default_tangle.txt export")
+ (org-test-with-temp-text
+ "\
+#+PROPERTY: header-args :tangle /tmp/default_tangle.txt
+* One
+#+begin_src conf :tangle import export
+#+end_src"
+ (test-ob/get-src-block-property :tangle))))
+ (should ;; 7. ignore-document-header-take-last-tfile-and-sync-action
+ (equal '(:tangle "fname2 export")
+ (org-test-with-temp-text
+ "\
+#+PROPERTY: header-args :tangle /tmp/default_tangle.txt
+* One
+#+begin_src conf :tangle fname1 fname2 sync export
+#+end_src"
+ (test-ob/get-src-block-property :tangle))))
+ (should ;; 8. test-results-and-exports
+ (equal '(:results "wrap file replace" :exports "code")
+ (org-test-with-temp-text
+ "\
+* One
+#+begin_src sh :results file wrap
+#+end_src"
+ (test-ob/get-src-block-property '(:results :exports)))))
+ (should-not ;; 9. do-not-tangle-this-block --
+ (equal '(:tangle "no")
+ ;; THIS SHOULD NOT FAIL WITH NEW MERGE FUNCTION.
+ (org-test-with-temp-text
+ "\
+#+PROPERTY: header-args :tangle /tmp/default_tangle.txt
+* One
+#+begin_src conf :tangle no
+#+end_src"
+ (test-ob/get-src-block-property :tangle))))
+ (should ;; 10. test-tangle-exports-and-comments
+ (equal '(:tangle "foo.txt" :exports "verbatim code" :comments "link")
+ (org-test-with-temp-text
+ "\
+#+PROPERTY: header-args :tangle /tmp/default_tangle.txt
+* One
+:PROPERTIES:
+:header-args: :tangle no :exports verbatim
+:END:
+#+begin_src conf :tangle \"foo.txt\" :comments link
+#+end_src"
+ (test-ob/get-src-block-property '(:tangle :exports :comments)))))
+ (should ;; 11. override-document-and-heading-tfile-with-yes
+ (equal '(:tangle "foo.txt")
+ (org-test-with-temp-text
+ "\
+#+PROPERTY: header-args :tangle /tmp/default_tangle.txt
+* One
+:PROPERTIES:
+:header-args: :tangle \"foo.txt\"
+:END:
+#+begin_src conf :tangle yes
+#+end_src"
+ (test-ob/get-src-block-property :tangle))))
+ (should-not ;; 12. tangle-file-with-spaces
+ ;; THIS SHOULD NOT FAIL WITH NEW MERGE FUNCTION.
+ (equal '(:tangle "file with spaces.txt")
+ (org-test-with-temp-text
+ "\
+* One
+:PROPERTIES:
+:header-args: :tangle \"foo.txt\"
+:END:
+** Two
+#+begin_src conf :tangle \"file with spaces.txt\"
+#+end_src"
+ (test-ob/get-src-block-property :tangle)))))
+
(ert-deftest test-ob/inline-src-blocks ()
(should
(= 1
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
- Re: [ANN] lisp/ob-tangle-sync.el, Ihor Radchenko, 2023/07/15
- Re: [ANN] lisp/ob-tangle-sync.el, Mehmet Tekman, 2023/07/16
- Re: [ANN] lisp/ob-tangle-sync.el, Mehmet Tekman, 2023/07/17
- Re: [ANN] lisp/ob-tangle-sync.el, Ihor Radchenko, 2023/07/18
- Re: [ANN] lisp/ob-tangle-sync.el, Mehmet Tekman, 2023/07/21
- Re: [ANN] lisp/ob-tangle-sync.el,
Ihor Radchenko <=
- Re: [ANN] lisp/ob-tangle-sync.el, Mehmet Tekman, 2023/07/25
- Re: [ANN] lisp/ob-tangle-sync.el, Ihor Radchenko, 2023/07/25
- Re: [ANN] lisp/ob-tangle-sync.el, Mehmet Tekman, 2023/07/31
- Re: [ANN] lisp/ob-tangle-sync.el, Ihor Radchenko, 2023/07/31
- Re: [ANN] lisp/ob-tangle-sync.el, Mehmet Tekman, 2023/07/31