defer pagination error to EachPage callback
diff --git a/acceptance/openstack/objectstorage/v1/containers_test.go b/acceptance/openstack/objectstorage/v1/containers_test.go
index 8f80522..4e361aa 100644
--- a/acceptance/openstack/objectstorage/v1/containers_test.go
+++ b/acceptance/openstack/objectstorage/v1/containers_test.go
@@ -46,12 +46,7 @@
// List the numContainer names that were just created. To just list those,
// the 'prefix' parameter is used.
- pager := containers.List(client, containers.ListOpts{Full: true, Prefix: "gophercloud-test-container-"})
- if pager.Err != nil {
- t.Error(err)
- return
- }
- err = pager.EachPage(func(page pagination.Page) (bool, error) {
+ err = containers.List(client, containers.ListOpts{Full: true, Prefix: "gophercloud-test-container-"}).EachPage(func(page pagination.Page) (bool, error) {
containerList, err := containers.ExtractInfo(page)
if err != nil {
t.Error(err)
@@ -68,8 +63,7 @@
}
// List the info for the numContainer containers that were created.
- pager = containers.List(client, containers.ListOpts{Full: false, Prefix: "gophercloud-test-container-"})
- err = pager.EachPage(func(page pagination.Page) (bool, error) {
+ err = containers.List(client, containers.ListOpts{Full: false, Prefix: "gophercloud-test-container-"}).EachPage(func(page pagination.Page) (bool, error) {
containerList, err := containers.ExtractNames(page)
if err != nil {
return false, err
diff --git a/acceptance/openstack/objectstorage/v1/objects_test.go b/acceptance/openstack/objectstorage/v1/objects_test.go
index 66cb8e7..b8dfa40 100644
--- a/acceptance/openstack/objectstorage/v1/objects_test.go
+++ b/acceptance/openstack/objectstorage/v1/objects_test.go
@@ -64,12 +64,8 @@
}
}()
- pager := objects.List(client, cName, objects.ListOpts{Full: false, Prefix: "test-object-"})
- if pager.Err != nil {
- t.Fatalf("Pager error: %v", pager.Err)
- }
ons := make([]string, 0, len(oNames))
- err = pager.EachPage(func(page pagination.Page) (bool, error) {
+ err = objects.List(client, cName, objects.ListOpts{Full: false, Prefix: "test-object-"}).EachPage(func(page pagination.Page) (bool, error) {
names, err := objects.ExtractNames(page)
if err != nil {
return false, err
@@ -87,12 +83,8 @@
return
}
- pager = objects.List(client, cName, objects.ListOpts{Full: true, Prefix: "test-object-"})
- if pager.Err != nil {
- t.Fatalf("Pager error: %v", pager.Err)
- }
ois := make([]objects.Object, 0, len(oNames))
- err = pager.EachPage(func(page pagination.Page) (bool, error) {
+ err = objects.List(client, cName, objects.ListOpts{Full: true, Prefix: "test-object-"}).EachPage(func(page pagination.Page) (bool, error) {
info, err := objects.ExtractInfo(page)
if err != nil {
return false, nil
diff --git a/pagination/pager.go b/pagination/pager.go
index cc1c048..22d6d84 100644
--- a/pagination/pager.go
+++ b/pagination/pager.go
@@ -68,6 +68,9 @@
// EachPage iterates over each page returned by a Pager, yielding one at a time to a handler function.
// Return "false" from the handler to prematurely stop iterating.
func (p Pager) EachPage(handler func(Page) (bool, error)) error {
+ if p.Err != nil {
+ return p.Err
+ }
currentURL := p.initialURL
for {
currentPage, err := p.fetchNextPage(currentURL)