pdf_matcher 1.0.1 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +6 -5
- data/CHANGELOG.md +16 -0
- data/Gemfile +1 -0
- data/README.md +45 -15
- data/lib/pdf_matcher/diff_pdf.rb +17 -1
- data/lib/pdf_matcher/matcher.rb +12 -1
- data/lib/pdf_matcher/version.rb +1 -1
- data/pdf_matcher.gemspec +1 -1
- metadata +3 -4
- data/Dockerfile +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b25a11b945dc8e7518398bde01819aa6c7c938eb55d0a337c2ab96d8a39acd6
|
4
|
+
data.tar.gz: c8bf17486d738bd1860f9aef05130e1c8937ebe7e64f223ac01730c2f5261235
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3b37821e911c44dd6fecb67c7a27bff348ad857e34e358f06a26501267a8d5298fd457bbdebb4e7c442fcb6d26f7bdffa9e11adb55154ee7c018a7394696001
|
7
|
+
data.tar.gz: b2b96542029235f9e6a95316660a3faa596477e208d3c082957e35e86bc519197b5ec6988eb3a6f849b4a4137c499696fcd7f1f5e0e91e316f1924db0ee3df4e
|
data/.github/workflows/test.yml
CHANGED
@@ -12,12 +12,13 @@ jobs:
|
|
12
12
|
strategy:
|
13
13
|
matrix:
|
14
14
|
ruby_version:
|
15
|
-
- 2.
|
16
|
-
-
|
17
|
-
- 3.
|
15
|
+
- '2.7'
|
16
|
+
- '3.0'
|
17
|
+
- '3.1'
|
18
|
+
- '3.2'
|
18
19
|
|
19
20
|
steps:
|
20
|
-
- uses: actions/checkout@
|
21
|
+
- uses: actions/checkout@v3
|
21
22
|
|
22
23
|
- uses: hidakatsuya/setup-diff-pdf@v1
|
23
24
|
with:
|
@@ -32,4 +33,4 @@ jobs:
|
|
32
33
|
run: bundle install --jobs 4 --retry 3
|
33
34
|
|
34
35
|
- name: Run Tests
|
35
|
-
run: bundle exec rake test
|
36
|
+
run: xvfb-run -a bundle exec rake test
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
## 2.1.0
|
2
|
+
|
3
|
+
### Changes
|
4
|
+
|
5
|
+
- Drop Ruby 2.6 support
|
6
|
+
|
7
|
+
### Bug Fixes
|
8
|
+
|
9
|
+
- Fixes an issue where it would appear diff-pdf ran successfully but actually returned an erroneous exit code. Now raises an error if this occurs.
|
10
|
+
|
11
|
+
## 2.0.0
|
12
|
+
|
13
|
+
### Breaking Changes
|
14
|
+
|
15
|
+
- Delete (not keep) the difference PDF when the PDFs are matched [44b05f8](https://github.com/hidakatsuya/pdf_matcher/commit/44b05f8c0df8d2429e3b6c50e2fbb02ed87ee139)
|
16
|
+
|
1
17
|
## 1.0.1
|
2
18
|
|
3
19
|
### Bug Fixes
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -15,7 +15,7 @@ Note that you can install it with [hidakatsuya/setup-diff-pdf](https://github.co
|
|
15
15
|
|
16
16
|
### Supported Ruby Versions
|
17
17
|
|
18
|
-
2.
|
18
|
+
2.7, 3.0, 3.1, 3.2
|
19
19
|
|
20
20
|
## Installation
|
21
21
|
|
@@ -35,22 +35,43 @@ Or install it yourself as:
|
|
35
35
|
|
36
36
|
## Usage
|
37
37
|
|
38
|
+
### PdfMatcher.match?
|
39
|
+
|
40
|
+
Returns true if the PDFs match, false otherwise.
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
PdfMatcher.match?(pdf_a_data, pdf_b_data)
|
44
|
+
PdfMatcher.match?('/path/to/a.pdf', '/path/to/b.pdf')
|
45
|
+
PdfMatcher.match?(Pathname('/path/to/a.pdf'), Pathname('/path/to/b.pdf'))
|
46
|
+
```
|
47
|
+
|
48
|
+
#### `output_diff` option:
|
49
|
+
|
50
|
+
If the PDFs do not match, a difference PDF file will be generated at the path specified.
|
51
|
+
|
38
52
|
```ruby
|
39
|
-
|
53
|
+
PdfMatcher.match?(pdf_a_data, pdf_b_data, output_diff: '/path/to/diff.pdf')
|
54
|
+
```
|
40
55
|
|
41
|
-
|
56
|
+
#### `diff_pdf_opts` option:
|
42
57
|
|
43
|
-
|
44
|
-
PdfMatcher.match?(Pathname('/path/to/a.pdf'), Pathname('/path/to/b.pdf')) #=> boolean
|
58
|
+
The specified values will be set as options for the `diff-pdf` command.
|
45
59
|
|
46
|
-
|
47
|
-
PdfMatcher.match?(
|
60
|
+
```ruby
|
61
|
+
PdfMatcher.match?(pdf_a_data, pdf_b_data, diff_pdf_opts: ['--mark-differences', '--dpi=600'])
|
62
|
+
```
|
48
63
|
|
64
|
+
### PdfMatcher.match
|
65
|
+
|
66
|
+
Returns the PDF match result as a `PdfMatcher::MatchResult` object.
|
67
|
+
|
68
|
+
```ruby
|
49
69
|
result = PdfMatcher.match(
|
50
70
|
pdf_a, pdf_b,
|
51
|
-
output_diff: nil,
|
52
|
-
diff_pdf_opts: nil
|
71
|
+
output_diff: nil,
|
72
|
+
diff_pdf_opts: nil
|
53
73
|
)
|
74
|
+
|
54
75
|
result.matched? #=> boolean
|
55
76
|
|
56
77
|
# Returns nil if pdf data is passed, otherwise returns path as Pathname.
|
@@ -60,16 +81,25 @@ result.pdf2_path #=> Pathname or nil
|
|
60
81
|
result.pdf1_data #=> "%PDF-..."
|
61
82
|
result.pdf2_data #=> "%PDF-..."
|
62
83
|
|
63
|
-
# Returns nil if the output_diff parameter is nil.
|
84
|
+
# Returns nil if the output_diff parameter is nil or the PDFs do not match.
|
64
85
|
result.diff_pdf_path #=> Pathname or nil
|
65
86
|
result.diff_pdf_data #=> "%PDF-..." or nil
|
87
|
+
```
|
66
88
|
|
67
|
-
|
89
|
+
### Configuring the default options for the diff-pdf command
|
90
|
+
|
91
|
+
```ruby
|
92
|
+
PdfMatcher.config.diff_pdf_opts = %w(
|
93
|
+
--mark-differences
|
94
|
+
--channel-tolerance=40
|
95
|
+
)
|
68
96
|
```
|
69
97
|
|
98
|
+
See `diff-pdf --help` for available options of the diff-pdf.
|
99
|
+
|
70
100
|
## Use in Testing Frameworks
|
71
101
|
|
72
|
-
|
102
|
+
Try [pdf_matcher-testing gem](https://github.com/hidakatsuya/pdf_matcher-testing).
|
73
103
|
|
74
104
|
## Contributing
|
75
105
|
|
@@ -84,8 +114,8 @@ $ bundle exec rake test
|
|
84
114
|
However, this gem requires diff-pdf. You can install it locally or use a docker container.
|
85
115
|
|
86
116
|
```
|
87
|
-
$ docker
|
88
|
-
$ docker run -v $PWD:/src:cached -it
|
117
|
+
$ docker pull ghcr.io/hidakatsuya/ruby-with-diff-pdf:3.2
|
118
|
+
$ docker run -v $PWD:/src:cached -it ghcr.io/hidakatsuya/ruby-with-diff-pdf bash
|
89
119
|
|
90
120
|
> src# bundle install
|
91
121
|
> src# bundle exec rake test
|
@@ -94,7 +124,7 @@ $ docker run -v $PWD:/src:cached -it pdf_matcher bash
|
|
94
124
|
Or, you can run tests instantlly like this:
|
95
125
|
|
96
126
|
```
|
97
|
-
$ docker run --rm -v $PWD:/src -it
|
127
|
+
$ docker run --rm -v $PWD:/src -it ghcr.io/hidakatsuya/ruby-with-diff-pdf bash -c "bundle install && bundle exec rake test"
|
98
128
|
```
|
99
129
|
|
100
130
|
|
data/lib/pdf_matcher/diff_pdf.rb
CHANGED
@@ -19,12 +19,28 @@ module PdfMatcher
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
class UnknownDiffPdfExitCode < StandardError
|
23
|
+
def initialize(code)
|
24
|
+
super "pdf_matcher did not recognize the exit code #{code} from the diff-pdf command, " \
|
25
|
+
'this probably means there is a problem with your installed version of diff-pdf.'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
22
29
|
def initialize
|
23
30
|
verify_available!
|
24
31
|
end
|
25
32
|
|
26
33
|
def exec(pdf1_path, pdf2_path, output_diff: nil, options: nil)
|
27
|
-
|
34
|
+
`diff-pdf #{build_options(output_diff, options).join(' ')} #{pdf1_path} #{pdf2_path} > /dev/null 2>&1`
|
35
|
+
|
36
|
+
case $?.exitstatus
|
37
|
+
when 0
|
38
|
+
true
|
39
|
+
when 1
|
40
|
+
false
|
41
|
+
else
|
42
|
+
raise UnknownDiffPdfExitCode, $?.exitstatus
|
43
|
+
end
|
28
44
|
end
|
29
45
|
|
30
46
|
private
|
data/lib/pdf_matcher/matcher.rb
CHANGED
@@ -14,7 +14,18 @@ module PdfMatcher
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def match
|
17
|
-
@result ||=
|
17
|
+
@result ||= begin
|
18
|
+
matched = match_pdfs
|
19
|
+
|
20
|
+
if matched
|
21
|
+
# [NOTE] The diff-pdf command will generate a diff PDF file
|
22
|
+
# regardless of the result if the `--output_diff` option is given.
|
23
|
+
output_diff_path.unlink if output_diff_path&.exist?
|
24
|
+
MatchResult.new(matched, pdf1, pdf2, nil)
|
25
|
+
else
|
26
|
+
MatchResult.new(matched, pdf1, pdf2, output_diff_path)
|
27
|
+
end
|
28
|
+
end
|
18
29
|
end
|
19
30
|
|
20
31
|
private
|
data/lib/pdf_matcher/version.rb
CHANGED
data/pdf_matcher.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.description = 'PdfMatcher is a gem to compare two PDFs and output the differences using diff-pdf'
|
11
11
|
spec.homepage = 'https://github.com/hidakatsuya/pdf_matcher'
|
12
12
|
spec.license = 'MIT'
|
13
|
-
spec.required_ruby_version = Gem::Requirement.new('>= 2.
|
13
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 2.7.0')
|
14
14
|
|
15
15
|
spec.metadata['homepage_uri'] = spec.homepage
|
16
16
|
spec.metadata['source_code_uri'] = spec.homepage
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdf_matcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Katsuya Hidaka
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: PdfMatcher is a gem to compare two PDFs and output the differences using
|
14
14
|
diff-pdf
|
@@ -22,7 +22,6 @@ files:
|
|
22
22
|
- ".gitignore"
|
23
23
|
- CHANGELOG.md
|
24
24
|
- CODE_OF_CONDUCT.md
|
25
|
-
- Dockerfile
|
26
25
|
- Gemfile
|
27
26
|
- LICENSE.txt
|
28
27
|
- README.md
|
@@ -49,7 +48,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
49
48
|
requirements:
|
50
49
|
- - ">="
|
51
50
|
- !ruby/object:Gem::Version
|
52
|
-
version: 2.
|
51
|
+
version: 2.7.0
|
53
52
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
53
|
requirements:
|
55
54
|
- - ">="
|
data/Dockerfile
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
FROM ruby:3.0.1
|
2
|
-
|
3
|
-
RUN apt-get update -qq && apt-get install -y build-essential xvfb
|
4
|
-
|
5
|
-
WORKDIR /tmp
|
6
|
-
|
7
|
-
RUN apt-get install -y libpoppler-glib-dev poppler-utils libwxgtk3.0-dev && \
|
8
|
-
curl -L https://github.com/vslavik/diff-pdf/archive/master.tar.gz -o diff-pdf-master.tar.gz && \
|
9
|
-
tar zxf diff-pdf-master.tar.gz && \
|
10
|
-
cd diff-pdf-master && \
|
11
|
-
./bootstrap && \
|
12
|
-
./configure && \
|
13
|
-
make && make install
|
14
|
-
|
15
|
-
RUN mkdir /src
|
16
|
-
|
17
|
-
WORKDIR /src
|
18
|
-
VOLUME /src
|