diff --git a/cmd/bbolt/main.go b/cmd/bbolt/main.go index 7115471c0..8d6870d24 100644 --- a/cmd/bbolt/main.go +++ b/cmd/bbolt/main.go @@ -994,7 +994,7 @@ func (cmd *getCommand) Run(args ...string) error { var parseFormat string var format string fs.StringVar(&parseFormat, "parse-format", "ascii-encoded", "Input format. One of: ascii-encoded|hex (default: ascii-encoded)") - fs.StringVar(&format, "format", "bytes", "Output format. One of: "+FORMAT_MODES+" (default: bytes)") + fs.StringVar(&format, "format", "auto", "Output format. One of: "+FORMAT_MODES+" (default: auto)") help := fs.Bool("h", false, "") if err := fs.Parse(args); err != nil { return err @@ -1064,7 +1064,7 @@ Additional options include: --format Output format. One of: `+FORMAT_MODES+` (default=bytes) --parse-format - Input format (of key). One of: ascii-encoded|hex (default=ascii-encoded)" + Input format (of key). One of: ascii-encoded|hex (default=auto)" `, "\n") } diff --git a/cmd/bbolt/main_test.go b/cmd/bbolt/main_test.go index dbc7de762..9fca38bbc 100644 --- a/cmd/bbolt/main_test.go +++ b/cmd/bbolt/main_test.go @@ -313,39 +313,75 @@ func TestKeysCommand_Run(t *testing.T) { // Ensure the "get" command can print the value of a key in a bucket. func TestGetCommand_Run(t *testing.T) { - db := btesting.MustCreateDB(t) + t.Run("test values in string format", func(t *testing.T) { + db := btesting.MustCreateDB(t) - if err := db.Update(func(tx *bolt.Tx) error { - for _, name := range []string{"foo", "bar"} { - b, err := tx.CreateBucket([]byte(name)) + if err := db.Update(func(tx *bolt.Tx) error { + for _, name := range []string{"foo", "bar"} { + b, err := tx.CreateBucket([]byte(name)) + if err != nil { + return err + } + for i := 0; i < 3; i++ { + key := fmt.Sprintf("%s-%d", name, i) + val := fmt.Sprintf("val-%s-%d", name, i) + if err := b.Put([]byte(key), []byte(val)); err != nil { + return err + } + } + } + return nil + }); err != nil { + t.Fatal(err) + } + db.Close() + + defer requireDBNoChange(t, dbData(t, db.Path()), db.Path()) + + expected := "val-foo-1\n" + + // Run the command. + m := NewMain() + if err := m.Run("get", db.Path(), "foo", "foo-1"); err != nil { + t.Fatal(err) + } else if actual := m.Stdout.String(); actual != expected { + t.Fatalf("unexpected stdout:\n\n%s", actual) + } + }) + + t.Run("test values in int64 format", func(t *testing.T) { + db := btesting.MustCreateDB(t) + + if err := db.Update(func(tx *bolt.Tx) error { + b, err := tx.CreateBucket([]byte("test-bucket")) if err != nil { return err } - for i := 0; i < 3; i++ { - key := fmt.Sprintf("%s-%d", name, i) - val := fmt.Sprintf("val-%s-%d", name, i) - if err := b.Put([]byte(key), []byte(val)); err != nil { + for k, v := range map[string]int64{"10001": 10001, + "10002": 10002, + } { + if err := b.Put([]byte(k), convertInt64IntoBytes(t, v)); err != nil { return err } } + return nil + }); err != nil { + t.Fatal(err) } - return nil - }); err != nil { - t.Fatal(err) - } - db.Close() + db.Close() - defer requireDBNoChange(t, dbData(t, db.Path()), db.Path()) + defer requireDBNoChange(t, dbData(t, db.Path()), db.Path()) - expected := "val-foo-1\n" + expected := "10001\n" - // Run the command. - m := NewMain() - if err := m.Run("get", db.Path(), "foo", "foo-1"); err != nil { - t.Fatal(err) - } else if actual := m.Stdout.String(); actual != expected { - t.Fatalf("unexpected stdout:\n\n%s", actual) - } + // Run the command. + m := NewMain() + if err := m.Run("get", db.Path(), "test-bucket", "10001"); err != nil { + t.Fatal(err) + } else if actual := m.Stdout.String(); actual != expected { + t.Fatalf("unexpected stdout:\n\n%s", actual) + } + }) } // Ensure the "pages" command neither panic, nor change the db file.