mirror of
https://github.com/openSUSE/osc.git
synced 2024-12-30 19:56:14 +01:00
13a13a87c4
Importing `cElementTree` has been deprecated since Python 3.3 - importing `ElementTree` automatically uses the fastest implementation available - and is finally removed in Python 3.9. Importing cElementTree directly (not as part of xml) is an even older relic, it's for Ye Time Before ElementTree Was Added To Python and it was instead an external module...which was before Python 2.5. We still need to work with Python 2.7 for now, so we use a try/ except to handle both 2.7 and 3.9 cases. Also, let's not repeat this import 12 times in one file for some reason. Signed-off-by: Adam Williamson <awilliam@redhat.com>
381 lines
24 KiB
Python
381 lines
24 KiB
Python
import osc.core
|
|
import osc.oscerr
|
|
import os
|
|
import sys
|
|
from common import GET, PUT, POST, DELETE, OscTestCase
|
|
try:
|
|
# Works up to Python 3.8, needed for Python < 3.3 (inc 2.7)
|
|
from xml.etree import cElementTree as ET
|
|
except ImportError:
|
|
# will import a fast implementation from 3.3 onwards, needed
|
|
# for 3.9+
|
|
from xml.etree import ElementTree as ET
|
|
try:
|
|
from urllib.error import HTTPError
|
|
except ImportError:
|
|
#python 2.x
|
|
from urllib2 import HTTPError
|
|
|
|
FIXTURES_DIR = os.path.join(os.getcwd(), 'commit_fixtures')
|
|
|
|
def suite():
|
|
import unittest
|
|
return unittest.makeSuite(TestCommit)
|
|
|
|
rev_dummy = '<revision rev="repository">\n <srcmd5>empty</srcmd5>\n</revision>'
|
|
|
|
class TestCommit(OscTestCase):
|
|
def _get_fixtures_dir(self):
|
|
return FIXTURES_DIR
|
|
|
|
@GET('http://localhost/source/osctest/simple?rev=latest', file='testSimple_filesremote')
|
|
@POST('http://localhost/source/osctest/simple?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
@POST('http://localhost/source/osctest/simple?comment=&cmd=commitfilelist&user=Admin&withvalidate=1',
|
|
file='testSimple_missingfilelist', expfile='testSimple_lfilelist')
|
|
@PUT('http://localhost/source/osctest/simple/nochange?rev=repository',
|
|
exp='This file didn\'t change but\nis modified.\n', text=rev_dummy)
|
|
@POST('http://localhost/source/osctest/simple?comment=&cmd=commitfilelist&user=Admin',
|
|
file='testSimple_cfilesremote', expfile='testSimple_lfilelist')
|
|
@GET('http://localhost/search/request?match=%28state%2F%40name%3D%27new%27+or+state%2F%40name%3D%27review%27%29+and+%28action%2Ftarget%2F%40project%3D%27osctest%27+or+action%2Fsource%2F%40project%3D%27osctest%27%29+and+%28action%2Ftarget%2F%40package%3D%27simple%27+or+action%2Fsource%2F%40package%3D%27simple%27%29', file='testOpenRequests')
|
|
def test_simple(self):
|
|
"""a simple commit (only one modified file)"""
|
|
self._change_to_pkg('simple')
|
|
p = osc.core.Package('.')
|
|
p.commit()
|
|
exp = 'Sending nochange\nTransmitting file data .\nCommitted revision 2.\n'
|
|
self.assertEqual(sys.stdout.getvalue(), exp)
|
|
self._check_digests('testSimple_cfilesremote')
|
|
self.assertTrue(os.path.exists('nochange'))
|
|
self.assertEqual(open('nochange', 'r').read(), open(os.path.join('.osc', 'nochange'), 'r').read())
|
|
self._check_status(p, 'nochange', ' ')
|
|
self._check_status(p, 'foo', ' ')
|
|
self._check_status(p, 'merge', ' ')
|
|
|
|
@GET('http://localhost/source/osctest/add?rev=latest', file='testAddfile_filesremote')
|
|
@POST('http://localhost/source/osctest/add?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
@POST('http://localhost/source/osctest/add?comment=&cmd=commitfilelist&user=Admin&withvalidate=1',
|
|
file='testAddfile_missingfilelist', expfile='testAddfile_lfilelist')
|
|
@PUT('http://localhost/source/osctest/add/add?rev=repository',
|
|
exp='added file\n', text=rev_dummy)
|
|
@POST('http://localhost/source/osctest/add?comment=&cmd=commitfilelist&user=Admin',
|
|
file='testAddfile_cfilesremote', expfile='testAddfile_lfilelist')
|
|
@GET('http://localhost/search/request?match=%28state%2F%40name%3D%27new%27+or+state%2F%40name%3D%27review%27%29+and+%28action%2Ftarget%2F%40project%3D%27osctest%27+or+action%2Fsource%2F%40project%3D%27osctest%27%29+and+%28action%2Ftarget%2F%40package%3D%27add%27+or+action%2Fsource%2F%40package%3D%27add%27%29', file='testOpenRequests')
|
|
def test_addfile(self):
|
|
"""commit a new file"""
|
|
self._change_to_pkg('add')
|
|
p = osc.core.Package('.')
|
|
p.commit()
|
|
exp = 'Sending add\nTransmitting file data .\nCommitted revision 2.\n'
|
|
self.assertEqual(sys.stdout.getvalue(), exp)
|
|
self._check_digests('testAddfile_cfilesremote')
|
|
self.assertTrue(os.path.exists('add'))
|
|
self.assertEqual(open('add', 'r').read(), open(os.path.join('.osc', 'add'), 'r').read())
|
|
self.assertFalse(os.path.exists(os.path.join('.osc', '_to_be_added')))
|
|
self._check_status(p, 'add', ' ')
|
|
self._check_status(p, 'foo', ' ')
|
|
self._check_status(p, 'merge', ' ')
|
|
self._check_status(p, 'nochange', ' ')
|
|
|
|
@GET('http://localhost/source/osctest/delete?rev=latest', file='testDeletefile_filesremote')
|
|
@POST('http://localhost/source/osctest/delete?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
@POST('http://localhost/source/osctest/delete?comment=&cmd=commitfilelist&user=Admin&withvalidate=1',
|
|
file='testDeletefile_cfilesremote', expfile='testDeletefile_lfilelist')
|
|
@GET('http://localhost/search/request?match=%28state%2F%40name%3D%27new%27+or+state%2F%40name%3D%27review%27%29+and+%28action%2Ftarget%2F%40project%3D%27osctest%27+or+action%2Fsource%2F%40project%3D%27osctest%27%29+and+%28action%2Ftarget%2F%40package%3D%27delete%27+or+action%2Fsource%2F%40package%3D%27delete%27%29', file='testOpenRequests')
|
|
def test_deletefile(self):
|
|
"""delete a file"""
|
|
self._change_to_pkg('delete')
|
|
p = osc.core.Package('.')
|
|
p.commit()
|
|
exp = 'Deleting nochange\nTransmitting file data \nCommitted revision 2.\n'
|
|
self.assertEqual(sys.stdout.getvalue(), exp)
|
|
self._check_digests('testDeletefile_cfilesremote')
|
|
self.assertFalse(os.path.exists('nochange'))
|
|
self.assertFalse(os.path.exists(os.path.join('.osc', 'nochange')))
|
|
self.assertFalse(os.path.exists(os.path.join('.osc', '_to_be_deleted')))
|
|
self._check_status(p, 'foo', ' ')
|
|
self._check_status(p, 'merge', ' ')
|
|
|
|
@GET('http://localhost/source/osctest/conflict?rev=latest', file='testConflictfile_filesremote')
|
|
@POST('http://localhost/source/osctest/conflict?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
def test_conflictfile(self):
|
|
"""package has a file which is in conflict state"""
|
|
self._change_to_pkg('conflict')
|
|
ret = osc.core.Package('.').commit()
|
|
self.assertTrue(ret == 1)
|
|
exp = 'Please resolve all conflicts before committing using "osc resolved FILE"!\n'
|
|
self.assertEqual(sys.stdout.getvalue(), exp)
|
|
self._check_digests('testConflictfile_filesremote')
|
|
self._check_conflictlist('merge\n')
|
|
|
|
@GET('http://localhost/source/osctest/nochanges?rev=latest', file='testNoChanges_filesremote')
|
|
@POST('http://localhost/source/osctest/nochanges?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
def test_nochanges(self):
|
|
"""package has no changes (which can be committed)"""
|
|
self._change_to_pkg('nochanges')
|
|
p = osc.core.Package('.')
|
|
ret = p.commit()
|
|
self.assertTrue(ret == 1)
|
|
exp = 'nothing to do for package nochanges\n'
|
|
self.assertEqual(sys.stdout.getvalue(), exp)
|
|
self._check_status(p, 'foo', 'S')
|
|
self._check_status(p, 'merge', '!')
|
|
self._check_status(p, 'nochange', ' ')
|
|
|
|
@GET('http://localhost/source/osctest/multiple?rev=latest', file='testMultiple_filesremote')
|
|
@POST('http://localhost/source/osctest/multiple?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
@POST('http://localhost/source/osctest/multiple?comment=&cmd=commitfilelist&user=Admin&withvalidate=1',
|
|
file='testMultiple_missingfilelist', expfile='testMultiple_lfilelist')
|
|
@PUT('http://localhost/source/osctest/multiple/nochange?rev=repository', exp='This file did change.\n', text=rev_dummy)
|
|
@PUT('http://localhost/source/osctest/multiple/add?rev=repository', exp='added file\n', text=rev_dummy)
|
|
@PUT('http://localhost/source/osctest/multiple/add2?rev=repository', exp='add2\n', text=rev_dummy)
|
|
@POST('http://localhost/source/osctest/multiple?comment=&cmd=commitfilelist&user=Admin',
|
|
file='testMultiple_cfilesremote', expfile='testMultiple_lfilelist')
|
|
@GET('http://localhost/search/request?match=%28state%2F%40name%3D%27new%27+or+state%2F%40name%3D%27review%27%29+and+%28action%2Ftarget%2F%40project%3D%27osctest%27+or+action%2Fsource%2F%40project%3D%27osctest%27%29+and+%28action%2Ftarget%2F%40package%3D%27multiple%27+or+action%2Fsource%2F%40package%3D%27multiple%27%29', file='testOpenRequests')
|
|
def test_multiple(self):
|
|
"""a simple commit (only one modified file)"""
|
|
self._change_to_pkg('multiple')
|
|
p = osc.core.Package('.')
|
|
p.commit()
|
|
exp = 'Deleting foo\nDeleting merge\nSending nochange\n' \
|
|
'Sending add\nSending add2\nTransmitting file data ...\nCommitted revision 2.\n'
|
|
self.assertEqual(sys.stdout.getvalue(), exp)
|
|
self._check_digests('testMultiple_cfilesremote')
|
|
self.assertFalse(os.path.exists(os.path.join('.osc', '_to_be_added')))
|
|
self.assertFalse(os.path.exists(os.path.join('.osc', '_to_be_deleted')))
|
|
self.assertFalse(os.path.exists(os.path.join('.osc', 'foo')))
|
|
self.assertFalse(os.path.exists(os.path.join('.osc', 'merge')))
|
|
self.assertRaises(osc.oscerr.OscIOError, p.status, 'foo')
|
|
self.assertRaises(osc.oscerr.OscIOError, p.status, 'merge')
|
|
self._check_status(p, 'add', ' ')
|
|
self._check_status(p, 'add2', ' ')
|
|
self._check_status(p, 'nochange', ' ')
|
|
|
|
@GET('http://localhost/source/osctest/multiple?rev=latest', file='testPartial_filesremote')
|
|
@POST('http://localhost/source/osctest/multiple?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
@POST('http://localhost/source/osctest/multiple?comment=&cmd=commitfilelist&user=Admin&withvalidate=1',
|
|
file='testPartial_missingfilelist', expfile='testPartial_lfilelist')
|
|
@PUT('http://localhost/source/osctest/multiple/add?rev=repository', exp='added file\n', text=rev_dummy)
|
|
@PUT('http://localhost/source/osctest/multiple/nochange?rev=repository', exp='This file did change.\n', text=rev_dummy)
|
|
@POST('http://localhost/source/osctest/multiple?comment=&cmd=commitfilelist&user=Admin',
|
|
file='testPartial_cfilesremote', expfile='testPartial_lfilelist')
|
|
@GET('http://localhost/search/request?match=%28state%2F%40name%3D%27new%27+or+state%2F%40name%3D%27review%27%29+and+%28action%2Ftarget%2F%40project%3D%27osctest%27+or+action%2Fsource%2F%40project%3D%27osctest%27%29+and+%28action%2Ftarget%2F%40package%3D%27multiple%27+or+action%2Fsource%2F%40package%3D%27multiple%27%29', file='testOpenRequests')
|
|
def test_partial(self):
|
|
"""commit only some files"""
|
|
self._change_to_pkg('multiple')
|
|
p = osc.core.Package('.')
|
|
p.todo = ['foo', 'add', 'nochange']
|
|
p.commit()
|
|
exp = 'Deleting foo\nSending nochange\n' \
|
|
'Sending add\nTransmitting file data ..\nCommitted revision 2.\n'
|
|
self.assertEqual(sys.stdout.getvalue(), exp)
|
|
self._check_digests('testPartial_cfilesremote')
|
|
self._check_addlist('add2\n')
|
|
self._check_deletelist('merge\n')
|
|
self._check_status(p, 'add2', 'A')
|
|
self._check_status(p, 'merge', 'D')
|
|
self._check_status(p, 'add', ' ')
|
|
self._check_status(p, 'nochange', ' ')
|
|
self.assertRaises(osc.oscerr.OscIOError, p.status, 'foo')
|
|
|
|
@GET('http://localhost/source/osctest/simple?rev=latest', file='testSimple_filesremote')
|
|
@POST('http://localhost/source/osctest/simple?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
@POST('http://localhost/source/osctest/simple?comment=&cmd=commitfilelist&user=Admin&withvalidate=1',
|
|
file='testSimple_missingfilelist', expfile='testSimple_lfilelist')
|
|
@PUT('http://localhost/source/osctest/simple/nochange?rev=repository', exp='This file didn\'t change but\nis modified.\n',
|
|
exception=IOError('test exception'), text=rev_dummy)
|
|
def test_interrupt(self):
|
|
"""interrupt a commit"""
|
|
self._change_to_pkg('simple')
|
|
p = osc.core.Package('.')
|
|
self.assertRaises(IOError, p.commit)
|
|
exp = 'Sending nochange\nTransmitting file data .'
|
|
self.assertTrue(sys.stdout.getvalue(), exp)
|
|
self._check_digests('testSimple_filesremote')
|
|
self.assertTrue(os.path.exists('nochange'))
|
|
self._check_status(p, 'nochange', 'M')
|
|
|
|
@GET('http://localhost/source/osctest/allstates?rev=latest', file='testPartial_filesremote')
|
|
@POST('http://localhost/source/osctest/allstates?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
@POST('http://localhost/source/osctest/allstates?comment=&cmd=commitfilelist&user=Admin&withvalidate=1',
|
|
file='testAllStates_missingfilelist', expfile='testAllStates_lfilelist')
|
|
@PUT('http://localhost/source/osctest/allstates/add?rev=repository', exp='added file\n', text=rev_dummy)
|
|
@PUT('http://localhost/source/osctest/allstates/missing?rev=repository', exp='replaced\n', text=rev_dummy)
|
|
@PUT('http://localhost/source/osctest/allstates/nochange?rev=repository', exp='This file did change.\n', text=rev_dummy)
|
|
@POST('http://localhost/source/osctest/allstates?comment=&cmd=commitfilelist&user=Admin',
|
|
file='testAllStates_cfilesremote', expfile='testAllStates_lfilelist')
|
|
@GET('http://localhost/search/request?match=%28state%2F%40name%3D%27new%27+or+state%2F%40name%3D%27review%27%29+and+%28action%2Ftarget%2F%40project%3D%27osctest%27+or+action%2Fsource%2F%40project%3D%27osctest%27%29+and+%28action%2Ftarget%2F%40package%3D%27allstates%27+or+action%2Fsource%2F%40package%3D%27allstates%27%29', file='testOpenRequests')
|
|
def test_allstates(self):
|
|
"""commit all files (all states are available except 'C')"""
|
|
self._change_to_pkg('allstates')
|
|
p = osc.core.Package('.')
|
|
p.commit()
|
|
exp = 'Deleting foo\nSending missing\nSending nochange\n' \
|
|
'Sending add\nTransmitting file data ...\nCommitted revision 2.\n'
|
|
self.assertEqual(sys.stdout.getvalue(), exp)
|
|
self._check_digests('testAllStates_expfiles', 'skipped')
|
|
self.assertFalse(os.path.exists(os.path.join('.osc', '_to_be_added')))
|
|
self.assertFalse(os.path.exists(os.path.join('.osc', '_to_be_deleted')))
|
|
self.assertFalse(os.path.exists('foo'))
|
|
self.assertFalse(os.path.exists(os.path.join('.osc', 'foo')))
|
|
self._check_status(p, 'add', ' ')
|
|
self._check_status(p, 'nochange', ' ')
|
|
self._check_status(p, 'merge', '!')
|
|
self._check_status(p, 'missing', ' ')
|
|
self._check_status(p, 'skipped', 'S')
|
|
self._check_status(p, 'test', ' ')
|
|
|
|
@GET('http://localhost/source/osctest/add?rev=latest', file='testAddfile_filesremote')
|
|
@POST('http://localhost/source/osctest/add?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
@POST('http://localhost/source/osctest/add?comment=&cmd=commitfilelist&user=Admin&withvalidate=1',
|
|
file='testAddfile_cfilesremote', expfile='testAddfile_lfilelist')
|
|
@GET('http://localhost/search/request?match=%28state%2F%40name%3D%27new%27+or+state%2F%40name%3D%27review%27%29+and+%28action%2Ftarget%2F%40project%3D%27osctest%27+or+action%2Fsource%2F%40project%3D%27osctest%27%29+and+%28action%2Ftarget%2F%40package%3D%27add%27+or+action%2Fsource%2F%40package%3D%27add%27%29', file='testOpenRequests')
|
|
def test_remoteexists(self):
|
|
"""file 'add' should be committed but already exists on the server"""
|
|
self._change_to_pkg('add')
|
|
p = osc.core.Package('.')
|
|
p.commit()
|
|
exp = 'Sending add\nTransmitting file data \nCommitted revision 2.\n'
|
|
self.assertEqual(sys.stdout.getvalue(), exp)
|
|
self._check_digests('testAddfile_cfilesremote')
|
|
self.assertTrue(os.path.exists('add'))
|
|
self.assertEqual(open('add', 'r').read(), open(os.path.join('.osc', 'add'), 'r').read())
|
|
self.assertFalse(os.path.exists(os.path.join('.osc', '_to_be_added')))
|
|
self._check_status(p, 'add', ' ')
|
|
self._check_status(p, 'foo', ' ')
|
|
self._check_status(p, 'merge', ' ')
|
|
self._check_status(p, 'nochange', ' ')
|
|
|
|
@GET('http://localhost/source/osctest/branch?rev=latest', file='testExpand_filesremote')
|
|
@POST('http://localhost/source/osctest/branch?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
@POST('http://localhost/source/osctest/branch?comment=&cmd=commitfilelist&user=Admin&withvalidate=1&keeplink=1',
|
|
file='testExpand_missingfilelist', expfile='testExpand_lfilelist')
|
|
@PUT('http://localhost/source/osctest/branch/simple?rev=repository', exp='simple modified file.\n', text=rev_dummy)
|
|
@POST('http://localhost/source/osctest/branch?comment=&cmd=commitfilelist&user=Admin&keeplink=1',
|
|
file='testExpand_cfilesremote', expfile='testExpand_lfilelist')
|
|
@GET('http://localhost/source/osctest/branch?rev=87ea02aede261b0267aabaa97c756e7a', file='testExpand_expandedfilesremote')
|
|
@GET('http://localhost/search/request?match=%28state%2F%40name%3D%27new%27+or+state%2F%40name%3D%27review%27%29+and+%28action%2Ftarget%2F%40project%3D%27osctest%27+or+action%2Fsource%2F%40project%3D%27osctest%27%29+and+%28action%2Ftarget%2F%40package%3D%27branch%27+or+action%2Fsource%2F%40package%3D%27branch%27%29', file='testOpenRequests')
|
|
def test_expand(self):
|
|
"""commit an expanded package"""
|
|
self._change_to_pkg('branch')
|
|
p = osc.core.Package('.')
|
|
p.commit()
|
|
exp = 'Sending simple\nTransmitting file data .\nCommitted revision 7.\n'
|
|
self.assertEqual(sys.stdout.getvalue(), exp)
|
|
self._check_digests('testExpand_expandedfilesremote')
|
|
self._check_status(p, 'simple', ' ')
|
|
|
|
@GET('http://localhost/source/osctest/added_missing?rev=latest', file='testAddedMissing_filesremote')
|
|
@POST('http://localhost/source/osctest/added_missing?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
def test_added_missing(self):
|
|
"""commit an added file which is missing"""
|
|
self._change_to_pkg('added_missing')
|
|
p = osc.core.Package('.')
|
|
ret = p.commit()
|
|
self.assertTrue(ret == 1)
|
|
exp = 'file \'add\' is marked as \'A\' but does not exist\n'
|
|
self.assertEqual(sys.stdout.getvalue(), exp)
|
|
self._check_status(p, 'add', '!')
|
|
|
|
@GET('http://localhost/source/osctest/added_missing?rev=latest', file='testAddedMissing_filesremote')
|
|
@POST('http://localhost/source/osctest/added_missing?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
@POST('http://localhost/source/osctest/added_missing?comment=&cmd=commitfilelist&user=Admin&withvalidate=1',
|
|
file='testAddedMissing_missingfilelist', expfile='testAddedMissing_lfilelist')
|
|
@PUT('http://localhost/source/osctest/added_missing/bar?rev=repository', exp='foobar\n', text=rev_dummy)
|
|
@POST('http://localhost/source/osctest/added_missing?comment=&cmd=commitfilelist&user=Admin',
|
|
file='testAddedMissing_cfilesremote', expfile='testAddedMissing_lfilelist')
|
|
@GET('http://localhost/search/request?match=%28state%2F%40name%3D%27new%27+or+state%2F%40name%3D%27review%27%29+and+%28action%2Ftarget%2F%40project%3D%27osctest%27+or+action%2Fsource%2F%40project%3D%27osctest%27%29+and+%28action%2Ftarget%2F%40package%3D%27added_missing%27+or+action%2Fsource%2F%40package%3D%27added_missing%27%29', file='testOpenRequests')
|
|
def test_added_missing2(self):
|
|
"""commit an added file, another added file missing (but it's not part of the commit)"""
|
|
self._change_to_pkg('added_missing')
|
|
p = osc.core.Package('.')
|
|
p.todo = ['bar']
|
|
p.commit()
|
|
exp = 'Sending bar\nTransmitting file data .\nCommitted revision 2.\n'
|
|
self.assertEqual(sys.stdout.getvalue(), exp)
|
|
self._check_status(p, 'add', '!')
|
|
self._check_status(p, 'bar', ' ')
|
|
|
|
@GET('http://localhost/source/osctest/simple?rev=latest', file='testSimple_filesremote')
|
|
@POST('http://localhost/source/osctest/simple?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
@POST('http://localhost/source/osctest/simple?comment=&cmd=commitfilelist&user=Admin&withvalidate=1',
|
|
file='testSimple_missingfilelist', expfile='testSimple_lfilelist')
|
|
@PUT('http://localhost/source/osctest/simple/nochange?rev=repository',
|
|
exp='This file didn\'t change but\nis modified.\n', text=rev_dummy)
|
|
@POST('http://localhost/source/osctest/simple?comment=&cmd=commitfilelist&user=Admin',
|
|
expfile='testSimple_lfilelist', text='an error occured', code=500)
|
|
def test_commitfilelist_error(self):
|
|
"""commit modified file but when committing the filelist the server returns status 500 (see ticket #65)"""
|
|
self._change_to_pkg('simple')
|
|
p = osc.core.Package('.')
|
|
self._check_status(p, 'nochange', 'M')
|
|
self.assertRaises(HTTPError, p.commit)
|
|
exp = 'Sending nochange\nTransmitting file data .'
|
|
self.assertEqual(sys.stdout.getvalue(), exp)
|
|
self._check_status(p, 'nochange', 'M')
|
|
|
|
@GET('http://localhost/source/osctest/simple?rev=latest', file='testSimple_filesremote')
|
|
@POST('http://localhost/source/osctest/simple?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
@POST('http://localhost/source/osctest/simple?comment=&cmd=commitfilelist&user=Admin&withvalidate=1',
|
|
file='testSimple_missingfilelistwithSHA', expfile='testSimple_lfilelist')
|
|
@POST('http://localhost/source/osctest/simple?comment=&cmd=commitfilelist&user=Admin',
|
|
file='testSimple_missingfilelistwithSHAsum', expfile='testSimple_lfilelistwithSHA')
|
|
@PUT('http://localhost/source/osctest/simple/nochange?rev=repository',
|
|
exp='This file didn\'t change but\nis modified.\n', text=rev_dummy)
|
|
@POST('http://localhost/source/osctest/simple?comment=&cmd=commitfilelist&user=Admin',
|
|
file='testSimple_cfilesremote', expfile='testSimple_lfilelistwithSHA')
|
|
@GET('http://localhost/search/request?match=%28state%2F%40name%3D%27new%27+or+state%2F%40name%3D%27review%27%29+and+%28action%2Ftarget%2F%40project%3D%27osctest%27+or+action%2Fsource%2F%40project%3D%27osctest%27%29+and+%28action%2Ftarget%2F%40package%3D%27simple%27+or+action%2Fsource%2F%40package%3D%27simple%27%29', file='testOpenRequests')
|
|
def test_simple_sha256(self):
|
|
"""a simple commit (only one modified file)"""
|
|
self._change_to_pkg('simple')
|
|
p = osc.core.Package('.')
|
|
p.commit()
|
|
exp = 'Sending nochange\nTransmitting file data .\nCommitted revision 2.\n'
|
|
self.assertEqual(sys.stdout.getvalue(), exp)
|
|
self._check_digests('testSimple_cfilesremote')
|
|
self.assertTrue(os.path.exists('nochange'))
|
|
self.assertEqual(open('nochange', 'r').read(), open(os.path.join('.osc', 'nochange'), 'r').read())
|
|
self._check_status(p, 'nochange', ' ')
|
|
self._check_status(p, 'foo', ' ')
|
|
self._check_status(p, 'merge', ' ')
|
|
|
|
@GET('http://localhost/source/osctest/added_missing?rev=latest', file='testAddedMissing_filesremote')
|
|
@POST('http://localhost/source/osctest/added_missing?cmd=getprojectservices',
|
|
exp='', text='<services />')
|
|
@POST('http://localhost/source/osctest/added_missing?comment=&cmd=commitfilelist&user=Admin&withvalidate=1',
|
|
file='testAddedMissing_missingfilelistwithSHA', expfile='testAddedMissing_lfilelist')
|
|
@POST('http://localhost/source/osctest/added_missing?comment=&cmd=commitfilelist&user=Admin',
|
|
file='testAddedMissing_missingfilelistwithSHAsum', expfile='testAddedMissing_lfilelistwithSHA')
|
|
@PUT('http://localhost/source/osctest/added_missing/bar?rev=repository', exp='foobar\n', text=rev_dummy)
|
|
@POST('http://localhost/source/osctest/added_missing?comment=&cmd=commitfilelist&user=Admin',
|
|
file='testAddedMissing_cfilesremote', expfile='testAddedMissing_lfilelistwithSHA')
|
|
@GET('http://localhost/search/request?match=%28state%2F%40name%3D%27new%27+or+state%2F%40name%3D%27review%27%29+and+%28action%2Ftarget%2F%40project%3D%27osctest%27+or+action%2Fsource%2F%40project%3D%27osctest%27%29+and+%28action%2Ftarget%2F%40package%3D%27added_missing%27+or+action%2Fsource%2F%40package%3D%27added_missing%27%29', file='testOpenRequests')
|
|
def test_added_missing2_sha256(self):
|
|
"""commit an added file, another added file missing (but it's not part of the commit)"""
|
|
self._change_to_pkg('added_missing')
|
|
p = osc.core.Package('.')
|
|
p.todo = ['bar']
|
|
p.commit()
|
|
exp = 'Sending bar\nTransmitting file data .\nCommitted revision 2.\n'
|
|
self.assertEqual(sys.stdout.getvalue(), exp)
|
|
self._check_status(p, 'add', '!')
|
|
self._check_status(p, 'bar', ' ')
|
|
|
|
if __name__ == '__main__':
|
|
import unittest
|
|
unittest.main()
|