emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] [Proposal] Source Blocks with Post-Extensions


From: Dmitrii Korobeinikov
Subject: Re: [O] [Proposal] Source Blocks with Post-Extensions
Date: Wed, 3 Jul 2019 22:02:31 +0600

Dear Martin,

Your approach to test cases is quite valuable for more structured projects and for automation. For something that's either quick&dirty or w/out much architectural certainty to it, I would still prefer the handy one-liners. Nonetheless, thanks for the example!

Best,
Dmitrii.

чт, 27 июн. 2019 г. в 04:09, Martin Alsinet <address@hidden>:
Dmitrii,

I use a different approach, where I tangle the source into files in modules and then I import those modules from other blocks.
This allows me to organize my document with different sections for the code and its tests, which then get exported into their corresponding files.


* Square Function

This function receives a number and returns its square

#+BEGIN_SRC python :tangle ./utils/math.py :mkdirp yes
def square(x):
    return x * x
#+END_SRC

** __init__.py (module setup)

#+begin_src python :tangle ./utils/__init__.py :mkdirp yes
from utils.math import square

#+end_src

** Test cases

1. The square of five should be 25
2. The square of zero should be 0
3. The square of a negative number should be positive

#+BEGIN_SRC python :tangle ./utils/test_square.py :mkdirp yes
from utils.math import square

def test_square_of_five():
    assert square(5) == 25

def test_square_of_zero():
    assert square(0) == 0

def test_square_of_negative():
    assert square(-5) > 0
#+END_SRC

*** Run tests

#+begin_src sh :results output raw
pytest ./utils
#+end_src

#+RESULTS:
============================= test session starts ==============================
platform linux -- Python 3.7.3, pytest-4.6.3, py-1.8.0, pluggy-0.12.0
rootdir: /app
collected 3 items

utils/test_square.py ...                                                 [100%]

=========================== 3 passed in 0.08 seconds ===========================






On Wed, Apr 24, 2019 at 2:19 PM Dmitrii Korobeinikov <address@hidden> wrote:
Sorry for not answering these two days.

You are right, that's an option.
But I just don't think that's the best possible one - for usability.

Introducing this would imply architectural decisions, so it might not be immediately clear if it's right or not.
Especially that the improvement might not seem that big.
So, I understand that.

I have proposed buffer lenses today and they seem like something that can solve the issue from the user side. Hopefully they will get some traction.

пн, 22 апр. 2019 г. в 23:31, Berry, Charles <address@hidden>:


> On Apr 22, 2019, at 10:15 AM, Dmitrii Korobeinikov <address@hidden> wrote:
>
> Thank you!
> That's a handy technique and it does help.
> As I understand, there's no way to extend that to multiple lines?

AFAICS, no there is no way to split the :epilogue arg to multiple lines.

Of course, you can always follow a src block that provides a function with another src block that imports the code via noweb and then tests the function with as many lines of code as you need.

Chuck




reply via email to

[Prev in Thread] Current Thread [Next in Thread]