Exemple #1
0
def test_modified_020(temp_builds_dir):
    """
    'Modified' event on included partial source
    """
    basedir = temp_builds_dir.join('watcher_success_020')

    bdir, inspector, settings_object, watcher_opts = start_env(basedir)

    build_scss_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(settings_object,
                                                      inspector,
                                                      **watcher_opts)

    project_handler.on_modified(DummyBaseEvent(bdir('sass/_toinclude.scss')))

    results = os.listdir(basedir.join("css").strpath)
    results.sort()

    assert results == [
        'main.css',
        'main_importing.css',
        'main_usinglib.css',
    ]
Exemple #2
0
def test_deleted_001(caplog, temp_builds_dir):
    """watcher.SassProjectEventHandler: UnresolvablePath on 'Deleted' event for a partial
       source included by other files"""
    basedir = temp_builds_dir.join('watcher_fails_041')

    bdir, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(
        settings_object,
        inspector,
        **watcher_opts
    )

    os.remove(bdir('sass/_toinclude.scss'))

    # Error is catched
    project_handler.on_deleted(DummyBaseEvent(bdir('sass/_toinclude.scss')))

    # Error from core API is catched
    assert project_handler._event_error == True
    # Logged error
    assert caplog.record_tuples == [
        (
            'boussole',
            40,
            "Imported path 'toinclude' does not exist in '{}'".format(basedir.join('sass').strpath)
        )
    ]
Exemple #3
0
def test_index_001(caplog, temp_builds_dir):
    """
    UnresolvablePath on index from 'on_any_event'
    """
    basedir = temp_builds_dir.join('watcher_fails_001')

    bdir, inspector, settings_object, watcher_opts = start_env(basedir)

    build_scss_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(settings_object,
                                                      inspector,
                                                      **watcher_opts)

    # First indexing is a success
    project_handler.on_any_event(object())

    # Write some error file
    source = "\n".join((
        """/* New main source */""",
        """@import "idontexist";""",
    ))
    with open(basedir.join('sass/error_main.scss').strpath, 'w') as f:
        f.write(source)

    # Second indexing raise exception but catched
    project_handler.on_any_event(object())

    # Error from core API is catched
    assert project_handler._event_error
    # Logged error
    msg = "Imported path 'idontexist' does not exist in '{}'"
    assert caplog.record_tuples == [('boussole', 40,
                                     msg.format(basedir.join('sass').strpath))]
Exemple #4
0
def test_library_modified_101(temp_builds_dir):
    """watcher.SassLibraryEventHandler: 'Modified' event on a library
       component"""
    basedir = temp_builds_dir.join('watcher_success_101')

    bdir, logger, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableLibraryEventHandler(
        settings_object,
        logger,
        inspector,
        **watcher_opts
    )

    project_handler.on_modified(DummyBaseEvent(bdir('lib/components/_buttons.scss')))

    project_handler.on_modified(DummyBaseEvent(bdir('lib/libmain.scss')))

    # Almost dummy validation because on wrong behavior (with
    # UnitTestableProjectEventHandler instead of
    # UnitTestableLibraryEventHandler) CSS files are writed to "../lib"
    # path, that is under the "css" dir.
    assert os.listdir(basedir.join("css").strpath) == ['main_usinglib.css']
Exemple #5
0
def test_library_modified_101(temp_builds_dir):
    """watcher.SassLibraryEventHandler: 'Modified' event on a library
       component"""
    basedir = temp_builds_dir.join('watcher_success_101')

    bdir, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableLibraryEventHandler(settings_object,
                                                      inspector,
                                                      **watcher_opts)

    project_handler.on_modified(
        DummyBaseEvent(bdir('lib/components/_buttons.scss')))

    project_handler.on_modified(DummyBaseEvent(bdir('lib/libmain.scss')))

    results = os.listdir(basedir.join("css").strpath)
    results.sort()

    # Almost dummy validation because on wrong behavior (with
    # UnitTestableProjectEventHandler instead of
    # UnitTestableLibraryEventHandler) CSS files are writed to "../lib"
    # path, that is under the "css" dir.
    assert results == [
        'main_usinglib.css',
    ]
