diff --git a/tests/VersioncontrolTokenTests.test b/tests/VersioncontrolTokenTests.test index 4432a61..b097eda 100644 --- a/tests/VersioncontrolTokenTests.test +++ b/tests/VersioncontrolTokenTests.test @@ -34,7 +34,7 @@ class VersioncontrolTokenTests extends VersioncontrolTestCase { $this->assertFalse(in_array(0, array_map('strlen', $tokens)), t('No empty tokens generated.')); foreach ($tokens as $name => $value) { $render = token_replace($name, array('VersioncontrolBackend' => $object)); - $this->assertEqual($render, $value); + $this->assertEqual($render, $value, t('Token %name generated correctly.', array('%name' => $name))); } } @@ -51,7 +51,7 @@ class VersioncontrolTokenTests extends VersioncontrolTestCase { $this->assertFalse(in_array(0, array_map('strlen', $tokens)), t('No empty tokens generated.')); foreach ($tokens as $name => $value) { $render = token_replace($name, array('VersioncontrolRepository' => $object)); - $this->assertEqual($render, $value); + $this->assertEqual($render, $value, t('Token %name generated correctly.', array('%name' => $name))); } } @@ -60,8 +60,8 @@ class VersioncontrolTokenTests extends VersioncontrolTestCase { $tokens = array( '[VersioncontrolOperation:id]' => $object->vc_op_id, '[VersioncontrolOperation:revision]' => $object->revision, - '[VersioncontrolOperation:author_date]' => format_date($object->author_date, 'medium', '', NULL, $language_code), - '[VersioncontrolOperation:committer_date]' => format_date($object->committer_date, 'medium', '', NULL, $language_code), + '[VersioncontrolOperation:author_date]' => format_date($object->author_date, 'medium'), + '[VersioncontrolOperation:committer_date]' => format_date($object->committer_date, 'medium'), '[VersioncontrolOperation:author]' => $object->author, '[VersioncontrolOperation:committer]' => $object->committer, '[VersioncontrolOperation:message]' => $object->message, @@ -70,33 +70,37 @@ class VersioncontrolTokenTests extends VersioncontrolTestCase { $this->assertFalse(in_array(0, array_map('strlen', $tokens)), t('No empty tokens generated.')); foreach ($tokens as $name => $value) { $render = token_replace($name, array('VersioncontrolOperation' => $object)); - $this->assertEqual($render, $value); + $this->assertEqual($render, $value, t('Token %name generated correctly.', array('%name' => $name))); } } - //function testVersioncontrolBranchTokens() { - //$message = '[branch-id] [branch-name] [branch-repository] [branch-repository-id] [branch-repository-name]'; - //$object = $this->versioncontrolCreateLabel('branch'); - //$expected = $object->label_id .' '. - //$object->name .' '. - //l($object->getRepository()->name, $object->getRepository()->getUrlHandler()->getRepositoryViewUrl()) .' '. - //$object->getRepository()->repo_id .' '. - //$object->getRepository()->name; - //$render = token_replace($message, array('VersioncontrolBranch' => $object)); - //$this->assertEqual($render, $expected); - //} + function testVersioncontrolBranchTokens() { + $object = $this->versioncontrolCreateBranch(); + $tokens = array( + '[VersioncontrolBranch:id]' => $object->label_id, + '[VersioncontrolBranch:name]' => $object->name, + ); + // Test to make sure that we generated something for each token. + $this->assertFalse(in_array(0, array_map('strlen', $tokens)), t('No empty tokens generated.')); + foreach ($tokens as $name => $value) { + $render = token_replace($name, array('VersioncontrolBranch' => $object)); + $this->assertEqual($render, $value, t('Token %name generated correctly.', array('%name' => $name))); + } + } - //function testVersioncontrolTagTokens() { - //$message = '[tag-id] [tag-name] [tag-repository] [tag-repository-id] [tag-repository-name]'; - //$object = $this->versioncontrolCreateLabel('tag'); - //$expected = $object->label_id .' '. - //$object->name .' '. - //l($object->getRepository()->name, $object->getRepository()->getUrlHandler()->getRepositoryViewUrl()) .' '. - //$object->getRepository()->repo_id .' '. - //$object->getRepository()->name; - //$render = token_replace($message, array('VersioncontrolTag' => $object)); - //$this->assertEqual($render, $expected); - //} + function testVersioncontrolTagTokens() { + $object = $this->versioncontrolCreateTag(); + $tokens = array( + '[VersioncontrolTag:id]' => $object->label_id, + '[VersioncontrolTag:name]' => $object->name, + ); + // Test to make sure that we generated something for each token. + $this->assertFalse(in_array(0, array_map('strlen', $tokens)), t('No empty tokens generated.')); + foreach ($tokens as $name => $value) { + $render = token_replace($name, array('VersioncontrolTag' => $object)); + $this->assertEqual($render, $value, t('Token %name generated correctly.', array('%name' => $name))); + } + } //function testVersioncontrolItemTokens() { //$message = '[item-path]'; diff --git a/versioncontrol.tokens.inc b/versioncontrol.tokens.inc index 01194db..67877e4 100644 --- a/versioncontrol.tokens.inc +++ b/versioncontrol.tokens.inc @@ -46,10 +46,10 @@ function versioncontrol_token_info() { 'name'=> t('Repository name'), 'description' => t('User visible name of the repository.'), ), - // @todo Provide the whole backend object from here? - 'vcs' => array( + 'backend' => array( 'name'=> t('Repository backend machine name'), - 'description' => t('The description of the backend'), + 'description' => t('The backend machine name this repository uses.'), + 'type' => 'VersioncontrolBackend', ), 'viewer' => array( 'name'=> t('Repository viewer url.'), @@ -68,7 +68,11 @@ function versioncontrol_token_info() { 'name' => t('Operation ID'), 'description' => t('The unique identifier for the operation.'), ), - // @todo Provide the whole repository object from here? + 'repository' => array( + 'name' => t('Operation repository ID'), + 'description' => t('The unique identifier for the repository this operation belongs to.'), + 'type' => 'VersioncontrolRepository', + ), 'revision' => array( 'name' => t('Operation revision'), 'description' => t('Backend internal identifier for the operation.'), @@ -100,43 +104,55 @@ function versioncontrol_token_info() { ), ); - //if ($all || $type == 'VersioncontrolBranch') { - //$tokens['Versioncontrol Branch'] = array( - //'branch-id' => t('The identifier of the branch'), - //'branch-name' => t('The name of the branch'), - //'branch-repository' => t('Link to the repository'), - //'branch-repository-id' => t('The identifier of the repository'), - //'branch-repository-name' => t('The name of the repository'), - //); - //} + // Branch. + $info['types']['VersioncontrolBranch'] = array( + 'name' => t('Version Control Branch'), + 'description' => t('Tokens related to branches.'), + 'needs-data' => 'VersioncontrolBranch', + ); + $info['tokens']['VersioncontrolBranch'] = array( + 'id' => array( + 'name' => t('Branch ID'), + 'description' => t('The unique identifier for the branch.'), + ), + 'name' => array( + 'name' => t('Branch name'), + 'description' => t('The name of the branch.'), + ), + 'repository' => array( + 'name' => t('Branch repository ID'), + 'description' => t('The unique identifier for the repository this branch belongs to.'), + 'type' => 'VersioncontrolRepository', + ), + ); - //if ($all || $type == 'VersioncontrolTag') { - //$tokens['Versioncontrol Tag'] = array( - //'tag-id' => t('The identifier of the tag'), - //'tag-name' => t('The name of the tag'), - //'tag-repository' => t('Link to the repository'), - //'tag-repository-id' => t('The identifier of the repository'), - //'tag-repository-name' => t('The name of the repository'), - //); - //} + // Tag. + $info['types']['VersioncontrolTag'] = array( + 'name' => t('Version Control Tag'), + 'description' => t('Tokens related to tags.'), + 'needs-data' => 'VersioncontrolTag', + ); + $info['tokens']['VersioncontrolTag'] = array( + 'id' => array( + 'name' => t('Tag ID'), + 'description' => t('The unique identifier for the tag.'), + ), + 'name' => array( + 'name' => t('Tag name'), + 'description' => t('The name of the tag.'), + ), + 'repository' => array( + 'name' => t('Tag repository ID'), + 'description' => t('The unique identifier for the repository this tag belongs to.'), + 'type' => 'VersioncontrolRepository', + ), + ); - //if ($all || $type == 'VersioncontrolItem') { - //$tokens['Versioncontrol Item'] = array( - //'item-path' => t('The path of the item'), - //); - //} + // @todo VersioncontrolItem tokens: id, operation, repository, path, + // revision, type, source_item, action, line_changes_addded, + // line_changes_removed - //if ($all || $type == 'VersioncontrolEvent') { - //$tokens['Versioncontrol Event'] = array( - //'event-id' => t('The identifier of the operation'), - //'event-actor' => t('Link to the user that caused the event'), - //'event-actor-name' => t('The name of the user that caused the event'), - //'event-actor-uid' => t('The user id of the user that caused the event'), - //'event-repository' => t('Link to the repository'), - //'event-repository-id' => t('The identifier of the repository'), - //'event-repository-name' => t('The name of the repository'), - //) + token_get_date_token_info(t('The event\'s'), 'event-'); - //} + // @todo VersioncontrolEvent tokens: id, repository, actor, date return $info; } @@ -169,19 +185,34 @@ function versioncontrol_tokens($type, $tokens, array $data = array(), array $opt case 'viewer': $replacements[$original] = l($object->name, $object->getUrlHandler()->getRepositoryViewUrl()); break; + case 'backend': + $name = 'vcs'; + $replacements[$original] = $sanitize ? check_plain($object->$name) : $object->$name; + break; case 'id': $name = 'repo_id'; case 'name': - case 'vcs': $replacements[$original] = $sanitize ? check_plain($object->$name) : $object->$name; } + if ($backend_tokens = token_find_with_prefix($tokens, 'backend')) { + $backend = $object->getBackend(); + $replacements += token_generate('VersioncontrolBackend', $backend_tokens, array('VersioncontrolBackend' => $backend), $options); + } break; case 'VersioncontrolOperation': switch ($name) { + case 'type': + $operation_types = versioncontrol_operation_types(); + $replacements[$original] = $operation_types[$object->type]; + break; case 'author_date': case 'committer_date': $replacements[$original] = format_date($object->$name, 'medium', '', NULL, $language_code); break; + case 'repository': + $name = 'repo_id'; + $replacements[$original] = $sanitize ? check_plain($object->$name) : $object->$name; + break; case 'id': $name = 'vc_op_id'; case 'revision': @@ -204,47 +235,29 @@ function versioncontrol_tokens($type, $tokens, array $data = array(), array $opt $committer = user_load($object->committer_uid); $replacements += token_generate('user', $author_tokens, array('user' => $committer), $options); } + if ($repository_tokens = token_find_with_prefix($tokens, 'repository')) { + //$repository = $object->getRepository(); + $repository = versioncontrol_repository_load($object->repo_id); + $replacements += token_generate('VersioncontrolRepository', $repository_tokens, array('VersioncontrolRepository' => $repository), $options); + } + break; + case 'VersioncontrolBranch': + case 'VersioncontrolTag': + switch ($name) { + case 'repository': + $name = 'repo_id'; + $replacements[$original] = $sanitize ? check_plain($object->$name) : $object->$name; + break; + case 'id': + $name = 'label_id'; + case 'name': + $replacements[$original] = $sanitize ? check_plain($object->$name) : $object->$name; + } + if ($repository_tokens = token_find_with_prefix($tokens, 'repository')) { + $repository = $object->getRepository(); + $replacements += token_generate('VersioncontrolRepository', $repository_tokens, array('VersioncontrolRepository' => $repository), $options); + } break; - - //case 'VersioncontrolBranch': - //$values = array( - //'branch-id' => $object->label_id, - //'branch-name' => $object->name, - //'branch-repository' => l($object->getRepository()->name, $object->getRepository()->getUrlHandler()->getRepositoryViewUrl()), - //'branch-repository-id' => $object->getRepository()->repo_id, - //'branch-repository-name' => $object->getRepository()->name, - //); - - //break; - //case 'VersioncontrolTag': - //$values = array( - //'tag-id' => $object->label_id, - //'tag-name' => $object->name, - //'tag-repository' => l($object->getRepository()->name, $object->getRepository()->getUrlHandler()->getRepositoryViewUrl()), - //'tag-repository-id' => $object->getRepository()->repo_id, - //'tag-repository-name' => $object->getRepository()->name, - //); - - //break; - //case 'VersioncontrolItem': - //$values = array( - //'item-path' => $object->path, - //); - - //break; - //case 'VersioncontrolEvent': - //$actor = db_fetch_object(db_query("SELECT name, mail FROM {users} WHERE uid = %d", $object->uid)); - - //$values = array( - //'event-id' => $object->elid, - //'event-actor' => l($actor->name, 'user/'. $object->uid), - //'event-actor-name' => $actor->name, - //'event-actor-uid' => $object->uid, - //'event-repository' => l($object->getRepository()->name, $object->getRepository()->getUrlHandler()->getRepositoryViewUrl()), - //'event-repository-id' => $object->getRepository()->repo_id, - //'event-repository-name' => $object->getRepository()->name, - //) + token_get_date_token_values($object->timestamp, 'event-'); - } }