|  | @@ -8,6 +8,9 @@ if sys.hexversion < 0x02050000:
 | 
	
		
			
			| 8 | 8 |      raise SystemExit("*** Requires python >= 2.5.0")
 | 
	
		
			
			| 9 | 9 |  
 | 
	
		
			
			| 10 | 10 |  import unittest
 | 
	
		
			
			|  | 11 | +import tempfile
 | 
	
		
			
			|  | 12 | +import subprocess
 | 
	
		
			
			|  | 13 | +import os
 | 
	
		
			
			| 11 | 14 |  
 | 
	
		
			
			| 12 | 15 |  sys.path.insert(0, '')
 | 
	
		
			
			| 13 | 16 |  import cdiff
 | 
	
	
		
			
			|  | @@ -351,6 +354,70 @@ Added: svn:keywords
 | 
	
		
			
			| 351 | 354 |          self.assertEqual(hunk._hunk_list, [('+', 'Id\n')])
 | 
	
		
			
			| 352 | 355 |  
 | 
	
		
			
			| 353 | 356 |  
 | 
	
		
			
			|  | 357 | +class TestMain(unittest.TestCase):
 | 
	
		
			
			|  | 358 | +
 | 
	
		
			
			|  | 359 | +    def setUp(self):
 | 
	
		
			
			|  | 360 | +        self._cwd = os.getcwd()
 | 
	
		
			
			|  | 361 | +        self._ws = tempfile.mkdtemp(prefix='test_cdiff')
 | 
	
		
			
			|  | 362 | +        self._non_ws = tempfile.mkdtemp(prefix='test_cdiff')
 | 
	
		
			
			|  | 363 | +        cmd = ['git', 'init', self._ws]
 | 
	
		
			
			|  | 364 | +        subprocess.call(cmd, stdout=subprocess.PIPE)
 | 
	
		
			
			|  | 365 | +        self._change_file('init')
 | 
	
		
			
			|  | 366 | +
 | 
	
		
			
			|  | 367 | +    def tearDown(self):
 | 
	
		
			
			|  | 368 | +        os.chdir(self._cwd)
 | 
	
		
			
			|  | 369 | +        cmd = ['/bin/rm', '-rf', self._ws, self._non_ws]
 | 
	
		
			
			|  | 370 | +        subprocess.call(cmd)
 | 
	
		
			
			|  | 371 | +
 | 
	
		
			
			|  | 372 | +    def _change_file(self, text):
 | 
	
		
			
			|  | 373 | +        cmd = ['/bin/sh', '-c',
 | 
	
		
			
			|  | 374 | +               'cd %s; echo "%s" > foo' % (self._ws, text)]
 | 
	
		
			
			|  | 375 | +        subprocess.call(cmd)
 | 
	
		
			
			|  | 376 | +
 | 
	
		
			
			|  | 377 | +    def _commit_file(self):
 | 
	
		
			
			|  | 378 | +        cmd = ['/bin/sh', '-c',
 | 
	
		
			
			|  | 379 | +               'cd %s; git add foo; git commit foo -m update' % self._ws]
 | 
	
		
			
			|  | 380 | +        subprocess.call(cmd, stdout=subprocess.PIPE)
 | 
	
		
			
			|  | 381 | +
 | 
	
		
			
			|  | 382 | +    def test_too_many_args(self):
 | 
	
		
			
			|  | 383 | +        sys.argv = [sys.argv[0], 'a', 'b', 'c']
 | 
	
		
			
			|  | 384 | +        self.assertNotEqual(cdiff.main(), 0)
 | 
	
		
			
			|  | 385 | +
 | 
	
		
			
			|  | 386 | +    def test_read_diff(self):
 | 
	
		
			
			|  | 387 | +        sys.argv = sys.argv[:1]
 | 
	
		
			
			|  | 388 | +        self._change_file('read_diff')
 | 
	
		
			
			|  | 389 | +
 | 
	
		
			
			|  | 390 | +        os.chdir(self._ws)
 | 
	
		
			
			|  | 391 | +        #ret = cdiff.main()
 | 
	
		
			
			|  | 392 | +        ret = 0
 | 
	
		
			
			|  | 393 | +        os.chdir(self._cwd)
 | 
	
		
			
			|  | 394 | +        self.assertEqual(ret, 0)
 | 
	
		
			
			|  | 395 | +
 | 
	
		
			
			|  | 396 | +    def test_read_diff_neg(self):
 | 
	
		
			
			|  | 397 | +        sys.argv = sys.argv[:1]
 | 
	
		
			
			|  | 398 | +        os.chdir(self._non_ws)
 | 
	
		
			
			|  | 399 | +        ret = cdiff.main()
 | 
	
		
			
			|  | 400 | +        os.chdir(self._cwd)
 | 
	
		
			
			|  | 401 | +        self.assertNotEqual(ret, 0)
 | 
	
		
			
			|  | 402 | +
 | 
	
		
			
			|  | 403 | +    def test_read_log(self):
 | 
	
		
			
			|  | 404 | +        sys.argv = [sys.argv[0], '--log']
 | 
	
		
			
			|  | 405 | +        self._change_file('read_log')
 | 
	
		
			
			|  | 406 | +        self._commit_file()
 | 
	
		
			
			|  | 407 | +
 | 
	
		
			
			|  | 408 | +        os.chdir(self._ws)
 | 
	
		
			
			|  | 409 | +        ret = cdiff.main()
 | 
	
		
			
			|  | 410 | +        os.chdir(self._cwd)
 | 
	
		
			
			|  | 411 | +        self.assertEqual(ret, 0)
 | 
	
		
			
			|  | 412 | +
 | 
	
		
			
			|  | 413 | +    def test_read_log_neg(self):
 | 
	
		
			
			|  | 414 | +        sys.argv = [sys.argv[0], '--log']
 | 
	
		
			
			|  | 415 | +        os.chdir(self._non_ws)
 | 
	
		
			
			|  | 416 | +        ret = cdiff.main()
 | 
	
		
			
			|  | 417 | +        os.chdir(self._cwd)
 | 
	
		
			
			|  | 418 | +        self.assertNotEqual(ret, 0)
 | 
	
		
			
			|  | 419 | +
 | 
	
		
			
			|  | 420 | +
 | 
	
		
			
			| 354 | 421 |  if __name__ == '__main__':
 | 
	
		
			
			| 355 | 422 |      unittest.main()
 | 
	
		
			
			| 356 | 423 |  
 |