loman: Only add a project to local_manifest.xml if not in manifest.xml

Otherwise, repo gets upset

BUG=none
TEST=Unit tests pass.

Change-Id: If1af601f96f27e37259898041e1ac715f6df6d30
Reviewed-on: http://gerrit.chromium.org/gerrit/734
Reviewed-by: Mandeep Singh Baines <msb@chromium.org>
Tested-by: Mandeep Singh Baines <msb@chromium.org>
This commit is contained in:
Mandeep Singh Baines 2011-05-11 17:14:08 -07:00
parent a29fb20065
commit e4096d75fd
2 changed files with 40 additions and 8 deletions

View File

@ -97,6 +97,9 @@ def main(argv):
parser.add_option('-f', '--file', dest='local_manifest',
default='%s/local_manifest.xml' % repo_dir,
help='Non-default manifest file to read.')
parser.add_option('-m', '--main', dest='main_manifest',
default='%s/manifest.xml' % repo_dir,
help='Main manifest file to read.')
parser.add_option('-d', '--default', dest='full_manifest',
default='%s/manifests/full.xml' % repo_dir,
help='Default manifest file to read.')
@ -110,8 +113,11 @@ def main(argv):
name = args[0]
local_tree = _ReadManifest(options.local_manifest)
main_tree = _ReadManifest(options.main_manifest)
full_tree = _ReadManifest(options.full_manifest)
# Only add this project to local_manifest.xml if not in manifest.xml
if main_tree.GetProject(name) == None:
project_element = full_tree.GetProject(name)
if project_element == None:
Die('No project named, %s, in the default manifest.' % name)

View File

@ -80,9 +80,13 @@ class MainTest(unittest.TestCase):
def setUp(self):
self.utf8 = "<?xml version='1.0' encoding='UTF-8'?>\n"
self.tiny_manifest = '<manifest>\n</manifest>'
self.tiny_manifest = self.utf8 + '<manifest>\n</manifest>\n'
self.stderr = sys.stderr
sys.stderr = StringIO.StringIO()
self.main = tempfile.NamedTemporaryFile('w')
print >> self.main, '%s' % self.tiny_manifest
self.main.flush()
os.fsync(self.main.fileno())
def tearDown(self):
sys.stderr = self.stderr
@ -110,10 +114,11 @@ class MainTest(unittest.TestCase):
default.flush()
os.fsync(default.fileno())
temp = tempfile.NamedTemporaryFile('w')
print >> temp, '<manifest>\n</manifest>'
print >> temp, '%s' % self.tiny_manifest
temp.flush()
os.fsync(temp.fileno())
loman.main(['loman', 'add', '--workon', '-f', temp.name,
'-m', self.main.name,
'-d', default.name, 'foo'])
self.assertEqual(
open(temp.name, 'r').read(),
@ -133,6 +138,7 @@ class MainTest(unittest.TestCase):
temp.flush()
os.fsync(temp.fileno())
loman.main(['loman', 'add', '--workon', '-f', temp.name,
'-m', self.main.name,
'-d', default.name, 'foo'])
def testAddDup(self):
@ -150,8 +156,27 @@ class MainTest(unittest.TestCase):
os.fsync(temp.fileno())
self.assertRaises(SystemExit, loman.main,
['loman', 'add', '--workon', '-f', temp.name,
'-m', self.main.name,
'-d', default.name, 'foo'])
def testAddDupInMain(self):
default = tempfile.NamedTemporaryFile('w')
print >> default, '<manifest>\n' \
'<project name="foo" path="path/to/foo" />\n' \
'</manifest>\n'
default.flush()
os.fsync(default.fileno())
temp = tempfile.NamedTemporaryFile('w')
print >> temp, '%s' % self.tiny_manifest
temp.flush()
os.fsync(temp.fileno())
loman.main(['loman', 'add', '--workon', '-f', temp.name,
'-m', default.name,
'-d', default.name, 'foo'])
self.assertEqual(
open(temp.name, 'r').read(),
self.tiny_manifest)
def testAddNonexistant(self):
default = tempfile.NamedTemporaryFile('w')
print >> default, '<manifest>\n' \
@ -165,6 +190,7 @@ class MainTest(unittest.TestCase):
os.fsync(temp.fileno())
self.assertRaises(SystemExit, loman.main,
['loman', 'add', '--workon', '-f', temp.name,
'-m', self.main.name,
'-d', default.name, 'bar'])