From db00e9be8e7740d0cf8a6ebbf6abca06bea58774 Mon Sep 17 00:00:00 2001 From: Siddharth Ravikumar Date: Thu, 19 Feb 2015 15:47:46 -0500 Subject: modded combox.file.relative_path function. Now the function is rigged up to return path relative to both combox directory and node directory. Corresponding test for this function is at tests.file_test module. modified: combox/file.py modified: tests/file_test.py --- combox/file.py | 17 +++++++++++++---- tests/file_test.py | 24 +++++++++++++++++++++--- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/combox/file.py b/combox/file.py index 0eb08b3..e6d4000 100644 --- a/combox/file.py +++ b/combox/file.py @@ -26,8 +26,14 @@ from glob import glob from combox.config import get_nodedirs -def relative_path(p, config): - """Returns the relative path to the `p' w. r. t combox directory. +def relative_path(p, config, comboxd=True): + """Returns the relative path to the `p' w. r. t combox or node directory. + + If `comboxd' is True, the relative path is w. r. t combox + directory. + + If `comboxd' is False, the relative path is w. r. t node + directory. p: path to a directory or file. @@ -35,9 +41,12 @@ def relative_path(p, config): combox. """ - combox_dir = '%s/' % config['combox_dir'] + if comboxd: + directory = '%s/' % config['combox_dir'] + else: + directory = '%s/' % get_nodedirs(config)[0] - return p.partition(combox_dir)[2] + return p.partition(directory)[2] def mk_nodedir(directory, config): diff --git a/tests/file_test.py b/tests/file_test.py index 2c6dce0..b3edc7a 100644 --- a/tests/file_test.py +++ b/tests/file_test.py @@ -24,9 +24,8 @@ from nose.tools import * from os import path, remove from combox.config import get_nodedirs -from combox.file import (split_data, glue_data, write_file, - read_file, write_shards, read_shards, - hash_file, rm_shards) +from combox.crypto import split_and_encrypt +from combox.file import * from tests.utils import get_config, rm_nodedirs, rm_configdir @@ -95,6 +94,25 @@ class TestFile(object): assert fhash == sha512(fcontent).hexdigest() + def test_relativepath(self): + """ + Tests the relative_path function + """ + + test_file_basename = path.basename(self.TEST_FILE) + print test_file_basename + assert test_file_basename == relative_path(self.TEST_FILE, + self.config) + + split_and_encrypt(self.TEST_FILE, self.config) + test_file_shard_0 = '%s.shard.0' % test_file_basename + test_file_shard_0_abspath = "%s/%s" % (get_nodedirs(self.config)[0], + test_file_shard_0) + + assert test_file_shard_0 == relative_path(test_file_shard_0_abspath, + self.config, False) + + @classmethod def teardown_class(self): """Purge the mess created by this test.""" -- cgit v1.2.3