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

Reply via email to