diff --git a/src/Plots.jl b/src/Plots.jl index df5963a1..ebd0aca7 100644 --- a/src/Plots.jl +++ b/src/Plots.jl @@ -161,6 +161,8 @@ export @recipe, # @plotrecipe, + test_examples, + translate, translate!, rotate, @@ -197,6 +199,7 @@ include("subplots.jl") include("recipes.jl") include("animation.jl") include("output.jl") +include("examples.jl") # --------------------------------------------------------- diff --git a/test/REQUIRE b/test/REQUIRE index daed8f73..a003b93c 100644 --- a/test/REQUIRE +++ b/test/REQUIRE @@ -13,3 +13,4 @@ DataFrames RDatasets VisualRegressionTests UnicodePlots +Glob diff --git a/test/imgcomp.jl b/test/imgcomp.jl index 8ad6e479..01a4603c 100644 --- a/test/imgcomp.jl +++ b/test/imgcomp.jl @@ -1,6 +1,6 @@ using VisualRegressionTests -using ExamplePlots +# using ExamplePlots import DataFrames, RDatasets @@ -14,6 +14,7 @@ end using Plots, FactCheck +using Glob default(size=(500,300)) @@ -21,37 +22,66 @@ 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 # is referenced in a button press callback (the button clicked callback will call notify() on that condition) +const _current_plots_version = v"0.6.1" + + function image_comparison_tests(pkg::Symbol, idx::Int; debug = false, popup = isinteractive(), sigma = [1,1], eps = 1e-2) + Plots._debugMode.on = debug + example = Plots._examples[idx] + info("Testing plot: $pkg:$idx:$(example.header)") + backend(pkg) + backend() - # first - Plots._debugMode.on = debug - example = ExamplePlots._examples[idx] - info("Testing plot: $pkg:$idx:$(example.header)") - backend(pkg) - backend() + # ensure consistent results + srand(1234) - # ensure consistent results - srand(1234) + # reference image directory setup + # refdir = joinpath(Pkg.dir("ExamplePlots"), "test", "refimg", string(pkg)) + refdir = Pkg.dir("PlotReferenceImages", "Plots", string(pkg)) + fn = "ref$idx.png" - # reference image directory setup - refdir = joinpath(Pkg.dir("ExamplePlots"), "test", "refimg", string(pkg)) + # firgure out version info + G = glob(relpath(refdir) * "/*") + @show refdir fn G + versions = map(fn -> VersionNumber(split(fn,"/")[end]), G) + versions = reverse(sort(versions)) + @show refdir fn versions - # test function - func = (fn, idx) -> begin - map(eval, example.exprs) - png(fn) - end + reffn = nothing + newfn = joinpath(refdir, string(_current_plots_version), fn) + for v in versions + try + tmpfn = joinpath(refdir, string(v), fn) + @show "trying", tmpfn + f = open(tmpfn) + reffn = tmpfn + end + end - try - run(`mkdir -p $refdir`) - catch err - display(err) - end - reffn = joinpath(refdir, "ref$idx.png") + # now we have the fn (if any)... do the comparison + @show reffn + if reffn == nothing + reffn = newfn + end + @show reffn + # return - # the test - vtest = VisualTest(func, reffn, idx) - test_images(vtest, popup=popup, sigma=sigma, eps=eps) + # test function + func = (fn, idx) -> begin + map(eval, example.exprs) + png(fn) + end + + # try + # run(`mkdir -p $refdir`) + # catch err + # display(err) + # end + # reffn = joinpath(refdir, "ref$idx.png") + + # the test + vtest = VisualTest(func, reffn, idx) + test_images(vtest, popup=popup, sigma=sigma, eps=eps, newfn = newfn) end function image_comparison_facts(pkg::Symbol; @@ -60,7 +90,7 @@ function image_comparison_facts(pkg::Symbol; debug = false, # print debug information? sigma = [1,1], # number of pixels to "blur" eps = 1e-2) # acceptable error (percent) - for i in 1:length(ExamplePlots._examples) + for i in 1:length(Plots._examples) i in skip && continue if only == nothing || i in only @fact image_comparison_tests(pkg, i, debug=debug, sigma=sigma, eps=eps) |> success --> true diff --git a/test/travis_commands.jl b/test/travis_commands.jl index b6b2751e..13d3b2f0 100644 --- a/test/travis_commands.jl +++ b/test/travis_commands.jl @@ -8,7 +8,8 @@ Pkg.clone("GR") Pkg.build("GR") # Pkg.clone("https://github.com/JuliaPlots/RecipesBase.jl.git") -Pkg.clone("https://github.com/tbreloff/ExamplePlots.jl.git"); +# Pkg.clone("https://github.com/tbreloff/ExamplePlots.jl.git"); +Pkg.clone("https://github.com/JuliaPlots/PlotReferenceImages.jl.git") # Pkg.clone("https://github.com/JunoLab/Blink.jl.git") # Pkg.build("Blink") @@ -17,6 +18,7 @@ Pkg.clone("https://github.com/tbreloff/ExamplePlots.jl.git"); # Pkg.clone("https://github.com/spencerlyon2/PlotlyJS.jl.git") Pkg.checkout("RecipesBase") +Pkg.checkout("VisualRegressionTests") ENV["PYTHON"] = "" Pkg.add("PyPlot")