from __future__ import print_function
import matplotlib.pyplot as plt
import numpy as np
import sys
from io import BytesIO
import xml.parsers.expat
from matplotlib.testing.decorators import knownfailureif, cleanup

@cleanup
def test_visibility():
    # This is SF 2856495. See
    # https://sourceforge.net/tracker/?func=detail&aid=2856495&group_id=80706&atid=560720
    fig=plt.figure()
    ax=fig.add_subplot(1,1,1)

    x = np.linspace(0,4*np.pi,50)
    y = np.sin(x)
    yerr = np.ones_like(y)

    a,b,c=ax.errorbar(x,y,yerr=yerr,fmt='ko')
    for artist in b:
        artist.set_visible(False)

    fd = BytesIO()
    fig.savefig(fd,format='svg')

    fd.seek(0)
    buf = fd.read()
    fd.close()

    parser = xml.parsers.expat.ParserCreate()
    parser.Parse(buf) # this will raise ExpatError if the svg is invalid
