Skip to content
This repository was archived by the owner on Mar 27, 2024. It is now read-only.

Commit 0b2a3c5

Browse files
author
Priya Wadhwa
committed
Ignore extra layers for --layer
1 parent 54b0ea8 commit 0b2a3c5

File tree

5 files changed

+19
-48
lines changed

5 files changed

+19
-48
lines changed

cmd/root.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ func getImageForName(imageName string) (pkgutil.Image, error) {
210210

211211
func includeLayers() bool {
212212
for _, t := range types {
213-
if t == "file-layer" {
213+
if t == "layer" {
214214
return true
215215
}
216216
}

differs/differs.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@ type Analyzer interface {
4242
}
4343

4444
var Analyzers = map[string]Analyzer{
45-
"history": HistoryAnalyzer{},
46-
"metadata": MetadataAnalyzer{},
47-
"file": FileAnalyzer{},
48-
"file-layer": FileLayerAnalyzer{},
49-
"apt": AptAnalyzer{},
50-
"rpm": RPMAnalyzer{},
51-
"pip": PipAnalyzer{},
52-
"node": NodeAnalyzer{},
45+
"history": HistoryAnalyzer{},
46+
"metadata": MetadataAnalyzer{},
47+
"file": FileAnalyzer{},
48+
"layer": FileLayerAnalyzer{},
49+
"apt": AptAnalyzer{},
50+
"rpm": RPMAnalyzer{},
51+
"pip": PipAnalyzer{},
52+
"node": NodeAnalyzer{},
5353
}
5454

5555
func (req DiffRequest) GetDiff() (map[string]util.Result, error) {

differs/file_diff.go

Lines changed: 8 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ package differs
1919
import (
2020
pkgutil "github.com/GoogleContainerTools/container-diff/pkg/util"
2121
"github.com/GoogleContainerTools/container-diff/util"
22-
"io/ioutil"
23-
"os"
22+
"github.com/sirupsen/logrus"
2423
)
2524

2625
type FileAnalyzer struct {
@@ -81,23 +80,10 @@ func (a FileLayerAnalyzer) Name() string {
8180
// FileDiff diffs two packages and compares their contents
8281
func (a FileLayerAnalyzer) Diff(image1, image2 pkgutil.Image) (util.Result, error) {
8382
var dirDiffs []util.DirDiff
84-
// This path to an empty dir will be used for diffing in cases
85-
// where one image has more layers than the other
86-
emptyPath, err := ioutil.TempDir("", "")
87-
if err != nil {
88-
return &util.MultipleDirDiffResult{}, err
89-
}
90-
defer os.RemoveAll(emptyPath)
9183

9284
// Go through each layer of the first image...
9385
for index, layer := range image1.Layers {
94-
// ...if there is no corresponding layer in the second image, diff with the empty dir
9586
if index >= len(image2.Layers) {
96-
diff, err := diffImageFiles(layer.FSPath, emptyPath)
97-
if err != nil {
98-
return &util.MultipleDirDiffResult{}, err
99-
}
100-
dirDiffs = append(dirDiffs, diff)
10187
continue
10288
}
10389
// ...else, diff as usual
@@ -109,16 +95,12 @@ func (a FileLayerAnalyzer) Diff(image1, image2 pkgutil.Image) (util.Result, erro
10995
dirDiffs = append(dirDiffs, diff)
11096
}
11197

112-
// check if there are any additional layers in image2...
113-
if len(image2.Layers) > len(image1.Layers) {
114-
// ... and diff any additional layers with the empty dir
115-
for index := len(image1.Layers); index < len(image2.Layers); index++ {
116-
layer2 := image2.Layers[index]
117-
diff, err := diffImageFiles(emptyPath, layer2.FSPath)
118-
if err != nil {
119-
return &util.MultipleDirDiffResult{}, err
120-
}
121-
dirDiffs = append(dirDiffs, diff)
98+
// check if there are any additional layers in either image
99+
if len(image1.Layers) != len(image2.Layers) {
100+
if len(image1.Layers) > len(image2.Layers) {
101+
logrus.Infof("%s has additional layers, please use container-diff analyze to view the files in these layers", image1.Source)
102+
} else {
103+
logrus.Infof("%s has additional layers, please use container-diff analyze to view the files in these layers", image2.Source)
122104
}
123105
}
124106
return &util.MultipleDirDiffResult{
@@ -138,8 +120,7 @@ func (a FileLayerAnalyzer) Analyze(image pkgutil.Image) (util.Result, error) {
138120
if err != nil {
139121
return util.FileLayerAnalyzeResult{}, err
140122
}
141-
directoryEntry := pkgutil.GetDirectoryEntries(layerDir)
142-
directoryEntries = append(directoryEntries, directoryEntry)
123+
directoryEntries = append(directoryEntries, pkgutil.GetDirectoryEntries(layerDir))
143124
}
144125

145126
return &util.FileLayerAnalyzeResult{

tests/file_layer_diff_expected.json

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,6 @@
2424
}
2525
],
2626
"Mods": null
27-
},
28-
{
29-
"Adds": null,
30-
"Dels": [
31-
{
32-
"Name": "/third",
33-
"Size": 6
34-
}
35-
],
36-
"Mods": null
3727
}
3828
]
3929
}

tests/integration_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ func TestDiffAndAnalysis(t *testing.T) {
114114
subcommand: "diff",
115115
imageA: diffLayerBase,
116116
imageB: diffLayerModifed,
117-
differFlags: []string{"--type=file-layer"},
117+
differFlags: []string{"--type=layer"},
118118
expectedFile: "file_layer_diff_expected.json",
119119
},
120120
{
@@ -206,7 +206,7 @@ func TestDiffAndAnalysis(t *testing.T) {
206206
description: "file layer analysis",
207207
subcommand: "analyze",
208208
imageA: diffLayerBase,
209-
differFlags: []string{"--type=file-layer"},
209+
differFlags: []string{"--type=layer"},
210210
expectedFile: "file_layer_analysis_expected.json",
211211
},
212212
{

0 commit comments

Comments
 (0)