def test_loading_profile_keeps_expected_behaviour():
    settings.register_profile("ci", settings(max_examples=10000))
    settings.load_profile("ci")
    assert settings().max_examples == 10000
    with local_settings(settings(max_examples=5)):
        assert settings().max_examples == 5
    assert settings().max_examples == 10000
def test_deprecate_uses_default():
    with settings(strict=False):
        note_deprecation('Hi')

    with settings(strict=True):
        with pytest.raises(DeprecationWarning):
            note_deprecation('Hi')
def test_inherits_an_empty_database(db):
    assert settings.default.database is not None
    s = settings(database=db)
    assert s.database is db
    with s:
        t = settings()
    assert t.database is db
def test_loading_profile_keeps_expected_behaviour():
    settings.register_profile('ci', settings(max_examples=10000))
    settings.load_profile('ci')
    assert settings().max_examples == 10000
    with settings(max_examples=5):
        assert settings().max_examples == 5
    assert settings().max_examples == 10000
def test_cannot_delete_a_setting():
    x = settings()
    with pytest.raises(AttributeError):
        del x.max_examples
    x.max_examples

    x = settings()
    with pytest.raises(AttributeError):
        del x.foo
示例#6
0
def test_prints_debug_on_no_simplification():
    with settings(verbosity=Verbosity.debug):
        with capture_out() as o:
            find(just(u'hi'), bool)
    v = o.getvalue()
    print(v)
    assert u'No simplifiers' in v
def test_load_profile():
    settings.load_profile('default')
    assert settings.default.max_examples == 200
    assert settings.default.max_shrinks == 500
    assert settings.default.min_satisfying_examples == 5

    settings.register_profile(
        'test',
        settings(
            max_examples=10,
            max_shrinks=5
        )
    )

    settings.load_profile('test')

    assert settings.default.max_examples == 10
    assert settings.default.max_shrinks == 5
    assert settings.default.min_satisfying_examples == 5

    settings.load_profile('default')

    assert settings.default.max_examples == 200
    assert settings.default.max_shrinks == 500
    assert settings.default.min_satisfying_examples == 5
def test_cannot_set_settings():
    x = settings()
    with pytest.raises(AttributeError):
        x.max_examples = 'foo'
    with pytest.raises(AttributeError):
        x.database = 'foo'
    assert x.max_examples != 'foo'
    assert x.database != 'foo'
def test_can_set_print_blob_to_deprecated_bool(value, replacement, suggestion):
    with pytest.warns(
        HypothesisDeprecationWarning,
        match=re.escape(suggestion),
    ):
        s = settings(print_blob=value)

    assert s.print_blob == replacement
def test_includes_progress_in_verbose_mode():
    with capture_verbosity(Verbosity.verbose) as o:
        with settings(verbosity=Verbosity.verbose):
            find(lists(integers()), lambda x: sum(x) >= 1000000)

    out = o.getvalue()
    assert out
    assert u'Shrunk example' in out
    assert u'Found satisfying example' in out
        def foo():
            seen = []

            def not_first(x):
                if not seen:
                    seen.append(x)
                    return False
                return x not in seen

            find(integers(), not_first, settings=settings(verbosity=Verbosity.verbose))
def test_assigning_to_settings_attribute_on_state_machine_raises_error():
    with pytest.raises(AttributeError):

        class StateMachine(GenericStateMachine):
            pass

        StateMachine.settings = settings()

    state_machine_instance = StateMachine()
    state_machine_instance.settings = "any value"
def test_prints_initial_attempts_on_find():

    with capture_verbosity(Verbosity.verbose) as o:
        with settings(verbosity=Verbosity.verbose):
            seen = []

            def not_first(x):
                if not seen:
                    seen.append(x)
                    return False
                return x not in seen
            find(integers(), not_first)

    assert u'Trying example' in o.getvalue()
def test_load_profile():
    settings.load_profile("default")
    assert settings.default.max_examples == original_default
    assert settings.default.stateful_step_count == 50

    settings.register_profile("test", settings(max_examples=10), stateful_step_count=5)
    settings.load_profile("test")

    assert settings.default.max_examples == 10
    assert settings.default.stateful_step_count == 5

    settings.load_profile("default")

    assert settings.default.max_examples == original_default
    assert settings.default.stateful_step_count == 50
