def get_emperor_library_version(): """Get Emperor version and the git SHA + current branch (if applicable)""" emperor_dir = get_emperor_project_dir() emperor_version = emperor_library_version # more information could be retrieved following this pattern sha_cmd = 'git --git-dir %s/.git rev-parse HEAD' % (emperor_dir) sha_o, sha_e, sha_r = qcli_system_call(sha_cmd) git_sha = sha_o.strip() branch_cmd = 'git --git-dir %s/.git rev-parse --abbrev-ref HEAD' %\ (emperor_dir) branch_o, branch_e, branch_r = qcli_system_call(branch_cmd) git_branch = branch_o.strip() # validate the output from both command calls if is_valid_git_refname(git_branch) and is_valid_git_sha1(git_sha): return '%s, %s@%s' % (emperor_version, git_branch, git_sha[0:7]) else: return '%s' % emperor_version
def test_is_valid_git_refname(self): """Test correct validation of refnames""" # valid branchnames self.assertTrue(is_valid_git_refname('master')) self.assertTrue(is_valid_git_refname('debuggatron_2000')) self.assertTrue(is_valid_git_refname('refname/bar')) self.assertTrue(is_valid_git_refname('ref.nameslu/_eggs_/spam')) self.assertTrue(is_valid_git_refname('valid{0}char'.format( unichr(40)))) self.assertTrue(is_valid_git_refname('master@head')) self.assertTrue(is_valid_git_refname('bar{thing}foo')) # case happening with git < 1.6.6 self.assertFalse( is_valid_git_refname( '--abbrev-ref\nbaa350d7b7063d585ca293fc16ef15e0765dc9ee')) # different invalid refnames, for a description of each group see the # man page of git check-ref-format self.assertFalse(is_valid_git_refname('bar/.spam/eggs')) self.assertFalse(is_valid_git_refname('bar.lock/spam/eggs')) self.assertFalse(is_valid_git_refname('bar.lock')) self.assertFalse(is_valid_git_refname('.foobar')) self.assertFalse(is_valid_git_refname('ref..name')) self.assertFalse( is_valid_git_refname(u'invalid{0}char'.format(unichr(177)))) self.assertFalse( is_valid_git_refname('invalid{0}char'.format(unichr(39)))) self.assertFalse(is_valid_git_refname('ref~name/bar')) self.assertFalse(is_valid_git_refname('refname spam')) self.assertFalse(is_valid_git_refname('bar/foo/eggs~spam')) self.assertFalse(is_valid_git_refname('bar:_spam_')) self.assertFalse(is_valid_git_refname('eggtastic^2')) self.assertFalse(is_valid_git_refname('areyourandy?')) self.assertFalse(is_valid_git_refname('bar/*/spam')) self.assertFalse(is_valid_git_refname('bar[spam]/eggs')) self.assertFalse(is_valid_git_refname('/barfooeggs')) self.assertFalse(is_valid_git_refname('barfooeggs/')) self.assertFalse(is_valid_git_refname('bar/foo//////eggs')) self.assertFalse(is_valid_git_refname('dotEnding.')) self.assertFalse(is_valid_git_refname('@{branch')) self.assertFalse(is_valid_git_refname('contains\\slash')) self.assertFalse(is_valid_git_refname('$newbranch'))
def test_is_valid_git_refname(self): """Test correct validation of refnames""" # valid branchnames self.assertTrue(is_valid_git_refname('master')) self.assertTrue(is_valid_git_refname('debuggatron_2000')) self.assertTrue(is_valid_git_refname('refname/bar')) self.assertTrue(is_valid_git_refname('ref.nameslu/_eggs_/spam')) self.assertTrue(is_valid_git_refname('valid{0}char'.format( unichr(40)))) self.assertTrue(is_valid_git_refname('master@head')) self.assertTrue(is_valid_git_refname('bar{thing}foo')) # case happening with git < 1.6.6 self.assertFalse(is_valid_git_refname( '--abbrev-ref\nbaa350d7b7063d585ca293fc16ef15e0765dc9ee')) # different invalid refnames, for a description of each group see the # man page of git check-ref-format self.assertFalse(is_valid_git_refname('bar/.spam/eggs')) self.assertFalse(is_valid_git_refname('bar.lock/spam/eggs')) self.assertFalse(is_valid_git_refname('bar.lock')) self.assertFalse(is_valid_git_refname('.foobar')) self.assertFalse(is_valid_git_refname('ref..name')) self.assertFalse(is_valid_git_refname(u'invalid{0}char'.format( unichr(177)))) self.assertFalse(is_valid_git_refname('invalid{0}char'.format( unichr(39)))) self.assertFalse(is_valid_git_refname('ref~name/bar')) self.assertFalse(is_valid_git_refname('refname spam')) self.assertFalse(is_valid_git_refname('bar/foo/eggs~spam')) self.assertFalse(is_valid_git_refname('bar:_spam_')) self.assertFalse(is_valid_git_refname('eggtastic^2')) self.assertFalse(is_valid_git_refname('areyourandy?')) self.assertFalse(is_valid_git_refname('bar/*/spam')) self.assertFalse(is_valid_git_refname('bar[spam]/eggs')) self.assertFalse(is_valid_git_refname('/barfooeggs')) self.assertFalse(is_valid_git_refname('barfooeggs/')) self.assertFalse(is_valid_git_refname('bar/foo//////eggs')) self.assertFalse(is_valid_git_refname('dotEnding.')) self.assertFalse(is_valid_git_refname('@{branch')) self.assertFalse(is_valid_git_refname('contains\\slash')) self.assertFalse(is_valid_git_refname('$newbranch'))