Skip to content

Update to v1.54.1 #1770

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 4 commits into from
Closed

Update to v1.54.1 #1770

wants to merge 4 commits into from

Conversation

rpkyle
Copy link

@rpkyle rpkyle commented May 16, 2020

This PR proposes to update plotly.js to v1.54.1, released on 2020-05-04, using the zipfile available at https://api.github.com/repos/plotly/plotly.js/releases/26163877.

The schema has been regenerated using plotlyjs.R. shinytest baselines were updated, and visual baselines were also updated as suggested here.

• Initial issues running visual tests

I was not able to get the Docker image located here to run the visual tests (strangely, I kept seeing a lazy-load package database error). I managed to avoid this problem by splitting the CMD line into two separate statements.

I also noticed that the image is using a version of orca that is almost two years old, so I created my own Dockerfile based largely on the one above using orca v1.3.1 with a xenial base image (as we currently do for the orca Docker image). (This variation does not use fuse, so Docker can be run without passing --privileged.)

Dockerfile
FROM ubuntu:xenial
MAINTAINER Ryan Patrick Kyle "[email protected]"

# Don't print "debconf: unable to initialize frontend: Dialog" messages
ARG DEBIAN_FRONTED=noninteractive
ARG CACHEBUST=1

# Need this to add R repo
RUN apt-get update && apt-get install -y software-properties-common apt-transport-https \
 && add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu xenial-cran35/" \
 && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 \
 && apt-get update && apt-get install -y \
    sudo \
    git \
    vim-tiny \
    nano \
    wget \
    r-base \
    r-base-dev \
    r-recommended \
    fonts-texgyre \
    texinfo \
    locales \
    libcurl4-gnutls-dev \
    libcairo2-dev \
    libxt-dev \
    libssl-dev \
    libxml2-dev \
 && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
 && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
 && locale-gen en_US.utf8 \
 && /usr/sbin/update-locale LANG=en_US.UTF-8

ENV LANG=en_US.UTF-8

# Rprofile
RUN echo 'options(\n\
  repos = c(CRAN = "https://cloud.r-project.org/"),\n\
  download.file.method = "libcurl",\n\
  Ncpus = parallel::detectCores(logical=FALSE),\n\
  shiny.host = "0.0.0.0", shiny.port = 3838\n\
)' >> /etc/R/Rprofile.site

# Update R packages and install those needed for visual testing
RUN R -e "update.packages(ask = F); invisible(lapply(list('devtools', 'roxygen2', 'testthat', 'vdiffr', 'diffobj'), install.packages, dependencies=TRUE, repos='http://cloud.r-project.org/'))"

# sf system dependencies
RUN add-apt-repository ppa:ubuntugis/ubuntugis-unstable --yes \
 && apt-get -y update \
 && apt-get install -y \
 && apt-get install -y libudunits2-dev libproj-dev libgeos-dev libgdal-dev

# Install all plotly's dependencies
RUN R -e "install.packages('plotly', dependencies = T)"

# system dependencies related to running orca
RUN apt-get install -y \
    libgtk2.0-0 \
    libgconf-2-4 \
    xvfb \
    xauth \
    libxtst6 \
    libxss1 \
    libnss3 \
    libasound2 \
    desktop-file-utils

# google chrome
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
    sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' && \
    apt-get update -y && \
    apt-get install -y google-chrome-stable

# Download orca binary and make it executable under xvfb
RUN mkdir -p /opt/orca \
 && cd /opt/orca \
 && wget https://github.com/plotly/orca/releases/download/v1.3.1/orca-1.3.1.AppImage \
 && chmod +x orca-1.3.1.AppImage \
 && ./orca-1.3.1.AppImage --appimage-extract \
 && rm orca-1.3.1.AppImage \
 && printf '#!/bin/bash \nargs=("$@") \nif [[ ! " ${args[@]} " =~ "--no-sandbox" ]]; then \n    args+=("--no-sandbox") \nfi \nxvfb-run --auto-servernum --server-args "-screen 0 640x480x24" /opt/orca/squashfs-root/orca "${args[@]}"' > /usr/bin/orca \
 && chmod +x /usr/bin/orca

# switch on visual testing
ENV VDIFFR=true
EXPOSE 3838

RUN R -e "update.packages(ask=FALSE)"

# install any new dependencies, then either manage cases (the default) or run tests
# note the workaround to get docker to run a proper exit status when there are testthat errors
# https://github.com/r-lib/testthat/issues/515#issuecomment-304169376
CMD R -e "remotes::install_deps(dep = TRUE)"

