|
1 | 1 | package rpmutils_test |
2 | 2 |
|
3 | 3 | import ( |
4 | | - "github.com/intel-innersource/os.linux.tiberos.os-curation-tool/internal/provider" |
5 | | - "github.com/intel-innersource/os.linux.tiberos.os-curation-tool/internal/rpmutils" |
6 | | - "reflect" |
7 | | - "sort" |
8 | 4 | "testing" |
9 | | -) |
10 | | - |
11 | | -// helper to extract and sort names from PackageInfo slice |
12 | | -func names(ps []provider.PackageInfo) []string { |
13 | | - var outs []string |
14 | | - for _, p := range ps { |
15 | | - outs = append(outs, p.Name) |
16 | | - } |
17 | | - sort.Strings(outs) |
18 | | - return outs |
19 | | -} |
20 | | - |
21 | | -func TestResolvePackageInfos_SimpleChain(t *testing.T) { |
22 | | - // A -> requires B -> requires C |
23 | | - all := []provider.PackageInfo{ |
24 | | - {Name: "C", Provides: []string{"C"}, Requires: []string{}}, |
25 | | - {Name: "B", Provides: []string{"B"}, Requires: []string{"C"}}, |
26 | | - {Name: "A", Provides: []string{"A"}, Requires: []string{"B"}}, |
27 | | - } |
28 | | - requested := []provider.PackageInfo{{Name: "A", Provides: []string{"A"}, Requires: []string{"B"}}} |
29 | | - |
30 | | - got, err := rpmutils.ResolvePackageInfos(requested, all) |
31 | | - if err != nil { |
32 | | - t.Fatalf("unexpected error: %v", err) |
33 | | - } |
34 | | - want := []string{"A", "B", "C"} |
35 | | - if !reflect.DeepEqual(names(got), want) { |
36 | | - t.Errorf("ResolvePackageInfos simple chain = %v; want %v", names(got), want) |
37 | | - } |
38 | | -} |
39 | | - |
40 | | -func TestResolvePackageInfos_MultipleProviders(t *testing.T) { |
41 | | - // A requires X, X provided by P1 and P2, P2 requires Y |
42 | | - all := []provider.PackageInfo{ |
43 | | - {Name: "Y", Provides: []string{"Y"}, Requires: []string{}}, |
44 | | - {Name: "P1", Provides: []string{"X"}, Requires: []string{}}, |
45 | | - {Name: "P2", Provides: []string{"X"}, Requires: []string{"Y"}}, |
46 | | - {Name: "A", Provides: []string{"A"}, Requires: []string{"X"}}, |
47 | | - } |
48 | | - requested := []provider.PackageInfo{{Name: "A", Provides: []string{"A"}, Requires: []string{"X"}}} |
49 | 5 |
|
50 | | - got, err := rpmutils.ResolvePackageInfos(requested, all) |
51 | | - if err != nil { |
52 | | - t.Fatalf("unexpected error: %v", err) |
53 | | - } |
54 | | - want := []string{"A", "P1", "P2", "Y"} |
55 | | - if !reflect.DeepEqual(names(got), want) { |
56 | | - t.Errorf("ResolvePackageInfos multi providers = %v; want %v", names(got), want) |
57 | | - } |
58 | | -} |
59 | | - |
60 | | -func TestResolvePackageInfos_NoDeps(t *testing.T) { |
61 | | - all := []provider.PackageInfo{{Name: "X", Provides: []string{"X"}, Requires: []string{}}} |
62 | | - requested := []provider.PackageInfo{{Name: "X", Provides: []string{"X"}, Requires: []string{}}} |
63 | | - |
64 | | - got, err := rpmutils.ResolvePackageInfos(requested, all) |
65 | | - if err != nil { |
66 | | - t.Fatalf("unexpected error: %v", err) |
67 | | - } |
68 | | - want := []string{"X"} |
69 | | - if !reflect.DeepEqual(names(got), want) { |
70 | | - t.Errorf("ResolvePackageInfos no deps = %v; want %v", names(got), want) |
71 | | - } |
72 | | -} |
73 | | - |
74 | | -func TestResolvePackageInfos_MissingRequested(t *testing.T) { |
75 | | - all := []provider.PackageInfo{{Name: "A", Provides: []string{"A"}, Requires: []string{}}} |
76 | | - requested := []provider.PackageInfo{{Name: "B", Provides: []string{"B"}, Requires: []string{}}} |
| 6 | + "github.com/intel-innersource/os.linux.tiberos.os-curation-tool/internal/resolvertest" |
| 7 | + "github.com/intel-innersource/os.linux.tiberos.os-curation-tool/internal/rpmutils" |
| 8 | +) |
77 | 9 |
|
78 | | - _, err := rpmutils.ResolvePackageInfos(requested, all) |
79 | | - if err == nil { |
80 | | - t.Fatalf("expected error for missing requested, got none") |
81 | | - } |
| 10 | +func TestRPMResolver(t *testing.T) { |
| 11 | + resolvertest.RunResolverTestsFunc( |
| 12 | + t, |
| 13 | + "rpmutils", |
| 14 | + rpmutils.ResolvePackageInfos, // directly passing your function |
| 15 | + ) |
82 | 16 | } |
0 commit comments