Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
8acf06c
Adding examples
elena-kolevska Apr 3, 2023
66667ea
Update readme
elena-kolevska Apr 3, 2023
73513c8
Update Readme
elena-kolevska Apr 3, 2023
d9d0694
Remove unneeded lines. Added an examples.json file
elena-kolevska Apr 4, 2023
fe568e9
Update readme for examples
elena-kolevska Apr 4, 2023
4cdcb77
More fixes
elena-kolevska Apr 5, 2023
a51b785
Add example tags
elena-kolevska Apr 5, 2023
1f1ac7e
Update examples.json
elena-kolevska Apr 5, 2023
5b4aa9d
Rename
elena-kolevska Apr 5, 2023
96884a4
Add another hide block
elena-kolevska Apr 5, 2023
51fb633
Temporary test
elena-kolevska Apr 5, 2023
8b0d7e5
Add example id for lpush and lrange
elena-kolevska Apr 5, 2023
3aca299
Update readme
elena-kolevska Apr 5, 2023
0b042c1
Update output text
elena-kolevska Apr 6, 2023
0ea1be9
Merge branch 'redis:master' into examples
elena-kolevska Apr 17, 2023
3c23b02
Improve examples
elena-kolevska Apr 19, 2023
e78ebdb
Merge branch 'examples' of github.com:elena-kolevska/go-redis into ex…
elena-kolevska Apr 19, 2023
b40181f
Merge branch 'master' into examples
elena-kolevska Apr 19, 2023
6450c2f
Move examples test dir to doctests
elena-kolevska Apr 20, 2023
7bd87c3
Add redis v7's ExpireAtNX, ExpireAtXX, ExpireAtGT, ExpireAtLT, PExpir…
carner May 11, 2023
af12cb6
add tests for new commands
carner May 15, 2023
90420e8
Adds github workflow to add docexamples tests. Flushes db before ever…
elena-kolevska May 19, 2023
69480ed
Merge branch 'master' into examples
elena-kolevska May 19, 2023
c503772
Fixes broken workflow file
elena-kolevska May 19, 2023
22ff268
Adds Igor’s suggestion of keeping the instructions for docexamples in…
elena-kolevska May 19, 2023
261a30e
Removes unneeded “Missing” section, because it was solved as a workflow
elena-kolevska May 19, 2023
84f7f0f
Revert "add tests for new commands"
elena-kolevska May 19, 2023
e08ae3c
Fixes review comments
elena-kolevska May 21, 2023
5fc0663
Specifies versions as strings instead of floats
elena-kolevska May 21, 2023
f34e395
Merge branch 'master' into examples
elena-kolevska May 21, 2023
d387bb1
Merge branch 'master' into examples
elena-kolevska May 24, 2023
2bbd541
Merge branch 'master' into examples
elena-kolevska May 31, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions .github/workflows/doctests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Documentation Tests

on:
push:
branches: [master, examples]
pull_request:
branches: [master, examples]

permissions:
contents: read

jobs:
doctests:
name: doctests
runs-on: ubuntu-latest

services:
redis-stack:
image: redis/redis-stack-server:latest
options: >-
--health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
ports:
- 6379:6379

strategy:
fail-fast: false
matrix:
go-version: [ "1.18", "1.19", "1.20" ]

steps:
- name: Set up ${{ matrix.go-version }}
uses: actions/setup-go@v4
with:
go-version: ${{ matrix.go-version }}

- name: Checkout code
uses: actions/checkout@v3

- name: Test doc examples
working-directory: ./doctests
run: go test
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
*.rdb
testdata/*
.idea/
.DS_Store
22 changes: 22 additions & 0 deletions doctests/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Command examples for redis.io

These examples appear on the [Redis documentation](https://redis.io) site as part of the tabbed examples interface.

## How to add examples

- Create a Go test file with a meaningful name in the current folder.
- Create a single method prefixed with `Example` and write your test in it.
- Determine the id for the example you're creating and add it as the first line of the file: `// EXAMPLE: set_and_get`.
- We're using the [Testable Examples](https://go.dev/blog/examples) feature of Go to test the desired output has been written to stdout.

### Special markup

See https://github.com/redis-stack/redis-stack-website#readme for more details.

## How to test the examples

- Start a Redis server locally on port 6379
- CD into the `doctests` directory
- Run `go test` to test all examples in the directory.
- Run `go test filename.go` to test a single file

47 changes: 47 additions & 0 deletions doctests/lpush_lrange_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// EXAMPLE: lpush_and_lrange
// HIDE_START
package example_commands_test

import (
"context"
"fmt"
"github.com/redis/go-redis/v9"
)

func ExampleLPushLRange() {
ctx := context.Background()

rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password docs
DB: 0, // use default DB
})

// HIDE_END

// REMOVE_START
errFlush := rdb.FlushDB(ctx).Err() // Clear the database before each test
if errFlush != nil {
panic(errFlush)
}
// REMOVE_END

listSize, err := rdb.LPush(ctx, "my_bikes", "bike:1", "bike:2").Result()
if err != nil {
panic(err)
}

fmt.Println(listSize)

value, err := rdb.LRange(ctx, "my_bikes", 0, -1).Result()
if err != nil {
panic(err)
}
fmt.Println(value)
// HIDE_START

// Output: 2
// [bike:2 bike:1]
}

// HIDE_END
47 changes: 47 additions & 0 deletions doctests/set_get_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// EXAMPLE: set_and_get
// HIDE_START
package example_commands_test

import (
"context"
"fmt"
"github.com/redis/go-redis/v9"
)

func ExampleSetGet() {
ctx := context.Background()

rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password docs
DB: 0, // use default DB
})

// HIDE_END

// REMOVE_START
errFlush := rdb.FlushDB(ctx).Err() // Clear the database before each test
if errFlush != nil {
panic(errFlush)
}
// REMOVE_END

err := rdb.Set(ctx, "bike:1", "Process 134", 0).Err()
if err != nil {
panic(err)
}

fmt.Println("OK")

value, err := rdb.Get(ctx, "bike:1").Result()
if err != nil {
panic(err)
}
fmt.Printf("The name of the bike is %s", value)
// HIDE_START

// Output: OK
// The name of the bike is Process 134
}

// HIDE_END