beeware / voc

A transpiler that converts Python code into Java bytecode

Home Page:http://beeware.org/voc

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hypothesis testing of voc

mistermocha opened this issue · comments

Try using hypothesis.works for testing when appropriate. Documentation at https://hypothesis.readthedocs.io/en/master/index.html

Hi! I'm a maintainer of Hypothesis, and discussed using it to test VOC and Batavia with Russell (@freakboy3742) at the PyConAU sprints.

I've got more than enough to do working on Hypothesis itself, but would be delighted to consult, mentor, teach, or assist anyone who wants to use it to test beeware things. Just @-mention me, and I'll answer!


The idea is that instead of checking predefined examples in tests/utils.py:SAMPLE_DATA, you would pick the right Hypothesis strategy and get examples from that (using a test decorated with @given, so examples are reproducible and minimize correctly).

As a quick-and-dirty demo, we could also just (temporarily) replace SAMPLE_DATA with a dataset drawn from Hypothesis:

from hypothesis.strategies import from_type

SAMPLE_DATA = ...  # current definition
generated = {
    k: [from_type(eval(k)).example() for _ in range(100)
    if isinstance(eval(k), type)]
    for k in SAMPLE_DATA
}
SAMPLE_DATA = {
    k: sorted(set(repr(x) for x in v), key=lambda x: len(x), x)
    for k, v in generated.items()
}

This wouldn't show minimal examples, but it would probably turn up a bunch of unicode issues and doesn't require any changes to existing tests.