Beispiel #1
0
    def test_bug_accent(self):
        fLOG(
            __file__,
            self._testMethodName,
            OutputPrint=__name__ == "__main__")
        data = os.path.abspath(os.path.dirname(__file__))
        fold = os.path.join(data, "data", "bug")
        assert os.path.exists(fold)

        to = os.path.join(data, "temp_bug")
        if os.path.exists(to):
            remove_folder(to)
        os.mkdir(to)
        assert os.path.exists(to)

        synchronize_folder(fold, to, hash_size=0, repo1=False, repo2=False,
                           size_different=True, no_deletion=False, filter=None,
                           filter_copy=None, avoid_copy=False, operations=None,
                           file_date=None, log1=False)

        if sys.version_info[0] == 2:
            return

        assert os.path.exists(
            os.path.join(
                to,
                "bugged",
                "Présentation.pdf.txt"))
Beispiel #2
0
    def test_synchro2(self):
        fLOG(
            __file__,
            self._testMethodName,
            OutputPrint=__name__ == "__main__")
        fold = os.path.abspath(os.path.split(__file__)[0])
        data = os.path.join(fold, "data")
        seco = os.path.join(fold, "data", "temp_seco")
        troi = os.path.join(fold, "temp_troi")
        sec2 = os.path.join(troi, "temp_seco")

        stay = os.path.join(sec2, "notfile.txt")
        nocp = os.path.join(seco, "file.txt")

        def filter_copy(file):
            return "temp_seco" not in file
        fLOG(filter_copy(stay), stay)
        assert not filter_copy(stay)

        if os.path.exists(troi):
            remove_folder(troi)

        if not os.path.exists(seco):
            os.mkdir(seco)
        if not os.path.exists(troi):
            os.mkdir(troi)
        if not os.path.exists(sec2):
            os.mkdir(sec2)

        with open(nocp, "w") as f:
            f.write("should not be here")
        with open(stay, "w") as f:
            f.write("should stay")

        if sys.version_info[0] == 2:
            return

        synchronize_folder(data,
                           troi,
                           hash_size=0,
                           repo1=True,
                           filter_copy=filter_copy)

        assert os.path.exists(os.path.join(troi, "sub", "filetwo.txt"))
        assert os.path.exists(stay)
        assert not os.path.exists(stay.replace("notfile.txt", "file.txt"))
Beispiel #3
0
    def test_synchronize(self):
        fLOG(
            __file__,
            self._testMethodName,
            OutputPrint=__name__ == "__main__")
        thispath = os.path.abspath(os.path.split(__file__)[0])
        cache = os.path.join(thispath, "temp_synchro")
        if not os.path.exists(cache):
            os.mkdir(cache)

        remone = os.path.join(cache, "test_log.py")
        fLOG("existing file", remone)
        if os.path.exists(remone):
            os.remove(remone)

        try:
            import pysvn as skip_
        except ImportError:
            return

        all = []
        action = foldermod.synchronize_folder(os.path.join(thispath, "..", "ut_loghelper"), cache, hash_size=0, repo1=True,
                                              operations=lambda a, b, c: all.append(a))
        assert len(all) > 0

        action = foldermod.synchronize_folder(
            os.path.join(
                thispath,
                "..",
                "ut_loghelper"),
            cache,
            hash_size=0,
            repo1=True)
        assert os.path.exists(cache)
        assert len(os.listdir(cache)) > 0
        assert os.path.exists(os.path.join(cache, "data"))
        assert len(os.listdir(os.path.join(cache, "data"))) > 0
        assert len(action) > 0
Beispiel #4
0
    def test_remove_folder(self):
        fLOG(
            __file__,
            self._testMethodName,
            OutputPrint=__name__ == "__main__")
        thispath = os.path.abspath(os.path.split(__file__)[0])
        cache = os.path.join(thispath, "temp_remove")
        if not os.path.exists(cache):
            os.mkdir(cache)

        remone = os.path.join(cache, os.path.split(__file__)[-1])
        fLOG("existing file", remone)
        if os.path.exists(remone):
            os.remove(remone)

        try:
            import pysvn as skip__
        except ImportError:
            return

        action = foldermod.synchronize_folder(
            thispath,
            cache,
            hash_size=0,
            repo1=True)
        ac = foldermod.remove_folder(cache, True)
        assert len(ac) > 0
        for a in ac:
            assert not os.path.exists(a[0])
        act = [_[1].name for _ in action]
        ac = [_[0].split("\\temp_remove\\")[-1] for _ in ac]
        for a in act:
            if a not in ac:
                fLOG("a", a)
                fLOG(ac[0], ac)
                raise Exception("a not in ac a=%s, ac=%s" % (a, str(ac)))
            assert a in ac