Exemple #6
0
def test_created_030(temp_builds_dir):
    """watcher.SassProjectEventHandler: 'Created' event for a new main source"""
    basedir = temp_builds_dir.join('watcher_success_030')

    bdir, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(settings_object,
                                                      inspector,
                                                      **watcher_opts)

    # Write a new main source
    source = "\n".join((
        """/* New main source */""",
        """#content{ padding: 10px; margin: 5px 0; }""",
    ))
    with open(basedir.join('sass/new_main.scss').strpath, 'w') as f:
        f.write(source)

    project_handler.on_created(DummyBaseEvent(bdir('sass/new_main.scss')))

    results = os.listdir(basedir.join("css").strpath)
    results.sort()

    assert results == [
        'new_main.css',
    ]
Exemple #7
0
def test_created_030(temp_builds_dir):
    """watcher.SassProjectEventHandler: 'Created' event for a new main source"""
    basedir = temp_builds_dir.join('watcher_success_030')

    bdir, logger, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(
        settings_object,
        logger,
        inspector,
        **watcher_opts
    )

    # Write a new main source
    source = "\n".join((
        """/* New main source */""",
        """#content{ padding: 10px; margin: 5px 0; }""",
    ))
    with open(basedir.join('sass/new_main.scss').strpath, 'w') as f:
        f.write(source)

    project_handler.on_created(DummyBaseEvent(bdir('sass/new_main.scss')))
    assert os.listdir(basedir.join("css").strpath) == ['new_main.css']
Exemple #8
0
def test_compilablefiles_001(temp_builds_dir):
    """watcher.SassProjectEventHandler: Testing 'handler.compilable_files' return"""
    basedir = temp_builds_dir.join('watcher_success_001')

    bdir, logger, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(
        settings_object,
        logger,
        inspector,
        **watcher_opts
    )

    # Manually call on_any_event since we directly access to
    # 'handler.compilable_files' bypassing the event hierarchy
    project_handler.on_any_event(object())

    assert project_handler.compilable_files == {
        bdir('sass/main.scss'): bdir('css/main.css'),
        bdir('sass/main_importing.scss'): bdir('css/main_importing.css'),
        bdir('sass/main_usinglib.scss'): bdir('css/main_usinglib.css'),
    }
Exemple #9
0
def test_move_012(temp_builds_dir):
    """watcher.SassProjectEventHandler: 'Move' event on included partial
       source"""
    basedir = temp_builds_dir.join('watcher_success_012')

    bdir, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(
        settings_object,
        inspector,
        **watcher_opts
    )

    project_handler.on_moved(DummyMoveEvent(bdir('sass/_toinclude.scss')))

    results = os.listdir(basedir.join("css").strpath)
    results.sort()

    assert results == [
        'main.css',
        'main_importing.css',
        'main_usinglib.css',
    ]
Exemple #10
0
def test_deleted_001(caplog, temp_builds_dir):
    """watcher.SassProjectEventHandler: UnresolvablePath on 'Deleted' event for a partial
       source included by other files"""
    basedir = temp_builds_dir.join('watcher_fails_041')

    bdir, logger, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(settings_object, logger,
                                                      inspector,
                                                      **watcher_opts)

    os.remove(bdir('sass/_toinclude.scss'))

    # Error is catched
    project_handler.on_deleted(DummyBaseEvent(bdir('sass/_toinclude.scss')))

    # Error from core API is catched
    assert project_handler._event_error == True
    # Logged error
    assert caplog.record_tuples == [
        ('boussole', 40,
         "Imported path 'toinclude' does not exist in '{}'".format(
             basedir.join('sass').strpath))
    ]
