Skip to content

Commit ca79359

Browse files
committed
add pyshiny manifest & bundle unit tests
1 parent bc82196 commit ca79359

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

tests/test_bundle.py

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,12 @@
1515
_default_title_from_manifest,
1616
_validate_title,
1717
create_html_manifest,
18+
create_python_environment,
1819
get_python_env_info,
1920
inspect_environment,
2021
list_files,
22+
make_api_bundle,
23+
make_api_manifest,
2124
make_html_bundle,
2225
make_manifest_bundle,
2326
make_notebook_html_bundle,
@@ -1804,3 +1807,79 @@ def test_make_html_bundle():
18041807
"manifest.json",
18051808
]
18061809
assert multi_file_index_dir_extras_ans == json.loads(tar.extractfile("manifest.json").read().decode("utf-8"))
1810+
1811+
1812+
shiny_dir = os.path.join(cur_dir, "./testdata/top-5-income-share-shiny")
1813+
shiny_file = os.path.join(cur_dir, "./testdata/top-5-income-share-shiny/app.py")
1814+
1815+
1816+
def test_make_api_manifest():
1817+
shiny_dir_ans = {
1818+
"version": 1,
1819+
"locale": "en_US.UTF-8",
1820+
"metadata": {"appmode": "python-shiny"}, # "entrypoint": "app"},
1821+
"python": {
1822+
"version": "3.8.12",
1823+
"package_manager": {"name": "pip", "version": "23.0.1", "package_file": "requirements.txt"},
1824+
},
1825+
"files": {
1826+
"requirements.txt": {"checksum": "2a4bdca32428db1f47c6a7f0ba830a9b"},
1827+
"README.md": {"checksum": "4c7804f5c8cb5ec05c34e92cab45f6c7"},
1828+
"app.py": {"checksum": "a7726fc4fe5374b54158a049180653a1"},
1829+
"data.csv": {"checksum": "9cdb0252eca1273dcd0ce12f9b9196a5"},
1830+
},
1831+
}
1832+
environment = create_python_environment(
1833+
shiny_dir,
1834+
)
1835+
manifest, _ = make_api_manifest(
1836+
shiny_dir,
1837+
None,
1838+
AppModes.PYTHON_SHINY,
1839+
environment,
1840+
None,
1841+
None,
1842+
)
1843+
1844+
assert shiny_dir_ans["metadata"] == manifest["metadata"]
1845+
assert shiny_dir_ans["files"].keys() == manifest["files"].keys()
1846+
1847+
1848+
def test_make_api_bundle():
1849+
shiny_dir_ans = {
1850+
"version": 1,
1851+
"locale": "en_US.UTF-8",
1852+
"metadata": {"appmode": "python-shiny"}, # "entrypoint": "app"},
1853+
"python": {
1854+
"version": "3.8.12",
1855+
"package_manager": {"name": "pip", "version": "23.0.1", "package_file": "requirements.txt"},
1856+
},
1857+
"files": {
1858+
"requirements.txt": {"checksum": "2a4bdca32428db1f47c6a7f0ba830a9b"},
1859+
"README.md": {"checksum": "4c7804f5c8cb5ec05c34e92cab45f6c7"},
1860+
"app.py": {"checksum": "a7726fc4fe5374b54158a049180653a1"},
1861+
"data.csv": {"checksum": "9cdb0252eca1273dcd0ce12f9b9196a5"},
1862+
},
1863+
}
1864+
environment = create_python_environment(
1865+
shiny_dir,
1866+
)
1867+
with make_api_bundle(
1868+
shiny_dir,
1869+
None,
1870+
AppModes.PYTHON_SHINY,
1871+
environment,
1872+
None,
1873+
None,
1874+
) as bundle, tarfile.open(mode="r:gz", fileobj=bundle) as tar:
1875+
names = sorted(tar.getnames())
1876+
assert names == [
1877+
"README.md",
1878+
"app.py",
1879+
"data.csv",
1880+
"manifest.json",
1881+
"requirements.txt",
1882+
]
1883+
bundle_json = json.loads(tar.extractfile("manifest.json").read().decode("utf-8"))
1884+
assert shiny_dir_ans["metadata"] == bundle_json["metadata"]
1885+
assert shiny_dir_ans["files"].keys() == bundle_json["files"].keys()

0 commit comments

Comments
 (0)