示例#15
0
def test_can_handle_more_than_max_iterations_in_db():
    """This is checking that if we store a large number of examples in the DB
    and then subsequently reduce max_examples below that count, we a) don't
    error (which is how this bug was found) and b) stop at max_examples rather
    than continuing onwards."""
    db = ExampleDatabase()

    try:
        settings = hs.settings(database=db, max_examples=10, max_iterations=10)
        seen = []
        first = [True]
        for _ in range(10):
            first[0] = True

            @given(integers())
            @settings
            def test_seen(x):
                if x not in seen:
                    if first[0]:
                        first[0] = False
                        seen.append(x)
                if x not in seen:
                    raise ValueError(u'Weird')

            try:
                test_seen()
            except ValueError:
                pass

        assert len(seen) >= 3

        seen = []

        @given(integers())
        @hs.settings(max_examples=1, max_iterations=2, database=db)
        def test_seen(x):
            seen.append(x)
            assume(False)
        with pytest.raises(Unsatisfiable):
            test_seen()
        assert len(seen) == 2
    finally:
        db.close()
示例#16
0
def setup_function(fn):
    settings.load_profile("default")
    settings.register_profile("test_settings", settings())
    settings.load_profile("test_settings")
def setup_function(fn):
    settings.load_profile('default')
    settings.register_profile('test_settings', settings())
    settings.load_profile('test_settings')
示例#18
0
def test_perform_health_check_setting_is_deprecated():
    s = settings(suppress_health_check=(), perform_health_check=False)
    assert s.suppress_health_check
示例#19
0
def test_cannot_create_settings_with_invalid_options():
    with pytest.raises(InvalidArgument):
        settings(a_setting_with_limited_options=u'spoon')
def capture_verbosity(level):
    with capture_out() as o:
        with with_reporter(default_reporter):
            with settings(verbosity=level):
                yield o
示例#21
0
def test_cannot_set_strict():
    with pytest.raises(HypothesisDeprecationWarning):
        settings(strict=True)
示例#22
0
def setup_function(fn):
    settings.load_profile('default')
    settings.register_profile('test_settings', settings())
    settings.load_profile('test_settings')
def test_can_repeatedly_push_the_same_thing():
    s = settings(max_examples=12)
    t = settings(max_examples=17)
    assert settings().max_examples == original_default
    with s:
        assert settings().max_examples == 12
        with t:
            assert settings().max_examples == 17
            with s:
                assert settings().max_examples == 12
                with t:
                    assert settings().max_examples == 17
                assert settings().max_examples == 12
            assert settings().max_examples == 17
        assert settings().max_examples == 12
    assert settings().max_examples == original_default
示例#24
0
def test_setting_use_coverage_is_deprecated(value):
    with validate_deprecation():
        settings(use_coverage=value)
示例#25
0
def test_can_not_set_print_blob_to_non_print_settings(value):
    with pytest.raises(InvalidArgument):
        settings(print_blob=value)
示例#26
0
def test_database_is_reference_preserved():
    s = settings(database=not_set)

    assert s.database is s.database
示例#27
0
def test_settings_as_decorator_must_be_on_callable():
    with pytest.raises(InvalidArgument):
        settings()(1)
示例#28
0
def test_does_not_warn_if_quiet():
    with pytest.warns(None) as rec:
        note_deprecation('This is bad', settings(verbosity=Verbosity.quiet))
    assert len(rec) == 0
def test_settings_uses_defaults():
    s = settings()
    assert s.max_examples == settings.default.max_examples
示例#30
0
def test_cannot_set_non_settings():
    s = settings()
    with pytest.raises(AttributeError):
        s.databas_file = u'some_file'
def test_respects_none_database():
    assert settings(database=None).database is None
示例#32
0
def test_settings_uses_defaults():
    s = settings()
    assert s.max_examples == settings.default.max_examples
def test_can_set_verbosity():
    settings(verbosity=Verbosity.quiet)
    settings(verbosity=Verbosity.normal)
    settings(verbosity=Verbosity.verbose)
示例#34
0
def test_raises_attribute_error():
    with pytest.raises(AttributeError):
        settings().kittens
示例#35
0
def test_cannot_assign_default():
    with pytest.raises(AttributeError):
        settings.default = settings(max_examples=3)
    assert settings().max_examples != 3
示例#36
0
def test_respects_none_database():
    assert settings(database=None).database is None
示例#37
0
def test_max_shrinks_setting_is_deprecated(n):
    s = settings(max_shrinks=n)
    assert s.max_shrinks == n
示例#38
0
def test_settings_can_be_used_as_context_manager_to_change_defaults():
    with settings(max_examples=12):
        assert settings.default.max_examples == 12
    assert settings.default.max_examples == original_default
