コード例 #1
0
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
コード例 #2
0
def test_deprecate_uses_default():
    with settings(strict=False):
        note_deprecation('Hi')

    with settings(strict=True):
        with pytest.raises(DeprecationWarning):
            note_deprecation('Hi')
コード例 #3
0
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
コード例 #4
0
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
コード例 #5
0
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
ファイル: test_reporting.py プロジェクト: degustaf/hypothesis
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
コード例 #7
0
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
コード例 #8
0
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'
コード例 #9
0
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
コード例 #10
0
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
コード例 #11
0
        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))
コード例 #12
0
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"
コード例 #13
0
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()
コード例 #14
0
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
ファイル: test_database.py プロジェクト: degustaf/hypothesis
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")
コード例 #17
0
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')
コード例 #20
0
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')
コード例 #23
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
コード例 #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
コード例 #29
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'
コード例 #31
0
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
コード例 #33
0
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
コード例 #41
0
def test_can_assign_database(db):
    x = settings(database=db)
    assert x.database is db
コード例 #42
0
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
コード例 #45
0
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")
コード例 #47
0
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
コード例 #49
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
コード例 #50
0
def test_setting_to_unlimited_is_not_error_yet():
    settings(timeout=unlimited)
コード例 #51
0
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
コード例 #53
0
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
ファイル: test_times.py プロジェクト: degustaf/hypothesis
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),
     )
コード例 #59
0
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)