CMD cd /home/plotly; R -e "if (!identical(Sys.getenv('VMODE'), 'ci')) vdiffr::manage_cases(); \
  res <- devtools::test(reporter='summary'); \
  df <- as.data.frame(res); \
  if (sum(df\$failed) > 0 || any(df\$error)) q(status=1)"

On my system, Docker ends up running the tests as root within the container, so I also made a minor modification to the bash script which runs orca so that it inserts the --no-sandbox argument when it is not present, and the tests run as expected now:

#!/bin/bash 
args=("$@") 
if [[ ! " ${args[@]} " =~ "--no-sandbox" ]]; then 
    args+=("--no-sandbox") 
fi 
xvfb-run --auto-servernum --server-args "-screen 0 640x480x24" /opt/orca/squashfs-root/orca "${args[@]}"

This may be related to a configuration issue on my own computer, but avoids edits to any code within the plotly package itself. I believe the issue is that running orca -h or orca --version as root will currently result in a core dump unless --no-sandbox is also provided.

I have not committed these changes, but I can do so if it would be helpful.

• Output of visual tests

There were a couple "failures", but they all appear to be related to pandoc. I visually inspected all the errors using the Shiny app (the toggle and slider modes are great), and every single one was the result of a very tiny shift in the plots, some of which were visually undetectable.

All plots and legends which I reviewed rendered correctly.

Visual test summary
R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

if (!identical(Sys.getenv('VMODE'), 'ci')) vdiffr::manage_cases(); res <- devtools::test(reporter='summary'); df <- as.data.frame(res); if (sum(df$failed) > 0 || any(df$error)) q(status=1)
Running testthat to collect visual cases

N = New visual case
X = Failed doppelganger
o = Successful doppelganger

W..................W............W...............................................
..................W...................................WWOGR: Unsupported geometry type
SSSSSSSSSX..WXW.WXW...X.
..X.X.X.WXW.X.WXW.X..X.X....X.X.X.X.X.X.X.X.X...X.X.X.X.X.X.X.X.X.....X....X...X
.XXXXXXXXXXXXX.....X...W...........................X.....X...X.......X.......X..
.X...X........X...X...X........X..X.........X...X...X.X......X......X...X......X
...XX...................................X...X.WWXWWX....X.....X...X..X..X...X...
................W..W..............X....X...X..X...X..X..X..X..X..X..X..X...X.X.X
.X...W.....X......X..X..X.X.X.X....X...X......X...X..X..X..X..X...X..X.X.X.X....
..X......X.X......X...X.X.X.X...X.......X..X.X....X...X.X..X....................
..X.X..X.....X.....X.......X.........X...X..X...X.X..X..............X...........
X.........X...........X.............X............X...X....X.....X.........SSX...
...X......X..........X..........X..........X....X..X.X.X.....................X..
X.....X...WXW.......WX...X....X..X..XX...X...X.X.X.X...X.X.............X..X..X..
X..X...X......X..X....X..X..X......XX.X.X.X.X.X.X.X.WXW..X..X..X..X..X..X...X...
.X..X..X.X.X.X..X.X..XX.X....X...X...X...X......X...X......X........X.......XXXX
XSX..X..X..X..X......X.....X.X.....X..................X..X.....X....X...X.......
...................WW..............................XXXXXXXXX........W....SSSSSSS
X..X....X...X.X.X...X.XX..X..X..X...X..X..WXW.............S.....................
.....W..SSW............SSSSSSS....SWWWWXWWWW.....................X..SX....X.....
.X.....X.....X..X...X.....X........X....WWWWWWWWWWWWWWWWXWWWWWWWWWWWWWWWWWWX....
.WWX.......WWX.......X.....WWX....WWX..X....X..WWX....WWX..X.....X...WWWWWX...XX
..X..WXW...X..X..X..WWXWW..XXX...WW......X........X.....X....X.....X...X..X....W
WXWW....X...X...X.....WX.X.....................................X......SSS.......
....
Loading required package: shiny

Attaching package: ‘shiny’

The following object is masked from ‘package:plotly’:

br

Listening on http://0.0.0.0:3838
Loading plotly
Visual testing is enabled.
Testing plotly
highlighting and animation: ..................W............W.................................................................W...................................WWOGR: Unsupported geometry type

