diff options
Diffstat (limited to 'reader/feed/atom')
-rw-r--r-- | reader/feed/atom/parser.go | 7 | ||||
-rw-r--r-- | reader/feed/atom/parser_test.go | 14 |
2 files changed, 18 insertions, 3 deletions
diff --git a/reader/feed/atom/parser.go b/reader/feed/atom/parser.go index 0b8f0d7..cb21c04 100644 --- a/reader/feed/atom/parser.go +++ b/reader/feed/atom/parser.go @@ -6,10 +6,11 @@ package atom import ( "encoding/xml" - "fmt" - "github.com/miniflux/miniflux2/model" "io" + "github.com/miniflux/miniflux2/errors" + "github.com/miniflux/miniflux2/model" + "golang.org/x/net/html/charset" ) @@ -21,7 +22,7 @@ func Parse(data io.Reader) (*model.Feed, error) { err := decoder.Decode(atomFeed) if err != nil { - return nil, fmt.Errorf("Unable to parse Atom feed: %v\n", err) + return nil, errors.NewLocalizedError("Unable to parse Atom feed: %v", err) } return atomFeed.Transform(), nil diff --git a/reader/feed/atom/parser_test.go b/reader/feed/atom/parser_test.go index 39d9420..d5eea23 100644 --- a/reader/feed/atom/parser_test.go +++ b/reader/feed/atom/parser_test.go @@ -8,6 +8,8 @@ import ( "bytes" "testing" "time" + + "github.com/miniflux/miniflux2/errors" ) func TestParseAtomSample(t *testing.T) { @@ -317,3 +319,15 @@ func TestParseEntryWithEnclosures(t *testing.T) { t.Errorf("Incorrect enclosure length, got: %d", feed.Entries[0].Enclosures[1].Size) } } + +func TestParseInvalidXml(t *testing.T) { + data := `garbage` + _, err := Parse(bytes.NewBufferString(data)) + if err == nil { + t.Error("Parse should returns an error") + } + + if _, ok := err.(errors.LocalizedError); !ok { + t.Error("The error returned must be a LocalizedError") + } +} |