def test_updating_the_file_makes_no_changes_normally():
    with open(dfas.learned_dfa_file) as i:
        source1 = i.read()

    dfas.update_learned_dfas()

    with open(dfas.learned_dfa_file) as i:
        source2 = i.read()

    assert source1 == source2
def preserving_dfas():
    assert TEST_DFA_NAME not in dfas.SHRINKING_DFAS
    for k in dfas.SHRINKING_DFAS:
        assert not k.startswith(TEST_DFA_NAME)
    original = dict(dfas.SHRINKING_DFAS)
    try:
        yield
    finally:
        dfas.SHRINKING_DFAS.clear()
        dfas.SHRINKING_DFAS.update(original)
        dfas.update_learned_dfas()
    assert TEST_DFA_NAME not in dfas.SHRINKING_DFAS
    with open(dfas.learned_dfa_file) as i:
        assert TEST_DFA_NAME not in i.read()
def test_updating_the_file_include_new_shrinkers():
    with preserving_dfas():
        with open(dfas.learned_dfa_file) as i:
            source1 = i.read()

        dfas.SHRINKING_DFAS[TEST_DFA_NAME] = "hello"

        dfas.update_learned_dfas()

        with open(dfas.learned_dfa_file) as i:
            source2 = i.read()

        assert source1 != source2
        assert repr(TEST_DFA_NAME) in source2

    assert TEST_DFA_NAME not in dfas.SHRINKING_DFAS

    with open(dfas.learned_dfa_file) as i:
        assert "test name" not in i.read()