1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# frozen_string_literal: true
require_relative 'spec_helper'
describe 'asciidoctor-pdf' do
context 'Packaging' do
it 'should install bin script named asciidoctor-pdf' do
bin_script = (Pathname.new Gem.bindir) / 'asciidoctor-pdf'
bin_script = Pathname.new Gem.bin_path 'asciidoctor-pdf', 'asciidoctor-pdf' unless bin_script.exist?
(expect bin_script).to exist
end
end
context 'Options' do
it 'should print the version of Asciidoctor PDF to stdout when invoked with the -V flag', cli: true do
out, _, res = run_command asciidoctor_pdf_bin, '-V'
(expect res.exitstatus).to be 0
(expect out).to include %(Asciidoctor PDF #{Asciidoctor::PDF::VERSION} using Asciidoctor #{Asciidoctor::VERSION})
end
end
context 'Require' do
it 'should load converter if backend is pdf and require is asciidoctor-pdf', cli: true do
out, err, res = run_command asciidoctor_bin, '-r', 'asciidoctor-pdf', '-b', 'pdf', '-D', output_dir, (fixture_file 'hello.adoc'), use_bundler: true
(expect res.exitstatus).to be 0
(expect out).to be_empty
(expect err).to be_empty
(expect Pathname.new output_file 'hello.pdf').to exist
end
it 'should load converter if backend is pdf and require is asciidoctor/pdf', cli: true do
out, err, res = run_command asciidoctor_bin, '-r', 'asciidoctor/pdf', '-b', 'pdf', '-D', output_dir, (fixture_file 'hello.adoc'), use_bundler: true
(expect res.exitstatus).to be 0
(expect out).to be_empty
(expect err).to be_empty
(expect Pathname.new output_file 'hello.pdf').to exist
end
end if defined? Bundler
context 'Examples' do
it 'should convert the basic example', cli: true, visual: true do
out, err, res = run_command asciidoctor_pdf_bin, '-D', output_dir, (example_file 'basic-example.adoc')
(expect res.exitstatus).to be 0
(expect out).to be_empty
(expect err).to be_empty
reference_file = File.absolute_path example_file 'basic-example.pdf'
(expect output_file 'basic-example.pdf').to visually_match reference_file
end
it 'should convert the chronicles example', cli: true, visual: true do
out, err, res = run_command asciidoctor_pdf_bin, '-D', output_dir, (example_file 'chronicles-example.adoc')
(expect res.exitstatus).to be 0
(expect out).to be_empty
(expect err).to be_empty
reference_file = File.absolute_path example_file 'chronicles-example.pdf'
(expect output_file 'chronicles-example.pdf').to visually_match reference_file
end unless ENV['ROUGE_VERSION'] && ENV['ROUGE_VERSION'].split[-1] < '2.1.0'
end
context 'redirection' do
it 'should be able to write output to file via stdout', cli: true do
run_command asciidoctor_pdf_bin, '-o', '-', (fixture_file 'book.adoc'), out: (to_file = output_file 'book.pdf')
(expect Pathname.new to_file).to exist
(expect { PDF::Reader.new to_file }).not_to raise_exception
end unless windows? && RUBY_ENGINE == 'jruby'
end
context 'pdfmark' do
it 'should generate pdfmark file if pdfmark attribute is set', cli: true do
out, err, res = run_command asciidoctor_pdf_bin, '-D', output_dir, '-a', 'pdfmark', (fixture_file 'book.adoc')
(expect res.exitstatus).to be 0
(expect out).to be_empty
(expect err).to be_empty
pdfmark_file = Pathname.new output_file 'book.pdfmark'
(expect pdfmark_file).to exist
pdfmark_contents = pdfmark_file.read
(expect pdfmark_contents).to include '/Title (Book Title)'
(expect pdfmark_contents).to include '/Author (Author Name)'
(expect pdfmark_contents).to include '/DOCINFO pdfmark'
end
end
context 'keep artifacts' do
it 'should generate scratch file if KEEP_ARTIFACTS environment variable is set', cli: true do
out, err, res = run_command asciidoctor_pdf_bin, '-D', output_dir, (fixture_file 'dry-run-block.adoc'), env: { 'KEEP_ARTIFACTS' => 'true' }
(expect res.exitstatus).to be 0
(expect out).to be_empty
(expect err).to be_empty
scratch_file = Pathname.new output_file 'dry-run-block-scratch.pdf'
(expect scratch_file).to exist
(expect { PDF::Reader.new scratch_file }).not_to raise_exception
end
end
end
|