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
|
import unittest
import logging
import os
import sys
import uuid
from sh import ls
from ..proj import Proj
from ..git.clone import Clone
from ..git.workdir import Workdir
from ..rninput import yninput
class RNTemplate(Workdir):
_readme = 'components/toolchain/binaries/README.textile'
_series = 'components/toolchain/binaries/README.textile.series'
def __init__(self, proj, rnclone, branchname_suffix=None):
if branchname_suffix:
branchname = 'template_' + branchname_suffix
else:
branchname = 'template_' + str(uuid.uuid4())
super(RNTemplate, self).__init__(proj, rnclone, "template",
track="origin/master", branchname=branchname)
# Todo move template workdir out of detached head state.
# TODO: Allow the user to edit BOTH the gcc-linaro/ and binaries/
# README.textile file as currently this function only does the binary one.
# TODO: Create Unit Test
# TODO: test headless
def update_readme(self, headless=False):
if headless:
return False
answer = yninput(
"Would you like to update the Template README.textile file?", "N")
if answer != "y":
print "The Template README.textile file has not been updated."
return False
editor = os.getenv('EDITOR')
if not editor:
editor = '/usr/bin/vim'
print "Edit the README.textile template fragment if changes are needed."
os.system(editor + ' ' + self.repodir + '/' + RNTemplate._readme)
self.add(RNTemplate._readme)
return True
# TODO: Create Unit Test
# TODO: test headless
def update_series(self, headless=False):
if headless:
return False
answer = yninput(
"Would you like to update the Template README.textile.series file?", "N")
if answer != "y":
print "The Template README.textile.series file has not been updated."
return False
editor = os.getenv('EDITOR')
if not editor:
editor = '/usr/bin/vim'
print "Edit the README.textile.series template fragment if changes are needed."
os.system(editor + ' ' + self.repodir + '/' + RNTemplate._series)
self.add(RNTemplate._series)
return True
# TODO: Do we need this?
def get_readme(self):
return self.repodir + '/' + RNTemplate._readme
# TODO: Do we need this?
def get_series(self):
return self.repodir + '/' + RNTemplate._series
class TestRNTemplate(unittest.TestCase):
testdirprefix = "RNTemplateUT"
# Every instance of TestClass requires its own proj directory.
def setUp(self):
self.proj = Proj(prefix=TestRNTemplate.testdirprefix, persist=True)
def tearDown(self):
self.proj.cleanup()
def test_getREADME(self):
self.rnrepo = Clone(
self.proj, remote=u'http://git.linaro.org/toolchain/release-notes.git')
self.rn_template = RNTemplate(self.proj, self.rnrepo)
compare = self.proj.projdir + '/template/' + RNTemplate._readme
self.assertEqual(self.rn_template.get_readme(), compare)
self.assertTrue(os.path.isfile(self.rn_template.get_readme()))
def test_getSERIES(self):
self.rnrepo = Clone(
self.proj, remote=u'http://git.linaro.org/toolchain/release-notes.git')
self.rn_template = RNTemplate(self.proj, self.rnrepo)
compare = self.proj.projdir + '/template/' + RNTemplate._series
self.assertEqual(self.rn_template.get_series(), compare)
self.assertTrue(os.path.isfile(self.rn_template.get_series()))
# TODO: Test branchname_suffix
if __name__ == '__main__':
# logging.basicConfig(level="INFO")
unittest.main()
|