[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/javaimp 9665898: * javaimp-tests-maven.el (javaimp-test--maven-visit): Split into individual tests,
Filipp Gunbin <=