Unverified Commit 85541700 authored by liziwl's avatar liziwl Committed by GitHub
Browse files

Merge pull request #44 from SUSTech-CRA/feat/test

重写测试脚本
parents b0556dfb be645fb3
Loading
Loading
Loading
Loading

test/sustechthesis-example-cn.tex

deleted100644 → 0
+0 −83
Original line number Diff line number Diff line
% !TeX encoding = UTF-8
% !TeX program = xelatex
% !TeX spellcheck = en_US

\documentclass[degree=master,language=chinese,cjk-font=external]{sustechthesis}
  % 学位 degree:
  %   master (默认) | doctor
  % 语言 language:
  %   chinese (默认)| english
  % 中文字体 cjk-font
  %   auto (默认,自动选择系统自带字体)| external (包内字体)| windows | mac | 等
  %   在 **非Windows** 的系统上推荐使用包内字体,而非系统字体。
  %   以达到和 Windows 系统上显示的字体效果。
  %   Windows 系统上可以删除该参数,使用系统内置字体。


% 论文基本配置,加载宏包等全局配置
% 在此文件中可以选择
% 1. 生成的PDF为无空白页的用于电子版提交的版本 或 插入空白页的以便双面打印的版本
% 2. 学位学科门类(理学、工学、医学)
% 3. 培养单位
% 4. 作者姓名、指导教师等
% 5. 修改gongshuo的值, 默认为false代表生成学术型研究生毕业设计模板, 改为true则将生成专业型研究生毕业设计模板
\input{sustech-setup}


\begin{document}

% 封面
\maketitle

% 学位论文公开评阅人和答辩委员会名单
\input{data/committee}

% 南方科技大学学位论文原创性声明和使用授权说明
% 本模版不会对扫描版的页码进行处理,建议定稿后打印声明页再插入编译,以免页码出错。
% 或者,使用其他 pdf 拼接软件也可达到替换声明页面的目的。
\statementcopyright % 生成未签名的声明
% \statementcopyright[scan-statement.pdf] % 插入已签名的声明文件(扫描版)

\frontmatter
\input{data/abstract}

% 目录
\tableofcontents

% 插图和附表清单
% \listoffiguresandtables  % 插图和附表清单
% \listoffigures           % 插图清单
% \listoftables            % 附表清单

% 符号对照表(非强制性要求,如果论文中所用符号不多,可以略去)
\input{data/denotation}


% 正文部分
\mainmatter
\input{data/chap01}
\input{data/chap02}
\input{data/chap03}
\input{data/chap04}
\input{data/chap05}

% 结论
\backmatter
\input{data/conclusion}


% 参考文献
\bibliography{ref/refs}  % 参考文献使用 BibTeX 编译
% \printbibliography       % 参考文献使用 BibLaTeX 编译,(不兼容本模板,请勿使用)

% 附录
\appendix
\input{data/appendix}

% 致谢
\input{data/acknowledgements}

% 个人简历、在学期间完成的相关学术成果
\input{data/resume}

\end{document}

test/sustechthesis-example-en.tex

deleted100644 → 0
+0 −83
Original line number Diff line number Diff line
% !TeX encoding = UTF-8
% !TeX program = xelatex
% !TeX spellcheck = en_US

\documentclass[degree=master,language=english,cjk-font=external]{sustechthesis}
  % 学位 degree:
  %   master (默认) | doctor
  % 语言 language:
  %   chinese (默认)| english
  % 中文字体 cjk-font
  %   auto (默认,自动选择系统自带字体)| external (包内字体)| windows | mac | 等
  %   在 **非Windows** 的系统上推荐使用包内字体,而非系统字体。
  %   以达到和 Windows 系统上显示的字体效果。
  %   Windows 系统上可以删除该参数,使用系统内置字体。


% 论文基本配置,加载宏包等全局配置
% 在此文件中可以选择
% 1. 生成的PDF为无空白页的用于电子版提交的版本 或 插入空白页的以便双面打印的版本
% 2. 学位学科门类(理学、工学、医学)
% 3. 培养单位
% 4. 作者姓名、指导教师等
% 5. 修改gongshuo的值, 默认为false代表生成学术型研究生毕业设计模板, 改为true则将生成专业型研究生毕业设计模板
\input{sustech-setup}


\begin{document}

% 封面
\maketitle

% 学位论文公开评阅人和答辩委员会名单
\input{data/committee}

% 南方科技大学学位论文原创性声明和使用授权说明
% 本模版不会对扫描版的页码进行处理,建议定稿后打印声明页再插入编译,以免页码出错。
% 或者,使用其他 pdf 拼接软件也可达到替换声明页面的目的。
\statementcopyright % 生成未签名的声明
% \statementcopyright[scan-statement.pdf] % 插入已签名的声明文件(扫描版)

