|
15 | 15 | _default_title_from_manifest, |
16 | 16 | _validate_title, |
17 | 17 | create_html_manifest, |
| 18 | + create_python_environment, |
18 | 19 | get_python_env_info, |
19 | 20 | inspect_environment, |
20 | 21 | list_files, |
| 22 | + make_api_bundle, |
| 23 | + make_api_manifest, |
21 | 24 | make_html_bundle, |
22 | 25 | make_manifest_bundle, |
23 | 26 | make_notebook_html_bundle, |
@@ -1804,3 +1807,79 @@ def test_make_html_bundle(): |
1804 | 1807 | "manifest.json", |
1805 | 1808 | ] |
1806 | 1809 | 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