aboutsummaryrefslogtreecommitdiffstats
path: root/testing/lisp/test-ob-java.el (follow)
Commit message (Collapse)AuthorAgeFilesLines
* ob-core: Resolve named list references to simple listsIhor Radchenko2022-11-261-5/+5
| | | | | | | | | | | | | | | | | | | | | | | * lisp/ob-core.el (org-babel-read-list): Return a simple list instead of list of lists. Document this in the docstring. * testing/lisp/test-ob-java.el (ob-java/read-return-list): (ob-java/read-list-return-array): (ob-java/read-return-list-with-package): Fix tests assuming previous behavior. * testing/lisp/test-ob.el (test-ob/simple-variable-resolution): Add new tests. * etc/ORG-NEWS (List references in source block variable assignments are now proper lists): Document the change. This commit fixes the broken promise in the manual section 16.4 Environment of a Code Block where the named references to lists should be converted to simple lists consisting of the top-level items. The inconsistency existed for a while and possibly lurked into some third-party packages. So, announcement in NEWS is required. Reported-by: Alain.Cochard@unistra.fr Link: https://orgmode.org/list/87pmdqfao4.fsf@localhost
* fixup! testing/lisp/test-ob-java.el: Skip when ob-java is not loadedIhor Radchenko2022-11-101-2/+2
|
* testing/lisp/test-ob-java.el: Skip when ob-java is not loadedIhor Radchenko2022-11-101-0/+2
| | | | | * testing/lisp/test-ob-java.el (featurep): Skip tests when ob-java is not loaded.
* test-ob-java: Test Java source block header arguments at all levelsRudolf Adamkovič2022-10-211-1/+30
| | | | | | | | | | | | | | * testing/lisp/test-ob-java.el (ob-java/lint-header-arguments): Rename to ob-java/lint-header-args-block. * testing/lisp/test-ob-java.el (ob-java/lint-header-args-heading): Test source block header arguments at the heading level. * testing/lisp/test-ob-java.el (ob-java/lint-header-args-buffer): Test source block header arguments at the buffer level. Reported-by: Rudolf Adamkovič <salutis@me.com> Link: https://orgmode.org/list/m2y1ta9rqe.fsf@me.com
* ob-java: Define the list of all supported header argumentsRudolf Adamkovič2022-10-211-0/+17
| | | | | | | * lisp/ob-java.el (org-babel-header-args:java): Complete the list of header arguments supported for Java source blocks. * testing/lisp/test-ob-java.el (ob-java/lint-header-arguments): Test that the linter approves of all the supported arguments.
* test-ob-java: Use `temporary-file-directory'Ihor Radchenko2022-10-091-7/+7
| | | | | | | | | * testing/lisp/test-ob-java.el (ob-java/simple-dir): (ob-java/simple-dir-with-package): Prefer `temporary-file-directory' over `org-babel-temporary-directory'. The latter is nil in noninteractive Emacs during tests. Reported-by: Christian Köstlin <christian.koestlin@gmail.com>
* testing/lisp/test-ob-java.el: Add missing `provide'Ihor Radchenko2022-10-091-1/+1
|
* testing: Make all files use `lexical-binding`Stefan Monnier2022-09-151-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mainly, add the corresponding cookie, but also add various `require`s so that the compiler knows which vars should be trated as dynbound. This does not fix all the warnings, but does try to eliminate all those about "unused" variables. For the variables truly unused, the patch usually adds an underscore to their name to silence the warning. Some of the fixes affect files which already used `lexical-binding`. Not sure why the test worked before: maybe because the tests were run without compiling them first (which could cause some of the missing `require`d packages to be autoloaded before we got to the problematic code, thus hiding the problem)? I found some suspicious code, for which I added FIXMEs. There are also a few changes to the main files. * lisp/org-protocol.el (org-protocol-check-filename-for-protocol): Don't call `server-edit` if it's not yet defined. [ Needed to get the tests to pass. ] * lisp/ob-core.el (org-babel-temporary-directory) (org-babel-temporary-stable-directory): Always define (and use nil if we don't want to create a directory for it). Simplify the code based on the fact that (defvar V E) only evaluates E if V is not yet `boundp`. (org-babel-temp-file, org-babel-temp-stable-file) (org-babel-remove-temporary-directory) (org-babel-remove-temporary-stable-directory): Adjust accordingly. * lisp/org.el (org-log-beginning): Add FIXME. * testing/org-test.el: Require `org` and `org-id`. (org-id-locations-file): Don't `defconst` it. (org-test-at-id, org-test-in-example-file, org-test-at-marker) (org-test-with-temp-text, org-test-with-temp-text-in-file): Move edebug specs into `declare` (and simplify them). (org-test-with-tramp-remote-dir--worker): Declare dynbound tramp vars. (org--compile-when): Fix quoting of `exp`. (org-test-load): Tweak regexps. * testing/org-batch-test-init.el: Tweak regexp, remove dead code and add a FIXME about it. * testing/lisp/test-ox.el: Require `ox` instead of erroring out if it's not already loaded. Also require `org-inlinetask`. (org-test-with-parsed-data): Silence warnings when `info` is not used. (test-org-export/bind-keyword): Add FIXME. * testing/lisp/test-ox-publish.el: Require `org-test` and `ox-publish`. (test-org-publish/resolve-external-link): Expose lambdas to the compiler. Remove unused var `ids`. (test-org-publish/get-project-from-filename): Remove unused var `file`. * testing/lisp/test-org.el: Require `org-macs`, `org`, `org-inlinetask`, `org-refile`, and `org-agenda`. (test-org/org-read-date): Declare `org-time-was-given` as dynbound. (test-org/set-regexps-and-options): Add FIXME. * testing/lisp/test-org-timer.el: Require `org-timer`. * testing/lisp/test-org-table.el: Require `ox`. * testing/lisp/test-org-protocol.el: Require `org-protocol` instead of erroring out if it's not already loaded. Also require `capture`, and add missing `provide` statement. * testing/lisp/test-org-pcomplete.el: Require `org`. * testing/lisp/test-org-list.el: Require `org-list` and `org`. * testing/lisp/test-org-lint.el: Require `org-footnote` and `org-lint`. * testing/lisp/test-org-footnote.el: Require `org-footnote`. * testing/lisp/test-org-element.el: Require `org-element` instead of erroring out if it's not already loaded. Also require `org` and `org-inlinetask`. * testing/lisp/test-org-duration.el: Require `org-duration`. * testing/lisp/test-org-datetree.el: Require `org-datetree`. * testing/lisp/test-org-colview.el: Require `org-colview`, `org-duration`, and `org-inlinetask`. * testing/lisp/test-org-clock.el: Require `org-duration` and `org-clock`. * testing/lisp/test-org-archive.el: Require `org-archive`. * testing/lisp/test-org-agenda.el (test-org-agenda/bulk-custom-arg-func): Add FIXME. * testing/lisp/test-ol.el: Require `ol` and `org-id`. (test-org-link/store-link): Declare `org-store-link-props` and add FIXME. * testing/lisp/test-oc.el (test-org-cite/export-capability): Add FIXME. * testing/lisp/test-ob.el: Require `ob-core`, `org-src`, `ob-ref`, and `org-table`. (test-ob/eval-header-argument): Rename `foo` to `test-ob--foo` and declare it as dynbound. (test-ob/blocks-with-spaces, test-ob/specific-colnames): Add FIXME. (test-ob/noweb-expansions-in-cache): Declare `noweb-expansions-in-cache-var` as dynbound. * testing/lisp/test-ob-tangle.el: Require `org` and `ob-tangle`. * testing/lisp/test-ob-shell.el: * testing/lisp/test-ob-python.el: Require `ob-core`. * testing/lisp/test-ob-lob.el: Require `ob-lob`. (temporary-value-for-test): Declare as dynbound. * testing/lisp/test-ob-plantuml.el: Require `ob-plantuml` instead of erroring out if it's not already loaded. * testing/lisp/test-ob-lilypond.el: Require `ob-lilypond` instead of erroring out if it's not already loaded. Use `with-current-buffer`. * testing/lisp/test-ob-julia.el: Require `ob-core`. * testing/lisp/test-ob-java.el (org-babel-temporary-directory): Remove dead code now that `org-babel-temporary-directory` is always bound. * testing/lisp/test-ob-exp.el: Require `ob-exp`, `org-src`, and `org-test`. (ob-exp/evaluate-all-executables-in-order): Declare `*evaluation-collector*` as dynbound. * testing/lisp/test-ob-emacs-lisp.el (ob-emacs-lisp/dynamic-lexical-edit) (ob-emacs-lisp/dynamic-lexical-execute): Rename dynbound var to `ob-emacs--x` and declare it as such. * testing/lisp/test-ob-R.el: Require `ob-core`. (ess-ask-for-ess-directory, ess-history-file): Declare vars.
* Update copyright year to 2022Kyle Meyer2022-01-011-1/+1
|
* Prefer HTTPS to HTTP for links to gnu.orgStefan Kangas2021-03-211-1/+1
|
* * lisp/org-agenda.el: Use lexical-bindingStefan Monnier2021-03-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Removed the global (defvar date) and (defvar entry) so as not to conflict with function arguments of that name. Instead I added such `defvar`s in the body of each of the functions where it seemed needed. - I added some FIXMEs for some issues I found along the way. - Added an `org-dlet` macro, just like I had done for `calendar-dlet`, but I also use `defvar` "manually" at some places, when splitting an existing `let` into a mix of `let`s and `dlet`s seemed too much trouble. - Removed uses of `org-let and `org-let2` not only because I consider them offensive to my sense of aesthetics but also because they're basically incompatible with lexical scoping. I replaced them with uses of `cl-progv` which are a bit more verbose. Maybe we should define some `org-progv` macro on top of `cl-progv` to make the code less verbose, but I didn't do that because I like the fact that the current code makes uses of `eval` a bit more obvious (since these behave differently with lexical scoping than with lexical binding, it seemed worthwhile). - Removed the use of `eval` in `org-store-agenda-views` which was only placed there in order to use a macro before it's defined (it would have been simpler/cleaner to just move that functions *after* the macro, but with the new code the problem doesn't occur any more anyway). - Replaced a few `(lambda...) with actual closures. Detailed changes follow: (date, entry): Don't declare as being globally dynbound. (org-agenda-format-date-aligned): Remove unused var `weekyear`. (org-agenda-mode): `run-mode-hooks` is always available nowadays. (org-agenda-undo): Remove unused var `last-undo-buffer`. (org-agenda): Rename arg to `keys` and then dyn-bind it as `org-keys`. Remove unused vars `buf` and `key`. (org-agenda): Use `pcase` and `cl-progv` instead of `org-let`. (org-let, org-let2): Mark as obsolete. (org-agenda-run-series): Use `cl-progv` instead of `org-let` and `org-let2`. (org-agenda-run-series): New function. (org--batch-agenda): New function extracted from `org-batch-agenda`. (org-batch-agenda): Use it. (org--batch-agenda-csv): New function extracted from `org-batch-agenda-csv`. (org-batch-agenda-csv): Use it. (org--batch-store-agenda-views): New function, extracted from `org-batch-store-agenda-views`. (org-store-agenda-views, org-batch-store-agenda-views): Use it. (org--batch-store-agenda-views): Use `cl-progv` instead of `org-eval-in-environment`. (org-agenda-write): Use `cl-progv` instead of `org-let`. Use `with-current-buffer`. (org-agenda-filter-any): Use `cl-some` instead of `eval`. (org-agenda-list): Remove unused var `e`. (org-search-view): η-reduce. (crm-separator): Declare var. (org-agenda-skip-if): Remove unused var `beg`. (org-agenda-list-stuck-projects): Use a closure rather than `(lambda..). (diary-modify-entry-list-string-function, diary-file-name-prefix) (diary-display-function): Declare vars. (org-diary): Declare `date` and `entry` as dynbound. (org-agenda-get-day-entries): Use `org-dlet`. (org-agenda-get-timestamps, org-agenda-get-progress) (org-agenda-get-deadlines, org-agenda-get-scheduled, org-agenda-get-blocks): Declare `date` as dynbound. (org-agenda-get-sexps, org-class): Declare `date` and `entry` as dynbound. (org-agenda-format-item): Declare the vars mentioned in `org-compile-prefix-format` as dyn-bound. Also binding `extra`, suggested by Kyle Meyer <kyle@kyleam.com>. (org-compile-prefix-format): Remove unused var `e`. Use `member` rather than or+equal. (org-set-sorting-strategy): Minor simplification. (org-entries-lessp): Use `org-dlet`. (org-agenda-redo): Declare var `org-agenda-tag-filter-while-redo`. (org-agenda-redo): Use `cl-progv` rather than `org-let`. (org-agenda-filter): Remove unused var `rpl-fn`. Use `org-pushnew-to-end` to replace `add-to-list` on lexical var. (org-agenda-filter-by-tag): Remove unused var `n`. (org-agenda-filter-apply): Use `org-dlet`. (org-agenda-compute-starting-span): Remove unused var `dg`. (org-agenda-forward-block): Remove unused var `pos`. (org-archive-from-agenda): Declare var. (org-agenda-refile): Remove unused var `pos`. (org-agenda-headline-snapshot-before-repeat): Declare var. (org-agenda-todo): Remove redundant use of `bound-and-true-p`. (org-agenda-add-note): Remove unused var `hdmarker` and unused `arg`. (org-agenda-change-all-lines): Remove unused var `pl`. (org-agenda-priority): Remove unused var `marker`. (org-agenda-set-effort): Remove unused var `newhead`. (org-agenda-schedule): Remove unused var `type`. (org-agenda-clock-cancel): Remove unused `arg`. (org-agenda-execute-calendar-command): Use `org-dlet`. (org-agenda-bulk-action): Use closures instead of `(lambda ...). (org-agenda-show-the-flagging-note): Remove unused vars `heading` and `newhead`. (org-agenda-remove-flag): Avoid `setq`. * testing/org-test.el (org--compile-when): New macro. (org-test-jump): Use it so compilation doesn't fail or generate broken code when `jump` is not available. * testing/lisp/test-org-src.el: * testing/lisp/test-org-attach.el: * testing/lisp/test-org-agenda.el: * testing/lisp/test-ob-java.el: Pass explicit filename to `require` so as not to rely on ".../testing" being in `load-path` during compilation. * lisp/org-num.el: Require` org`. * lisp/org-macs.el (org-eval-in-environment): Declare obsolete. (org-dlet, org-pushnew-to-end): New macros. * doc/Makefile (org.texi, orgguide.texi, %_letter.tex): Simplify quoting. * contrib/lisp/ob-sclang.el: Don't crash compilation when `sclang` is not available. * contrib/lisp/ob-clojure-literate.el: Don't crash compilation when `cider` is not available. * contrib/lisp/ob-arduino.el: Don't crash compilation when `arduino-mode` is not available. * .gitignore: Add files generated during `make packages/org`.
* Merge branch 'maint'Kyle Meyer2021-01-011-1/+1
|
* lisp/ob-java.el: Make the default to write to the current directoryIan Martins2020-11-171-44/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/ob-java.el(org-babel-default-header-args:java): Add :dir default. (org-babel-execute:java): Check for existence of :dir in params using alist-get instead of assq because we want a nil cdr to be false. * testing/lisp/test-ob-java.el (ob-java/simple, ob-java/simple-with-bracket) (ob-java/simple-with-quote, ob-java/simple-return-int) (ob-java/simple-return-float, ob-java/simple-return-string) (ob-java/simple-with-main, ob-java/simple-with-two-methods) (ob-java/simple-with-no-main, ob-java/simple-with-main-args-array) (ob-java/simple-with-main-whitespace, ob-java/simple-with-class) (ob-java/simple-with-non-public-class) (ob-java/simple-with-class-and-package) (ob-java/simple-with-class-attr) (ob-java/simple-with-class-attr-with-package, ob-java/one-arg) (ob-java/args-quoted-string, ob-java/integer-var) (ob-java/var-with-main, ob-java/var-with-class) (ob-java/var-with-class-and-package) (ob-java/var-with-class-and-hanging-curlies, ob-java/two-vars) (ob-java/string-var, ob-java/multiline-string-var) (ob-java/return-vector-using-list, ob-java/return-vector-using-array) (ob-java/read-return-list, ob-java/read-list-return-array) (ob-java/read-return-list-with-package) (ob-java/output-list-with-spaces, ob-java/list-var, ob-java/vector-var) (ob-java/matrix-var, ob-java/matrix-var-with-header) (ob-java/output-table-with-header, ob-java/inhomogeneous_table) (ob-java/import_library, ob-java/import_library_inline) (ob-java/tangle): Set :dir to nil to prevent tests from writing files outside of temporary directory. (ob-java/tangle-with-package, ob-java/simple-dir): (ob-java/simple-dir-with-package): Move :dir param to be consistent with other tests. Most languages write tempfiles to babel's temporary directory, but ob-java originally had to write them to the current directory instead. I suspect this is because java puts the source file in package directories, and babel doesn't expect subdirectories in the babel temporary directory. This change brings back the original behavior. Reported-by: Jarmo Hurri <jarmo.hurri@iki.fi> Ref: https://orgmode.org/list/87mtzk9n30.fsf@iki.fi
* ob-java.el: Allow for more whitespace in java codeIan Martins2020-11-151-0/+18
| | | | | | | | | | | | | * lisp/ob-java.el (org-babel-java--package-re) (org-babel-java--imports-re, org-babel-java--class-re) (org-babel-java--main-re, org-babel-java--any-method-re): Updated regexps to allow for more whitespace in the content of java code blocks. Convert regexps to `rx' to improve clarity. * testing/lisp/test-ob-java.el (ob-java/simple-with-main-whitespace): Added test case with excessive whitespace. Reported-by: Jarmo Hurri <jarmo.hurri@iki.fi> Ref: https://orgmode.org/list/87o8k68w05.fsf@iki.fi
* ob-java.el: Change the default back to scripting modeIan Martins2020-11-021-14/+15
| | | | | | | | | | | | * lisp/ob-java.el (org-babel-default-header-args:java): Change the default to scripting mode. * testing/lisp/test-ob-java.el: Modify the first test to use the default for `:results' and all others to specify it. A recent commit added functional mode and made it default, but this would break java source blocks for anyone that relied on the old default. This sets the default back to scripting mode.
* ob-java.el: Use customizable commands, avoid incompatabilityIan Martins2020-10-251-2/+4
| | | | | | | | | | | | | | * lisp/ob-java.el: Use customizable variables for java compiler and runtime commands. Move variable declarations to fix byte-compile warnings. Change Author. Change tabs to spaces. A recent patch replaced `defcustom' with `defvar' for variables that point to the java compiler and runtime commands, which would break functionality for anyone who had customized the variable. This reverts that change. ob-java is using features not available on older versions of emacs which org supports. This replaces them with alternatives.
* ob-java.el: Allow non-public classesIan Martins2020-10-251-0/+12
| | | | | | | * lisp/ob-java.el: Don't require class definitions to be declared public. * testing/lisp/test-ob-java.el: Add test with non-public class.
* ob-java.el: Add support for variables, return values, trampIan Martins2020-10-251-0/+583
* lisp/ob-java.el: Add support for variables and return values. Write tempfiles to the `org-babel-temporary-directory'. Make package, class, and main method definitions optional. * testing/lisp/test-ob-java.el: Add tests. ob-java was missing features common to many other org-babel implementations, such as the ability to accept variables and return a value. This brings those features to ob-java, making the experience more consistent across org-babel languages, and expanding the ways java source blocks interact with org mode buffers. A simple java program requires boilerplate code to declare a class and main method. This boilerplate code makes java source blocks more tedious to write and more effort to read. This is more evident in an org buffer where there may be many small source blocks. This change makes that code optional. If it is not provided, the source block will be wrapped in the boilerplate code just before compilation. Most org babel implementation write temporary files to the `org-babel-temporary-directory'. That avoids polluting the current directory and provides built-in support for tramp. ob-java would write source files and binaries to the directory containing the org file by default. This may be unexpected and unwanted, and didn't work with tramp. This change writes all tempfiles to the `org-babel-temporary-directory'. Executing an ob-java source block would always try to compile and run the code in the source block, so a source block that wasn't runnable (didn't contain a main method) would error during run. This change adds a generic main method just before compilation if one isn't included in the source block so that the run will succeed. There were no tests for ob-java. This adds tests.