|
9 | 9 | "github.com/microsoft/azure-linux-dev-tools/internal/app/azldev/cmds/image" |
10 | 10 | "github.com/microsoft/azure-linux-dev-tools/internal/app/azldev/core/testutils" |
11 | 11 | "github.com/microsoft/azure-linux-dev-tools/internal/projectconfig" |
| 12 | + "github.com/samber/lo" |
12 | 13 | "github.com/stretchr/testify/assert" |
13 | 14 | "github.com/stretchr/testify/require" |
14 | 15 | ) |
@@ -78,6 +79,91 @@ func TestListImages_AllImages(t *testing.T) { |
78 | 79 | assert.Equal(t, "Image B description", results[1].Description) |
79 | 80 | } |
80 | 81 |
|
| 82 | +func TestListImages_WithCapabilitiesAndTests(t *testing.T) { |
| 83 | + testEnv := testutils.NewTestEnv(t) |
| 84 | + testEnv.Config.Images = map[string]projectconfig.ImageConfig{ |
| 85 | + "vm-base": { |
| 86 | + Name: "vm-base", |
| 87 | + Description: "VM Base Image", |
| 88 | + Capabilities: projectconfig.ImageCapabilities{ |
| 89 | + MachineBootable: lo.ToPtr(true), |
| 90 | + Systemd: lo.ToPtr(true), |
| 91 | + }, |
| 92 | + Tests: projectconfig.ImageTestsConfig{ |
| 93 | + TestSuites: []projectconfig.TestSuiteRef{ |
| 94 | + {Name: "smoke"}, |
| 95 | + {Name: "integration"}, |
| 96 | + }, |
| 97 | + }, |
| 98 | + Publish: projectconfig.ImagePublishConfig{ |
| 99 | + Channels: []string{"registry-prod", "registry-staging"}, |
| 100 | + }, |
| 101 | + }, |
| 102 | + "container-base": { |
| 103 | + Name: "container-base", |
| 104 | + Description: "Container Base Image", |
| 105 | + Capabilities: projectconfig.ImageCapabilities{ |
| 106 | + Container: lo.ToPtr(true), |
| 107 | + }, |
| 108 | + Tests: projectconfig.ImageTestsConfig{ |
| 109 | + TestSuites: []projectconfig.TestSuiteRef{ |
| 110 | + {Name: "smoke"}, |
| 111 | + }, |
| 112 | + }, |
| 113 | + Publish: projectconfig.ImagePublishConfig{ |
| 114 | + Channels: []string{"registry-prod"}, |
| 115 | + }, |
| 116 | + }, |
| 117 | + "minimal": { |
| 118 | + Name: "minimal", |
| 119 | + Description: "Minimal image with no capabilities or tests", |
| 120 | + }, |
| 121 | + } |
| 122 | + |
| 123 | + options := &image.ListImageOptions{} |
| 124 | + |
| 125 | + results, err := image.ListImages(testEnv.Env, options) |
| 126 | + require.NoError(t, err) |
| 127 | + require.Len(t, results, 3) |
| 128 | + |
| 129 | + // Results sorted alphabetically. |
| 130 | + assert.Equal(t, "container-base", results[0].Name) |
| 131 | + assert.Equal(t, lo.ToPtr(true), results[0].Capabilities.Container) |
| 132 | + assert.Nil(t, results[0].Capabilities.MachineBootable) |
| 133 | + assert.Equal(t, "container", results[0].CapabilitiesSummary) |
| 134 | + assert.Equal(t, projectconfig.ImageTestsConfig{ |
| 135 | + TestSuites: []projectconfig.TestSuiteRef{{Name: "smoke"}}, |
| 136 | + }, results[0].Tests) |
| 137 | + assert.Equal(t, "smoke", results[0].TestsSummary) |
| 138 | + assert.Equal(t, projectconfig.ImagePublishConfig{ |
| 139 | + Channels: []string{"registry-prod"}, |
| 140 | + }, results[0].Publish) |
| 141 | + assert.Equal(t, "registry-prod", results[0].PublishSummary) |
| 142 | + |
| 143 | + assert.Equal(t, "minimal", results[1].Name) |
| 144 | + assert.Nil(t, results[1].Capabilities.MachineBootable) |
| 145 | + assert.Nil(t, results[1].Capabilities.Container) |
| 146 | + assert.Empty(t, results[1].CapabilitiesSummary) |
| 147 | + assert.Empty(t, results[1].Tests.TestSuites) |
| 148 | + assert.Empty(t, results[1].TestsSummary) |
| 149 | + assert.Empty(t, results[1].Publish.Channels) |
| 150 | + assert.Empty(t, results[1].PublishSummary) |
| 151 | + |
| 152 | + assert.Equal(t, "vm-base", results[2].Name) |
| 153 | + assert.Equal(t, lo.ToPtr(true), results[2].Capabilities.MachineBootable) |
| 154 | + assert.Equal(t, lo.ToPtr(true), results[2].Capabilities.Systemd) |
| 155 | + assert.Nil(t, results[2].Capabilities.Container) |
| 156 | + assert.Equal(t, "machine-bootable, systemd", results[2].CapabilitiesSummary) |
| 157 | + assert.Equal(t, projectconfig.ImageTestsConfig{ |
| 158 | + TestSuites: []projectconfig.TestSuiteRef{{Name: "smoke"}, {Name: "integration"}}, |
| 159 | + }, results[2].Tests) |
| 160 | + assert.Equal(t, "smoke, integration", results[2].TestsSummary) |
| 161 | + assert.Equal(t, projectconfig.ImagePublishConfig{ |
| 162 | + Channels: []string{"registry-prod", "registry-staging"}, |
| 163 | + }, results[2].Publish) |
| 164 | + assert.Equal(t, "registry-prod, registry-staging", results[2].PublishSummary) |
| 165 | +} |
| 166 | + |
81 | 167 | func TestListImages_ExactMatch(t *testing.T) { |
82 | 168 | testEnv := testutils.NewTestEnv(t) |
83 | 169 | testEnv.Config.Images = map[string]projectconfig.ImageConfig{ |
|
0 commit comments