104 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
import sys, py
 | 
						|
 | 
						|
pytest_plugins = "pytest_pytester"
 | 
						|
 | 
						|
@py.test.mark.multi(name=[x for x in dir(py.cmdline) if x[0] != "_"])
 | 
						|
def test_cmdmain(name, pytestconfig):
 | 
						|
    main = getattr(py.cmdline, name)
 | 
						|
    assert py.builtin.callable(main)
 | 
						|
    assert name[:2] == "py"
 | 
						|
    if not pytestconfig.getvalue("notoolsonpath"):
 | 
						|
        scriptname = "py." + name[2:]
 | 
						|
        assert py.path.local.sysfind(scriptname), scriptname
 | 
						|
 | 
						|
class TestPyLookup:
 | 
						|
    def test_basic(self, testdir):
 | 
						|
        p = testdir.makepyfile(hello="def x(): pass")
 | 
						|
        result = testdir.runpybin("py.lookup", "pass")
 | 
						|
        result.stdout.fnmatch_lines(
 | 
						|
            ['%s:*def x(): pass' %(p.basename)]
 | 
						|
        )
 | 
						|
 | 
						|
    def test_search_in_filename(self, testdir):
 | 
						|
        p = testdir.makepyfile(hello="def x(): pass")
 | 
						|
        result = testdir.runpybin("py.lookup", "hello")
 | 
						|
        result.stdout.fnmatch_lines(
 | 
						|
            ['*%s:*' %(p.basename)]
 | 
						|
        )
 | 
						|
 | 
						|
    def test_with_explicit_path(self, testdir):
 | 
						|
        sub1 = testdir.mkdir("things")
 | 
						|
        sub2 = testdir.mkdir("foo")
 | 
						|
        sub1.join("pyfile.py").write("def stuff(): pass")
 | 
						|
        searched = sub2.join("other.py")
 | 
						|
        searched.write("stuff = x")
 | 
						|
        result = testdir.runpybin("py.lookup", sub2.basename, "stuff")
 | 
						|
        result.stdout.fnmatch_lines(
 | 
						|
            ["%s:1: stuff = x" % (searched.basename,)]
 | 
						|
        )
 | 
						|
 | 
						|
class TestPyCleanup:
 | 
						|
    def test_basic(self, testdir, tmpdir):
 | 
						|
        p = tmpdir.ensure("hello.py")
 | 
						|
        result = testdir.runpybin("py.cleanup", tmpdir)
 | 
						|
        assert result.ret == 0
 | 
						|
        assert p.check()
 | 
						|
        pyc = p.new(ext='pyc')
 | 
						|
        pyc.ensure()
 | 
						|
        pyclass = p.new(basename=p.basename + '$py.class')
 | 
						|
        result = testdir.runpybin("py.cleanup", tmpdir)
 | 
						|
        assert not pyc.check()
 | 
						|
        assert not pyclass.check()
 | 
						|
 | 
						|
    def test_dir_remove_simple(self, testdir, tmpdir):
 | 
						|
        subdir = tmpdir.mkdir("subdir")
 | 
						|
        p = subdir.ensure("file")
 | 
						|
        result = testdir.runpybin("py.cleanup", "-d", tmpdir)
 | 
						|
        assert result.ret == 0
 | 
						|
        assert subdir.check()
 | 
						|
        p.remove()
 | 
						|
        p = tmpdir.mkdir("hello")
 | 
						|
        result = testdir.runpybin("py.cleanup", tmpdir, '-d')
 | 
						|
        assert result.ret == 0
 | 
						|
        assert not subdir.check()
 | 
						|
 | 
						|
    @py.test.mark.multi(opt=["-s"])
 | 
						|
    def test_remove_setup_simple(self, testdir, tmpdir, opt):
 | 
						|
        subdir = tmpdir.mkdir("subdir")
 | 
						|
        p = subdir.ensure("setup.py")
 | 
						|
        subdir.mkdir("build").ensure("hello", "world.py")
 | 
						|
        egg1 = subdir.mkdir("something.egg-info")
 | 
						|
        egg1.mkdir("whatever")
 | 
						|
        okbuild = subdir.mkdir("preserved1").mkdir("build")
 | 
						|
        egg2 = subdir.mkdir("preserved2").mkdir("other.egg-info")
 | 
						|
        subdir.mkdir("dist")
 | 
						|
        result = testdir.runpybin("py.cleanup", opt, subdir)
 | 
						|
        assert result.ret == 0
 | 
						|
        assert okbuild.check()
 | 
						|
        assert egg1.check()
 | 
						|
        assert egg2.check()
 | 
						|
        assert subdir.join("preserved1").check()
 | 
						|
        assert subdir.join("preserved2").check()
 | 
						|
        assert not subdir.join("build").check()
 | 
						|
        assert not subdir.join("dist").check()
 | 
						|
 | 
						|
    def test_remove_all(self, testdir, tmpdir):
 | 
						|
        tmpdir.ensure("setup.py")
 | 
						|
        tmpdir.ensure("build", "xyz.py")
 | 
						|
        tmpdir.ensure("dist", "abc.py")
 | 
						|
        piplog = tmpdir.ensure("preserved2", "pip-log.txt")
 | 
						|
        tmpdir.ensure("hello.egg-info")
 | 
						|
        setup = tmpdir.ensure("setup.py")
 | 
						|
        tmpdir.ensure("src/a/b")
 | 
						|
        x = tmpdir.ensure("src/x.py")
 | 
						|
        x2 = tmpdir.ensure("src/x.pyc")
 | 
						|
        x3 = tmpdir.ensure("src/x$py.class")
 | 
						|
        result = testdir.runpybin("py.cleanup", "-a", tmpdir)
 | 
						|
        assert result.ret == 0
 | 
						|
        assert len(tmpdir.listdir()) == 3
 | 
						|
        assert setup.check()
 | 
						|
        assert x.check()
 | 
						|
        assert not x2.check()
 | 
						|
        assert not x3.check()
 | 
						|
        assert not piplog.check()
 |