We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent abcf9c2 commit b8fb384Copy full SHA for b8fb384
apt.go
@@ -44,13 +44,19 @@ func List() ([]*Package, error) {
44
// Search list packages available in the system that match the search
45
// pattern
46
func Search(pattern string) ([]*Package, error) {
47
- cmd := exec.Command("dpkg-query", "-W", "-f=${Package}\t${Architecture}\t${db:Status-Status}\t${Version}\n", pattern)
48
- out, err := cmd.Output()
+ res := []*Package{}
+
49
+ cmd := exec.Command("dpkg-query", "-W", "-f=${Package}\t${Architecture}\t${db:Status-Status}\t${Version}\n", "*"+pattern+"*")
50
51
+ out, err := cmd.CombinedOutput()
52
if err != nil {
- return nil, fmt.Errorf("running dpkg-query: %s", err)
53
+ // Avoid returning an error if the list is empty
54
+ if bytes.Contains(out, []byte("no packages found matching")) {
55
+ return res, nil
56
+ }
57
+ return nil, fmt.Errorf("running dpkg-query: %s - %s", err, out)
58
}
59
- res := []*Package{}
60
scanner := bufio.NewScanner(bytes.NewReader(out))
61
for scanner.Scan() {
62
data := strings.Split(scanner.Text(), "\t")
apt_test.go
@@ -38,18 +38,28 @@ func TestList(t *testing.T) {
38
continue
39
40
statusCount[p.Status]++
41
- fmt.Printf("%+v\n", p)
+ // fmt.Printf("%+v\n", p)
42
43
- fmt.Println("Summary:")
- for k, v := range statusCount {
- fmt.Printf(" %s: %d\n", k, v)
- }
+ // fmt.Println("Summary:")
+ // for k, v := range statusCount {
+ // fmt.Printf(" %s: %d\n", k, v)
+ // }
require.NotNil(t, dpkg, "search package 'dpkg'")
require.Equal(t, "installed", dpkg.Status, "'dpkg' status")
+func TestSearch(t *testing.T) {
+ list, err := Search("nonexisting")
+ require.NoError(t, err, "running Search command")
+ require.Empty(t, list, "Search command result")
+ list, err = Search("header")
+ require.NotEmpty(t, list, "Search command result")
+}
63
func TestListUpgradable(t *testing.T) {
64
list, err := ListUpgradable()
65
for _, p := range list {
0 commit comments