74 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
| import py
 | |
| import sys
 | |
| 
 | |
| here = py.magic.autopath().dirpath()
 | |
| update_website = here.join('../../bin/_update_website.py').pyimport()
 | |
| 
 | |
| def test_rsync():
 | |
|     temp = py.test.ensuretemp('update_website_rsync')
 | |
|     pkgpath = temp.join('pkg')
 | |
|     apipath = temp.join('apigen')
 | |
|     pkgpath.ensure('foo/bar.txt', file=True).write('baz')
 | |
|     pkgpath.ensure('spam/eggs.txt', file=True).write('spam')
 | |
|     apipath.ensure('api/foo.html', file=True).write('<html />')
 | |
|     apipath.ensure('source/spam.html', file=True).write('<html />')
 | |
| 
 | |
|     rsyncpath = temp.join('rsync')
 | |
|     assert not rsyncpath.check()
 | |
|     gateway = py.execnet.PopenGateway()
 | |
|     update_website.rsync(pkgpath, apipath, gateway, rsyncpath.strpath)
 | |
|     assert rsyncpath.check(dir=True)
 | |
|     assert rsyncpath.join('pkg').check(dir=True)
 | |
|     assert rsyncpath.join('pkg/spam/eggs.txt').read() == 'spam'
 | |
|     assert rsyncpath.join('apigen').check(dir=True)
 | |
|     assert rsyncpath.join('apigen/api/foo.html').read() == '<html />'
 | |
| 
 | |
| def setup_pkg(testname):
 | |
|     temp = py.test.ensuretemp(testname)
 | |
|     pkgpath = temp.ensure('pkg', dir=True)
 | |
|     pyfile = pkgpath.ensure('mod.py').write(py.code.Source("""
 | |
|         def foo(x):
 | |
|             return x + 1
 | |
|     """))
 | |
|     testfile = pkgpath.ensure('test/test_mod.py').write(py.code.Source("""
 | |
|         from pkg.sub import foo
 | |
|         def test_foo():
 | |
|             assert foo(1) == 2
 | |
|     """))
 | |
|     initfile = pkgpath.ensure('__init__.py').write(py.code.Source("""
 | |
|         import py
 | |
|         from py.__.initpkg import initpkg
 | |
|         initpkg(__name__, exportdefs={
 | |
|             'sub.foo': ('./mod.py', 'foo'),
 | |
|         })
 | |
|     """))
 | |
|     initfile = pkgpath.ensure('apigen/apigen.py').write(py.code.Source("""
 | |
|         from py.__.apigen.apigen import build, \
 | |
|              get_documentable_items_pkgdir as get_documentable_items
 | |
|     """))
 | |
|     return pkgpath
 | |
| 
 | |
| def test_run_tests():
 | |
|     if py.std.sys.platform == "win32":
 | |
|         py.test.skip("update_website is not supposed to be run from win32")
 | |
|     pkgpath = setup_pkg('update_website_run_tests')
 | |
|     errors = update_website.run_tests(pkgpath,
 | |
|                                       pkgpath.dirpath().join('apigen'),
 | |
|                                       captureouterr=True)
 | |
|     print errors
 | |
|     assert not errors
 | |
|     assert pkgpath.join('../apigen').check(dir=True)
 | |
|     assert pkgpath.join('../apigen/api/sub.foo.html').check(file=True)
 | |
| 
 | |
| def test_run_tests_failure():
 | |
|     if py.std.sys.platform == "win32":
 | |
|         py.test.skip("update_website is not supposed to be run from win32")
 | |
|     pkgpath = setup_pkg('update_website_run_tests_failure')
 | |
|     assert not pkgpath.join('../apigen').check(dir=True)
 | |
|     pkgpath.ensure('../apigen', file=True)
 | |
|     errors = update_website.run_tests(pkgpath,
 | |
|                                       pkgpath.dirpath().join('apigen'),
 | |
|                                       captureouterr=True)
 | |
|     assert errors # some error message
 | |
| 
 |