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
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
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()
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')
def test_perform_health_check_setting_is_deprecated(): s = settings(suppress_health_check=(), perform_health_check=False) assert s.suppress_health_check
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
def test_cannot_set_strict(): with pytest.raises(HypothesisDeprecationWarning): settings(strict=True)
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
def test_setting_use_coverage_is_deprecated(value): with validate_deprecation(): settings(use_coverage=value)
def test_can_not_set_print_blob_to_non_print_settings(value): with pytest.raises(InvalidArgument): settings(print_blob=value)
def test_database_is_reference_preserved(): s = settings(database=not_set) assert s.database is s.database
def test_settings_as_decorator_must_be_on_callable(): with pytest.raises(InvalidArgument): settings()(1)
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
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
def test_can_set_verbosity(): settings(verbosity=Verbosity.quiet) settings(verbosity=Verbosity.normal) settings(verbosity=Verbosity.verbose)
def test_raises_attribute_error(): with pytest.raises(AttributeError): settings().kittens
def test_cannot_assign_default(): with pytest.raises(AttributeError): settings.default = settings(max_examples=3) assert settings().max_examples != 3
def test_max_shrinks_setting_is_deprecated(n): s = settings(max_shrinks=n) assert s.max_shrinks == n
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
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
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()
def test_buffer_size_deprecated(): assert settings(buffer_size=100).buffer_size == 100
def test_set_deprecated_settings(): assert settings(timeout=3).timeout == 3
def test_can_not_set_verbosity_to_non_verbosity(): with pytest.raises(InvalidArgument): settings(verbosity="kittens")
def test_setting_to_unlimited_is_not_error_yet(): settings(timeout=unlimited)
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')
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
def test_can_override_database_file(): f = mkdtemp() x = settings(database_file=f) assert isinstance(x.database, DirectoryBasedExampleDatabase) assert x.database.path == f
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)
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()
def test_can_set_verbosity(): settings(verbosity=Verbosity.quiet) settings(verbosity=Verbosity.normal) settings(verbosity=Verbosity.verbose) settings(verbosity=Verbosity.debug)