Beispiel #5
0
    def test_synchronize_nosvn(self):
        fLOG(
            __file__,
            self._testMethodName,
            OutputPrint=__name__ == "__main__")
        thispath = os.path.abspath(os.path.split(__file__)[0])
        if len(thispath) == 0:
            thispath = "./../ut_loghelper"
        cache = os.path.join(thispath, "temp_synchro_nosvn")
        if not os.path.exists(cache):
            os.mkdir(cache)

        remone = os.path.join(cache, "test_log.py")
        fLOG("existing file", remone)
        if os.path.exists(remone):
            os.remove(remone)

        action = foldermod.synchronize_folder(os.path.join(thispath, "..", "ut_loghelper"), cache, hash_size=0, repo1=False,
                                              filter=lambda v: "temp" not in v)
        assert os.path.exists(cache)
        assert len(os.listdir(cache)) > 0
        assert os.path.exists(os.path.join(cache, "data"))
        assert len(os.listdir(os.path.join(cache, "data"))) > 0
        assert len(action) > 0
Beispiel #6
0
    def test_synchro_hash(self):
        fLOG(__file__, self._testMethodName, OutputPrint=__name__ == "__main__")

        if sys.version_info[0] == 2:
            return

        fold = os.path.abspath(os.path.split(__file__)[0])
        data = os.path.join(fold, "data")
        seco = os.path.join(fold, "data", "temp_seco2")
        troi = os.path.join(fold, "temp_troi2")
        sec2 = os.path.join(troi, "temp_seco2")

        temp = os.path.join(fold, "temp_date")
        if not os.path.exists(temp):
            os.mkdir(temp)

        stay = os.path.join(sec2, "notfile.txt")
        nocp = os.path.join(seco, "file.txt")

        def filter_copy(file):
            return "temp_seco" not in file

        fLOG(filter_copy(stay), stay)
        assert not filter_copy(stay)

        if os.path.exists(troi):
            remove_folder(troi)

        if not os.path.exists(seco):
            os.mkdir(seco)
        if not os.path.exists(troi):
            os.mkdir(troi)
        if not os.path.exists(sec2):
            os.mkdir(sec2)

        with open(nocp, "w") as f:
            f.write("should not be here")
        with open(stay, "w") as f:
            f.write("should stay")

        file_date = os.path.join(temp, "file_date.txt")
        if os.path.exists(file_date):
            os.remove(file_date)

        a = synchronize_folder(
            data, troi, hash_size=0, repo1=True, filter_copy=filter_copy, file_date=file_date, log1=True
        )

        assert os.path.exists(file_date)
        assert os.path.exists(os.path.join(troi, "sub", "filetwo.txt"))
        assert os.path.exists(stay)
        assert not os.path.exists(stay.replace("notfile.txt", "file.txt"))

        b = synchronize_folder(data, troi, hash_size=0, repo1=True, filter_copy=filter_copy, file_date=file_date)

        if len(a) not in [2, 3]:
            raise Exception("2 or 3 expected: " + "\n".join([str(_) for _ in a]))
        assert a[0][0] == ">+" == a[1][0]
        assert len(b) == 0

        troi2 = os.path.join(fold, "temp_troi3")
        if not os.path.exists(troi2):
            os.mkdir(troi2)

        file_date = os.path.join(temp, "file_date_rem.txt")
        if os.path.exists(file_date):
            os.remove(file_date)

        c = synchronize_folder(troi, troi2, hash_size=0, repo1=False, filter_copy=filter_copy, file_date=file_date)

        onefile = os.path.join(troi, "onefile.txt")
        os.remove(onefile)
        with open(file_date, "r") as f:
            all_b = f.readlines()

        c = synchronize_folder(troi, troi2, hash_size=0, repo1=False, filter_copy=filter_copy, file_date=file_date)

        with open(file_date, "r") as f:
            all_c = f.readlines()
        fLOG(c)
        assert len(c) > 0
        onefile2 = os.path.join(troi2, "onefile.txt")
        assert not os.path.exists(onefile2)

        assert len(all_b) == len(all_c) + 1

        if __name__ != "__main__":
            remove_folder(troi)
            remove_folder(troi2)
