aboutsummaryrefslogtreecommitdiffhomepage
path: root/reader/feed
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <fred@miniflux.net>2017-11-20 16:11:55 -0800
committerGravatar Frédéric Guillot <fred@miniflux.net>2017-11-20 16:11:55 -0800
commit0e6717b7c86a1761b1ae515dd212a78f1d1e7c8b (patch)
tree5c63d30bb47038889c78af99afc20ea5c2158b4a /reader/feed
parent557cf9c21d08d93a8f71e12957f5c270f7c050b1 (diff)
Ensure that LocalizedError are returned by parsers
Diffstat (limited to 'reader/feed')
-rw-r--r--reader/feed/atom/parser.go7
-rw-r--r--reader/feed/atom/parser_test.go14
-rw-r--r--reader/feed/json/parser.go7
-rw-r--r--reader/feed/json/parser_test.go14
-rw-r--r--reader/feed/rss/parser.go4
-rw-r--r--reader/feed/rss/parser_test.go6
6 files changed, 44 insertions, 8 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")
+ }
+}
diff --git a/reader/feed/json/parser.go b/reader/feed/json/parser.go
index 816d28e..6dbc91b 100644
--- a/reader/feed/json/parser.go
+++ b/reader/feed/json/parser.go
@@ -6,9 +6,10 @@ package json
import (
"encoding/json"
- "fmt"
- "github.com/miniflux/miniflux2/model"
"io"
+
+ "github.com/miniflux/miniflux2/errors"
+ "github.com/miniflux/miniflux2/model"
)
// Parse returns a normalized feed struct.
@@ -16,7 +17,7 @@ func Parse(data io.Reader) (*model.Feed, error) {
jsonFeed := new(JsonFeed)
decoder := json.NewDecoder(data)
if err := decoder.Decode(&jsonFeed); err != nil {
- return nil, fmt.Errorf("Unable to parse JSON Feed: %v", err)
+ return nil, errors.NewLocalizedError("Unable to parse JSON Feed: %v", err)
}
return jsonFeed.Transform(), nil
diff --git a/reader/feed/json/parser_test.go b/reader/feed/json/parser_test.go
index f2c97fc..ecb11a1 100644
--- a/reader/feed/json/parser_test.go
+++ b/reader/feed/json/parser_test.go
@@ -9,6 +9,8 @@ import (
"strings"
"testing"
"time"
+
+ "github.com/miniflux/miniflux2/errors"
)
func TestParseJsonFeed(t *testing.T) {
@@ -343,3 +345,15 @@ func TestParseTruncateItemTitle(t *testing.T) {
t.Errorf("Incorrect entry title, got: %s", feed.Entries[0].Title)
}
}
+
+func TestParseInvalidJSON(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")
+ }
+}
diff --git a/reader/feed/rss/parser.go b/reader/feed/rss/parser.go
index 4718dc0..4eceb45 100644
--- a/reader/feed/rss/parser.go
+++ b/reader/feed/rss/parser.go
@@ -6,9 +6,9 @@ package rss
import (
"encoding/xml"
- "fmt"
"io"
+ "github.com/miniflux/miniflux2/errors"
"github.com/miniflux/miniflux2/model"
"golang.org/x/net/html/charset"
@@ -22,7 +22,7 @@ func Parse(data io.Reader) (*model.Feed, error) {
err := decoder.Decode(feed)
if err != nil {
- return nil, fmt.Errorf("unable to parse RSS feed: %v", err)
+ return nil, errors.NewLocalizedError("Unable to parse RSS feed: %v", err)
}
return feed.Transform(), nil
diff --git a/reader/feed/rss/parser_test.go b/reader/feed/rss/parser_test.go
index a0a8c93..9f1a557 100644
--- a/reader/feed/rss/parser_test.go
+++ b/reader/feed/rss/parser_test.go
@@ -8,6 +8,8 @@ import (
"bytes"
"testing"
"time"
+
+ "github.com/miniflux/miniflux2/errors"
)
func TestParseRss2Sample(t *testing.T) {
@@ -541,4 +543,8 @@ func TestParseInvalidXml(t *testing.T) {
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")
+ }
}