deprecated a bunch of images and docs-related stuff; cleaned up travis, imgcomp, and runtests
@ -13,11 +13,11 @@ script:
|
||||
- if [[ -a .git/shallow ]]; then git fetch --unshallow; fi
|
||||
- julia -e 'Pkg.clone(pwd()); Pkg.build("Plots")'
|
||||
# - julia -e 'Pkg.clone("https://github.com/tbreloff/Images.jl.git"); Pkg.checkout("Images","tom_imgcompare");'
|
||||
- julia -e 'Pkg.clone("Images"); Pkg.build("Images")'
|
||||
- julia -e 'Pkg.clone("ImageMagick"); Pkg.build("ImageMagick")'
|
||||
# - julia -e 'Pkg.clone("Images"); Pkg.build("Images")'
|
||||
# - julia -e 'Pkg.clone("ImageMagick"); Pkg.build("ImageMagick")'
|
||||
- julia -e 'Pkg.clone("https://github.com/tbreloff/VisualRegressionTests.jl.git");'
|
||||
- julia -e 'Pkg.clone("https://github.com/tbreloff/ExamplePlots.jl.git");'
|
||||
- julia -e 'Pkg.clone("Cairo"); Pkg.build("Cairo")'
|
||||
- julia -e 'ENV["PYTHON"] = ""; Pkg.clone("PyPlot"); Pkg.build("PyPlot")'
|
||||
# - julia -e 'Pkg.clone("Cairo"); Pkg.build("Cairo")'
|
||||
# - julia -e 'ENV["PYTHON"] = ""; Pkg.clone("PyPlot"); Pkg.build("PyPlot")'
|
||||
- julia -e 'Pkg.test("Plots"; coverage=false)'
|
||||
# - julia -e 'cd(Pkg.dir("Plots")); Pkg.add("Coverage"); using Coverage; Coveralls.submit(process_folder()); Codecov.submit(process_folder())'
|
||||
|
||||
|
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 184 KiB After Width: | Height: | Size: 184 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
100
test/imgcomp.jl
@ -1,11 +1,4 @@
|
||||
|
||||
# # include this first to help with crashing??
|
||||
# try
|
||||
# @eval using Gtk
|
||||
# catch err
|
||||
# warn("Gtk not loaded. err: $err")
|
||||
# end
|
||||
|
||||
using VisualRegressionTests
|
||||
using ExamplePlots
|
||||
|
||||
@ -17,53 +10,10 @@ try
|
||||
info("Matplotlib version: $(PyPlot.matplotlib[:__version__])")
|
||||
end
|
||||
|
||||
# include("../docs/example_generation.jl")
|
||||
|
||||
|
||||
using Plots, FactCheck
|
||||
# import Images, ImageMagick
|
||||
|
||||
# if !isdefined(ImageMagick, :init_deps)
|
||||
# function ImageMagick.init_deps()
|
||||
# ccall((:MagickWandGenesis,libwand), Void, ())
|
||||
# end
|
||||
# end
|
||||
|
||||
# function makeImageWidget(fn)
|
||||
# img = Gtk.GtkImageLeaf(fn)
|
||||
# vbox = Gtk.GtkBoxLeaf(:v)
|
||||
# push!(vbox, Gtk.GtkLabelLeaf(fn))
|
||||
# push!(vbox, img)
|
||||
# show(img)
|
||||
# vbox
|
||||
# end
|
||||
|
||||
# function replaceReferenceImage(tmpfn, reffn)
|
||||
# cmd = `cp $tmpfn $reffn`
|
||||
# run(cmd)
|
||||
# info("Replaced reference image with: $cmd")
|
||||
# end
|
||||
|
||||
# "Show a Gtk popup with both images and a confirmation whether we should replace the new image with the old one"
|
||||
# function compareToReferenceImage(tmpfn, reffn)
|
||||
|
||||
# # add the images
|
||||
# imgbox = Gtk.GtkBoxLeaf(:h)
|
||||
# push!(imgbox, makeImageWidget(tmpfn))
|
||||
# push!(imgbox, makeImageWidget(reffn))
|
||||
|
||||
# win = Gtk.GtkWindowLeaf("Should we make this the new reference image?")
|
||||
# push!(win, Gtk.GtkFrameLeaf(imgbox))
|
||||
|
||||
# showall(win)
|
||||
|
||||
# # now ask the question
|
||||
# if Gtk.ask_dialog("Should we make this the new reference image?", "No", "Yes")
|
||||
# replaceReferenceImage(tmpfn, reffn)
|
||||
# end
|
||||
|
||||
# destroy(win)
|
||||
# end
|
||||
default(size=(500,300))
|
||||
|
||||
|
||||
# TODO: use julia's Condition type and the wait() and notify() functions to initialize a Window, then wait() on a condition that
|
||||
@ -87,18 +37,8 @@ function image_comparison_tests(pkg::Symbol, idx::Int; debug = false, popup = is
|
||||
png(fn)
|
||||
end
|
||||
|
||||
# run the example
|
||||
# map(eval, PlotExamples._examples[idx].exprs)
|
||||
|
||||
# # save the png
|
||||
# tmpfn = tempname() * ".png"
|
||||
# png(tmpfn)
|
||||
|
||||
# # load the saved png
|
||||
# tmpimg = Images.load(tmpfn)
|
||||
|
||||
# reference image directory setup
|
||||
refdir = joinpath(Pkg.dir("Plots"), "test", "refimg", string(pkg))
|
||||
refdir = joinpath(Pkg.dir("ExamplePlots"), "test", "refimg", string(pkg))
|
||||
try
|
||||
run(`mkdir -p $refdir`)
|
||||
catch err
|
||||
@ -109,42 +49,6 @@ function image_comparison_tests(pkg::Symbol, idx::Int; debug = false, popup = is
|
||||
# the test
|
||||
vtest = VisualTest(func, reffn, idx)
|
||||
test_images(vtest, popup=popup, sigma=sigma, eps=eps)
|
||||
|
||||
# try
|
||||
|
||||
# # info("Comparing $tmpfn to reference $reffn")
|
||||
|
||||
# # load the reference image
|
||||
# refimg = Images.load(reffn)
|
||||
|
||||
# # run the comparison test... a difference will throw an error
|
||||
# # NOTE: sigma is a 2-length vector with x/y values for the number of pixels
|
||||
# # to blur together when comparing images
|
||||
# diffpct = Images.test_approx_eq_sigma_eps(tmpimg, refimg, sigma, eps)
|
||||
|
||||
# # we passed!
|
||||
# info("Reference image $reffn matches. Difference: $diffpct")
|
||||
# return true
|
||||
|
||||
# catch err
|
||||
# warn("Image did not match reference image $reffn. err: $err")
|
||||
# # showerror(Base.STDERR, err)
|
||||
|
||||
# if isinteractive()
|
||||
|
||||
# # if we're in interactive mode, open a popup and give us a chance to examine the images
|
||||
# warn("Should we make this the new reference image?")
|
||||
# compareToReferenceImage(tmpfn, reffn)
|
||||
# # println("exited")
|
||||
# return
|
||||
|
||||
# else
|
||||
|
||||
# # if we rejected the image, or if we're in automated tests, throw the error
|
||||
# rethrow(err)
|
||||
# end
|
||||
|
||||
# end
|
||||
end
|
||||
|
||||
function image_comparison_facts(pkg::Symbol; skip = [], debug = false, sigma = [1,1], eps = 1e-2)
|
||||
|
||||
124
test/runtests.jl
@ -1,35 +1,10 @@
|
||||
module PlotsTests
|
||||
|
||||
|
||||
# # don't let pyplot use a gui... it'll crash
|
||||
# # note: Agg will set gui -> :none in PyPlot
|
||||
# ENV["MPLBACKEND"] = "Agg"
|
||||
# try
|
||||
# @eval import PyPlot
|
||||
# catch err
|
||||
# warn("Couldn't import PyPlot: $err")
|
||||
# end
|
||||
|
||||
|
||||
# using Plots
|
||||
# using FactCheck
|
||||
|
||||
# # note: wrap first include in a try block because of the ImageMagick init_deps bug
|
||||
# try
|
||||
# include("imgcomp.jl")
|
||||
# end
|
||||
include("imgcomp.jl")
|
||||
|
||||
# don't actually show the plots
|
||||
srand(1234)
|
||||
default(show=false)
|
||||
|
||||
# note: we wrap in a try block so that the tests only run if we have the backend installed
|
||||
# try
|
||||
# Pkg.installed("Gadfly")
|
||||
# gadfly()
|
||||
# backend()
|
||||
|
||||
img_eps = 5e-2
|
||||
|
||||
facts("Gadfly") do
|
||||
@ -37,116 +12,19 @@ facts("Gadfly") do
|
||||
@fact backend() --> Plots.GadflyPackage()
|
||||
|
||||
@fact typeof(plot(1:10)) --> Plots.Plot{Plots.GadflyPackage}
|
||||
|
||||
# plot(x::AVec, y::AVec; kw...) # one line (will assert length(x) == length(y))
|
||||
@fact plot(Int[1,2,3], rand(3)) --> not(nothing)
|
||||
# @fact_throws plot(1:5, 1:4)
|
||||
|
||||
# plot(x::AVec, y::AMat; kw...) # multiple lines (one per column of x), all sharing x (will assert length(x) == size(y,1))
|
||||
@fact plot(sort(rand(10)), rand(Int, 10, 3)) --> not(nothing)
|
||||
# @fact_throws(plot!(rand(10), rand(9,2)))
|
||||
|
||||
# plot(x::AMat, y::AMat; kw...) # multiple lines (one per column of x/y... will assert size(x) == size(y))
|
||||
@fact plot!(rand(10,3), rand(10,3)) --> not(nothing)
|
||||
|
||||
image_comparison_facts(:gadfly, skip=[4,6,19,23,24], eps=img_eps)
|
||||
end
|
||||
|
||||
|
||||
facts("PyPlot") do
|
||||
@fact pyplot() --> Plots.PyPlotPackage()
|
||||
@fact backend() --> Plots.PyPlotPackage()
|
||||
|
||||
image_comparison_facts(:pyplot, skip=[10,19,21,23], eps=img_eps)
|
||||
end
|
||||
|
||||
|
||||
# catch err
|
||||
# warn("Skipped Gadfly due to: ", string(err))
|
||||
# end
|
||||
|
||||
# # note: we wrap in a try block so that the tests only run if we have the backend installed
|
||||
# try
|
||||
# Pkg.installed("Qwt")
|
||||
# qwt()
|
||||
# backend()
|
||||
# facts("Qwt") do
|
||||
# @fact backend(:qwt) --> Plots.QwtPackage()
|
||||
# @fact backend() --> Plots.QwtPackage()
|
||||
# @fact typeof(plot(1:10)) --> Plots.Plot{Plots.QwtPackage}
|
||||
|
||||
# # plot(y::AVec; kw...) # one line... x = 1:length(y)
|
||||
# @fact plot(1:10) --> not(nothing)
|
||||
# @fact length(current().o.lines) --> 1
|
||||
|
||||
# # plot(x::AVec, f::Function; kw...) # one line, y = f(x)
|
||||
# @fact plot(1:10, sin) --> not(nothing)
|
||||
# @fact current().o.lines[1].y --> sin(collect(1:10))
|
||||
|
||||
# # plot(x::AMat, f::Function; kw...) # multiple lines, yᵢⱼ = f(xᵢⱼ)
|
||||
# @fact plot(rand(10,2), sin) --> not(nothing)
|
||||
# @fact length(current().o.lines) --> 2
|
||||
|
||||
# # plot(y::AMat; kw...) # multiple lines (one per column of x), all sharing x = 1:size(y,1)
|
||||
# @fact plot!(rand(10,2)) --> not(nothing)
|
||||
# @fact length(current().o.lines) --> 4
|
||||
|
||||
# # plot(x::AVec, fs::AVec{Function}; kw...) # multiple lines, yᵢⱼ = fⱼ(xᵢ)
|
||||
# @fact plot(1:10, Function[sin,cos]) --> not(nothing)
|
||||
# @fact current().o.lines[1].y --> sin(collect(1:10))
|
||||
# @fact current().o.lines[2].y --> cos(collect(1:10))
|
||||
|
||||
# # plot(y::AVec{AVec}; kw...) # multiple lines, each with x = 1:length(y[i])
|
||||
# @fact plot([11:20 ; rand(10)]) --> not(nothing)
|
||||
# @fact current().o.lines[1].x[4] --> 4
|
||||
# @fact current().o.lines[1].y[4] --> 14
|
||||
# end
|
||||
# catch err
|
||||
# warn("Skipped Qwt due to: ", string(err))
|
||||
# end
|
||||
|
||||
# try
|
||||
# Pkg.installed("PyPlot")
|
||||
# pyplot()
|
||||
# backend()
|
||||
# facts("PyPlot") do
|
||||
# @fact backend(:pyplot) --> Plots.PyPlotPackage()
|
||||
# @fact backend() --> Plots.PyPlotPackage()
|
||||
# @fact typeof(plot(1:10)) --> Plots.Plot{Plots.PyPlotPackage}
|
||||
|
||||
# # image_comparison_facts(:pyplot, skip=[19])
|
||||
# end
|
||||
# catch err
|
||||
# warn("Skipped PyPlot due to: ", string(err))
|
||||
# end
|
||||
|
||||
|
||||
# try
|
||||
# Pkg.installed("UnicodePlots")
|
||||
# unicodeplots()
|
||||
# backend()
|
||||
# facts("UnicodePlots") do
|
||||
# @fact backend(:unicodeplots) --> Plots.UnicodePlotsPackage()
|
||||
# @fact backend() --> Plots.UnicodePlotsPackage()
|
||||
# @fact typeof(plot(1:10)) --> Plots.Plot{Plots.UnicodePlotsPackage}
|
||||
# end
|
||||
# catch err
|
||||
# warn("Skipped UnicodePlots due to: ", string(err))
|
||||
# end
|
||||
|
||||
|
||||
# try
|
||||
# Pkg.installed("Winston")
|
||||
# winston()
|
||||
# backend()
|
||||
# facts("Winston") do
|
||||
# @fact backend(:winston) --> Plots.WinstonPackage()
|
||||
# @fact backend() --> Plots.WinstonPackage()
|
||||
# @fact typeof(plot(1:10)) --> Plots.Plot{Plots.WinstonPackage}
|
||||
# end
|
||||
# catch err
|
||||
# warn("Skipped Winston due to: ", string(err))
|
||||
# end
|
||||
|
||||
|
||||
FactCheck.exitstatus()
|
||||
end # module
|
||||
|
||||