Exemple #11
0
def test_whole_050(temp_builds_dir):
    """watcher.SassProjectEventHandler: Routine using some events on various
       sources"""
    basedir = temp_builds_dir.join('watcher_success_050')

    bdir, logger, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(settings_object, logger,
                                                      inspector,
                                                      **watcher_opts)

    # Modify a partial source
    project_handler.on_modified(DummyBaseEvent(bdir('sass/_toinclude.scss')))
    assert os.listdir(basedir.join("css").strpath) == [
        'main_usinglib.css', 'main.css', 'main_importing.css'
    ]

    # Create a new main source
    source = "\n".join((
        """/* New main source */""",
        """#content{ padding: 10px; margin: 5px 0; }""",
    ))
    with open(basedir.join('sass/new_main.scss').strpath, 'w') as f:
        f.write(source)

    project_handler.on_created(DummyBaseEvent(bdir('sass/new_main.scss')))
    assert os.listdir(basedir.join("css").strpath) == [
        'new_main.css', 'main_usinglib.css', 'main.css', 'main_importing.css'
    ]

    # Delete a main source
    os.remove(bdir('css/main_importing.css'))
    os.remove(bdir('sass/main_importing.scss'))

    project_handler.on_deleted(DummyBaseEvent(
        bdir('sass/main_importing.scss')))
    assert os.listdir(basedir.join("css").strpath) == [
        'new_main.css', 'main_usinglib.css', 'main.css'
    ]

    # Simulate moved source
    project_handler.on_moved(DummyMoveEvent(bdir('sass/_toinclude.scss')))
    assert os.listdir(basedir.join("css").strpath) == [
        'new_main.css', 'main_usinglib.css', 'main.css'
    ]
Exemple #12
0
def test_move_011(temp_builds_dir):
    """watcher.SassProjectEventHandler: 'Move' event from a source depending from
       main sample"""
    basedir = temp_builds_dir.join('watcher_success_011')

    bdir, logger, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(settings_object, logger,
                                                      inspector,
                                                      **watcher_opts)

    project_handler.on_moved(DummyMoveEvent(bdir('sass/main_importing.scss')))
    assert os.listdir(basedir.join("css").strpath) == ['main_importing.css']
Exemple #13
0
def test_move_010(temp_builds_dir):
    """watcher.SassProjectEventHandler: 'Move' event on main sample"""
    basedir = temp_builds_dir.join('watcher_success_010')

    bdir, logger, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(
        settings_object,
        logger,
        inspector,
        **watcher_opts
    )

    project_handler.on_moved(DummyMoveEvent(bdir('sass/main.scss')))
    assert os.listdir(basedir.join("css").strpath) == ['main.css', 'main_importing.css']
Exemple #14
0
def test_deleted_040(temp_builds_dir):
    """watcher.SassProjectEventHandler: 'Deleted' event for a main source"""
    basedir = temp_builds_dir.join('watcher_success_040')

    bdir, logger, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(settings_object, logger,
                                                      inspector,
                                                      **watcher_opts)

    os.remove(bdir('sass/main_importing.scss'))

    project_handler.on_deleted(DummyBaseEvent(
        bdir('sass/main_importing.scss')))
    assert os.listdir(basedir.join("css").strpath) == []
Exemple #15
0
def test_move_010(temp_builds_dir):
    """watcher.SassProjectEventHandler: 'Move' event on main sample"""
    basedir = temp_builds_dir.join('watcher_success_010')

    bdir, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(settings_object,
                                                      inspector,
                                                      **watcher_opts)

    project_handler.on_moved(DummyMoveEvent(bdir('sass/main.scss')))

    results = os.listdir(basedir.join("css").strpath)
    results.sort()

    assert results == ['main.css', 'main_importing.css']
