You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by ke...@apache.org on 2022/09/08 12:08:23 UTC

[skywalking-eyes] branch maven/tests created (now 04cf948)

This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a change to branch maven/tests
in repository https://gitbox.apache.org/repos/asf/skywalking-eyes.git


      at 04cf948  Add some tests for maven resovler

This branch includes the following new commits:

     new 04cf948  Add some tests for maven resovler

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[skywalking-eyes] 01/01: Add some tests for maven resovler

Posted by ke...@apache.org.
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 <ke...@apache.org>
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