def _test_base_dir_alias(my): Config.set_value( "checkin", "asset_base_dir", { 'default': '/tmp/tactic/default', 'alias': '/tmp/tactic/alias', 'alias2': '/tmp/tactic/alias2', }) asset_dict = Environment.get_asset_dirs() default_dir = asset_dict.get("default") my.assertEquals("/tmp/tactic/default", default_dir) aliases = asset_dict.keys() # "plugins" is assumed in some branch if 'plugins' in aliases: my.assertEquals(4, len(aliases)) else: my.assertEquals(3, len(aliases)) my.assertNotEquals(None, "alias" in aliases) # create a naming naming = SearchType.create("config/naming") naming.set_value("search_type", "unittest/person") naming.set_value("context", "alias") naming.set_value("dir_naming", "alias") naming.set_value("file_naming", "text.txt") naming.set_value("base_dir_alias", "alias") naming.commit() # create 2nd naming where naming = SearchType.create("config/naming") naming.set_value("search_type", "unittest/person") naming.set_value("context", "alias2") naming.set_value("dir_naming", "alias2") naming.set_value("base_dir_alias", "alias2") naming.set_value("file_naming", "text.txt") naming.set_value("checkin_type", "auto") naming.commit() my.clear_naming() # create a new test.txt file for context in ['alias', 'alias2']: file_path = "./test.txt" file = open(file_path, 'w') file.write("whatever") file.close() checkin = FileCheckin(my.person, file_path, context=context) checkin.execute() snapshot = checkin.get_snapshot() lib_dir = snapshot.get_lib_dir() expected = "/tmp/tactic/%s/%s" % (context, context) my.assertEquals(expected, lib_dir) path = "%s/text.txt" % (lib_dir) exists = os.path.exists(path) my.assertEquals(True, exists)
def _test_base_dir_alias(my): Config.set_value("checkin", "asset_base_dir", { 'default': '/tmp/tactic/default', 'alias': '/tmp/tactic/alias', 'alias2': '/tmp/tactic/alias2', }); asset_dict = Environment.get_asset_dirs() default_dir = asset_dict.get("default") my.assertEquals( "/tmp/tactic/default", default_dir) aliases = asset_dict.keys() # "plugins" is assumed in some branch if 'plugins' in aliases: my.assertEquals( 4, len(aliases)) else: my.assertEquals( 3, len(aliases)) my.assertNotEquals( None, "alias" in aliases ) # create a naming naming = SearchType.create("config/naming") naming.set_value("search_type", "unittest/person") naming.set_value("context", "alias") naming.set_value("dir_naming", "alias") naming.set_value("file_naming", "text.txt") naming.set_value("base_dir_alias", "alias") naming.commit() # create 2nd naming where naming = SearchType.create("config/naming") naming.set_value("search_type", "unittest/person") naming.set_value("context", "alias2") naming.set_value("dir_naming", "alias2") naming.set_value("base_dir_alias", "alias2") naming.set_value("file_naming", "text.txt") naming.set_value("checkin_type", "auto") naming.commit() my.clear_naming() # create a new test.txt file for context in ['alias', 'alias2']: file_path = "./test.txt" file = open(file_path, 'w') file.write("whatever") file.close() checkin = FileCheckin(my.person, file_path, context=context) checkin.execute() snapshot = checkin.get_snapshot() lib_dir = snapshot.get_lib_dir() expected = "/tmp/tactic/%s/%s" % (context, context) my.assertEquals(expected, lib_dir) path = "%s/text.txt" % (lib_dir) exists = os.path.exists(path) my.assertEquals(True, exists)
def get_base_dir(my, protocol=None, alias="default"): '''get the default base directory for this sobject''' dirs = [] base_dir = '' client_os = Environment.get_env_object().get_client_os() if client_os == 'nt': prefix = "win32" else: prefix = "linux" if not alias: alias = "default" if not protocol: protocol = my.protocol if protocol == "http": repo_handler = my.sobject.get_repo_handler(my.snapshot) if repo_handler.is_tactic_repo(): base_dir = Environment.get_web_dir(alias=alias) else: alias_dict = Config.get_dict_value("perforce", "web_base_dir") base_dir = alias_dict.get(alias) if not base_dir: asset_alias_dict = Environment.get_asset_dirs() base_dir = asset_alias_dict.get(alias) base_dir = "/%s" % os.path.basename(base_dir) if not base_dir: base_dir = alias_dict.get("default") if not base_dir: base_dir = "/assets" elif protocol == "remote": # NOTE: currently needs web to get the full http base url base_dir = Environment.get_env_object().get_base_url().to_string() sub_dir = my.get_base_dir(protocol='http', alias=alias) base_dir = "%s%s" % (base_dir, sub_dir[0]) elif protocol == "file": base_dir = Environment.get_asset_dir(alias=alias) elif protocol == "env": base_dir = "$TACTIC_ASSET_DIR" # This is the central repository as seen from the client elif protocol in ["client_lib", "client_repo"]: base_dir = my.get_custom_setting('%s_client_repo_dir' % prefix) if not base_dir: alias_dict = Config.get_dict_value("checkin", "%s_client_repo_dir" % prefix) base_dir = alias_dict.get(alias) if not base_dir: base_dir = Environment.get_asset_dir() # DEPRECATED: The local repo. This one has logic to add "repo" dir # at the end. Use local_repo which does not have this logic. # keeping this around for backward compatibility elif protocol == "local": remote_repo = my.get_remote_repo() if remote_repo: #base_dir = remote_repo.get_value("repo_base_dir") base_dir = Environment.get_asset_dir() else: if Environment.get_env_object().get_client_os() =='nt': base_dir = Config.get_value("checkin","win32_local_base_dir") else: base_dir = Config.get_value("checkin","linux_local_base_dir") base_dir += "/repo" # The local repo elif protocol == "local_repo": remote_repo = my.get_remote_repo() if remote_repo: base_dir = remote_repo.get_value("repo_base_dir") else: if Environment.get_env_object().get_client_os() =='nt': base_dir = Config.get_value("checkin","win32_local_repo_dir") else: base_dir = Config.get_value("checkin","linux_local_repo_dir") if not base_dir: base_dir = Environment.get_asset_dir() elif protocol == "sandbox": remote_repo = my.get_remote_repo() if remote_repo: base_dir = remote_repo.get_value("sandbox_base_dir") else: if not base_dir: base_dict = Config.get_dict_value("checkin","%s_sandbox_dir" % prefix) base_dir = base_dict.get(alias) elif protocol == "relative": return [] assert base_dir return [base_dir]
def get_base_dir(self, protocol=None, alias="default"): '''get the default base directory for this sobject''' dirs = [] base_dir = '' client_os = Environment.get_env_object().get_client_os() if client_os == 'nt': prefix = "win32" else: prefix = "linux" if not alias: alias = "default" if not protocol: protocol = self.protocol if protocol == "http": repo_handler = self.sobject.get_repo_handler(self.snapshot) if repo_handler.is_tactic_repo(): base_dir = Environment.get_web_dir(alias=alias) else: alias_dict = Config.get_dict_value("perforce", "web_base_dir") base_dir = alias_dict.get(alias) if not base_dir: asset_alias_dict = Environment.get_asset_dirs() base_dir = asset_alias_dict.get(alias) base_dir = "/%s" % os.path.basename(base_dir) if not base_dir: base_dir = alias_dict.get("default") if not base_dir: base_dir = "/assets" elif protocol == "remote": # NOTE: currently needs web to get the full http base url base_dir = Environment.get_env_object().get_base_url().to_string() sub_dir = self.get_base_dir(protocol='http', alias=alias) base_dir = "%s%s" % (base_dir, sub_dir[0]) elif protocol == "file": base_dir = Environment.get_asset_dir(alias=alias) elif protocol == "env": base_dir = "$TACTIC_ASSET_DIR" # This is the central repository as seen from the client elif protocol in ["client_lib", "client_repo"]: base_dir = self.get_custom_setting('%s_client_repo_dir' % prefix) if not base_dir: alias_dict = Config.get_dict_value("checkin", "%s_client_repo_dir" % prefix) base_dir = alias_dict.get(alias) if not base_dir: base_dir = Environment.get_asset_dir() # DEPRECATED: The local repo. This one has logic to add "repo" dir # at the end. Use local_repo which does not have this logic. # keeping this around for backward compatibility elif protocol == "local": remote_repo = self.get_remote_repo() if remote_repo: #base_dir = remote_repo.get_value("repo_base_dir") base_dir = Environment.get_asset_dir() else: if Environment.get_env_object().get_client_os() =='nt': base_dir = Config.get_value("checkin","win32_local_base_dir") else: base_dir = Config.get_value("checkin","linux_local_base_dir") base_dir += "/repo" # The local repo elif protocol == "local_repo": remote_repo = self.get_remote_repo() if remote_repo: base_dir = remote_repo.get_value("repo_base_dir") else: if Environment.get_env_object().get_client_os() =='nt': base_dir = Config.get_value("checkin","win32_local_repo_dir") else: base_dir = Config.get_value("checkin","linux_local_repo_dir") if not base_dir: base_dir = Environment.get_asset_dir() elif protocol == "sandbox": remote_repo = self.get_remote_repo() if remote_repo: base_dir = remote_repo.get_value("sandbox_base_dir") else: if not base_dir: base_dict = Config.get_dict_value("checkin","%s_sandbox_dir" % prefix) base_dir = base_dict.get(alias) elif protocol == "relative": return [] assert base_dir return [base_dir]