This is an automated email from the ASF dual-hosted git repository. kezhenxu94 pushed a commit to branch maven/tests in repository https://gitbox.apache.org/repos/asf/skywalking-eyes.git
commit 04cf948feb5cf8665fe59013a477c5081f3a9917 Author: kezhenxu94 <[email protected]> AuthorDate: Thu Sep 8 20:07:44 2022 +0800 Add some tests for maven resovler --- .gitignore | 4 +- pkg/deps/config.go | 4 +- pkg/deps/maven.go | 3 + pkg/deps/maven_test.go | 78 ++++++++-------------- .../.mvn/wrapper/maven-wrapper.properties | 0 pkg/deps/testdata/maven/{ => base}/mvnw | 0 pkg/deps/testdata/maven/base/pom.xml | 31 +++++++++ .../maven/cases/exclude-recursive/licenserc.yaml | 6 ++ .../testdata/maven/cases/exclude/licenserc.yaml | 6 ++ .../testdata/maven/cases/normal/licenserc.yaml | 3 + 10 files changed, 81 insertions(+), 54 deletions(-) diff --git a/.gitignore b/.gitignore index 16cbe49..e5df3f6 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,6 @@ assets/assets.gen.go .DS_Store coverage.txt -plantuml.jar + +target/ +*.jar diff --git a/pkg/deps/config.go b/pkg/deps/config.go index 89219ae..fcdc0f1 100644 --- a/pkg/deps/config.go +++ b/pkg/deps/config.go @@ -57,7 +57,9 @@ func (config *ConfigDeps) Finalize(configFile string) error { } for i, file := range config.Files { - config.Files[i] = filepath.Join(filepath.Dir(configFileAbsPath), file) + if !strings.HasPrefix(file, "/") { + config.Files[i] = filepath.Join(filepath.Dir(configFileAbsPath), file) + } } if config.Threshold <= 0 { diff --git a/pkg/deps/maven.go b/pkg/deps/maven.go index cd7c067..0c5b146 100644 --- a/pkg/deps/maven.go +++ b/pkg/deps/maven.go @@ -299,7 +299,10 @@ func LoadDependencies(data []byte, config *ConfigDeps) []*Dependency { queue = append(queue, depTree) } else if recursive { continue + } else { + queue = append(queue, depTree.TransitiveDeps...) } + for len(queue) > 0 { dep := queue[0] queue = queue[1:] diff --git a/pkg/deps/maven_test.go b/pkg/deps/maven_test.go index 6a835bb..b9da207 100644 --- a/pkg/deps/maven_test.go +++ b/pkg/deps/maven_test.go @@ -20,13 +20,13 @@ package deps_test import ( "bufio" "embed" - "fmt" "io/fs" "os" "path/filepath" "strings" "testing" + "github.com/apache/skywalking-eyes/pkg/config" "github.com/apache/skywalking-eyes/pkg/deps" ) @@ -69,85 +69,60 @@ func ensureDir(dirName string) error { return os.MkdirAll(dirName, 0777) } -//go:embed testdata/maven/* +//go:embed testdata/maven/**/* var testAssets embed.FS -func TestResolveMaven(t *testing.T) { - resolver := new(deps.MavenPomResolver) - tempDir := t.TempDir() - base := "testdata/maven" - - fs.WalkDir(testAssets, base, func(path string, d fs.DirEntry, err error) error { +func copy(assetDir, destination string) error { + return fs.WalkDir(testAssets, assetDir, func(path string, d fs.DirEntry, err error) error { if err != nil { return err } if d.IsDir() { return nil } - filename := filepath.Join(tempDir, strings.Replace(path, base, "", 1)) + filename := filepath.Join(destination, strings.Replace(path, assetDir, "", 1)) if err := ensureDir(filepath.Dir(filename)); err != nil { return err } content, err := testAssets.ReadFile(path) if err != nil { - t.Error(err) + return err } writeFile(filename, string(content)) return nil }) +} - pomFile := filepath.Join(tempDir, "pom.xml") +func TestResolveMaven(t *testing.T) { + resolver := new(deps.MavenPomResolver) for _, test := range []struct { - pomContent string + workingDir string + testCase string cnt int }{ - {`<?xml version="1.0" encoding="UTF-8"?> - <project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <groupId>apache</groupId> - <artifactId>skywalking-eyes</artifactId> - <version>1.0</version> - - <dependencies> - <!-- https://mvnrepository.com/artifact/junit/junit --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.12</version> - </dependency> - <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging --> - <dependency> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - <version>1.2</version> - </dependency> - <!-- https://mvnrepository.com/artifact/org.apache.skywalking/skywalking-sharing-server-plugin --> - <dependency> - <groupId>org.apache.skywalking</groupId> - <artifactId>skywalking-sharing-server-plugin</artifactId> - <version>8.6.0</version> - </dependency> - <dependency> - <groupId>com.fasterxml.jackson.datatype</groupId> - <artifactId>jackson-datatype-jsr310</artifactId> - <version>2.13.3</version> - </dependency> - </dependencies> - </project>`, 110}, + {t.TempDir(), "normal", 110}, + {t.TempDir(), "exclude", 109}, + {t.TempDir(), "exclude-recursive", 7}, } { - _ = writeFile(pomFile, test.pomContent) + if err := copy("testdata/maven/base", test.workingDir); err != nil { + t.Error(err) + } + if err := copy(filepath.Join("testdata/maven/cases", test.testCase), test.workingDir); err != nil { + t.Error(err) + } - config := deps.ConfigDeps{} - config.Finalize("") + config, err := config.NewConfigFromFile(filepath.Join(test.workingDir, "licenserc.yaml")) + if err != nil { + t.Error(err) + } + pomFile := filepath.Join(test.workingDir, "pom.xml") if resolver.CanResolve(pomFile) { report := deps.Report{} - if err := resolver.Resolve(pomFile, &config, &report); err != nil { + if err := resolver.Resolve(pomFile, config.Dependencies(), &report); err != nil { t.Error(err) return } @@ -155,7 +130,6 @@ func TestResolveMaven(t *testing.T) { if len(report.Resolved)+len(report.Skipped) != test.cnt { t.Errorf("the expected number of jar packages is: %d, but actually: %d. result:\n%v", test.cnt, len(report.Resolved)+len(report.Skipped), report.String()) } - fmt.Println(report.String()) } } } diff --git a/pkg/deps/testdata/maven/.mvn/wrapper/maven-wrapper.properties b/pkg/deps/testdata/maven/base/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from pkg/deps/testdata/maven/.mvn/wrapper/maven-wrapper.properties rename to pkg/deps/testdata/maven/base/.mvn/wrapper/maven-wrapper.properties diff --git a/pkg/deps/testdata/maven/mvnw b/pkg/deps/testdata/maven/base/mvnw similarity index 100% rename from pkg/deps/testdata/maven/mvnw rename to pkg/deps/testdata/maven/base/mvnw diff --git a/pkg/deps/testdata/maven/base/pom.xml b/pkg/deps/testdata/maven/base/pom.xml new file mode 100644 index 0000000..7bc23cf --- /dev/null +++ b/pkg/deps/testdata/maven/base/pom.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>apache</groupId> + <artifactId>skywalking-eyes</artifactId> + <version>1.0</version> + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.12</version> + </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>1.2</version> + </dependency> + <dependency> + <groupId>org.apache.skywalking</groupId> + <artifactId>skywalking-sharing-server-plugin</artifactId> + <version>8.6.0</version> + </dependency> + <dependency> + <groupId>com.fasterxml.jackson.datatype</groupId> + <artifactId>jackson-datatype-jsr310</artifactId> + <version>2.13.3</version> + </dependency> + </dependencies> +</project> diff --git a/pkg/deps/testdata/maven/cases/exclude-recursive/licenserc.yaml b/pkg/deps/testdata/maven/cases/exclude-recursive/licenserc.yaml new file mode 100644 index 0000000..ebe4828 --- /dev/null +++ b/pkg/deps/testdata/maven/cases/exclude-recursive/licenserc.yaml @@ -0,0 +1,6 @@ +dependency: + files: + - pom.xml + excludes: + - name: org.apache.skywalking:skywalking-sharing-server-plugin + recursive: true diff --git a/pkg/deps/testdata/maven/cases/exclude/licenserc.yaml b/pkg/deps/testdata/maven/cases/exclude/licenserc.yaml new file mode 100644 index 0000000..29bfdee --- /dev/null +++ b/pkg/deps/testdata/maven/cases/exclude/licenserc.yaml @@ -0,0 +1,6 @@ +dependency: + files: + - pom.xml + excludes: + - name: org.apache.skywalking:skywalking-sharing-server-plugin + recursive: false diff --git a/pkg/deps/testdata/maven/cases/normal/licenserc.yaml b/pkg/deps/testdata/maven/cases/normal/licenserc.yaml new file mode 100644 index 0000000..b8e3787 --- /dev/null +++ b/pkg/deps/testdata/maven/cases/normal/licenserc.yaml @@ -0,0 +1,3 @@ +dependency: + files: + - pom.xml
