Create and use a temporary folder as the application directory when running tests #323
Fixes #322
This commit is contained in:
		
							parent
							
								
									12c17c9cac
								
							
						
					
					
						commit
						50c6e3597f
					
				@ -26,6 +26,9 @@ def test_debug():
 | 
			
		||||
    assert constants.debug == constants.debug, constants.debug
 | 
			
		||||
 | 
			
		||||
def test_application_directory_default():
 | 
			
		||||
    if('ELODIE_APPLICATION_DIRECTORY' in os.environ):
 | 
			
		||||
        del os.environ['ELODIE_APPLICATION_DIRECTORY']
 | 
			
		||||
    reload(constants)
 | 
			
		||||
    expected_path = '{}/.elodie'.format(os.path.expanduser('~'))
 | 
			
		||||
    assert constants.application_directory == expected_path, constants.application_directory
 | 
			
		||||
 | 
			
		||||
@ -35,7 +38,8 @@ def test_application_directory_override_invalid():
 | 
			
		||||
    directory_to_check = constants.application_directory
 | 
			
		||||
 | 
			
		||||
    # reset
 | 
			
		||||
    os.environ['ELODIE_APPLICATION_DIRECTORY'] = ''
 | 
			
		||||
    if('ELODIE_APPLICATION_DIRECTORY' in os.environ):
 | 
			
		||||
        del os.environ['ELODIE_APPLICATION_DIRECTORY']
 | 
			
		||||
    reload(constants)
 | 
			
		||||
 | 
			
		||||
    expected_path = '{}/.elodie'.format(os.path.expanduser('~'))
 | 
			
		||||
@ -49,7 +53,8 @@ def test_application_directory_override_valid():
 | 
			
		||||
    hash_db_to_check = constants.hash_db
 | 
			
		||||
 | 
			
		||||
    # reset
 | 
			
		||||
    os.environ['ELODIE_APPLICATION_DIRECTORY'] = ''
 | 
			
		||||
    if('ELODIE_APPLICATION_DIRECTORY' in os.environ):
 | 
			
		||||
        del os.environ['ELODIE_APPLICATION_DIRECTORY']
 | 
			
		||||
    reload(constants)
 | 
			
		||||
 | 
			
		||||
    assert directory_to_check == cwd, constants.application_directory
 | 
			
		||||
@ -78,12 +83,16 @@ def test_mapquest_base_url_override():
 | 
			
		||||
    url_to_check = constants.mapquest_base_url
 | 
			
		||||
 | 
			
		||||
    # reset
 | 
			
		||||
    os.environ['ELODIE_MAPQUEST_BASE_URL'] = ''
 | 
			
		||||
    if('ELODIE_MAPQUEST_BASE_URL' in os.environ):
 | 
			
		||||
        del os.environ['ELODIE_MAPQUEST_BASE_URL']
 | 
			
		||||
    reload(constants)
 | 
			
		||||
 | 
			
		||||
    assert url_to_check == 'foobar', constants.mapquest_base_url
 | 
			
		||||
 | 
			
		||||
def test_mapquest_Key():
 | 
			
		||||
def test_mapquest_key_default():
 | 
			
		||||
    if('ELODIE_MAPQUEST_KEY' in os.environ):
 | 
			
		||||
        os.environ['ELODIE_MAPQUEST_KEY'] = None
 | 
			
		||||
    reload(constants)
 | 
			
		||||
    assert constants.mapquest_key == None, constants.mapquest_key
 | 
			
		||||
 | 
			
		||||
def test_mapquest_key_override():
 | 
			
		||||
@ -92,10 +101,11 @@ def test_mapquest_key_override():
 | 
			
		||||
    key_to_check = constants.mapquest_key
 | 
			
		||||
 | 
			
		||||
    # reset
 | 
			
		||||
    os.environ['ELODIE_MAPQUEST_KEY'] = ''
 | 
			
		||||
    if('ELODIE_MAPQUEST_KEY' in os.environ):
 | 
			
		||||
        del os.environ['ELODIE_MAPQUEST_KEY']
 | 
			
		||||
    reload(constants)
 | 
			
		||||
 | 
			
		||||
    assert key_to_check == 'foobar', constants.mapquest_key
 | 
			
		||||
    assert key_to_check == 'foobar', key_to_check
 | 
			
		||||
 | 
			
		||||