示例#39
0
def test_register_profile_kwarg_settings_is_deprecated():
    settings.register_profile('test', settings=settings(max_examples=10))
    settings.load_profile('test')
    assert settings.default.max_examples == 10
示例#40
0
def test_setting_to_future_value_gives_future_value_and_no_error():
    assert settings(timeout=unlimited).timeout == -1
def test_can_assign_database(db):
    x = settings(database=db)
    assert x.database is db
def test_does_not_print_debug_in_verbose():
    with settings(verbosity=Verbosity.verbose):
        with capture_out() as o:
            debug_report(u'Hi')
    assert not o.getvalue()
示例#43
0
def test_buffer_size_deprecated():
    assert settings(buffer_size=100).buffer_size == 100
示例#44
0
def test_set_deprecated_settings():
    assert settings(timeout=3).timeout == 3
def test_cannot_set_non_settings():
    s = settings()
    with pytest.raises(AttributeError):
        s.databas_file = u'some_file'
示例#46
0
def test_can_not_set_verbosity_to_non_verbosity():
    with pytest.raises(InvalidArgument):
        settings(verbosity="kittens")
def test_raises_attribute_error():
    with pytest.raises(AttributeError):
        settings().kittens
示例#48
0
def test_can_assign_database(db):
    x = settings(database=db)
    assert x.database is db
def test_settings_can_be_used_as_context_manager_to_change_defaults():
    with settings(max_examples=12):
        assert settings.default.max_examples == 12
    assert settings.default.max_examples == original_default
示例#50
0
def test_setting_to_unlimited_is_not_error_yet():
    settings(timeout=unlimited)
def test_cannot_create_settings_with_invalid_options():
    with pytest.raises(InvalidArgument):
        settings(a_setting_with_limited_options=u'spoon')
示例#52
0
def test_can_have_none_database():
    assert settings(database=None).database is None
def test_can_not_set_verbosity_to_non_verbosity():
    with pytest.raises(InvalidArgument):
        settings(verbosity='kittens')
示例#54
0
def test_database_type_must_be_ExampleDatabase(db):
    with local_settings(settings(database=db)):
        settings_property_db = settings.database
        with pytest.raises(InvalidArgument):
            settings(database=".hypothesis/examples")
        assert settings.database is settings_property_db
示例#55
0
def test_can_repeatedly_push_the_same_thing():
    s = settings(max_examples=12)
    t = settings(max_examples=17)
    assert settings().max_examples == original_default
    with s:
        assert settings().max_examples == 12
        with t:
            assert settings().max_examples == 17
            with s:
                assert settings().max_examples == 12
                with t:
                    assert settings().max_examples == 17
                assert settings().max_examples == 12
            assert settings().max_examples == 17
        assert settings().max_examples == 12
    assert settings().max_examples == original_default
示例#56
0
def test_can_override_database_file():
    f = mkdtemp()
    x = settings(database_file=f)
    assert isinstance(x.database, DirectoryBasedExampleDatabase)
    assert x.database.path == f
示例#57
0
def test_can_generate_naive_time():
    minimal(times(allow_naive=True), lambda d: not d.tzinfo)


def test_can_generate_non_naive_time():
    assert minimal(
        times(allow_naive=True), lambda d: d.tzinfo).tzinfo == pytz.UTC


def test_can_generate_non_utc():
    minimal(
        times(),
        lambda d: assume(d.tzinfo) and d.tzinfo.zone != u'UTC')


with hs.settings(max_examples=1000):
    @given(times(timezones=[]))
    def test_naive_times_are_naive(dt):
        assert not dt.tzinfo

    @given(times(allow_naive=False))
    def test_timezone_aware_times_are_timezone_aware(dt):
        assert dt.tzinfo


def test_restricts_to_allowed_set_of_timezones():
    timezones = list(map(pytz.timezone, list(pytz.all_timezones)[:3]))
    x = minimal(times(timezones=timezones))
    assert any(tz.zone == x.tzinfo.zone for tz in timezones)

示例#58
0
 def foo():
     find(
         lists(integers()),
         lambda x: sum(x) >= 100,
         settings=settings(verbosity=Verbosity.verbose, database=None),
     )
def test_does_print_verbose_in_debug():
    with settings(verbosity=Verbosity.debug):
        with capture_out() as o:
            verbose_report(u'Hi')
    assert u'Hi' in o.getvalue()
示例#60
0
def test_can_set_verbosity():
    settings(verbosity=Verbosity.quiet)
    settings(verbosity=Verbosity.normal)
    settings(verbosity=Verbosity.verbose)
    settings(verbosity=Verbosity.debug)