"vscode:/vscode.git/clone" did not exist on "6a2941f4d037cb5fa7c927342dc7f09387c29ab0"
test_cli.py 4.07 KB
Newer Older
icecraft's avatar
icecraft committed
1
2
import os
import shutil
3
4
import tempfile

icecraft's avatar
icecraft committed
5
6
7
8
9
10
11
from click.testing import CliRunner

from magic_pdf.tools.cli import cli


def test_cli_pdf():
    # setup
12
13
    unitest_dir = '/tmp/magic_pdf/unittest/tools'
    filename = 'cli_test_01'
icecraft's avatar
icecraft committed
14
    os.makedirs(unitest_dir, exist_ok=True)
15
16
    temp_output_dir = tempfile.mkdtemp(dir='/tmp/magic_pdf/unittest/tools')
    os.makedirs(temp_output_dir, exist_ok=True)
icecraft's avatar
icecraft committed
17
18
19
20
21
22

    # run
    runner = CliRunner()
    result = runner.invoke(
        cli,
        [
23
24
25
            '-p',
            'tests/test_tools/assets/cli/pdf/cli_test_01.pdf',
            '-o',
icecraft's avatar
icecraft committed
26
27
28
29
30
31
32
            temp_output_dir,
        ],
    )

    # check
    assert result.exit_code == 0

33
    base_output_dir = os.path.join(temp_output_dir, 'cli_test_01/auto')
icecraft's avatar
icecraft committed
34

35
    r = os.stat(os.path.join(base_output_dir, f'{filename}.md'))
icecraft's avatar
icecraft committed
36
37
    assert r.st_size > 7000

38
    r = os.stat(os.path.join(base_output_dir, f'{filename}_middle.json'))
icecraft's avatar
icecraft committed
39
40
    assert r.st_size > 200000

41
    r = os.stat(os.path.join(base_output_dir, f'{filename}_model.json'))
icecraft's avatar
icecraft committed
42
43
    assert r.st_size > 15000

44
    r = os.stat(os.path.join(base_output_dir, f'{filename}_origin.pdf'))
icecraft's avatar
icecraft committed
45
46
    assert r.st_size > 500000

47
    r = os.stat(os.path.join(base_output_dir, f'{filename}_layout.pdf'))
icecraft's avatar
icecraft committed
48
49
    assert r.st_size > 500000

50
    r = os.stat(os.path.join(base_output_dir, f'{filename}_spans.pdf'))
icecraft's avatar
icecraft committed
51
52
    assert r.st_size > 500000

53
54
55
56
57
    assert os.path.exists(os.path.join(base_output_dir, 'images')) is True
    assert os.path.isdir(os.path.join(base_output_dir, 'images')) is True
    assert os.path.exists(
        os.path.join(base_output_dir,
                     f'{filename}_content_list.json')) is False
icecraft's avatar
icecraft committed
58
59
60
61
62
63
64

    # teardown
    shutil.rmtree(temp_output_dir)


def test_cli_path():
    # setup
65
    unitest_dir = '/tmp/magic_pdf/unittest/tools'
icecraft's avatar
icecraft committed
66
    os.makedirs(unitest_dir, exist_ok=True)
67
68
    temp_output_dir = tempfile.mkdtemp(dir='/tmp/magic_pdf/unittest/tools')
    os.makedirs(temp_output_dir, exist_ok=True)
icecraft's avatar
icecraft committed
69
70
71
72

    # run
    runner = CliRunner()
    result = runner.invoke(
73
        cli, ['-p', 'tests/test_tools/assets/cli/path', '-o', temp_output_dir])
icecraft's avatar
icecraft committed
74
75
76
77

    # check
    assert result.exit_code == 0

78
79
    filename = 'cli_test_01'
    base_output_dir = os.path.join(temp_output_dir, 'cli_test_01/auto')
icecraft's avatar
icecraft committed
80

81
    r = os.stat(os.path.join(base_output_dir, f'{filename}.md'))
icecraft's avatar
icecraft committed
82
83
    assert r.st_size > 7000

84
    r = os.stat(os.path.join(base_output_dir, f'{filename}_middle.json'))
icecraft's avatar
icecraft committed
85
86
    assert r.st_size > 200000

87
    r = os.stat(os.path.join(base_output_dir, f'{filename}_model.json'))
icecraft's avatar
icecraft committed
88
89
    assert r.st_size > 15000

90
    r = os.stat(os.path.join(base_output_dir, f'{filename}_origin.pdf'))
icecraft's avatar
icecraft committed
91
92
    assert r.st_size > 500000

93
    r = os.stat(os.path.join(base_output_dir, f'{filename}_layout.pdf'))
icecraft's avatar
icecraft committed
94
95
    assert r.st_size > 500000

96
    r = os.stat(os.path.join(base_output_dir, f'{filename}_spans.pdf'))
icecraft's avatar
icecraft committed
97
98
    assert r.st_size > 500000

99
100
101
102
103
    assert os.path.exists(os.path.join(base_output_dir, 'images')) is True
    assert os.path.isdir(os.path.join(base_output_dir, 'images')) is True
    assert os.path.exists(
        os.path.join(base_output_dir,
                     f'{filename}_content_list.json')) is False
icecraft's avatar
icecraft committed
104

105
106
    base_output_dir = os.path.join(temp_output_dir, 'cli_test_02/auto')
    filename = 'cli_test_02'
icecraft's avatar
icecraft committed
107

108
    r = os.stat(os.path.join(base_output_dir, f'{filename}.md'))
icecraft's avatar
icecraft committed
109
110
    assert r.st_size > 5000

111
    r = os.stat(os.path.join(base_output_dir, f'{filename}_middle.json'))
icecraft's avatar
icecraft committed
112
113
    assert r.st_size > 200000

114
    r = os.stat(os.path.join(base_output_dir, f'{filename}_model.json'))
icecraft's avatar
icecraft committed
115
116
    assert r.st_size > 15000

117
    r = os.stat(os.path.join(base_output_dir, f'{filename}_origin.pdf'))
icecraft's avatar
icecraft committed
118
119
    assert r.st_size > 500000

120
    r = os.stat(os.path.join(base_output_dir, f'{filename}_layout.pdf'))
icecraft's avatar
icecraft committed
121
122
    assert r.st_size > 500000

123
    r = os.stat(os.path.join(base_output_dir, f'{filename}_spans.pdf'))
icecraft's avatar
icecraft committed
124
125
    assert r.st_size > 500000

126
127
128
129
130
    assert os.path.exists(os.path.join(base_output_dir, 'images')) is True
    assert os.path.isdir(os.path.join(base_output_dir, 'images')) is True
    assert os.path.exists(
        os.path.join(base_output_dir,
                     f'{filename}_content_list.json')) is False
icecraft's avatar
icecraft committed
131
132
133

    # teardown
    shutil.rmtree(temp_output_dir)