Compare commits
1 Commits
0.0.1.post
...
0.0.1.post
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
014e8ac0d2 |
@@ -37,10 +37,19 @@ def _exec(cmd: str, root: str | os.PathLike | None = None) -> list[str]:
|
||||
|
||||
"""
|
||||
try:
|
||||
stdout = subprocess.check_output(cmd, shell=True, text=True, cwd=root)
|
||||
#stdout = subprocess.check_output(cmd, shell=True, text=True, cwd=root)
|
||||
p = subprocess.run(cmd.split(), text=True, cwd=root, capture_output=True)
|
||||
if re.search("not a git repository",p.stderr):
|
||||
raise gitversionhelper.repository.notAGitRepository()
|
||||
if re.search("fatal:",p.stderr):
|
||||
raise gitversionhelper.unknownGITFatalError()
|
||||
if int(p.returncode) < 0:
|
||||
raise gitversionhelper.unknownGITError
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
stdout = e.output
|
||||
lines = stdout.splitlines()
|
||||
raise RuntimeError(e.output)
|
||||
|
||||
lines = p.stdout.splitlines()
|
||||
return [line.rstrip() for line in lines if line.rstrip()]
|
||||
|
||||
class gitversionhelperException(Exception):
|
||||
@@ -52,12 +61,18 @@ class gitversionhelper: # pylint: disable=too-few-public-methods
|
||||
"""
|
||||
class wrongArguments(gitversionhelperException):
|
||||
pass
|
||||
class unknownGITError(gitversionhelperException):
|
||||
pass
|
||||
class unknownGITFatalError(unknownGITError):
|
||||
pass
|
||||
class repository:
|
||||
"""
|
||||
class containing methods focusing on repository
|
||||
"""
|
||||
class repositoryException(gitversionhelperException):
|
||||
pass
|
||||
class notAGitRepository(repositoryException):
|
||||
pass
|
||||
class repositoryDirty(repositoryException):
|
||||
pass
|
||||
@classmethod
|
||||
@@ -115,7 +130,7 @@ class gitversionhelper: # pylint: disable=too-few-public-methods
|
||||
if len(res)==0:
|
||||
raise cls.tagNotFound("no tag found in commit history")
|
||||
elif len(res)!=1:
|
||||
raise cls.MoreThanOneTag("multiple tags on same commit is unsupported")
|
||||
raise cls.moreThanOneTag("multiple tags on same commit is unsupported")
|
||||
return res[0]
|
||||
|
||||
@classmethod
|
||||
@@ -153,6 +168,7 @@ class gitversionhelper: # pylint: disable=too-few-public-methods
|
||||
"Auto" : None
|
||||
}
|
||||
}
|
||||
__versionReseted = False
|
||||
class versionException(gitversionhelperException):
|
||||
pass
|
||||
class noValidVersion(versionException):
|
||||
@@ -294,9 +310,13 @@ class gitversionhelper: # pylint: disable=too-few-public-methods
|
||||
saved_kwargs = copy(kwargs)
|
||||
if "formated_output" in kwargs:
|
||||
del saved_kwargs["formated_output"]
|
||||
|
||||
_v = cls.getLastVersion(**saved_kwargs)
|
||||
amount = gitversionhelper.tag.getDistanceFromTag(_v.raw,**kwargs)
|
||||
_v = _v.bump(amount,**kwargs)
|
||||
|
||||
if cls.__versionReseted == False:
|
||||
amount = gitversionhelper.tag.getDistanceFromTag(_v.raw,**kwargs)
|
||||
_v = _v.bump(amount,**kwargs)
|
||||
|
||||
if ((cls.__OptDict["formated_output"] in kwargs) and (kwargs[cls.__OptDict["formated_output"]] is True)):
|
||||
return _v.doFormatVersion(**kwargs)
|
||||
return _v
|
||||
@@ -319,10 +339,13 @@ class gitversionhelper: # pylint: disable=too-few-public-methods
|
||||
bAutoVersionStd = True
|
||||
|
||||
lastTag=cls.MetaVersion.raw
|
||||
cls.__versionReseted = False
|
||||
try:
|
||||
lastTag = gitversionhelper.tag.getLastTag(**kwargs)
|
||||
except gitversionhelper.tag.tagNotFound:
|
||||
logging.warning('tag not found, reseting versionning')
|
||||
cls.__versionReseted = True
|
||||
|
||||
|
||||
bFound = False
|
||||
if VersionStd == "SemVer" or (bAutoVersionStd is True) :
|
||||
@@ -422,23 +445,3 @@ class gitversionhelper: # pylint: disable=too-few-public-methods
|
||||
revpattern="-pre"
|
||||
revcount=f".{pre_count}"
|
||||
return OutputFormat.format(major=inputversion.major,minor=inputversion.minor,patch=patch,revpattern=revpattern,revcount=revcount)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#print(gitversionhelper.head.isDirty())
|
||||
#print(gitversionhelper.tag.getTags())
|
||||
#print(gitversionhelper.tag.getLastTag())
|
||||
#print(gitversionhelper.tag.getLastTag(same_branch=True))
|
||||
#print(gitversionhelper.tag.getDistanceFromLastTag())
|
||||
#print(gitversionhelper.tag.getDistanceFromLastTag(same_branch=True))
|
||||
|
||||
#print(gitversionhelper.version.getLastVersion())
|
||||
#print(gitversionhelper.version.getLastVersion(same_branch=True,version_std="PEP440"))
|
||||
#print(gitversionhelper.version.getLastVersion(same_branch=True,version_std="PEP440"))
|
||||
#print(gitversionhelper.version.getLastVersion(same_branch=False,version_std="PEP440"))
|
||||
|
||||
|
||||
#from setuptools_git_versioning import version_from_git
|
||||
#print(str(version_from_git(tag_filter="^\d+\.\d+\.\d+$",dev_template = "{tag}.post{ccount}",sort_by="v:refname")),end ="")
|
||||
|
||||
@@ -685,7 +685,88 @@ class Test_gitversionhelper(unittest.TestCase):
|
||||
self.assertEqual("V_1_0",pygitversionhelper.gitversionhelper.version.getCurrentVersion(bump_type="dev",bump_dev_strategy="pre-major",output_format="V_{major}_{minor}",formated_output=True))
|
||||
|
||||
|
||||
|
||||
def test_nominal_emptyrepo(self):
|
||||
_v = pygitversionhelper.gitversionhelper.version.getCurrentVersion()
|
||||
self.assertIsInstance(_v, pygitversionhelper.gitversionhelper.version.MetaVersion)
|
||||
self.assertIsInstance(_v.raw, str)
|
||||
self.assertEqual(_v.raw, "0.1.0")
|
||||
self.assertIsInstance(_v.major, int)
|
||||
self.assertIsInstance(_v.minor, int)
|
||||
self.assertIsInstance(_v.patch, int)
|
||||
self.assertIsInstance(_v.pre_count, int)
|
||||
self.assertIsInstance(_v.post_count, int)
|
||||
|
||||
self.assertEqual(_v.major,0)
|
||||
self.assertEqual(_v.minor,1)
|
||||
self.assertEqual(_v.patch,0)
|
||||
self.assertEqual(_v.pre_count,0)
|
||||
self.assertEqual(_v.post_count,0)
|
||||
self._test_version_format(_v,"0.1.0")
|
||||
|
||||
def test_defect_dirty(self):
|
||||
_v=self._test_version_readback("0.1.1",version_std="PEP440")
|
||||
|
||||
with open("demofile.txt", "w+t") as tmpFile:
|
||||
tmpFile.write("testvalue225")
|
||||
|
||||
with self.assertRaises(pygitversionhelper.gitversionhelper.repository.repositoryDirty) as context:
|
||||
pygitversionhelper.gitversionhelper.version.getCurrentVersion()
|
||||
|
||||
def test_defect_wrongargument_git_sortargs(self):
|
||||
with self.assertRaises(pygitversionhelper.gitversionhelper.wrongArguments) as context:
|
||||
pygitversionhelper.gitversionhelper.tag.getTags(sort="toto")
|
||||
|
||||
def test_defect_git_notagfound(self):
|
||||
with open("demofile.txt", "w+t") as tmpFile:
|
||||
tmpFile.write("testvalue")
|
||||
os.system("git add .")
|
||||
os.system("git commit -m \"first commit\"")
|
||||
with self.assertRaises(pygitversionhelper.gitversionhelper.tag.tagNotFound) as context:
|
||||
pygitversionhelper.gitversionhelper.tag.getLastTag()
|
||||
|
||||
""" This test is impossible to do
|
||||
def test_defect_git_multipletagsfound(self):
|
||||
with open("demofile.txt", "w+t") as tmpFile:
|
||||
tmpFile.write("testvalue")
|
||||
os.system("git add .")
|
||||
os.system("git commit -m \"first commit\"")
|
||||
os.system(f"git tag 0.1.0")
|
||||
os.system(f"git tag 0.2.0")
|
||||
with self.assertRaises(pygitversionhelper.gitversionhelper.tag.moreThanOneTag) as context:
|
||||
pygitversionhelper.gitversionhelper.tag.getLastTag()
|
||||
"""
|
||||
|
||||
def test_defect_wrongargument_bump_type(self):
|
||||
_v=self._test_version_readback("0.1.1",version_std="PEP440")
|
||||
with self.assertRaises(pygitversionhelper.gitversionhelper.wrongArguments) as context:
|
||||
pygitversionhelper.gitversionhelper.version.getCurrentVersion(bump_type="toto")
|
||||
|
||||
def test_defect_wrongargument_bump_dev_strategy(self):
|
||||
_v=self._test_version_readback("0.1.1",version_std="PEP440")
|
||||
with self.assertRaises(pygitversionhelper.gitversionhelper.wrongArguments) as context:
|
||||
pygitversionhelper.gitversionhelper.version.getCurrentVersion(bump_dev_strategy="toto")
|
||||
|
||||
|
||||
|
||||
def tearDown(self):
|
||||
os.chdir("/")
|
||||
|
||||
|
||||
class Test_gitversionhelperNoRepo(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.TmpWorkingDir=tempfile.TemporaryDirectory()
|
||||
self.TmpWorkingDirPath=pathlib.Path(self.TmpWorkingDir.name)
|
||||
os.chdir(self.TmpWorkingDirPath)
|
||||
|
||||
def test_defect_norepo(self):
|
||||
with self.assertRaises(pygitversionhelper.gitversionhelper.repository.notAGitRepository) as context:
|
||||
_v = pygitversionhelper.gitversionhelper.version.getCurrentVersion()
|
||||
|
||||
def tearDown(self):
|
||||
os.chdir("/")
|
||||
|
||||
#print(gitversionhelper.tag.getLastTag(same_branch=True))
|
||||
#print(gitversionhelper.tag.getDistanceFromLastTag(same_branch=True))
|
||||
|
||||
#print(gitversionhelper.version.getLastVersion(same_branch=True,version_std="PEP440"))
|
||||
#print(gitversionhelper.version.getLastVersion(same_branch=True,version_std="PEP440"))
|
||||
#print(gitversionhelper.version.getLastVersion(same_branch=False,version_std="PEP440"))
|
||||
Reference in New Issue
Block a user