def exec(self, os_lib=os): '''This method is executed to activate the given extension name.''' comp_name = self._arguments.name contrib_path = instantiator.get_package_abslocation(contrib) comp_path = "%s%s" % (contrib_path, comp_name) if not os_lib.path.exists(comp_path): raise FantasticoSdkCommandNotFoundError( "Extension %s does not exist." % comp_name) file_matcher = lambda abspath, filename: True root_folder = instantiator.get_component_path_data( SettingsFacade().get_config().__class__)[1] comp_root_folder = "%s%s/%s" % (root_folder, self._arguments.comp_root, comp_name) if not os_lib.path.exists(comp_root_folder): os_lib.mkdir(comp_root_folder) instantiator.scan_folder_by_criteria( comp_path, file_matcher, action=lambda abspath, filename: \ self._link_files(abspath, filename, contrib_path, root_folder, os_lib), os_lib=os_lib)
def test_activate_extenstion_notfound(self): '''This test case ensures a concrete exception is thrown when we try to activate an inexistent extension.''' comp_name = "component-not-found-triplex" expected_comp_path = "%s%s" % (instantiator.get_package_abslocation(contrib), comp_name) self._mocked_os_path.exists = Mock(return_value=False) argv = [SdkCommandActivateExtension.get_name(), "--name", comp_name, "--comp-root", "samples"] cmd_activate = SdkCommandActivateExtension(argv, cmd_factory=None) with self.assertRaises(FantasticoSdkCommandNotFoundError): cmd_activate.exec_command(self._mocked_os) self._mocked_os_path.exists.assert_called_once_with(expected_comp_path)
def _mock_activate_ok_scenario(self, comp_name, comp_root_folder, argv): '''This method mocks the success scenario for activate extension.''' root_folder = instantiator.get_component_path_data(SettingsFacade().get_config().__class__)[1] comp_root = "%s%s/%s" % (root_folder, comp_root_folder, comp_name) expected_comp_path = "%s%s" % (instantiator.get_package_abslocation(contrib), comp_name) comp_structure = ["__init__.py", "sql", "models", "dynamic_menus.py"] linking_trace = {} remove_trace = [] def list_comp(dirname): '''This method mocks listdir method from os library.''' if dirname == expected_comp_path: return comp_structure def symlink(src, dest, holder=linking_trace): '''This method mocks the symlink method from os library.''' holder[src] = dest def file_exists(filename): if filename == comp_root: return False return True def remove(filename, remove_trace=remove_trace): remove_trace.append(filename) self._mocked_os.path.exists = file_exists self._mocked_os.remove = remove self._mocked_os.mkdir = Mock() self._mocked_os.listdir = list_comp self._mocked_os.symlink = symlink cmd_activate = SdkCommandActivateExtension(argv, cmd_factory=None) cmd_activate.exec_command(os_lib=self._mocked_os) self._assert_ok_scenario_results(comp_structure, expected_comp_path, linking_trace, remove_trace, comp_root)
def exec(self, os_lib=os): """This method is executed to activate the given extension name.""" comp_name = self._arguments.name contrib_path = instantiator.get_package_abslocation(contrib) comp_path = "%s%s" % (contrib_path, comp_name) if not os_lib.path.exists(comp_path): raise FantasticoSdkCommandNotFoundError("Extension %s does not exist." % comp_name) file_matcher = lambda abspath, filename: True root_folder = instantiator.get_component_path_data(SettingsFacade().get_config().__class__)[1] comp_root_folder = "%s%s/%s" % (root_folder, self._arguments.comp_root, comp_name) if not os_lib.path.exists(comp_root_folder): os_lib.mkdir(comp_root_folder) instantiator.scan_folder_by_criteria( comp_path, file_matcher, action=lambda abspath, filename: self._link_files(abspath, filename, contrib_path, root_folder, os_lib), os_lib=os_lib, )