import subprocess
import unittest
import os
import platform


class Doc_Test(unittest.TestCase):
    @property
    def path_to_docs(self):
        dirname, file_name = os.path.split(os.path.abspath(__file__))
        return dirname.split(os.path.sep)[:-2] + ["docs"]

    # def test_html(self):
    #     wd = os.getcwd()
    #     os.chdir(os.path.sep.join(self.path_to_docs))
    #
    #     if platform.system() != "Windows":
    #         response = subprocess.run(["make", "html"])
    #         self.assertTrue(response.returncode == 0)
    #     else:
    #         response = subprocess.call(["make", "html"], shell=True)
    #         self.assertTrue(response == 0)
    #
    #     os.chdir(wd)

    def test_linkcheck(self):
        wd = os.getcwd()
        os.chdir(os.path.sep.join(self.path_to_docs))

        if platform.system() != "Windows":
            response = subprocess.run(["make", "linkcheck"])
            self.assertTrue(response.returncode == 0)
        else:
            response = subprocess.call(["make", "linkcheck"], shell=True)
            self.assertTrue(response == 0)

        os.chdir(wd)


if __name__ == "__main__":
    unittest.main()

import unittest
import os
from sphinx.application import Sphinx
import multiprocessing
n_cpu = multiprocessing.cpu_count()


class Doc_Test(unittest.TestCase):
    @property
    def path_to_docs(self):
        dirname, file_name = os.path.split(os.path.abspath(__file__))
        return os.path.sep.join(dirname.split(os.path.sep)[:-2] + ["docs"])

    def test_html(self):
        src_dir = config_dir = self.path_to_docs
        output_dir = os.path.sep.join([src_dir, "_build", "html"])
        doctree_dir = os.path.sep.join([src_dir, "_build", "doctrees"])
        app = Sphinx(src_dir, config_dir, output_dir, doctree_dir, buildername="html", warningiserror=False, parallel=n_cpu)
        app.build(force_all=True)

    def test_linkcheck(self):
        src_dir = config_dir = self.path_to_docs
        output_dir = os.path.sep.join([src_dir, "_build", "linkcheck"])
        doctree_dir = os.path.sep.join([src_dir, "_build", "doctrees"])
        app = Sphinx(src_dir, config_dir, output_dir, doctree_dir, buildername="linkcheck", warningiserror=False, parallel=n_cpu)
        app.build(force_all=True)


if __name__ == "__main__":
    unittest.main()

update doctest to not run in subprocess