public function testProfileCanSaveStorageDataToFile() { $this->_standardProfileFromData->loadFromData(); $this->_standardProfileFromData->setAttribute('projectProfileFile', $this->_projectDirectory . 'my-xml-file.xml'); $this->_standardProfileFromData->storeToFile(); $this->assertTrue(file_exists($this->_projectDirectory . 'my-xml-file.xml')); }
/** * unserialize() * * Create a structure in the object $profile from the structure specficied * in the xml string provided * * @param string xml data * @param Zend_Tool_Project_Profile The profile to use as the top node * @return Zend_Tool_Project_Profile */ public function unserialize($data, Zend_Tool_Project_Profile $profile) { if ($data == null) { throw new Exception('contents not available to unserialize.'); } $this->_profile = $profile; $xmlDataIterator = new SimpleXMLIterator($data); if ($xmlDataIterator->getName() != 'projectProfile') { throw new Exception('Profiles must start with a projectProfile node'); } if (isset($xmlDataIterator['type'])) { $this->_profile->setAttribute('type', (string) $xmlDataIterator['type']); } if (isset($xmlDataIterator['version'])) { $this->_profile->setAttribute('version', (string) $xmlDataIterator['version']); } // start un-serialization of the xml doc $this->_unserializeRecurser($xmlDataIterator); // contexts should be initialized after the unwinding of the profile structure $this->_lazyLoadContexts(); return $this->_profile; }
protected function _findProfileDirectory($projectDirectory = null, $searchParentDirectories = true) { // use the cwd if no directory was provided if ($projectDirectory == null) { $projectDirectory = getcwd(); } elseif (realpath($projectDirectory) == false) { throw new Zend_Tool_Project_Provider_Exception('The $projectDirectory supplied does not exist.'); } $profile = new Zend_Tool_Project_Profile(); $parentDirectoriesArray = explode(DIRECTORY_SEPARATOR, ltrim($projectDirectory, DIRECTORY_SEPARATOR)); while ($parentDirectoriesArray) { $projectDirectoryAssembled = implode(DIRECTORY_SEPARATOR, $parentDirectoriesArray); if (DIRECTORY_SEPARATOR !== "\\") { $projectDirectoryAssembled = DIRECTORY_SEPARATOR . $projectDirectoryAssembled; } $profile->setAttribute('projectDirectory', $projectDirectoryAssembled); if ($profile->isLoadableFromFile()) { unset($profile); return $projectDirectoryAssembled; } // break after first run if we are not to check upper directories if ($searchParentDirectories == false) { break; } array_pop($parentDirectoriesArray); } return false; }
/** * * @expectedException Zend_Tool_Project_Exception */ public function testProfileThrowsExceptionOnLoadFromFileWithBadPathForProfileFile() { $profile = new Zend_Tool_Project_Profile(); $profile->setAttribute('projectProfileFile', '/path/should/not/exist'); // missing file path or project path $profile->loadFromFile(); }
/** * _getProject is designed to find if there is project file in the context of where * the client has been called from.. The search order is as follows.. * - traversing downwards from (PWD) - current working directory * - if an enpoint variable has been registered in teh client registry - key=workingDirectory * - if an ENV variable with the key ZFPROJECT_PATH is found * * @param $loadProfileFlag bool Whether or not to throw an exception when no profile is found * @param $projectDirectory string The project directory to use to search * @param $searchParentDirectories bool Whether or not to search upper level direcotries * @return Zend_Tool_Project_Profile */ protected function _loadProfile($loadProfileFlag = self::NO_PROFILE_THROW_EXCEPTION, $projectDirectory = null, $searchParentDirectories = true) { // use the cwd if no directory was provided if ($projectDirectory == null) { $projectDirectory = getcwd(); } elseif (realpath($projectDirectory) == false) { throw new Zend_Tool_Project_Provider_Exception('The $projectDirectory supplied does not exist.'); } $profile = new Zend_Tool_Project_Profile(); $parentDirectoriesArray = explode(DIRECTORY_SEPARATOR, ltrim($projectDirectory, DIRECTORY_SEPARATOR)); while ($parentDirectoriesArray) { $projectDirectoryAssembled = implode(DIRECTORY_SEPARATOR, $parentDirectoriesArray); if (DIRECTORY_SEPARATOR !== "\\") { $projectDirectoryAssembled = DIRECTORY_SEPARATOR . $projectDirectoryAssembled; } $profile->setAttribute('projectDirectory', $projectDirectoryAssembled); if ($profile->isLoadableFromFile()) { chdir($projectDirectoryAssembled); $profile->loadFromFile(); $this->_loadedProfile = $profile; break; } // break after first run if we are not to check upper directories if ($searchParentDirectories == false) { break; } array_pop($parentDirectoriesArray); } if ($this->_loadedProfile == null) { if ($loadProfileFlag == self::NO_PROFILE_THROW_EXCEPTION) { throw new Zend_Tool_Project_Provider_Exception('A project profile was not found.'); } elseif ($loadProfileFlag == self::NO_PROFILE_RETURN_FALSE) { return false; } } return $profile; }
/** * _getProject is designed to find if there is project file in the context of where * the client has been called from.. The search order is as follows.. * - traversing downwards from (PWD) - current working directory * - if an enpoint variable has been registered in teh client registry - key=workingDirectory * - if an ENV variable with the key ZFPROJECT_PATH is found * * @ * @return Zend_Tool_Project_Profile */ protected function _loadProfile($loadProfileFlag = self::NO_PROFILE_THROW_EXCEPTION, $projectDirectory = null) { if ($projectDirectory == null) { $projectDirectory = getcwd(); } $profile = new Zend_Tool_Project_Profile(); $profile->setAttribute('projectDirectory', $projectDirectory); if ($profile->isLoadableFromFile()) { $profile->loadFromFile(); $this->_loadedProfile = $profile; } if ($this->_loadedProfile == null) { if ($loadProfileFlag == self::NO_PROFILE_THROW_EXCEPTION) { throw new Zend_Tool_Project_Provider_Exception('A project profile was not found.'); } elseif ($loadProfileFlag == self::NO_PROFILE_RETURN_FALSE) { return false; } } return $profile; }