Beispiel #7
0
    def test_full_documentation(self):
        fLOG(
            __file__,
            self._testMethodName,
            OutputPrint=__name__ == "__main__")
        path = os.path.split(__file__)[0]
        temp = os.path.join(path, "temp_doc")
        if os.path.exists(temp):
            removedirs(temp)
        assert not os.path.exists(temp)
        os.mkdir(temp)

        if sys.version_info[0] == 2:
            return

        file = os.path.join(path, "..", "..")
        fLOG(os.path.normpath(os.path.abspath(file)))
        assert os.path.exists(file)

        sysp = os.path.join(file, "_doc", "sphinxdoc", "source")
        assert os.path.exists(sysp)
        sys.path.insert(0, sysp)
        del sys.path[0]

        synchronize_folder(sysp, temp,
                           filter=lambda c: "__pycache__" not in c and "pyquickhelper" not in c)
        shutil.copy(os.path.join(file, "README.rst"), temp)

        # copy the files
        project_var_name = "pyquickhelper"
        issues = []
        store_obj = {}

        utils_sphinx_doc.prepare_file_for_sphinx_help_generation(
            store_obj,
            file,
            temp,
            subfolders=[("src/" + project_var_name, project_var_name), ],
            silent=True,
            rootrep=("ut_helpgen.temp_doc.%s." % (project_var_name,), ""),
            optional_dirs=[],
            mapped_function=[(".*[.]tohelp$", None)],
            issues=issues,
            module_name=project_var_name)

        fLOG("end of prepare_file_for_sphinx_help_generation")

        files = [
            #os.path.join(temp, "index_ext-tohelp.rst"),
            os.path.join(temp, "index_function.rst"),
            os.path.join(temp, "glossary.rst"),
            os.path.join(temp, "index_class.rst"),
            os.path.join(temp, "index_module.rst"),
            os.path.join(temp, "index_property.rst"),
            os.path.join(temp, "index_method.rst"),
            os.path.join(temp, "all_report.rst"),
        ]
        for f in files:
            if not os.path.exists(f):
                raise FileNotFoundError(f + "\nabspath: " + os.path.abspath(f))
            if "report" in f:
                with open(f, "r", encoding="utf8") as ff:
                    content = ff.read()
                assert ".py" in content

        if os.path.exists(os.path.join(temp, "all_FAQ.rst")):
            with open(os.path.join(temp, "all_FAQ.rst"), "r") as f:
                contentf = f.read()
            assert "How to activate the logs?" in contentf
            assert "_le-" not in contentf
            assert "_lf-" not in contentf
            assert "__!LI!NE!__" not in contentf

        with open(files[0], "r", encoding="utf8") as f:
            f.read()

        for f in ["fix_incomplete_references"]:
            func = [
                _ for _ in issues if _[0] == f and "utils_sphinx_doc.py" not in _[1]]
            if len(func) > 0:
                fLOG(func)
                mes = "\n".join([_[1] for _ in func])
                stk = []
                for k, v in store_obj.items():
                    if isinstance(v, list):
                        for o in v:
                            stk.append("storedl %s=%s " % (k, o.rst_link()))
                    else:
                        stk.append("stored  %s=%s " % (k, v.rst_link()))
                mes += "\nstored:\n" + "\n".join(sorted(stk))
                raise Exception(
                    "issues detected for function " +
                    f +
                    "\n" +
                    mes)

        exclude = os.path.join(
            temp,
            "pyquickhelper",
            "helpgen",
            "utils_sphinx_doc.py")
        with open(exclude, "r") as f:
            content = f.read()
        assert "### # -- HELP END EXCLUDE --" not in content
        assert "### class useless_class_UnicodeStringIOThreadSafe(str):" not in content
        if '###             elif strow.startswith("@ingroup"):' not in content:
            raise Exception(content)