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

gittuf / gittuf / 13901983636

17 Mar 2025 02:28PM UTC coverage: 60.336%. Remained the same
13901983636

push

github

web-flow
Merge pull request #870 from gittuf/lua-apis-gitinterface

gitinterface: Add support for fetching object size

6 of 10 new or added lines in 1 file covered. (60.0%)

6322 of 10478 relevant lines covered (60.34%)

34.3 hits per line

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

73.33
/internal/gitinterface/object.go
1
// Copyright The gittuf Authors
2
// SPDX-License-Identifier: Apache-2.0
3

4
package gitinterface
5

6
import (
7
        "errors"
8
        "fmt"
9
        "strconv"
10
)
11

12
type ObjectType uint
13

14
const (
15
        BlobObjectType ObjectType = iota + 1
16
        TreeObjectType
17
        CommitObjectType
18
        TagObjectType
19
)
20

21
var ErrInvalidObjectType = errors.New("unknown Git object type")
22

23
// HasObject returns true if an object with the specified Git ID exists in the
24
// repository.
25
func (r *Repository) HasObject(objectID Hash) bool {
32✔
26
        _, err := r.executor("cat-file", "-e", objectID.String()).executeString()
32✔
27
        return err == nil
32✔
28
}
32✔
29

30
func (r *Repository) GetObjectType(objectID Hash) (ObjectType, error) {
4✔
31
        objType, err := r.executor("cat-file", "-t", objectID.String()).executeString()
4✔
32
        if err != nil {
4✔
33
                return 0, fmt.Errorf("unable to inspect object type: %w", err)
×
34
        }
×
35

36
        switch objType {
4✔
37
        case "blob":
1✔
38
                return BlobObjectType, nil
1✔
39
        case "tree":
1✔
40
                return TreeObjectType, nil
1✔
41
        case "commit":
1✔
42
                return CommitObjectType, nil
1✔
43
        case "tag":
1✔
44
                return TagObjectType, nil
1✔
45
        default:
×
46
                return 0, ErrInvalidObjectType
×
47
        }
48
}
49

50
// GetObjectSize returns the size of the object with the specified Git ID.
51
func (r *Repository) GetObjectSize(objectID Hash) (uint64, error) {
1✔
52
        stdOut, err := r.executor("cat-file", "-s", objectID.String()).executeString()
1✔
53
        if err != nil {
1✔
NEW
54
                return 0, fmt.Errorf("unable to inspect object size: %w", err)
×
NEW
55
        }
×
56

57
        objSize, err := strconv.ParseUint(stdOut, 10, 64)
1✔
58
        if err != nil {
1✔
NEW
59
                return 0, fmt.Errorf("unable to convert output to integer: %w", err)
×
NEW
60
        }
×
61
        return objSize, nil
1✔
62
}
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

© 2026 Coveralls, Inc