api: SSSSSSSSS
cookbook axes: ...W.W.W.W.............W.W...W.W.......................
cookbook lines: .........................................
cookbook-scatter: ............
Abline: ..........
annotation_: ...........................
Area: ..................
bar: ....................................................................
blank: ....
Boxplot: ......................
geom_col: .
Contour: ....
coord_fixed: ............................
crossbar: ....
date: ......WW.WW
Probability density: .....................
Density2d: ....................
device: .
dynamicTicks: ...W..W..............
geom_errorbarh: .....
Errorbar: .......
Facets: .....................................
ggplotly+plotly: .......
Heatmap: .............
hex: ......
Histogram: .............................................
Hline: .......................
geom_jitter: ....
labels: ..........
legends: ........................
lines: ..........................
maps: ..
path: .................................
geom_point: ................
polygon: .....................................................................................................
quantile: SS
geom_rect: ..................................................
ggplotly-resize: ..
ribbon: .........
rug: ....................
segment: .........
geom_sf: ....W.W.......W................
size: ........
smooth: ..............
spoke: ............
Step: ............
Text: ...........
ggplot themes: ........................
ggplot ticks: ..............W.W...............................................
tooltip: ...................
violin: ...........
Vline: ................
ggplot ylim: ....
group2NA: ....
means and error bars: .....
plotly-color: S....................................................
colorbar: .............................................WW..............................
colorscales: .........
customdata: ....
plotly data: ........
Filename: S
get_figure: SSSSSS
plotly-group: ......................
image-trace: ..
internals: ..
plotly-linetype: ................W.W..
name-mapping: ...........
partial-bundles: 1......
pie: ............
add_sf: ........W..SSW............SSSSSSS
shiny: ....S
size: WWWW.WWWW........................
splom: S
subplot: ...................................................WWWWWWWWWWWWWWWW.WWWWWWWWWWWWWWWWWW......WW........WW..............WW.....WW...........WW.....WW.............WWWWW....
sunburst: .
plotly-symbol: ......W.W............WW.WW..
treemap: ..
waterfall: .
plotly: ...WW............................................WW.WW.................................................................
rotated ticks: SSS
style/restyle functionality: .........
toRGB: ..