def test_accepted_language():
 | 
			
		||||
    assert constants.accepted_language == 'en', constants.accepted_language
 | 
			
		||||
 | 
			
		||||
@ -150,29 +150,12 @@ def isclose(a, b, rel_tol = 1e-8):
 | 
			
		||||
 | 
			
		||||
def reset_dbs():
 | 
			
		||||
    """ Back up hash_db and location_db """
 | 
			
		||||
    hash_db = '{}-test'.format(constants.hash_db)
 | 
			
		||||
    if not os.path.isfile(hash_db):
 | 
			
		||||
	    hash_db = constants.hash_db
 | 
			
		||||
	    if os.path.isfile(hash_db):
 | 
			
		||||
	        _rename(hash_db, '{}-test'.format(hash_db))
 | 
			
		||||
    #else restore_dbs wasn't called by a previous test, keep the
 | 
			
		||||
    #existing hash_db backup
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
    location_db = '{}-test'.format(constants.location_db)
 | 
			
		||||
    if not os.path.isfile(location_db):
 | 
			
		||||
	    location_db = constants.location_db
 | 
			
		||||
	    if os.path.isfile(location_db):
 | 
			
		||||
	        _rename(location_db, '{}-test'.format(location_db))
 | 
			
		||||
    #else restore_dbs wasn't called by a previous test, keep the
 | 
			
		||||
    #existing location_db backup
 | 
			
		||||
    # This is no longer needed. See gh-322
 | 
			
		||||
    # https://github.com/jmathai/elodie/issues/322
 | 
			
		||||
    pass
 | 
			
		||||
 | 
			
		||||
def restore_dbs():
 | 
			
		||||
    """ Restore back ups of hash_db and location_db """
 | 
			
		||||
    hash_db = '{}-test'.format(constants.hash_db)
 | 
			
		||||
    if os.path.isfile(hash_db):
 | 
			
		||||
        _rename(hash_db, hash_db.replace('-test', ''))
 | 
			
		||||
 | 
			
		||||
    location_db = '{}-test'.format(constants.location_db)
 | 
			
		||||
    if os.path.isfile(location_db):
 | 
			
		||||
        _rename(location_db, location_db.replace('-test', ''))
 | 
			
		||||
    # This is no longer needed. See gh-322
 | 
			
		||||
    # https://github.com/jmathai/elodie/issues/322
 | 
			
		||||
    pass
 | 
			
		||||
 | 
			
		||||
@ -2,10 +2,35 @@
 | 
			
		||||
 | 
			
		||||
import nose
 | 
			
		||||
import os
 | 
			
		||||
import shutil
 | 
			
		||||
import sys
 | 
			
		||||
import tempfile
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    # test_directory is what we pass nose.run for where to find tests
 | 
			
		||||
    test_directory = os.path.dirname(os.path.abspath(__file__))
 | 
			
		||||
 | 
			
		||||
    # create a temporary directory to use for the application directory while running tests
 | 
			
		||||
    temporary_application_directory = tempfile.mkdtemp('-elodie-tests')
 | 
			
		||||
    os.environ['ELODIE_APPLICATION_DIRECTORY'] = temporary_application_directory
 | 
			
		||||
 | 
			
		||||
    # copy config.ini-sample over to the test application directory
 | 
			
		||||
    temporary_config_file_sample = '{}/config.ini-sample'.format(os.path.dirname(os.path.dirname(test_directory)))
 | 
			
		||||
    temporary_config_file = '{}/config.ini'.format(temporary_application_directory)
 | 
			
		||||
    shutil.copy2(
 | 
			
		||||
        temporary_config_file_sample,
 | 
			
		||||
        temporary_config_file,
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    # read the sample config file and store contents to be replaced
 | 
			
		||||
    with open(temporary_config_file_sample, 'r') as f:
 | 
			
		||||
        config_contents = f.read()
 | 
			
		||||
 | 
			
		||||
    # set the mapquest key in the temporary config file and write it to the temporary application directory
 | 
			
		||||
    config_contents = config_contents.replace('your-api-key-goes-here', 'x8wQLqGhW7qK3sFpjYtVTogVtoMK0S8s')
 | 
			
		||||
    with open(temporary_config_file, 'w+') as f:
 | 
			
		||||
        f.write(config_contents)
 | 
			
		||||
 | 
			
		||||
    test_argv = sys.argv
 | 
			
		||||
    test_argv.append('--verbosity=2')
 | 
			
		||||
    result = nose.run(argv=test_argv)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user