Exemple #16
0
def test_whole_050(temp_builds_dir):
    """watcher.SassProjectEventHandler: Routine using some events on various
       sources"""
    basedir = temp_builds_dir.join('watcher_success_050')

    bdir, logger, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(
        settings_object,
        logger,
        inspector,
        **watcher_opts
    )

    # Modify a partial source
    project_handler.on_modified(DummyBaseEvent(bdir('sass/_toinclude.scss')))
    assert os.listdir(basedir.join("css").strpath) == ['main_usinglib.css', 'main.css', 'main_importing.css']

    # Create a new main source
    source = "\n".join((
        """/* New main source */""",
        """#content{ padding: 10px; margin: 5px 0; }""",
    ))
    with open(basedir.join('sass/new_main.scss').strpath, 'w') as f:
        f.write(source)

    project_handler.on_created(DummyBaseEvent(bdir('sass/new_main.scss')))
    assert os.listdir(basedir.join("css").strpath) == ['new_main.css', 'main_usinglib.css', 'main.css', 'main_importing.css']

    # Delete a main source
    os.remove(bdir('css/main_importing.css'))
    os.remove(bdir('sass/main_importing.scss'))

    project_handler.on_deleted(DummyBaseEvent(bdir('sass/main_importing.scss')))
    assert os.listdir(basedir.join("css").strpath) == ['new_main.css', 'main_usinglib.css', 'main.css']

    # Simulate moved source
    project_handler.on_moved(DummyMoveEvent(bdir('sass/_toinclude.scss')))
    assert os.listdir(basedir.join("css").strpath) == ['new_main.css', 'main_usinglib.css', 'main.css']
Exemple #17
0
def test_deleted_040(temp_builds_dir):
    """watcher.SassProjectEventHandler: 'Deleted' event for a main source"""
    basedir = temp_builds_dir.join('watcher_success_040')

    bdir, logger, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(
        settings_object,
        logger,
        inspector,
        **watcher_opts
    )

    os.remove(bdir('sass/main_importing.scss'))

    project_handler.on_deleted(DummyBaseEvent(bdir('sass/main_importing.scss')))
    assert os.listdir(basedir.join("css").strpath) == []
Exemple #18
0
def test_index_001(caplog, temp_builds_dir):
    """watcher.SassProjectEventHandler: UnresolvablePath on index from 'on_any_event'"""
    basedir = temp_builds_dir.join('watcher_fails_001')

    bdir, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(
        settings_object,
        inspector,
        **watcher_opts
    )

    #with pytest.raises(UnresolvablePath):
    # First indexing is a success
    project_handler.on_any_event(object())

    # Write some error file
    source = "\n".join((
        """/* New main source */""",
        """@import "idontexist";""",
    ))
    with open(basedir.join('sass/error_main.scss').strpath, 'w') as f:
        f.write(source)

    # Second indexing raise exception but catched
    project_handler.on_any_event(object())

    # Error from core API is catched
    assert project_handler._event_error == True
    # Logged error
    assert caplog.record_tuples == [
        (
            'boussole',
            40,
            "Imported path 'idontexist' does not exist in '{}'".format(basedir.join('sass').strpath)
        )
    ]
Exemple #19
0
def test_compilablefiles_001(temp_builds_dir):
    """watcher.SassProjectEventHandler: Testing 'handler.compilable_files' return"""
    basedir = temp_builds_dir.join('watcher_success_001')

    bdir, inspector, settings_object, watcher_opts = start_env(basedir)

    build_sample_structure(settings_object, basedir)

    # Init handler
    project_handler = UnitTestableProjectEventHandler(settings_object,
                                                      inspector,
                                                      **watcher_opts)

    # Manually call on_any_event since we directly access to
    # 'handler.compilable_files' bypassing the event hierarchy
    project_handler.on_any_event(object())

    assert project_handler.compilable_files == {
        bdir('sass/main.scss'): bdir('css/main.css'),
        bdir('sass/main_importing.scss'): bdir('css/main_importing.css'),
        bdir('sass/main_usinglib.scss'): bdir('css/main_usinglib.css'),
    }