══ Skipped ═════════════════════════════════════════════════════════════════════

  1. api() returns endpoints (@test-api.R#5) - Reason: Testing plot.ly API calls requires a plotly account

  2. Can search with white-space (@test-api.R#14) - Reason: Testing plot.ly API calls requires a plotly account

  3. Changing a filename works (@test-api.R#22) - Reason: Testing plot.ly API calls requires a plotly account

  4. Downloading plots works (@test-api.R#32) - Reason: Testing plot.ly API calls requires a plotly account

  5. Downloading grids works (@test-api.R#51) - Reason: Testing plot.ly API calls requires a plotly account

  6. Creating produces a new file by default (@test-api.R#68) - Reason: Testing plot.ly API calls requires a plotly account

  7. Can overwrite a grid (@test-api.R#92) - Reason: Testing plot.ly API calls requires a plotly account

  8. Can overwrite a plot (@test-api.R#103) - Reason: Testing plot.ly API calls requires a plotly account

  9. Can create plots with non-trivial src attributes (@test-api.R#115) - Reason: Testing plot.ly API calls requires a plotly account

  10. Basic geom_quantile() works (@test-ggplot-quantile.R#7) - Reason: quantreg cannot be loaded

  11. Can specify gpar() in geom_quantile() (@test-ggplot-quantile.R#30) - Reason: quantreg cannot be loaded

  12. plot_ly() handles a simple scatterplot (@test-plotly-color.R#10) - Reason: empty test

  13. filename supports names with paths included (@test-plotly-filename.R#5) - Reason: Testing plot.ly API calls requires a plotly account

  14. requests made by a user who doesn't exist error a 404 (@test-plotly-getfigure.R#5) - Reason: Testing plot.ly API calls requires a plotly account

  15. requests made to retrieve a figure that doesn't exist returns a 404 (@test-plotly-getfigure.R#13) - Reason: Testing plot.ly API calls requires a plotly account

  16. requests made to retrieve some elses private file errors (@test-plotly-getfigure.R#21) - Reason: Testing plot.ly API calls requires a plotly account

  17. retrieving a public figure ... works. (@test-plotly-getfigure.R#27) - Reason: Testing plot.ly API calls requires a plotly account

  18. can add traces to a subplot figure (@test-plotly-getfigure.R#36) - Reason: Testing plot.ly API calls requires a plotly account

  19. posting a hidden plot returns a secret key (@test-plotly-getfigure.R#47) - Reason: Testing plot.ly API calls requires a plotly account

  20. plot_mapbox() fitbounds is set (@test-plotly-sf.R#52) - Reason: has_mapbox() is not TRUE

  21. sf defaults can be overriden (@test-plotly-sf.R#66) - Reason: has_mapbox() is not TRUE

  22. discrete color informs fillcolor (@test-plotly-sf.R#128) - Reason: has_mapbox() is not TRUE

  23. discrete color informs fillcolor (@test-plotly-sf.R#150) - Reason: has_mapbox() is not TRUE

  24. numeric color informs fillcolor (@test-plotly-sf.R#186) - Reason: has_mapbox() is not TRUE

  25. sizing constants (@test-plotly-sf.R#230) - Reason: has_mapbox() is not TRUE

  26. size mappings (@test-plotly-sf.R#279) - Reason: has_mapbox() is not TRUE

  27. altogether now (@test-plotly-sf.R#315) - Reason: has_mapbox() is not TRUE

  28. color and stroke scales can be set independently (@test-plotly-sf.R#351) - Reason: has_mapbox() is not TRUE

  29. event_data shiny app works (@test-plotly-shiny.R#29) - Reason: shiny testing not performed during visual testing

  30. No cartesian axes are supplied to a splom chart (@test-plotly-splom.R#4) - Reason: empty test

  31. no axis rotation is fine (@test-rotated-ticks.R#47) - Reason: empty test

  32. axis.text.x=element_text(angle=90)" (@test-rotated-ticks.R#52) - Reason: empty test

  33. axis.text.x=element_text(angle=70) means transform="rotate(-70)" (@test-rotated-ticks.R#58) - Reason: empty test

══ Warnings ════════════════════════════════════════════════════════════════════

  1. When key is equivalent to group, produce simple keys (@test-animate-highlight.R#98) - All elements of ... must be named.
    Did you want key = c(key)?

  2. When key is nested within group, produce simple key (@test-animate-highlight.R#128) - All elements of ... must be named.
    Did you want key = c(key)?

  3. animation frames are boxed up correctly (@test-animate-highlight.R#350) - Ignoring unknown aesthetics: frame

  4. sf works with crosstalk (@test-animate-highlight.R#386) - Ignoring unknown aesthetics: text

  5. sf works with crosstalk (@test-animate-highlight.R#389) - All elements of ... must be named.
    Did you want key = c(key)?

  6. ylim hides points (@test-cookbook-axes.R#36) - Removed 13 rows containing non-finite values (stat_boxplot).

  7. ylim hides points (@test-cookbook-axes.R#36) - Removed 13 rows containing non-finite values (stat_boxplot).

  8. scale_y(limits) hides points (@test-cookbook-axes.R#41) - Removed 13 rows containing non-finite values (stat_boxplot).

  9. scale_y(limits) hides points (@test-cookbook-axes.R#41) - Removed 13 rows containing non-finite values (stat_boxplot).

  10. log2 transform with labels (@test-cookbook-axes.R#86) - is.na() applied to non-(list or vector) of type 'expression'

  11. log2 transform with labels (@test-cookbook-axes.R#86) - is.na() applied to non-(list or vector) of type 'expression'

  12. log10 with exponents on tick labels (@test-cookbook-axes.R#100) - is.na() applied to non-(list or vector) of type 'expression'

  13. log10 with exponents on tick labels (@test-cookbook-axes.R#100) - is.na() applied to non-(list or vector) of type 'expression'

  14. scale_x_date and irregular time series work (@test-ggplot-date.R#36) - Aspect ratios aren't yet implemented, but you can manually set a suitable height/width

  15. scale_x_date and irregular time series work (@test-ggplot-date.R#36) - Aspect ratios aren't yet implemented, but you can manually set a suitable height/width

  16. scale_x_date and irregular time series work (@test-ggplot-date.R#36) - Aspect ratios aren't yet implemented, but you can manually set a suitable height/width

  17. scale_x_date and irregular time series work (@test-ggplot-date.R#36) - Aspect ratios aren't yet implemented, but you can manually set a suitable height/width

  18. Categorical axis reflects custom scale mapping (@test-ggplot-dynamicTicks.R#36) - Removed 167 rows containing non-finite values (stat_count).

  19. Categorical axis reflects custom scale mapping (@test-ggplot-dynamicTicks.R#51) - Removed 167 rows containing non-finite values (stat_count).

  20. geom_sf() geometry collection. (@test-ggplot-sf.R#32) - repeating attributes for all sub-geometries for which they may not be constant

  21. geom_sf() geometry collection. (@test-ggplot-sf.R#32) - repeating attributes for all sub-geometries for which they may not be constant

  22. geom_sf() polygons with fill/text. (@test-ggplot-sf.R#51) - Ignoring unknown aesthetics: text

  23. limits can hide data (@test-ggplot-ticks.R#59) - Removed 10 rows containing missing values (stat_boxplot).

  24. limits can hide data (@test-ggplot-ticks.R#59) - Removed 10 rows containing missing values (stat_boxplot).

  25. positioning with multiple colorbars and legends (@test-plotly-colorbar.R#122) - n too large, allowed maximum for palette Set2 is 8
    Returning the palette you asked for with that many colors

  26. positioning with multiple colorbars and legends (@test-plotly-colorbar.R#122) - n too large, allowed maximum for palette Set2 is 8
    Returning the palette you asked for with that many colors

  27. Trace ordering is alphabetical (@test-plotly-linetype.R#62) - plotly.js only supports 6 different linetypes

  28. Trace ordering is alphabetical (@test-plotly-linetype.R#62) - plotly.js only supports 6 different linetypes

  29. plot_geo() lat/lon range is set (@test-plotly-sf.R#37) - The trace types 'scattermapbox' and 'scattergeo' require a projected coordinate system that is based on the WGS84 datum (EPSG:4326), but the crs provided is: '+proj=longlat +datum=NAD27 +no_defs '. Attempting transformation to the target coordinate system.

  30. Can plot sfc with a missing crs (@test-plotly-sf.R#89) - Missing coordinate reference system (crs). Defaulting to EPSG:4326

  31. sizemode is always respected (@test-plotly-size.R#7) - line.width does not currently support multiple values.

  32. sizemode is always respected (@test-plotly-size.R#7) - line.width does not currently support multiple values.

  33. sizemode is always respected (@test-plotly-size.R#7) - line.width does not currently support multiple values.

  34. sizemode is always respected (@test-plotly-size.R#7) - line.width does not currently support multiple values.

  35. sizemode is always respected (@test-plotly-size.R#7) - line.width does not currently support multiple values.

  36. sizemode is always respected (@test-plotly-size.R#7) - line.width does not currently support multiple values.

  37. sizemode is always respected (@test-plotly-size.R#7) - line.width does not currently support multiple values.

  38. sizemode is always respected (@test-plotly-size.R#7) - line.width does not currently support multiple values.

  39. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  40. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  41. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  42. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  43. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - Can only have one: highlight

  44. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  45. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  46. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - Can only have one: highlight

  47. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  48. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  49. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - Can only have one: highlight

  50. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  51. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  52. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  53. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  54. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  55. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  56. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  57. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  58. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  59. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - Can only have one: highlight

  60. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  61. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  62. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - Can only have one: highlight

  63. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  64. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  65. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - Can only have one: highlight

  66. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  67. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  68. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  69. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  70. ggplotly understands ggmatrix (@test-plotly-subplot.R#139) - All elements of ... must be named.
    Did you want key = c(key)?

  71. annotation paper repositioning (@test-plotly-subplot.R#148) - No trace type specified and no positional attributes specified

  72. annotation paper repositioning (@test-plotly-subplot.R#148) - No trace type specified and no positional attributes specified

  73. shape paper repositioning (@test-plotly-subplot.R#194) - No trace type specified and no positional attributes specified

  74. shape paper repositioning (@test-plotly-subplot.R#194) - No trace type specified and no positional attributes specified

  75. shape paper repositioning (@test-plotly-subplot.R#244) - No trace type specified and no positional attributes specified

  76. shape paper repositioning (@test-plotly-subplot.R#244) - No trace type specified and no positional attributes specified

  77. annotation xref/yref bumping (@test-plotly-subplot.R#308) - No trace type specified and no positional attributes specified

  78. annotation xref/yref bumping (@test-plotly-subplot.R#308) - No trace type specified and no positional attributes specified

  79. annotation xref/yref bumping (@test-plotly-subplot.R#320) - No trace type specified and no positional attributes specified

  80. annotation xref/yref bumping (@test-plotly-subplot.R#320) - No trace type specified and no positional attributes specified

  81. shape xref/yref bumping (@test-plotly-subplot.R#384) - No trace type specified and no positional attributes specified

  82. shape xref/yref bumping (@test-plotly-subplot.R#384) - No trace type specified and no positional attributes specified

  83. shape xref/yref bumping (@test-plotly-subplot.R#396) - No trace type specified and no positional attributes specified

  84. shape xref/yref bumping (@test-plotly-subplot.R#396) - No trace type specified and no positional attributes specified

  85. May specify legendgroup with through a vector of values (@test-plotly-subplot.R#481) - Unequal factor levels: coercing to character

  86. May specify legendgroup with through a vector of values (@test-plotly-subplot.R#481) - binding character and factor vector, coercing into character vector

  87. May specify legendgroup with through a vector of values (@test-plotly-subplot.R#481) - binding character and factor vector, coercing into character vector

  88. May specify legendgroup with through a vector of values (@test-plotly-subplot.R#481) - binding character and factor vector, coercing into character vector

  89. May specify legendgroup with through a vector of values (@subplots.R#84) - No trace type specified and no positional attributes specified

  90. Setting a constant symbol works (@test-plotly-symbol.R#30) - The shape palette can deal with a maximum of 6 discrete values because
    more than 6 becomes difficult to discriminate; you have 25. Consider
    specifying shapes manually if you must have them.

  91. Setting a constant symbol works (@test-plotly-symbol.R#30) - The shape palette can deal with a maximum of 6 discrete values because
    more than 6 becomes difficult to discriminate; you have 25. Consider
    specifying shapes manually if you must have them.

  92. Trace ordering is alphabetical (@test-plotly-symbol.R#68) - The shape palette can deal with a maximum of 6 discrete values because
    more than 6 becomes difficult to discriminate; you have 7. Consider
    specifying shapes manually if you must have them.

  93. Trace ordering is alphabetical (@test-plotly-symbol.R#68) - The following are not valid symbol codes:
    'NA'
    Valid symbols include:
    '0', 'circle', '100', 'circle-open', '200', 'circle-dot', '300', 'circle-open-dot', '1', 'square', '101', 'square-open', '201', 'square-dot', '301', 'square-open-dot', '2', 'diamond', '102', 'diamond-open', '202', 'diamond-dot', '302', 'diamond-open-dot', '3', 'cross', '103', 'cross-open', '203', 'cross-dot', '303', 'cross-open-dot', '4', 'x', '104', 'x-open', '204', 'x-dot', '304', 'x-open-dot', '5', 'triangle-up', '105', 'triangle-up-open', '205', 'triangle-up-dot', '305', 'triangle-up-open-dot', '6', 'triangle-down', '106', 'triangle-down-open', '206', 'triangle-down-dot', '306', 'triangle-down-open-dot', '7', 'triangle-left', '107', 'triangle-left-open', '207', 'triangle-left-dot', '307', 'triangle-left-open-dot', '8', 'triangle-right', '108', 'triangle-right-open', '208', 'triangle-right-dot', '308', 'triangle-right-open-dot', '9', 'triangle-ne', '109', 'triangle-ne-open', '209', 'triangle-ne-dot', '309', 'triangle-ne-open-dot', '10', 'triangle-se', '110', 'triangle-se-open', '210', 'triangle-se-dot', '310', 'triangle-se-open-dot', '11', 'triangle-sw', '111', 'triangle-sw-open', '211', 'triangle-sw-dot', '311', 'triangle-sw-open-dot', '12', 'triangle-nw', '112', 'triangle-nw-open', '212', 'triangle-nw-dot', '312', 'triangle-nw-open-dot', '13', 'pentagon', '113', 'pentagon-open', '213', 'pentagon-dot', '313', 'pentagon-open-dot', '14', 'hexagon', '114', 'hexagon-open', '214', 'hexagon-dot', '314', 'hexagon-open-dot', '15', 'hexagon2', '115', 'hexagon2-open', '215', 'hexagon2-dot', '315', 'hexagon2-open-dot', '16', 'octagon', '116', 'octagon-open', '216', 'octagon-dot', '316', 'octagon-open-dot', '17', 'star', '117', 'star-open', '217', 'star-dot', '317', 'star-open-dot', '18', 'hexagram', '118', 'hexagram-open', '218', 'hexagram-dot', '318', 'hexagram-open-dot', '19', 'star-triangle-up', '119', 'star-triangle-up-open', '219', 'star-triangle-up-dot', '319', 'star-triangle-up-open-dot', '20', 'star-triangle-down', '120', 'star-triangle-down-open', '220', 'star-triangle-down-dot', '320', 'star-triangle-down-open-dot', '21', 'star-square', '121', 'star-square-open', '221', 'star-square-dot', '321', 'star-square-open-dot', '22', 'star-diamond', '122', 'star-diamond-open', '222', 'star-diamond-dot', '322', 'star-diamond-open-dot', '23', 'diamond-tall', '123', 'diamond-tall-open', '223', 'diamond-tall-dot', '323', 'diamond-tall-open-dot', '24', 'diamond-wide', '124', 'diamond-wide-open', '224', 'diamond-wide-dot', '324', 'diamond-wide-open-dot', '25', 'hourglass', '125', 'hourglass-open', '26', 'bowtie', '126', 'bowtie-open', '27', 'circle-cross', '127', 'circle-cross-open', '28', 'circle-x', '128', 'circle-x-open', '29', 'square-cross', '129', 'square-cross-open', '30', 'square-x', '130', 'square-x-open', '31', 'diamond-cross', '131', 'diamond-cross-open', '32', 'diamond-x', '132', 'diamond-x-open', '33', 'cross-thin', '133', 'cross-thin-open', '34', 'x-thin', '134', 'x-thin-open', '35', 'asterisk', '135', 'asterisk-open', '36', 'hash', '136', 'hash-open', '236', 'hash-dot', '336', 'hash-open-dot', '37', 'y-up', '137', 'y-up-open', '38', 'y-down', '138', 'y-down-open', '39', 'y-left', '139', 'y-left-open', '40', 'y-right', '140', 'y-right-open', '41', 'line-ew', '141', 'line-ew-open', '42', 'line-ns', '142', 'line-ns-open', '43', 'line-ne', '143', 'line-ne-open', '44', 'line-nw', '144', 'line-nw-open

  94. Trace ordering is alphabetical (@test-plotly-symbol.R#68) - The shape palette can deal with a maximum of 6 discrete values because
    more than 6 becomes difficult to discriminate; you have 7. Consider
    specifying shapes manually if you must have them.

  95. Trace ordering is alphabetical (@test-plotly-symbol.R#68) - The following are not valid symbol codes:
    'NA'
    Valid symbols include:
    '0', 'circle', '100', 'circle-open', '200', 'circle-dot', '300', 'circle-open-dot', '1', 'square', '101', 'square-open', '201', 'square-dot', '301', 'square-open-dot', '2', 'diamond', '102', 'diamond-open', '202', 'diamond-dot', '302', 'diamond-open-dot', '3', 'cross', '103', 'cross-open', '203', 'cross-dot', '303', 'cross-open-dot', '4', 'x', '104', 'x-open', '204', 'x-dot', '304', 'x-open-dot', '5', 'triangle-up', '105', 'triangle-up-open', '205', 'triangle-up-dot', '305', 'triangle-up-open-dot', '6', 'triangle-down', '106', 'triangle-down-open', '206', 'triangle-down-dot', '306', 'triangle-down-open-dot', '7', 'triangle-left', '107', 'triangle-left-open', '207', 'triangle-left-dot', '307', 'triangle-left-open-dot', '8', 'triangle-right', '108', 'triangle-right-open', '208', 'triangle-right-dot', '308', 'triangle-right-open-dot', '9', 'triangle-ne', '109', 'triangle-ne-open', '209', 'triangle-ne-dot', '309', 'triangle-ne-open-dot', '10', 'triangle-se', '110', 'triangle-se-open', '210', 'triangle-se-dot', '310', 'triangle-se-open-dot', '11', 'triangle-sw', '111', 'triangle-sw-open', '211', 'triangle-sw-dot', '311', 'triangle-sw-open-dot', '12', 'triangle-nw', '112', 'triangle-nw-open', '212', 'triangle-nw-dot', '312', 'triangle-nw-open-dot', '13', 'pentagon', '113', 'pentagon-open', '213', 'pentagon-dot', '313', 'pentagon-open-dot', '14', 'hexagon', '114', 'hexagon-open', '214', 'hexagon-dot', '314', 'hexagon-open-dot', '15', 'hexagon2', '115', 'hexagon2-open', '215', 'hexagon2-dot', '315', 'hexagon2-open-dot', '16', 'octagon', '116', 'octagon-open', '216', 'octagon-dot', '316', 'octagon-open-dot', '17', 'star', '117', 'star-open', '217', 'star-dot', '317', 'star-open-dot', '18', 'hexagram', '118', 'hexagram-open', '218', 'hexagram-dot', '318', 'hexagram-open-dot', '19', 'star-triangle-up', '119', 'star-triangle-up-open', '219', 'star-triangle-up-dot', '319', 'star-triangle-up-open-dot', '20', 'star-triangle-down', '120', 'star-triangle-down-open', '220', 'star-triangle-down-dot', '320', 'star-triangle-down-open-dot', '21', 'star-square', '121', 'star-square-open', '221', 'star-square-dot', '321', 'star-square-open-dot', '22', 'star-diamond', '122', 'star-diamond-open', '222', 'star-diamond-dot', '322', 'star-diamond-open-dot', '23', 'diamond-tall', '123', 'diamond-tall-open', '223', 'diamond-tall-dot', '323', 'diamond-tall-open-dot', '24', 'diamond-wide', '124', 'diamond-wide-open', '224', 'diamond-wide-dot', '324', 'diamond-wide-open-dot', '25', 'hourglass', '125', 'hourglass-open', '26', 'bowtie', '126', 'bowtie-open', '27', 'circle-cross', '127', 'circle-cross-open', '28', 'circle-x', '128', 'circle-x-open', '29', 'square-cross', '129', 'square-cross-open', '30', 'square-x', '130', 'square-x-open', '31', 'diamond-cross', '131', 'diamond-cross-open', '32', 'diamond-x', '132', 'diamond-x-open', '33', 'cross-thin', '133', 'cross-thin-open', '34', 'x-thin', '134', 'x-thin-open', '35', 'asterisk', '135', 'asterisk-open', '36', 'hash', '136', 'hash-open', '236', 'hash-dot', '336', 'hash-open-dot', '37', 'y-up', '137', 'y-up-open', '38', 'y-down', '138', 'y-down-open', '39', 'y-left', '139', 'y-left-open', '40', 'y-right', '140', 'y-right-open', '41', 'line-ew', '141', 'line-ew-open', '42', 'line-ns', '142', 'line-ns-open', '43', 'line-ne', '143', 'line-ne-open', '44', 'line-nw', '144', 'line-nw-open

  96. Variable mappings return same result regardless of where they appear (@test-plotly.R#41) - line.width does not currently support multiple values.

  97. Variable mappings return same result regardless of where they appear (@test-plotly.R#41) - line.width does not currently support multiple values.

  98. Character strings correctly mapped to a positional axis (@test-plotly.R#143) - minimal value for n is 3, returning requested palette with 3 different levels

  99. Character strings correctly mapped to a positional axis (@test-plotly.R#143) - minimal value for n is 3, returning requested palette with 3 different levels

  100. Character strings correctly mapped to a positional axis (@test-plotly.R#143) - minimal value for n is 3, returning requested palette with 3 different levels

  101. Character strings correctly mapped to a positional axis (@test-plotly.R#143) - minimal value for n is 3, returning requested palette with 3 different levels

══ Failed ══════════════════════════════════════════════════════════════════════
── 1. Error: Can reduce saved file size with an basic (auto) partial bundle by h
cannot popen '/usr/bin/which 'pandoc' 2>/dev/null', probable reason 'Cannot allocate memory'
Backtrace:

  1. testthat::skip_if_not(Sys.which("pandoc") != "", "pandoc needed for this test") tests/testthat/test-plotly-partial-bundles.R:5:2
  2. base::Sys.which("pandoc")
  3. base::system(...)

══ DONE ════════════════════════════════════════════════════════════════════════

@cpsievert @nicolaskruchten

@cpsievert
Copy link
Collaborator

cpsievert commented May 18, 2020

Awesome, thanks for this!!

I don't see the changes to the Dockerfile, would you like to check those in?

I also see a new, seemingly empty, file at tests/testthat/core. I think it could be removed?

It'd also be great if this was rebased off master (i.e., a6af69e and 0c5fcef could be removed for a cleaner git history)

@nicolaskruchten
Copy link

The dockerfile is behind a little triangle icon in the PR description believe :)

@cpsievert
Copy link
Collaborator

Thanks again for this @rpkyle! I'll take things over in #1771

@cpsievert cpsievert closed this May 18, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants