emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/javaimp 9665898: * javaimp-tests-maven.el (javaimp-test


From: Filipp Gunbin
Subject: [elpa] externals/javaimp 9665898: * javaimp-tests-maven.el (javaimp-test--maven-visit): Split into individual tests
Date: Fri, 5 Nov 2021 15:09:59 -0400 (EDT)

branch: externals/javaimp
commit 96658984fb0679bacff5c8c1e97d7754577bbf4f
Author: Filipp Gunbin <fgunbin@fastmail.fm>
Commit: Filipp Gunbin <fgunbin@fastmail.fm>

    * javaimp-tests-maven.el (javaimp-test--maven-visit): Split into individual 
tests
---
 javaimp-tests-maven.el         | 121 +++++++++++++++++++++++------------------
 javaimp-tests.el               |  11 +++-
 testdata/maven-multi.tar.gz    | Bin 0 -> 1167 bytes
 testdata/maven-projects.tar.gz | Bin 1217 -> 0 bytes
 testdata/maven-single.tar.gz   | Bin 0 -> 335 bytes
 5 files changed, 76 insertions(+), 56 deletions(-)

diff --git a/javaimp-tests-maven.el b/javaimp-tests-maven.el
index 63c28cf..2acf7ef 100644
--- a/javaimp-tests-maven.el
+++ b/javaimp-tests-maven.el
@@ -10,66 +10,81 @@
 
 ;; Tests for Maven project parsing.
 
-;; In the untarred directory, use this command to run Maven manually,
-;; if needed for debugging:
+;; "testdata" dir contains some archived Maven projects.  If you need
+;; to run Maven on them manually, use this in the untarred directory:
 ;;
-;; `mvn -U -s settings.xml -f single/pom.xml help:effective-pom'.
+;; `mvn -U -s settings.xml -f <name>/pom.xml help:effective-pom'.
 ;;
 ;; Dummy settings.xml file:
 ;;
 ;; `<?xml version="1.0" encoding="UTF-8"?><settings/>'
 ;;
 
-(ert-deftest javaimp-test--maven-visit ()
-  (let* ((tmpdir (file-name-as-directory (make-temp-file "javaimp" t)))
-         (rc (call-process "tar" nil nil nil
-                           "-x"
-                           "-f" (concat javaimp--basedir
-                                        "testdata/maven-projects.tar.gz")
-                           "-C" tmpdir)))
-    (unless (= rc 0)
-      (error "Cannot untar test data: %d" rc))
-    ;;
-    ;; Single-module project
-    (should
-     (equal
-      (javaimp-test--maven-get-tree
-       (concat tmpdir (file-name-as-directory "single")))
-      '((("single:org.example:1.0.0" . "pom.xml")))))
-    ;;
-    ;; Multi-module project
-    (should
-     (equal
-      (javaimp-test--maven-get-tree
-       (concat tmpdir (file-name-as-directory "multi")))
-      '(;; Main tree:
-        (("multi:org.example:1.0.0" . "pom.xml")
-         (("child:org.example:1.0.0" . "child/pom.xml"))
-         ;; inherited group/version
-         (("child-only-artifact:org.example:1.0.0" . 
"child-only-artifact/pom.xml"))
-         ;; aggregator1 has no parent, but its child has
-         (("aggregator1-child-of-parent:org.example:1.0.0" .
-           "aggregator1/aggregator1-child-of-parent/pom.xml"))
-         (("aggregator2:org.example:1.0.0" . "aggregator2/pom.xml")
-          (("aggregator2-child-of-aggregator2:org.example:1.0.0" .
-            "aggregator2/aggregator2-child-of-aggregator2/pom.xml")))
-         ;; contained in aggregator2, but parent is above
-         (("aggregator2-child-of-parent:org.example:1.0.0" .
-           "aggregator2/aggregator2-child-of-parent/pom.xml")))
-        ;;
-        ;; Some projects end up outside of main tree:
-        ;; - because no parent
-        (("submodule-no-parent:org.example:1.0.0" . 
"submodule-no-parent/pom.xml"))
-        ;; - because parent is outside
-        (("with-parent-outside:org.example:1.0.0" . 
"with-parent-outside/pom.xml"))
-        ;; - because no parent
-        (("aggregator1:org.example:1.0.0" . "aggregator1/pom.xml")
-         (("aggregator1-child-of-aggregator1:org.example:1.0.0" .
-           "aggregator1/aggregator1-child-of-aggregator1/pom.xml")))
-        ;;
-        ;; And "dangling-parent-link" project is not present at all,
-        ;; because we have no way of knowing about it
-        )))))
+(defun javaimp-test--with-data (filename handler)
+  "Untars testdata/FILENAME into temporary directory and runs
+HANDLER, supplying temp directory name as the only arg."
+  (let ((tmpdir (file-name-as-directory (make-temp-file "javaimp" t))))
+    (unwind-protect
+        (let ((rc (call-process
+                   "tar" nil nil nil
+                   "-x"
+                   "-f" (concat javaimp--basedir
+                                (file-name-as-directory "testdata")
+                                filename)
+                   "-C" tmpdir)))
+          (unless (= rc 0)
+            (error "Cannot untar test data %s: %d" filename rc))
+          (funcall handler tmpdir))
+      (delete-directory tmpdir t))))
+
+(ert-deftest javaimp-test--maven-visit-single ()
+  :tags '(:runs-build-tool)
+  (javaimp-test--with-data
+   "maven-single.tar.gz"
+   (lambda (tmpdir)
+     (should
+      (equal
+       (javaimp-test--maven-get-tree
+        (concat tmpdir (file-name-as-directory "single")))
+       '((("single:org.example:1.0.0" . "pom.xml"))))))))
+
+(ert-deftest javaimp-test--maven-visit-multi ()
+  :tags '(:runs-build-tool)
+  (javaimp-test--with-data
+   "maven-multi.tar.gz"
+   (lambda (tmpdir)
+     (should
+      (equal
+       (javaimp-test--maven-get-tree
+        (concat tmpdir (file-name-as-directory "multi")))
+       '(;; Main tree:
+         (("multi:org.example:1.0.0" . "pom.xml")
+          (("child:org.example:1.0.0" . "child/pom.xml"))
+          ;; inherited group/version
+          (("child-only-artifact:org.example:1.0.0" . 
"child-only-artifact/pom.xml"))
+          ;; aggregator1 has no parent, but its child has
+          (("aggregator1-child-of-parent:org.example:1.0.0" .
+            "aggregator1/aggregator1-child-of-parent/pom.xml"))
+          (("aggregator2:org.example:1.0.0" . "aggregator2/pom.xml")
+           (("aggregator2-child-of-aggregator2:org.example:1.0.0" .
+             "aggregator2/aggregator2-child-of-aggregator2/pom.xml")))
+          ;; contained in aggregator2, but parent is above
+          (("aggregator2-child-of-parent:org.example:1.0.0" .
+            "aggregator2/aggregator2-child-of-parent/pom.xml")))
+         ;;
+         ;; Some projects end up outside of main tree:
+         ;; - because no parent
+         (("submodule-no-parent:org.example:1.0.0" . 
"submodule-no-parent/pom.xml"))
+         ;; - because parent is outside
+         (("with-parent-outside:org.example:1.0.0" . 
"with-parent-outside/pom.xml"))
+         ;; - because no parent
+         (("aggregator1:org.example:1.0.0" . "aggregator1/pom.xml")
+          (("aggregator1-child-of-aggregator1:org.example:1.0.0" .
+            "aggregator1/aggregator1-child-of-aggregator1/pom.xml")))
+         ;;
+         ;; And "dangling-parent-link" project is not present at all,
+         ;; because we have no way of knowing about it
+         ))))))
 
 (defun javaimp-test--maven-get-tree (project-dir)
   (javaimp--map-nodes
diff --git a/javaimp-tests.el b/javaimp-tests.el
index 1b50257..b4609e2 100644
--- a/javaimp-tests.el
+++ b/javaimp-tests.el
@@ -8,6 +8,11 @@
 (require 'ert)
 (require 'javaimp)
 
+;; Use this selector to run all tests which do not invoke build tool:
+;;
+;; (and "^javaimp-" (not (tag :runs-build-tool)))
+;;
+
 ;; Tests for low-level helpers of scope parsers.
 
 (ert-deftest javaimp-test--parse-arglist ()
@@ -279,13 +284,13 @@ package commented.block;
 
 
 
-;; Tests for javaimp--get-classes
+;; Tests for javaimp--get-buffer-classes
 
-(ert-deftest javaimp-test--get-classes ()
+(ert-deftest javaimp-test--get-buffer-classes ()
   (with-temp-buffer
     (insert-file-contents
      (concat javaimp--basedir "testdata/test1-misc-classes.java"))
-    (should (equal (javaimp--get-classes)
+    (should (equal (javaimp--get-buffer-classes)
                    '("org.foo.Top"
                      "org.foo.Top.CInner1"
                      "org.foo.Top.CInner1.CInner1_CInner1"
diff --git a/testdata/maven-multi.tar.gz b/testdata/maven-multi.tar.gz
new file mode 100644
index 0000000..eac2771
Binary files /dev/null and b/testdata/maven-multi.tar.gz differ
diff --git a/testdata/maven-projects.tar.gz b/testdata/maven-projects.tar.gz
deleted file mode 100644
index 468ec81..0000000
Binary files a/testdata/maven-projects.tar.gz and /dev/null differ
diff --git a/testdata/maven-single.tar.gz b/testdata/maven-single.tar.gz
new file mode 100644
index 0000000..cd6e753
Binary files /dev/null and b/testdata/maven-single.tar.gz differ



reply via email to

[Prev in Thread] Current Thread [Next in Thread]