def test_umr_namelist():
    """Test that the UMR skips modules according to its name."""
    umr = UserModuleReloader()

    assert umr.is_module_in_namelist('tensorflow')
    assert umr.is_module_in_namelist('pytorch')
    assert umr.is_module_in_namelist('spyder_kernels')
    assert not umr.is_module_in_namelist('foo')
def test_umr_previous_modules(user_module):
    """Test that UMR's previos_modules is working as expected."""
    # Create user module
    user_module('foo2')

    # Create UMR
    umr = UserModuleReloader()

    import foo2
    assert 'IPython' in umr.previous_modules
    assert 'foo2' not in umr.previous_modules
def test_user_sitepackages_in_pathlist():
    """Test that we include users site-packages in UMR's pathlist."""
    # Create UMR
    umr = UserModuleReloader()

    if sys.platform.startswith('linux'):
        user_path = 'local'
    elif sys.platform == 'darwin':
        user_path = '/Users/travis/.local'
    else:
        user_path = 'Roaming'

    assert any([user_path in path for path in umr.pathlist])
def test_umr_run(user_module):
    """Test that UMR's run method is working correctly."""
    # Create user module
    user_module('foo1')

    # Activate verbose mode in the UMR
    os.environ['SPY_UMR_VERBOSE'] = 'True'

    # Create UMR
    umr = UserModuleReloader()

    from foo1.bar import square
    umr.run()
    umr.modnames_to_reload == ['foo', 'foo.bar']
def test_umr_skip_cython(user_module):
    """
    Test that the UMR doesn't try to reload modules when Cython
    support is active.
    """
    # Create user module
    user_module('foo')

    # Activate Cython support
    os.environ['SPY_RUN_CYTHON'] = 'True'

    # Create UMR
    umr = UserModuleReloader()

    import foo
    assert umr.is_module_reloadable(foo, 'foo') == False

    # Deactivate Cython support
    os.environ['SPY_RUN_CYTHON'] = 'False'
def test_umr_pathlist(user_module):
    """Test that the UMR skips modules according to its path."""
    # Create user module
    user_module('foo3')

    # Create UMR
    umr = UserModuleReloader()

    # Don't reload stdlib modules
    import xml
    assert umr.is_module_in_pathlist(xml)

    # Don't reload third-party modules
    import numpy
    assert umr.is_module_in_pathlist(numpy)

    # Reload user modules
    import foo3
    assert umr.is_module_in_pathlist(foo3) == False