From 9b6fd609796fe73e66324ccdebbc33a4f1bddb70 Mon Sep 17 00:00:00 2001 From: Jens Auer Date: Wed, 16 Aug 2023 15:21:09 +0200 Subject: [PATCH 1/3] Fix tests --- .../js/nodejs/AsciidoctorJSExtension.groovy | 25 ++++++++++++++++--- .../nodejs/AsciidoctorJSExtensionSpec.groovy | 22 +++++++++++++++- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/js/src/main/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtension.groovy b/js/src/main/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtension.groovy index 70097d92d..7f2f9ac40 100644 --- a/js/src/main/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtension.groovy +++ b/js/src/main/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtension.groovy @@ -119,14 +119,15 @@ class AsciidoctorJSExtension extends AbstractAsciidoctorJSExtension { * @Return Set of strings in a format suitable for {@code npm --require}. */ Set getRequires() { - Set reqs = [].toSet() + @SuppressWarnings('UnnecessaryGetter') + List reqs = getAllAdditionalRequires().collect { asModuleVersionString(it) } final String docbook = moduleVersion(modules.docbook) if (docbook) { reqs.add(packageDescriptorFor(modules.docbook).toString()) } - reqs + reqs as Set } /** A configuration containing all required NPM packages. @@ -141,11 +142,15 @@ class AsciidoctorJSExtension extends AbstractAsciidoctorJSExtension { final NodeJSDependencyFactory factory = new NodeJSDependencyFactory(project, nodejs, npm) final List deps = [factory.createDependency(PACKAGE_ASCIIDOCTOR, getVersion())] + deps.addAll( getAllAdditionalRequires().collect { + factory.createDependency( it.packageName, it.tagName, it.scope ) + }) + if (docbook) { deps.add(factory.createDependency(packageDescriptorFor(modules.docbook), docbook)) } - configurations.detachedConfiguration( + project.configurations.detachedConfiguration( deps.toArray() as Dependency[] ) } @@ -218,4 +223,18 @@ class AsciidoctorJSExtension extends AbstractAsciidoctorJSExtension { private AsciidoctorJSExtension getExtFromProject() { task ? (AsciidoctorJSExtension) projectExtension : this } + + private String asModuleVersionString(NpmDependency it) { + final String scope = it.scope + final String name = it.packageName + final String version = it.tagName + + final String r = (scope != null && !scope.isEmpty()) ? ("@${scope}/${name}") : name + + if (version != null && !version.isEmpty()) { + r + "@${version}" + } else { + r + } + } } diff --git a/js/src/test/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtensionSpec.groovy b/js/src/test/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtensionSpec.groovy index cfd363b2a..882c77e84 100644 --- a/js/src/test/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtensionSpec.groovy +++ b/js/src/test/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtensionSpec.groovy @@ -34,12 +34,32 @@ class AsciidoctorJSExtensionSpec extends Specification { asciidoctorjs = project.extensions.getByType(AsciidoctorJSExtension) } - void 'Can set a default docbook version'() { + void 'Can set a default docbook version'() { when: asciidoctorjs.modules.docbook.use() then: asciidoctorjs.modules.docbook.version == versionMap['asciidoctorjs.docbook'] + } + + void 'requires property contains npm modules added with require'() { + when: + asciidoctorjs.require 'my_module1', 'my_tag1' + asciidoctorjs.require 'my_scope2', 'my_module2', 'my_tag2' + + then: + asciidoctorjs.requires.find {it.equals('my_module1@my_tag1')} + asciidoctorjs.requires.find {it.equals('@my_scope2/my_module2@my_tag2')} + } + + void 'docbook-converter added as requires'() { + when: + asciidoctorjs.require 'my_module1', 'my_tag1' + asciidoctorjs.modules.docbook.use() + + then: + asciidoctorjs.requires.find {it.equals('my_module1@my_tag1')} asciidoctorjs.requires.find { it.contains('docbook-converter') } } + } \ No newline at end of file From 459e85186aba765cf8ac22cd5dec2a740dce4f21 Mon Sep 17 00:00:00 2001 From: Jens Auer Date: Wed, 16 Aug 2023 15:29:52 +0200 Subject: [PATCH 2/3] Return immutable set --- .../asciidoctor/gradle/js/nodejs/AsciidoctorJSExtension.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/src/main/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtension.groovy b/js/src/main/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtension.groovy index 7f2f9ac40..b9c5de0c7 100644 --- a/js/src/main/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtension.groovy +++ b/js/src/main/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtension.groovy @@ -127,7 +127,7 @@ class AsciidoctorJSExtension extends AbstractAsciidoctorJSExtension { reqs.add(packageDescriptorFor(modules.docbook).toString()) } - reqs as Set + (reqs as Set).asImmutable() } /** A configuration containing all required NPM packages. From 7bafdf381f9253788f29ecb80feb727326c764ce Mon Sep 17 00:00:00 2001 From: Jens Auer Date: Wed, 16 Aug 2023 15:31:20 +0200 Subject: [PATCH 3/3] Fix unintended modifications --- .../gradle/js/nodejs/AsciidoctorJSExtension.groovy | 2 +- .../gradle/js/nodejs/AsciidoctorJSExtensionSpec.groovy | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/js/src/main/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtension.groovy b/js/src/main/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtension.groovy index b9c5de0c7..bcda11942 100644 --- a/js/src/main/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtension.groovy +++ b/js/src/main/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtension.groovy @@ -150,7 +150,7 @@ class AsciidoctorJSExtension extends AbstractAsciidoctorJSExtension { deps.add(factory.createDependency(packageDescriptorFor(modules.docbook), docbook)) } - project.configurations.detachedConfiguration( + configurations.detachedConfiguration( deps.toArray() as Dependency[] ) } diff --git a/js/src/test/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtensionSpec.groovy b/js/src/test/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtensionSpec.groovy index 882c77e84..1e97ba4fe 100644 --- a/js/src/test/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtensionSpec.groovy +++ b/js/src/test/groovy/org/asciidoctor/gradle/js/nodejs/AsciidoctorJSExtensionSpec.groovy @@ -34,7 +34,7 @@ class AsciidoctorJSExtensionSpec extends Specification { asciidoctorjs = project.extensions.getByType(AsciidoctorJSExtension) } - void 'Can set a default docbook version'() { + void 'Can set a default docbook version'() { when: asciidoctorjs.modules.docbook.use() @@ -52,7 +52,7 @@ class AsciidoctorJSExtensionSpec extends Specification { asciidoctorjs.requires.find {it.equals('@my_scope2/my_module2@my_tag2')} } - void 'docbook-converter added as requires'() { + void 'docbook-converter added as requires'() { when: asciidoctorjs.require 'my_module1', 'my_tag1' asciidoctorjs.modules.docbook.use()