• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mendersoftware / go-lib-micro / 911569613

pending completion
911569613

Pull #201

gitlab-ci

alfrunes
ci: Add TEST_MONGO_URL to unit test job

Signed-off-by: Alf-Rune Siqveland <alf.rune@northern.tech>
Pull Request #201: Use existing mongo server for unit tests

11 of 41 new or added lines in 2 files covered. (26.83%)

1375 of 1729 relevant lines covered (79.53%)

4.26 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

42.86
/mongo/testing/db.go
1
// Copyright 2023 Northern.tech AS
2
//
3
//        Licensed under the Apache License, Version 2.0 (the "License");
4
//        you may not use this file except in compliance with the License.
5
//        You may obtain a copy of the License at
6
//
7
//            http://www.apache.org/licenses/LICENSE-2.0
8
//
9
//        Unless required by applicable law or agreed to in writing, software
10
//        distributed under the License is distributed on an "AS IS" BASIS,
11
//        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
//        See the License for the specific language governing permissions and
13
//        limitations under the License.
14

15
package testing
16

17
import (
18
        "context"
19
        "io/ioutil"
20
        "os"
21

22
        "github.com/mendersoftware/go-lib-micro/mongo/dbtest"
23
        "go.mongodb.org/mongo-driver/mongo"
24
        "go.mongodb.org/mongo-driver/mongo/options"
25
)
26

27
// TestDBRunner exports selected calls of dbtest.DBServer API, just the ones
28
// that are useful in tests.
29
type TestDBRunner interface {
30
        Client() *mongo.Client
31
        Wipe()
32
        CTX() context.Context
33
}
34

35
// WithDB will set up a test DB instance and pass it to `f` callback as
36
// `dbtest`. Once `f()` is finished, the DB will be cleaned up. Value returned
37
// from `f()` is obtained as return status of a call to WithDB().
38
func WithDB(f func(dbtest TestDBRunner) int) int {
1✔
39
        var runner TestDBRunner
1✔
40
        if url, ok := os.LookupEnv("TEST_MONGO_URL"); ok {
2✔
41
                clientOpts := options.Client().
1✔
42
                        ApplyURI(url)
1✔
43
                client, err := mongo.Connect(context.Background(), clientOpts)
1✔
44
                if err != nil {
1✔
NEW
45
                        panic(err)
×
46
                }
47
                runner = (*dbClientFromEnv)(client)
1✔
NEW
48
        } else {
×
NEW
49
                // Fallback to running mongod on host
×
NEW
50
                dbdir, _ := ioutil.TempDir("", "dbsetup-test")
×
NEW
51
                db := &dbtest.DBServer{}
×
NEW
52
                db.SetPath(dbdir)
×
NEW
53
                runner = db
×
NEW
54

×
NEW
55
                defer os.RemoveAll(dbdir)
×
NEW
56
                defer db.Stop()
×
57

×
NEW
58
        }
×
59

60
        return f(runner)
1✔
61
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc