File test/pyz.py artifact c33e5bdbba part of check-in a88ee41164


# type: test
# version: 0.2
# title: pyz lookups
#
# This is genuinely the most fragile part.
# Not the least testing it from outside the pyz package.
# Here `app.pyz/inner.py` must override its lookup __path__=[…]
# Fails from within test/xyz/ subdir

import sys
import os.path
import pytest
import pluginconf

sys.path.insert(0, f"{os.path.dirname(__file__)}/.pyz.pyz")
#os.chdir(os.path.dirname(__file__))

@pytest.fixture
def init():
    print(pluginconf.module_base)
    pluginconf.module_base = ["config"]    # must be one of the .pyz-contained modules (should be a dir/submodule for real uses)
    pluginconf.plugin_base = ["inner"]     # relative, must declare __path__, can't be __main__.py

@pytest.fixture
def pmd():
    return pluginconf.plugin_meta(module="inner")

def importy(init):
    import inner as pyz_inner
    #print(pyz_inner.__file__)

def module_list(init):
    assert set(pluginconf.module_list()) & {'__main__', 'config', 'inner'}

def inner_props(pmd):
    assert pmd["type"] == "pyz"
    assert pmd["category"] == "complex"
    assert pmd["title"] == "pyz module"
    assert pmd["config"][0]["name"] == "relation"
    assert pmd["state"] == "alpha"

#def tearDown():
#    pass#pluginconf.plugin_base = [".", "test", os.path.dirname(__file__), "."]
#    #pluginconf.module_base = "all_plugin_meta"
#    sys.path.pop(0)