64 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
import py
 | 
						|
import sys
 | 
						|
 | 
						|
binpath = py.path.local(py.__file__).dirpath("bin")
 | 
						|
binwinpath = binpath.join("win32")
 | 
						|
 | 
						|
def setup_module(mod):
 | 
						|
    mod.tmpdir = py.test.ensuretemp(__name__)
 | 
						|
    mod.iswin32 = sys.platform == "win32"
 | 
						|
 | 
						|
def checkmain(name):
 | 
						|
    main = getattr(py.cmdline, name)
 | 
						|
    assert callable(main)
 | 
						|
    assert name[:2] == "py"
 | 
						|
    scriptname = "py." + name[2:]
 | 
						|
    assert binpath.join(scriptname).check()
 | 
						|
    assert binwinpath.join(scriptname + ".cmd").check()
 | 
						|
 | 
						|
def checkprocess(script):
 | 
						|
    assert script.check()
 | 
						|
    old = tmpdir.ensure(script.basename, dir=1).chdir()
 | 
						|
    try:
 | 
						|
        if iswin32:
 | 
						|
            cmd = script.basename
 | 
						|
        else:
 | 
						|
            cmd = "%s" %(script, )
 | 
						|
            # XXX distributed testing's rsync does not support
 | 
						|
            # syncing executable bits 
 | 
						|
            script.chmod(0777)
 | 
						|
 | 
						|
        if script.basename.startswith("py.lookup") or \
 | 
						|
           script.basename.startswith("py.which"):
 | 
						|
            cmd += " sys"
 | 
						|
        print "executing", script
 | 
						|
        try:
 | 
						|
            old = script.dirpath().chdir()
 | 
						|
            try:
 | 
						|
                py.process.cmdexec(cmd)
 | 
						|
            finally:
 | 
						|
                old.chdir()
 | 
						|
        except py.process.cmdexec.Error, e:
 | 
						|
            if cmd.find("py.rest") != -1 and \
 | 
						|
               e.out.find("module named") != -1:
 | 
						|
                return
 | 
						|
            raise
 | 
						|
                
 | 
						|
    finally:
 | 
						|
        old.chdir()
 | 
						|
 | 
						|
def test_cmdline_namespace():
 | 
						|
    for name in dir(py.cmdline):
 | 
						|
        if name[0] != "_":
 | 
						|
            yield checkmain, name
 | 
						|
       
 | 
						|
def test_script_invocation():
 | 
						|
    if iswin32:
 | 
						|
        scripts = binwinpath.listdir("py.*")
 | 
						|
    else:
 | 
						|
        scripts = binpath.listdir("py.*")
 | 
						|
    scripts = [x for x in scripts 
 | 
						|
                if not x.basename.startswith("py.svnwcrevert")]
 | 
						|
    for script in scripts:
 | 
						|
        yield checkprocess, script 
 |