def test_download(self): fLOG( __file__, self._testMethodName, OutputPrint=__name__ == "__main__") temp = get_temp_folder(__file__, "temp_download") url = "http://www.xavierdupre.fr/enseignement/complements/added.zip" down = download(url, temp) assert os.path.exists(down) assert down.endswith("added.txt")
def test_full_documentation(self): fLOG( __file__, self._testMethodName, OutputPrint=__name__ == "__main__") if "travis" in sys.executable or sys.version_info[0] == 2: # travis due to the following: # sitep = [_ for _ in site.getsitepackages() if "packages" in _] # AttributeError: 'module' object has no attribute # 'getsitepackages' # it also fails for python 2.7 (encoding issue) return temp = get_temp_folder(__file__, "temp_full_doc_template") url = "https://github.com/sdpython/python3_module_template/archive/master.zip" fLOG("download", url) download(url, temp) assert not os.path.exists(os.path.join(temp, "src")) root = os.path.join(temp, "python3_module_template-master") fLOG("generate documentation", root) var = "project_name" # we modify conf.py to let it find pyquickhelper pyq = os.path.abspath(os.path.dirname(src.__file__)) confpy = os.path.join(root, "_doc", "sphinxdoc", "source", "conf.py") with open(confpy, "r", encoding="utf8") as f: lines = f.read().split("\n") for i, line in enumerate(lines): if line.startswith("sys."): break addition = "sys.path.append(r'{0}')".format(pyq) lines[i] = "{0}\n{1}".format(addition, lines[i]) with open(confpy, "w", encoding="utf8") as f: f.write("\n".join(lines)) # test for i in range(0, 2): fLOG("\n") fLOG("\n") fLOG("\n") fLOG("#################################################", i) fLOG("#################################################", i) fLOG("#################################################", i) if "conf" in sys.modules: del sys.modules["conf"] generate_help_sphinx(var, module_name=var, root=root, layout=["pdf", "html"], extra_ext=["tohelp"], from_repo=False, use_run_cmd=True) files = [os.path.join(root, "_doc", "sphinxdoc", "build", "html", "index.html"), os.path.join( root, "_doc", "sphinxdoc", "build", "html", "all_example.html"), os.path.join( root, "_doc", "sphinxdoc", "build", "html", "all_indexes.html"), os.path.join( root, "_doc", "sphinxdoc", "build", "html", "all_notebooks.html"), ] for f in files: if not os.path.exists(f): raise FileNotFoundError(f) assert not os.path.exists(os.path.join(temp, "_doc")) rss = os.path.join( root, "_doc", "sphinxdoc", "source", "blog", "rss.xml") with open(rss, "r", encoding="utf8") as f: content_rss = f.read() assert "__BLOG_ROOT__" not in content_rss # this should be replaced when uploading the stream onto the website # the website is unknown when producing the documentation # it should be resolved when uploading (the documentation could be # uploaded at different places) # checks some links were processed fhtml = os.path.join(temp, "python3_module_template-master", "_doc", "sphinxdoc", "build", "html", "index.html") with open(fhtml, "r", encoding="utf8") as f: content = f.read() assert '<td><a class="reference internal" href="index_ext-tohelp.html#ext-tohelp"><span>ext-tohelp</span></a></td>' in content # checks some links were processed fhtml = os.path.join(temp, "python3_module_template-master", "_doc", "sphinxdoc", "build", "html", "all_notebooks.html") with open(fhtml, "r", encoding="utf8") as f: content = f.read() assert '<a href="notebooks/custom_notebooks.html" title="Custom Notebooks"' in content # checks some links were processed fhtml = os.path.join(temp, "python3_module_template-master", "_doc", "sphinxdoc", "source", "all_notebooks.rst") with open(fhtml, "r", encoding="utf8") as f: content = f.read() assert 'notebooks/custom_notebooks' in content # checks slideshow was added fhtml = os.path.join(temp, "python3_module_template-master", "build", "notebooks", "bslides", "custom_notebooks.ipynb") with open(fhtml, "r", encoding="utf8") as f: content = f.read() assert '"slide"' in content # reveal.js rev = [os.path.join(root, "_doc", "sphinxdoc", "source", "phdoc_static", "reveal.js"), os.path.join(root, "_doc", "sphinxdoc", "build", "html", "_downloads", "reveal.js"), ] for r in rev: if not os.path.exists(r): raise FileNotFoundError(r)
def test_full_documentation(self): fLOG( __file__, self._testMethodName, OutputPrint=__name__ == "__main__") if is_travis_or_appveyor() is not None or sys.version_info[0] == 2: # travis due to the following: # sitep = [_ for _ in site.getsitepackages() if "packages" in _] # AttributeError: 'module' object has no attribute # 'getsitepackages' # it also fails for python 2.7 (encoding issue) warnings.warn( "travis, appveyor, unable to test TestSphinxDocFull.test_full_documentation") return temp = get_temp_folder(__file__, "temp_full_doc_template") url = "https://github.com/sdpython/python3_module_template/archive/master.zip" fLOG("download", url) download(url, temp) assert not os.path.exists(os.path.join(temp, "src")) root = os.path.join(temp, "python3_module_template-master") fLOG("generate documentation", root) var = "project_name" # we modify conf.py to let it find pyquickhelper pyq = os.path.abspath(os.path.dirname(src.__file__)) confpy = os.path.join(root, "_doc", "sphinxdoc", "source", "conf.py") with open(confpy, "r", encoding="utf8") as f: lines = f.read().split("\n") for i, line in enumerate(lines): if line.startswith("sys."): break addition = "sys.path.append(r'{0}')".format(pyq) lines[i] = "{0}\n{1}".format(addition, lines[i]) with open(confpy, "w", encoding="utf8") as f: f.write("\n".join(lines)) # test for i in range(0, 3): fLOG("\n") fLOG("\n") fLOG("\n") fLOG("#################################################", i) fLOG("#################################################", i) fLOG("#################################################", i) # we add access to pyquickhelper p = os.path.abspath(os.path.dirname(src.__file__)) fLOG("PYTHONPATH=", p) os.environ["PYTHONPATH"] = p if p not in sys.path: pos = len(sys.path) sys.path.append(p) else: pos = -1 if "conf" in sys.modules: del sys.modules["conf"] fLOG("****", list(roles._roles.keys())) generate_help_sphinx(var, module_name=var, root=root, layout=["pdf", "html"], extra_ext=["tohelp"], from_repo=False, direct_call=i % 2 == 0) # we clean if "pyquickhelper" in sys.modules: del sys.modules["pyquickhelper"] os.environ["PYTHONPATH"] = "" if pos >= 0: del sys.path[pos] # checkings files = [os.path.join(root, "_doc", "sphinxdoc", "build", "html", "index.html"), os.path.join(root, "_doc", "sphinxdoc", "build", "html", "all_indexes.html"), os.path.join(root, "_doc", "sphinxdoc", "build", "html", "all_notebooks.html"), ] for f in files: if not os.path.exists(f): raise FileNotFoundError(f) assert not os.path.exists(os.path.join(temp, "_doc")) rss = os.path.join( root, "_doc", "sphinxdoc", "source", "blog", "rss.xml") with open(rss, "r", encoding="utf8") as f: content_rss = f.read() assert "__BLOG_ROOT__" not in content_rss # this should be replaced when uploading the stream onto the website # the website is unknown when producing the documentation # it should be resolved when uploading (the documentation could be # uploaded at different places) # checks some links were processed fhtml = os.path.join(temp, "python3_module_template-master", "_doc", "sphinxdoc", "build", "html", "index.html") with open(fhtml, "r", encoding="utf8") as f: content = f.read() if '<td><a class="reference internal" href="index_ext-tohelp.html#ext-tohelp"><span>ext-tohelp</span></a></td>' not in content and \ '<td><a class="reference internal" href="index_ext-tohelp.html#ext-tohelp"><span class="std std-ref">ext-tohelp</span></a></td>' not in content: raise Exception(content) # checks some links were processed fhtml = os.path.join(temp, "python3_module_template-master", "_doc", "sphinxdoc", "build", "html", "all_notebooks.html") with open(fhtml, "r", encoding="utf8") as f: content = f.read() if '<img alt="_images/custom_notebooks.thumb.png" src="_images/custom_notebooks.thumb.png" />' not in content: raise Exception(content) # checks some links were processed fhtml = os.path.join(temp, "python3_module_template-master", "_doc", "sphinxdoc", "source", "all_notebooks.rst") with open(fhtml, "r", encoding="utf8") as f: content = f.read() assert 'notebooks/custom_notebooks' in content # checks slideshow was added fhtml = os.path.join(temp, "python3_module_template-master", "build", "notebooks", "bslides", "custom_notebooks.ipynb") with open(fhtml, "r", encoding="utf8") as f: content = f.read() assert '"slide"' in content # reveal.js + images rev = [os.path.join(root, "_doc", "sphinxdoc", "source", "phdoc_static", "reveal.js"), os.path.join(root, "_doc", "sphinxdoc", "build", "html", "_downloads", "reveal.js"), os.path.join(root, "_doc", "sphinxdoc", "build", "html", "_downloads", "Python_logo_and_wordmark.png"), ] for r in rev: if not os.path.exists(r): raise FileNotFoundError(r)