Skip to content

Commit 9a16537

Browse files
committed
Add test for generated image
1 parent e20426f commit 9a16537

File tree

7 files changed

+122
-16
lines changed

7 files changed

+122
-16
lines changed

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/dockerfiles/

.travis.yml

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,24 @@
1-
---
2-
dist: xenial
3-
language: ruby
4-
cache: bundler
5-
rvm:
6-
- 2.6
7-
env:
8-
- PYENV_VERSION=3.7 PYTHON=python
9-
before_install:
10-
- pip install --user matplotlib
1+
notifications:
2+
webhooks:
3+
- https://webhook.commit-email.info/
4+
5+
services:
6+
- docker
7+
8+
matrix:
9+
include:
10+
- name: Ruby 2.6
11+
env: TYPE=ruby-2.6
12+
13+
install:
14+
- docker build
15+
-t red-data-tools/charty-${TYPE}
16+
-f dockerfiles/Dockerfile.${TYPE}
17+
.
18+
19+
script:
20+
- docker run
21+
--interactive
22+
--tty
23+
red-data-tools/charty-${TYPE}
24+
bundle exec rake

charty.gemspec

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,15 @@ Gem::Specification.new do |spec|
2626
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
2727
spec.require_paths = ["lib"]
2828

29+
spec.add_development_dependency "activerecord"
2930
spec.add_development_dependency "bundler", ">= 1.16"
30-
spec.add_development_dependency "rake"
31-
spec.add_development_dependency "test-unit"
32-
spec.add_development_dependency "numo-narray"
31+
spec.add_development_dependency "daru"
32+
spec.add_development_dependency "matplotlib"
3333
spec.add_development_dependency "nmatrix"
34+
spec.add_development_dependency "numo-narray"
35+
spec.add_development_dependency "rake"
3436
spec.add_development_dependency "red-datasets", ">= 0.0.9"
35-
spec.add_development_dependency "daru"
36-
spec.add_development_dependency "activerecord"
37+
spec.add_development_dependency "red-opencv"
3738
spec.add_development_dependency "sqlite3"
38-
spec.add_development_dependency "matplotlib"
39+
spec.add_development_dependency "test-unit"
3940
end

dockerfiles/Dockerfile.ruby-2.6

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
FROM ruby:2.6
2+
3+
RUN \
4+
apt update && \
5+
apt install -y \
6+
apt-transport-https \
7+
wget && \
8+
wget -O /usr/share/keyrings/red-data-tools-keyring.gpg \
9+
https://packages.red-data-tools.org/debian/red-data-tools-keyring.gpg && \
10+
echo "deb [signed-by=/usr/share/keyrings/red-data-tools-keyring.gpg] https://packages.red-data-tools.org/debian/ buster main" > \
11+
/etc/apt/sources.list.d/red-data-tools.list && \
12+
apt update && \
13+
apt install -y \
14+
python3-pip \
15+
sudo \
16+
xvfb && \
17+
gem install \
18+
bundler \
19+
rake && \
20+
pip3 install \
21+
matplotlib
22+
23+
RUN \
24+
useradd --user-group --create-home charty
25+
26+
RUN \
27+
echo "charty ALL=(ALL:ALL) NOPASSWD:ALL" | \
28+
EDITOR=tee visudo -f /etc/sudoers.d/charty
29+
30+
COPY . /home/charty/charty
31+
RUN chown -R charty:charty /home/charty/charty
32+
33+
USER charty
34+
WORKDIR /home/charty/charty
35+
36+
RUN bundle install
37+
38+
CMD \
39+
dbus-run-session \
40+
xvfb-run --server-args "-screen 0 640x480x24" \
41+
bundle exec rake
21.5 KB
Loading

test/backends/pyplot/curve_test.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
require_relative "../../test_helper"
2+
3+
class BackendsPyplotCurveTest < Test::Unit::TestCase
4+
include Helper::Image
5+
6+
def setup
7+
@plotter = Charty::Plotter.new(:pyplot)
8+
@data = {
9+
foo: [1, 2, 3, 4, 5, 6, 7],
10+
square: [1, 4, 9, 16, 25, 36, 49],
11+
cubic: [1, 8, 27, 64, 125, 216, 343],
12+
}
13+
end
14+
15+
def expected_image_path(*components)
16+
File.join(__dir__, *components)
17+
end
18+
19+
test("Integer") do
20+
curve = @plotter.curve do
21+
series [0, 1, 2, 3, 4], [10, 40, 20, 90, 70], label: "sample1"
22+
end
23+
output = Tempfile.new(["curve", ".png"])
24+
curve.save(output.path)
25+
assert_image(expected_image_path("curve_integer.png"),
26+
output.path)
27+
end
28+
end

test/test_helper.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
11
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
22
require 'charty'
33
require 'test/unit'
4+
require 'tempfile'
5+
begin
6+
require 'cv'
7+
rescue LoadError
8+
end
9+
10+
11+
module Helper
12+
module Image
13+
def assert_image(expected_path, actual_path)
14+
unless defined?(::CV)
15+
omit("red-opencv is required for #{__method__}")
16+
end
17+
expected = CV::Image.read(expected_path)
18+
actual = CV::Image.read(actual_path)
19+
# TODO: Make this loose
20+
assert_equal(expected.bytes.to_s,
21+
actual.bytes.to_s)
22+
end
23+
end
24+
end

0 commit comments

Comments
 (0)