summaryrefslogtreecommitdiff
path: root/tests/test_prdiff.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_prdiff.py')
-rw-r--r--tests/test_prdiff.py272
1 files changed, 0 insertions, 272 deletions
diff --git a/tests/test_prdiff.py b/tests/test_prdiff.py
deleted file mode 100644
index 22e4a7a..0000000
--- a/tests/test_prdiff.py
+++ /dev/null
@@ -1,272 +0,0 @@
-import osc.commandline
-import osc.core
-import osc.oscerr
-import os
-import re
-import sys
-import urllib2
-from common import GET, POST, OscTestCase, addExpectedRequest, EXPECTED_REQUESTS
-
-
-FIXTURES_DIR = os.path.join(os.getcwd(), 'prdiff_fixtures')
-API_URL = 'http://localhost/'
-UPSTREAM = 'some:project'
-BRANCH = 'home:user:branches:' + UPSTREAM
-
-def rdiff_url(pkg, oldprj, newprj):
- return API_URL + 'source/%s/%s?unified=1&opackage=%s&oproject=%s&cmd=diff&expand=1&filelimit=0' % \
- (newprj, pkg, pkg, oldprj.replace(':', '%3A'))
-
-def request_url(prj):
- return API_URL + 'search/request?match=%%28state%%2F%%40name%%3D%%27new%%27+or+state%%2F%%40name%%3D%%27review%%27%%29+and+%%28action%%2Ftarget%%2F%%40project%%3D%%27%s%%27+or+submit%%2Ftarget%%2F%%40project%%3D%%27%s%%27+or+action%%2Fsource%%2F%%40project%%3D%%27%s%%27+or+submit%%2Fsource%%2F%%40project%%3D%%27%s%%27%%29' % \
- tuple([prj.replace(':', '%3A')] * 4)
-
-def GET_PROJECT_PACKAGES(*projects):
- def decorator(test_method):
- def wrapped_test_method(*args):
- for project in projects:
- addExpectedRequest('GET', API_URL + 'source/' + project,
- file='%s/directory' % project)
- test_method(*args)
- # "rename" method otherwise we cannot specify a TestCaseClass.testName
- # cmdline arg when using unittest.main()
- wrapped_test_method.__name__ = test_method.__name__
- return wrapped_test_method
- return decorator
-
-def POST_RDIFF(oldprj, newprj):
- def decorator(test_method):
- def wrapped_test_method(*args):
- addExpectedRequest('POST', rdiff_url('common-one', oldprj, newprj), exp='', text='')
- addExpectedRequest('POST', rdiff_url('common-two', oldprj, newprj), exp='', file='common-two-diff')
- addExpectedRequest('POST', rdiff_url('common-three', oldprj, newprj), exp='', text='')
- test_method(*args)
- # "rename" method otherwise we cannot specify a TestCaseClass.testName
- # cmdline arg when using unittest.main()
- wrapped_test_method.__name__ = test_method.__name__
- return wrapped_test_method
- return decorator
-
-def suite():
- import unittest
- return unittest.makeSuite(TestProjectDiff)
-
-class TestProjectDiff(OscTestCase):
- diff_hdr = 'Index: %s\n==================================================================='
- def _get_fixtures_dir(self):
- return FIXTURES_DIR
-
- def _change_to_tmpdir(self, *args):
- os.chdir(os.path.join(self.tmpdir, *args))
-
- def _run_prdiff(self, *args):
- """Runs osc prdiff, returning captured STDOUT as a string."""
- cli = osc.commandline.Osc()
- argv = ['osc', '--no-keyring', '--no-gnome-keyring', 'prdiff']
- argv.extend(args)
- cli.main(argv=argv)
- return sys.stdout.getvalue()
-
-
- def testPrdiffTooManyArgs(self):
- def runner():
- self._run_prdiff('one', 'two', 'superfluous-arg')
- self.assertRaises(osc.oscerr.WrongArgs, runner)
-
-
- @GET_PROJECT_PACKAGES(UPSTREAM, BRANCH)
- @POST_RDIFF(UPSTREAM, BRANCH)
- @POST(rdiff_url('only-in-new', UPSTREAM, BRANCH), exp='', text='')
- def testPrdiffZeroArgs(self):
- exp = """identical: common-one
-differs: common-two
-identical: common-three
-identical: only-in-new
-"""
- def runner():
- self._run_prdiff()
-
- os.chdir('/tmp')
- self.assertRaises(osc.oscerr.WrongArgs, runner)
-
- self._change_to_tmpdir(FIXTURES_DIR, UPSTREAM)
- self.assertRaises(osc.oscerr.WrongArgs, runner)
-
- self._change_to_tmpdir(FIXTURES_DIR, BRANCH)
- out = self._run_prdiff()
- self.assertEqualMultiline(out, exp)
-
-
- @GET_PROJECT_PACKAGES(UPSTREAM, BRANCH)
- @POST_RDIFF(UPSTREAM, BRANCH)
- @POST(rdiff_url('only-in-new', UPSTREAM, BRANCH), exp='', text='')
- def testPrdiffOneArg(self):
- self._change_to_tmpdir()
- exp = """identical: common-one
-differs: common-two
-identical: common-three
-identical: only-in-new
-"""
- out = self._run_prdiff('home:user:branches:some:project')
- self.assertEqualMultiline(out, exp)
-
-
- @GET_PROJECT_PACKAGES('old:prj', 'new:prj')
- @POST_RDIFF('old:prj', 'new:prj')
- def testPrdiffTwoArgs(self):
- self._change_to_tmpdir()
- exp = """identical: common-one
-differs: common-two
-identical: common-three
-"""
- out = self._run_prdiff('old:prj', 'new:prj')
- self.assertEqualMultiline(out, exp)
-
-
- @GET_PROJECT_PACKAGES('old:prj', 'new:prj')
- @POST_RDIFF('old:prj', 'new:prj')
- def testPrdiffOldOnly(self):
- self._change_to_tmpdir()
- exp = """identical: common-one
-differs: common-two
-identical: common-three
-old only: only-in-old
-"""
- out = self._run_prdiff('--show-not-in-new', 'old:prj', 'new:prj')
- self.assertEqualMultiline(out, exp)
-
-
- @GET_PROJECT_PACKAGES('old:prj', 'new:prj')
- @POST_RDIFF('old:prj', 'new:prj')
- def testPrdiffNewOnly(self):
- self._change_to_tmpdir()
- exp = """identical: common-one
-differs: common-two
-identical: common-three
-new only: only-in-new
-"""
- out = self._run_prdiff('--show-not-in-old', 'old:prj', 'new:prj')
- self.assertEqualMultiline(out, exp)
-
-
- @GET_PROJECT_PACKAGES('old:prj', 'new:prj')
- @POST_RDIFF('old:prj', 'new:prj')
- def testPrdiffDiffstat(self):
- self._change_to_tmpdir()
- exp = """identical: common-one
-differs: common-two
-
- common-two | 1 +
- 1 file changed, 1 insertion(+)
-
-identical: common-three
-"""
- out = self._run_prdiff('--diffstat', 'old:prj', 'new:prj')
- self.assertEqualMultiline(out, exp)
-
-
- @GET_PROJECT_PACKAGES('old:prj', 'new:prj')
- @POST_RDIFF('old:prj', 'new:prj')
- def testPrdiffUnified(self):
- self._change_to_tmpdir()
- exp = """identical: common-one
-differs: common-two
-
-Index: common-two
-===================================================================
---- common-two\t2013-01-18 19:18:38.225983117 +0000
-+++ common-two\t2013-01-18 19:19:27.882082325 +0000
-@@ -1,4 +1,5 @@
- line one
- line two
- line three
-+an extra line
- last line
-
-identical: common-three
-"""
- out = self._run_prdiff('--unified', 'old:prj', 'new:prj')
- self.assertEqualMultiline(out, exp)
-
-
- @GET_PROJECT_PACKAGES('old:prj', 'new:prj')
- @POST(rdiff_url('common-two', 'old:prj', 'new:prj'), exp='', file='common-two-diff')
- @POST(rdiff_url('common-three', 'old:prj', 'new:prj'), exp='', text='')
- def testPrdiffInclude(self):
- self._change_to_tmpdir()
- exp = """differs: common-two
-identical: common-three
-"""
- out = self._run_prdiff('--include', 'common-t',
- 'old:prj', 'new:prj')
- self.assertEqualMultiline(out, exp)
-
-
- @GET_PROJECT_PACKAGES('old:prj', 'new:prj')
- @POST(rdiff_url('common-two', 'old:prj', 'new:prj'), exp='', file='common-two-diff')
- @POST(rdiff_url('common-three', 'old:prj', 'new:prj'), exp='', text='')
- def testPrdiffExclude(self):
- self._change_to_tmpdir()
- exp = """differs: common-two
-identical: common-three
-"""
- out = self._run_prdiff('--exclude', 'one', 'old:prj', 'new:prj')
- self.assertEqualMultiline(out, exp)
-
-
- @GET_PROJECT_PACKAGES('old:prj', 'new:prj')
- @POST(rdiff_url('common-two', 'old:prj', 'new:prj'), exp='', file='common-two-diff')
- def testPrdiffIncludeExclude(self):
- self._change_to_tmpdir()
- exp = """differs: common-two
-"""
- out = self._run_prdiff('--include', 'common-t',
- '--exclude', 'three',
- 'old:prj', 'new:prj')
- self.assertEqualMultiline(out, exp)
-
-
- @GET_PROJECT_PACKAGES(UPSTREAM, BRANCH)
- @GET(request_url(UPSTREAM), exp='', file='request')
- @POST(rdiff_url('common-one', UPSTREAM, BRANCH), exp='', text='')
- @POST(rdiff_url('common-two', UPSTREAM, BRANCH), exp='', file='common-two-diff')
- @POST(rdiff_url('common-three', UPSTREAM, BRANCH), exp='', file='common-two-diff')
- @POST(rdiff_url('only-in-new', UPSTREAM, BRANCH), exp='', text='')
- def testPrdiffRequestsMatching(self):
- self._change_to_tmpdir()
- exp = """identical: common-one
-differs: common-two
-
-148023 State:new By:user When:2013-01-11T11:04:14
- submit: home:user:branches:some:project/common-two -> some:project
- Descr: - Fix it to work - Improve support for something
-
-differs: common-three
-identical: only-in-new
-"""
- out = self._run_prdiff('--requests', UPSTREAM, BRANCH)
- self.assertEqualMultiline(out, exp)
-
-
- # Reverse the direction of the diff.
- @GET_PROJECT_PACKAGES(BRANCH, UPSTREAM)
- @GET(request_url(BRANCH), exp='', file='no-requests')
- @POST(rdiff_url('common-one', BRANCH, UPSTREAM), exp='', text='')
- @POST(rdiff_url('common-two', BRANCH, UPSTREAM), exp='', file='common-two-diff')
- @POST(rdiff_url('common-three', BRANCH, UPSTREAM), exp='', file='common-two-diff')
- @POST(rdiff_url('only-in-new', BRANCH, UPSTREAM), exp='', text='')
- def testPrdiffRequestsSwitched(self):
- self._change_to_tmpdir()
- exp = """identical: common-one
-differs: common-two
-differs: common-three
-identical: only-in-new
-"""
- out = self._run_prdiff('--requests', BRANCH, UPSTREAM)
- self.assertEqualMultiline(out, exp)
-
-
-
-if __name__ == '__main__':
- import unittest
- unittest.main()