firebase-tools
firebase-tools copied to clipboard
Storage List behaviour does not match real GS bucket.
[REQUIRED] Environment info
11.14.4
macOS
cloud.google.com/go/firestore v1.7.0 cloud.google.com/go/storage v1.27.0
[REQUIRED] Test case
package main
import (
"context"
"fmt"
"os"
"cloud.google.com/go/storage"
firebase "firebase.google.com/go"
"google.golang.org/api/iterator"
)
func init() {
os.Setenv("FIRESTORE_EMULATOR_HOST", "localhost:8080")
os.Setenv("FIREBASE_STORAGE_EMULATOR_HOST", "localhost:9199")
os.Setenv("STORAGE_EMULATOR_HOST", "localhost:9199")
}
func check(err error) {
if err != nil {
panic(err)
}
}
func main() {
ctx := context.Background()
app, err := firebase.NewApp(ctx, nil)
check(err)
st, err := app.Storage(ctx)
check(err)
bkt, err := st.DefaultBucket()
check(err)
w := bkt.Object("some/object.txt").NewWriter(ctx)
check(err)
_, err = fmt.Fprintf(w, "This object contains text.\n")
check(err)
check(w.Close())
it := bkt.Objects(ctx, &storage.Query{
Delimiter: "/",
Prefix: "some/",
})
for {
attrs, err := it.Next()
if err != nil {
if err == iterator.Done {
break
}
check(err)
}
fmt.Println(attrs.Name)
}
}
[REQUIRED] Steps to reproduce
Run the code above with accesse to a real cloud storage bucket, and then the storage emulator.
[REQUIRED] Expected behavior
Expect output to be:
some/object.txt
[REQUIRED] Actual behavior
panic: bucket name not specified
goroutine 1 [running]:
main.check(...)
/Users/edward/src/github.com/emcfarlane/mems/main.go:21
main.main()
/Users/edward/src/github.com/emcfarlane/mems/main.go:33 +0x31b
exit status 2
Also "FIREBASE_STORAGE_EMULATOR_HOST" should control the firebase bucket. But it looks like it is ignored.