Repository: tox-dev/tox

Issue:
Testing with `--installpkg somewheel.whl` broken (Regression in 3.5.0)
Tox 3.5.0 seems to break my Travis tests for Prequ. I have set the Travis configuration so that it runs `python setup.py bdist_wheel` and then runs as `tox -v --installpkg dist/*.whl`.  This worked fine with earlier Tox versions (<=3.4.0).

With Tox 3.5.0 my Travis job started to break with an exception raised from this line:

https://github.com/tox-dev/tox/blob/5f2535f1a697fe4bfbec571407a742615b410e24/src/tox/package.py#L64

The exception was `AttributeError: 'str' object has no attribute 'basename'`.  Full trace back is available in the build log: https://travis-ci.org/suutari/prequ/jobs/438550460

I think the error happens because `acquire_package` returns a bare `str` if `--instalpkg` is used, but otherwise it seems to return a `_path.local.LocalPath` instance. The failing code in `create_session_view` seems to assume (since commit 6538f74fd7) that the `package` is a a rich `Path` object rather than bare string.

Discussion:

Patch:
diff --git a/docs/changelog/1042.bugfix.rst b/docs/changelog/1042.bugfix.rst
new file mode 100644
index 00000000..250208f3
--- /dev/null
+++ b/docs/changelog/1042.bugfix.rst
@@ -0,0 +1,1 @@
+fix regression with ``3.5.0``: specifying ``--installpkg`` raises ``AttributeError: 'str' object has no attribute 'basename'``
diff --git a/src/tox/package.py b/src/tox/package.py
index bbd191fd..29548c65 100644
--- a/src/tox/package.py
+++ b/src/tox/package.py
@@ -108,9 +108,9 @@ def get_local_package(config, report, session):
     path = config.option.installpkg
     if not path:
         path = config.sdistsrc
-    path = session._resolve_package(path)
-    report.info("using package {!r}, skipping 'sdist' activity ".format(str(path)))
-    return path
+    py_path = py.path.local(session._resolve_package(path))
+    report.info("using package {!r}, skipping 'sdist' activity ".format(str(py_path)))
+    return py_path
 
 
 def build_package(config, report, session):


Test patch:
diff --git a/tests/unit/test_package.py b/tests/unit/test_package.py
index d46d229d..e4c39a48 100644
--- a/tests/unit/test_package.py
+++ b/tests/unit/test_package.py
@@ -389,3 +389,18 @@ def test_tox_parallel_build_safe(initproj, cmd, mock_venv, monkeypatch):
     assert len(dist_after) == 1
     sdist = dist_after[0]
     assert t1_package != sdist
+
+
+def test_install_via_installpkg(mock_venv, initproj, cmd):
+    base = initproj(
+        "pkg-0.1",
+        filedefs={
+            "tox.ini": """
+                [tox]
+                install_cmd = python -m -c 'print("ok")' -- {opts} {packages}'
+                """
+        },
+    )
+    fake_package = base.ensure(".tox", "dist", "pkg123-0.1.zip")
+    result = cmd("-e", "py", "--notest", "--installpkg", str(fake_package.relto(base)))
+    assert result.ret == 0, result.out