def test_GitRepo_files_decorator(): class testclass(object): def __init__(self): self.path = os.path.join('some', 'where') @normalize_paths def decorated(self, files): return files test_instance = testclass() files_to_test = os.path.join(test_instance.path, 'deep', get_most_obscure_supported_name()) assert_equal(test_instance.decorated(files_to_test), [_normalize_path(test_instance.path, files_to_test)]) files_to_test = get_most_obscure_supported_name() assert_equal(test_instance.decorated(files_to_test), [_normalize_path(test_instance.path, files_to_test)]) files_to_test = os.path.join(get_most_obscure_supported_name(), 'beyond', 'obscure') assert_equal(test_instance.decorated(files_to_test), [_normalize_path(test_instance.path, files_to_test)]) files_to_test = os.path.join(os.getcwd(), 'somewhere', 'else', get_most_obscure_supported_name()) assert_raises(FileNotInRepositoryError, test_instance.decorated, files_to_test) files_to_test = ['now', os.path.join('a list', 'of'), 'paths'] expect = [] for item in files_to_test: expect.append(_normalize_path(test_instance.path, item)) assert_equal(test_instance.decorated(files_to_test), expect) assert_raises(ValueError, test_instance.decorated, 1)
def test_normalize_path(git_path): gr = GitRepo(git_path) # cwd is currently outside the repo, so any relative path # should be interpreted as relative to `annex_path` assert_raises(FileNotInRepositoryError, _normalize_path, gr.path, getpwd()) result = _normalize_path(gr.path, "testfile") eq_(result, "testfile", "_normalize_path() returned %s" % result) # result = _normalize_path(gr.path, op.join('.', 'testfile')) # eq_(result, "testfile", "_normalize_path() returned %s" % result) # # result = _normalize_path(gr.path, op.join('testdir', '..', 'testfile')) # eq_(result, "testfile", "_normalize_path() returned %s" % result) # Note: By now, normpath within normalize_paths() is disabled, therefore # disable these tests. result = _normalize_path(gr.path, op.join('testdir', 'testfile')) eq_(result, op.join("testdir", "testfile"), "_normalize_path() returned %s" % result) result = _normalize_path(gr.path, op.join(git_path, "testfile")) eq_(result, "testfile", "_normalize_path() returned %s" % result) # now we are inside, so # OLD PHILOSOPHY: relative paths are relative to cwd and have # to be converted to be relative to annex_path # NEW PHILOSOPHY: still relative to repo! unless starts with . (curdir) or .. (pardir) with chpwd(op.join(git_path, 'd1', 'd2')): result = _normalize_path(gr.path, "testfile") eq_(result, 'testfile', "_normalize_path() returned %s" % result) # if not joined as directory name but just a prefix to the filename, should # behave correctly for d in (op.curdir, op.pardir): result = _normalize_path(gr.path, d + "testfile") eq_(result, d + 'testfile', "_normalize_path() returned %s" % result) result = _normalize_path(gr.path, op.join(op.curdir, "testfile")) eq_(result, op.join('d1', 'd2', 'testfile'), "_normalize_path() returned %s" % result) result = _normalize_path(gr.path, op.join(op.pardir, 'testfile')) eq_(result, op.join('d1', 'testfile'), "_normalize_path() returned %s" % result) assert_raises(FileNotInRepositoryError, _normalize_path, gr.path, op.join(git_path, '..', 'outside')) result = _normalize_path(gr.path, op.join(git_path, 'd1', 'testfile')) eq_(result, op.join('d1', 'testfile'), "_normalize_path() returned %s" % result)
def test_GitRepo_files_decorator(): class testclass(object): def __init__(self): self.path = op.join('some', 'where') # TODO # yoh: logic is alien to me below why to have two since both look identical! @normalize_paths def decorated_many(self, files): return files @normalize_paths def decorated_one(self, file_): return file_ test_instance = testclass() # When a single file passed -- single path returned obscure_filename = get_most_obscure_supported_name() file_to_test = op.join(test_instance.path, 'deep', obscure_filename) # file doesn't exist eq_(test_instance.decorated_one(file_to_test), _normalize_path(test_instance.path, file_to_test)) eq_(test_instance.decorated_one(file_to_test), _normalize_path(test_instance.path, file_to_test)) file_to_test = obscure_filename eq_(test_instance.decorated_many(file_to_test), _normalize_path(test_instance.path, file_to_test)) eq_(test_instance.decorated_one(file_to_test), _normalize_path(test_instance.path, file_to_test)) file_to_test = op.join(obscure_filename, 'beyond', 'obscure') eq_(test_instance.decorated_many(file_to_test), _normalize_path(test_instance.path, file_to_test)) file_to_test = op.join(getpwd(), 'somewhere', 'else', obscure_filename) assert_raises(FileNotInRepositoryError, test_instance.decorated_many, file_to_test) # If a list passed -- list returned files_to_test = ['now', op.join('a list', 'of'), 'paths'] expect = [] for item in files_to_test: expect.append(_normalize_path(test_instance.path, item)) eq_(test_instance.decorated_many(files_to_test), expect) eq_(test_instance.decorated_many(''), []) assert_raises(ValueError, test_instance.decorated_many, 1) assert_raises(ValueError, test_instance.decorated_one, 1)
def test_normalize_path(git_path): cwd = os.getcwd() gr = GitRepo(git_path) # cwd is currently outside the repo, so any relative path # should be interpreted as relative to `annex_path` assert_raises(FileNotInRepositoryError, _normalize_path, gr.path, os.getcwd()) result = _normalize_path(gr.path, "testfile") assert_equal(result, "testfile", "_normalize_path() returned %s" % result) # result = _normalize_path(gr.path, os.path.join('.', 'testfile')) # assert_equal(result, "testfile", "_normalize_path() returned %s" % result) # # result = _normalize_path(gr.path, os.path.join('testdir', '..', 'testfile')) # assert_equal(result, "testfile", "_normalize_path() returned %s" % result) # Note: By now, normpath within normalize_paths() is disabled, therefore # disable these tests. result = _normalize_path(gr.path, os.path.join('testdir', 'testfile')) assert_equal(result, os.path.join("testdir", "testfile"), "_normalize_path() returned %s" % result) result = _normalize_path(gr.path, os.path.join(git_path, "testfile")) assert_equal(result, "testfile", "_normalize_path() returned %s" % result) # now we are inside, so relative paths are relative to cwd and have # to be converted to be relative to annex_path: os.chdir(os.path.join(git_path, 'd1', 'd2')) result = _normalize_path(gr.path, "testfile") assert_equal(result, os.path.join('d1', 'd2', 'testfile'), "_normalize_path() returned %s" % result) result = _normalize_path(gr.path, os.path.join('..', 'testfile')) assert_equal(result, os.path.join('d1', 'testfile'), "_normalize_path() returned %s" % result) assert_raises(FileNotInRepositoryError, _normalize_path, gr.path, os.path.join(git_path, '..', 'outside')) result = _normalize_path(gr.path, os.path.join(git_path, 'd1', 'testfile')) assert_equal(result, os.path.join('d1', 'testfile'), "_normalize_path() returned %s" % result) os.chdir(cwd)