\frontmatter
\input{data/abstract}

% 目录
\tableofcontents

% 插图和附表清单
% \listoffiguresandtables  % 插图和附表清单
% \listoffigures           % 插图清单
% \listoftables            % 附表清单

% 符号对照表(非强制性要求,如果论文中所用符号不多,可以略去)
\input{data/denotation}


% 正文部分
\mainmatter
\input{data/chap01}
\input{data/chap02}
\input{data/chap03}
\input{data/chap04}
\input{data/chap05}

% 结论
\backmatter
\input{data/conclusion}


% 参考文献
\bibliography{ref/refs}  % 参考文献使用 BibTeX 编译
% \printbibliography       % 参考文献使用 BibLaTeX 编译,(不兼容本模板,请勿使用)

% 附录
\appendix
\input{data/appendix}

% 致谢
\input{data/acknowledgements}

% 个人简历、在学期间完成的相关学术成果
\input{data/resume}

\end{document}

test/test-files.py

0 → 100644
+59 −0
Original line number Diff line number Diff line
import os
import re
import shutil
import sys


def change_line(filename, old, new):
    try:
        rollback(filename, mode=1)
        with open(filename, "r", encoding="utf-8") as f1:
            with open(f"{filename}.part", "w", encoding="utf-8") as f2:
                for line in f1:
                    if re.findall(old, line):
                        print(line)
                        line = re.sub(old, new, line)
                        f2.write(line)
                        print(line)
                    else:
                        f2.write(line)
        os.remove(filename)
        os.rename(f"{filename}.part", filename)
    except:
        rollback(filename, mode=2)
    finally:
        rollback(filename, mode=0)


def rollback(filename, mode):
    if mode == 1:
        # running 1
        shutil.copyfile(filename, f'{filename}.lock')
    elif mode == 0:
        # success 0
        os.remove(f'{filename}.lock')
    else:
        # error 2
        shutil.copyfile(f'{filename}.lock', filename)


if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("--recipe", type=int, required=True, help='recipe value')
    args = parser.parse_args()

    if args.recipe == 1:
        # chinese
        filename = "sustechthesis-example.tex"
        change_line(filename,
                    "documentclass.+{sustechthesis}",
                    "documentclass[degree=master,language=chinese,cjk-font=external]{sustechthesis}"
                    )
    elif args.recipe == 2:
        # english
        filename = "sustechthesis-example.tex"
        change_line(filename,
                    "documentclass.+{sustechthesis}",
                    "documentclass[degree=master,language=english,cjk-font=external]{sustechthesis}"
                    )
+4 −2
Original line number Diff line number Diff line
@@ -9,12 +9,14 @@ mkdir "$RT_DIR/public-test"
cp "$RT_DIR/sustechthesis-example.tex" "$RT_DIR/sustechthesis-example.tex.bak"

# 生成中文预览
cp "$SCRIPT_DIR/sustechthesis-example-cn.tex" "$RT_DIR/sustechthesis-example.tex"
cp "$RT_DIR/sustechthesis-example.tex.bak" "$RT_DIR/sustechthesis-example.tex"
python3 "$RT_DIR/test/test-files.py" --recipe 1
make
cp "$RT_DIR/sustechthesis-example.pdf" "$RT_DIR/public-test/sustechthesis-example-cn.pdf"

# 生成英文预览
cp "$SCRIPT_DIR/sustechthesis-example-en.tex" "$RT_DIR/sustechthesis-example.tex"
cp "$RT_DIR/sustechthesis-example.tex.bak" "$RT_DIR/sustechthesis-example.tex"
python3 "$RT_DIR/test/test-files.py" --recipe 2
make
cp "$RT_DIR/sustechthesis-example.pdf" "$RT_DIR/public-test/sustechthesis-example-en.pdf"

+2 −2
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ filename = "sustechthesis.dtx"

def change_meta(version, date):
    with open(filename, "r", encoding="utf-8") as f1:
        with open(f"{filename}.bak", "w", encoding="utf-8") as f2:
        with open(f"{filename}.part", "w", encoding="utf-8") as f2:
            for line in f1:
                if "Southern University of Science and Technology Thesis Template" in line:
                    print(line)
@@ -23,7 +23,7 @@ def change_meta(version, date):
                else:
                    f2.write(line)
    os.remove(filename)
    os.rename(f"{filename}.bak", filename)
    os.rename(f"{filename}.part", filename)


def get_meta():