-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathtest_versioners.py
More file actions
133 lines (112 loc) · 6.08 KB
/
test_versioners.py
File metadata and controls
133 lines (112 loc) · 6.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# Copyright 2019, Oath Inc.
# Licensed under the terms of the Apache 2.0 license. See the LICENSE file in the project root for termsimport copy
import datetime
import os
import subprocess # nosec
import unittest
from . import ScrewdriverTestCase
from screwdrivercd.version.exceptions import VersionError
from screwdrivercd.version.version_types import versioners, Version, VersionGitRevisionCount, VersionSDV4Build, VersionDateSDV4Build, VersionUTCDate
class TestVersioners(ScrewdriverTestCase):
environ_keys = {
'BASE_PYTHON', 'PACKAGE_DIR', 'PACKAGE_DIRECTORY', 'SD_ARTIFACTS_DIR', 'SD_BUILD', 'SD_BUILD_ID',
'SD_PULL_REQUEST', 'SCM_URL', 'SD_BUILD_SHA',
}
def test__version__read_setup_version__no_version(self):
version = Version(ignore_meta_version=True).read_setup_version()
self.assertEqual(version, Version.default_version)
def test__version__get_link_to_project_using_hash__unset_env_variables(self):
link = Version(ignore_meta_version=True, link_to_project=True).get_link_to_project_using_hash()
self.assertEqual(link, '')
def test__version__get_link_to_project_using_hash__set_and_unset_env_variables(self):
os.environ['SD_BUILD_SHA'] = 'a5c3785ed8d6a35868bc169f07e40e889087fd2e'
link = Version(ignore_meta_version=True, link_to_project=True).get_link_to_project_using_hash()
self.assertEqual(link, '')
def test__version__get_link_to_project_using_hash__set_env_variables(self):
os.environ['SCM_URL'] = 'https://github.com/org/project'
os.environ['SD_BUILD_SHA'] = 'a5c3785ed8d6a35868bc169f07e40e889087fd2e'
link = Version(ignore_meta_version=True, link_to_project=True).get_link_to_project_using_hash()
self.assertEqual(link, 'https://github.com/org/project/tree/a5c3785ed8d6a35868bc169f07e40e889087fd2e')
def test__git_revision_count__no_git(self):
with self.assertRaises(VersionError):
version = str(VersionGitRevisionCount(ignore_meta_version=True, log_errors=False))
def test__git_revision_count__git(self):
try:
self.setupEmptyGit()
except subprocess.CalledProcessError:
# Git cli not working
return
version = str(VersionGitRevisionCount(ignore_meta_version=True, log_errors=False))
self.assertEqual(version, '0.0.1')
with open('foo', 'w') as fh:
fh.write('')
subprocess.call(['git', 'add', 'foo'])
subprocess.call(['git', 'commit', '-a', '-m', 'added foo'])
version = str(VersionGitRevisionCount(ignore_meta_version=True, log_errors=False))
self.assertEqual(version, '0.0.2')
def test__git_revision_count__git_update(self):
try:
self.setupEmptyGit()
except subprocess.CalledProcessError:
# Git cli not working
return
versioner = VersionGitRevisionCount(ignore_meta_version=True, log_errors=False)
versioner.update_setup_cfg_metadata()
with open('setup.cfg') as setup_handle:
result = setup_handle.read().strip()
self.assertIn('version = 0.0.1', result)
def test__sdv4_SD_BUILD__unset(self):
self.delkeys(['SD_BUILD', 'SD_BUILD_ID', 'SD_PULL_REQUEST'])
with self.assertRaises(VersionError):
version = str(VersionSDV4Build(ignore_meta_version=True, log_errors=False))
def test__sdv4_SD_BUILD__set(self):
self.delkeys(['SD_BUILD', 'SD_BUILD_ID', 'SD_PULL_REQUEST'])
os.environ['SD_BUILD'] = '9999'
versioner = VersionSDV4Build(ignore_meta_version=True, log_errors=False)
self.assertEqual(str(versioner), '0.0.9999')
versioner.update_setup_cfg_metadata()
config_version = Version().read_setup_version()
self.assertEqual(config_version, ['0', '0', '9999'])
def test__sdv4_SD_BUILD__PR__unset(self):
self.delkeys(['SD_BUILD', 'SD_BUILD_ID', 'SD_PULL_REQUEST'])
with self.assertRaises(VersionError):
version = str(VersionSDV4Build(ignore_meta_version=True, log_errors=False))
def test__sdv4_SD_BUILD__PR__set(self):
self.delkeys(['SD_BUILD', 'SD_BUILD_ID', 'SD_PULL_REQUEST'])
os.environ['SD_BUILD'] = '9999'
os.environ['SD_PULL_REQUEST'] = '9'
versioner = VersionSDV4Build(ignore_meta_version=True, log_errors=False)
self.assertEqual(str(versioner), '0.0.9999a9')
versioner.update_setup_cfg_metadata()
config_version = Version().read_setup_version()
self.assertEqual(config_version, ['0', '0', '9999a9'])
def test__utc_date(self):
now = datetime.datetime.utcnow()
expected = '{now.year}.{now.month}{now.day:02}.{now.hour:02}{now.minute:02}{now.second:02}'.format(now=now)
version = str(VersionUTCDate(ignore_meta_version=True, now=now))
self.assertEqual(version, expected)
def test__sdv4_date(self):
os.environ['SD_BUILD'] = '9999'
now = datetime.datetime.utcnow()
expected = f'{str(now.year)[-2:]}.{now.month}.{os.environ["SD_BUILD"]}'
version = str(VersionDateSDV4Build(ignore_meta_version=True, now=now))
self.assertEqual(version, expected)
def test__sdv4_date__sd_build_id(self):
os.environ['SD_BUILD_ID'] = '9999'
now = datetime.datetime.utcnow()
expected = f'{str(now.year)[-2:]}.{now.month}.{os.environ["SD_BUILD_ID"]}'
version = str(VersionDateSDV4Build(ignore_meta_version=True, now=now))
self.assertEqual(version, expected)
def test__sdv4_date__pr(self):
os.environ['SD_BUILD'] = '9999'
os.environ['SD_PULL_REQUEST'] = '9'
now = datetime.datetime.utcnow()
expected = f'{str(now.year)[-2:]}.{now.month}.{os.environ["SD_BUILD"]}a{os.environ["SD_PULL_REQUEST"]}'
version = str(VersionDateSDV4Build(ignore_meta_version=True, now=now))
self.assertEqual(version, expected)
def test__sdv4_date__unset(self):
self.delkeys(['SD_BUILD', 'SD_BUILD_ID', 'SD_PULL_REQUEST'])
with self.assertRaises(VersionError):
version = str(VersionDateSDV4Build(ignore_meta_version=True))
if __name__ == '__main__':
unittest.main()