Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package jurand for openSUSE:Factory checked in at 2023-12-15 21:47:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/jurand (Old) and /work/SRC/openSUSE:Factory/.jurand.new.25432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "jurand" Fri Dec 15 21:47:48 2023 rev:2 rq:1133084 version:1.3.2 Changes: -------- --- /work/SRC/openSUSE:Factory/jurand/jurand.changes 2023-11-20 21:19:26.534566485 +0100 +++ /work/SRC/openSUSE:Factory/.jurand.new.25432/jurand.changes 2023-12-15 21:48:00.711756809 +0100 @@ -1,0 +2,6 @@ +Thu Dec 14 08:51:29 UTC 2023 - Wang Jun <badbo...@gmail.com> + +- Update to version 1.3.2 + * see https://github.com/fedora-java/jurand/compare/1.3.1...1.3.2 + +------------------------------------------------------------------- Old: ---- jurand-1.3.1.tar.gz New: ---- jurand-1.3.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ jurand.spec ++++++ --- /var/tmp/diff_new_pack.OOMLol/_old 2023-12-15 21:48:01.203774793 +0100 +++ /var/tmp/diff_new_pack.OOMLol/_new 2023-12-15 21:48:01.207774940 +0100 @@ -22,7 +22,7 @@ %define with_gcc 11 %endif Name: jurand -Version: 1.3.1 +Version: 1.3.2 Release: 0 Summary: A tool for manipulating Java symbols License: Apache-2.0 @@ -30,7 +30,7 @@ URL: https://github.com/fedora-java/jurand Source0: https://github.com/fedora-java/jurand/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz Patch0: jurand-cxx20.patch -BuildRequires: asciidoc +BuildRequires: %{rb_default_ruby_suffix}-rubygem-asciidoctor BuildRequires: diffutils BuildRequires: make BuildRequires: xmlto @@ -76,5 +76,5 @@ %dir %{_rpmconfigdir} %dir %{_rpmmacrodir} %license LICENSE NOTICE -%doc README.md +%doc README.adoc ++++++ jurand-1.3.1.tar.gz -> jurand-1.3.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/.github/workflows/ci.yaml new/jurand-1.3.2/.github/workflows/ci.yaml --- old/jurand-1.3.1/.github/workflows/ci.yaml 2023-03-23 13:12:08.000000000 +0100 +++ new/jurand-1.3.2/.github/workflows/ci.yaml 2023-11-21 16:00:46.000000000 +0100 @@ -1,23 +1,33 @@ name: Continuous Integration on: push: - branches: [ main ] + branches: [main] pull_request: - branches: [ main ] + branches: [main] workflow_dispatch: jobs: build: runs-on: ubuntu-latest - container: registry.access.redhat.com/ubi8:latest + container: quay.io/centos/centos:stream9 env: CXX: g++ - CXXFLAGS: -D_GLIBCXX_ASSERTIONS -D_GLIBCXX_DEBUG -pthread # -fsanitize=address,undefined - LDFLAGS: -pthread # -fsanitize=address,undefined + CXXFLAGS: -D_GLIBCXX_ASSERTIONS -D_GLIBCXX_DEBUG -pthread -fsanitize=address,undefined + LDFLAGS: -pthread -fsanitize=address,undefined steps: - name: Checkout git repository uses: actions/checkout@v3 - name: Install dependencies - run: dnf -y install diffutils gcc-toolset-12-gcc-c++ make # libasan libubsan + run: | + echo "[buildroot] + name=CentOS Stream $releasever - Buildroot + baseurl=https://kojihub.stream.centos.org/kojifiles/repos/c9s-build/latest/x86_64 + enabled=1 + gpgcheck=0 + repo_gpgcheck=0" >> /etc/yum.repos.d/centos.repo + + dnf -y install diffutils gcc-toolset-12-gcc-c++ gcc-toolset-12-libasan-devel gcc-toolset-12-libubsan-devel make rubygem-asciidoctor + - name: Build manpages + run: make -j8 manpages - name: Compile run: | source /opt/rh/gcc-toolset-12/enable diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/Makefile new/jurand-1.3.2/Makefile --- old/jurand-1.3.1/Makefile 2023-03-23 13:12:08.000000000 +0100 +++ new/jurand-1.3.2/Makefile 2023-11-21 16:00:46.000000000 +0100 @@ -1,28 +1,22 @@ include rules.mk -.PHONY: force all clean test-compile test manpages +.PHONY: force all clean test-compile test coverage manpages +.DEFAULT_GOAL = all -all: $(call Executable_file,jurand) +CXXFLAGS += -g -std=c++2a -Isrc -Wall -Wextra -Wpedantic -clean: - @rm -rfv target +all: $(call Executable_file,jurand) test-compile: $(call Executable_file,jurand) $(call Executable_file,jurand_test) test: test.sh test-compile @./$< -CXXFLAGS += -g -std=c++2a -Isrc -Wall -Wextra -Wpedantic - -$(eval $(call Variable_rule,target/compile_flags,$(CXX) $(CXXFLAGS))) -$(eval $(call Variable_rule,target/link_flags,$(CXX) $(LDFLAGS) $(LDLIBS))) - -$(eval $(call Executable_file_rule,jurand,jurand.cpp)) -$(eval $(call Executable_file_rule,jurand_test,jurand_test.cpp)) - -$(eval $(call Manpage_rule,java_remove_annotations)) -$(eval $(call Manpage_rule,java_remove_imports)) +$(call Executable_file,jurand): $(call Object_file,jurand.cpp) +$(call Executable_file,jurand_test): $(call Object_file,jurand_test.cpp) -manpages: $(manpages) +manpages: \ + $(call Manpage_7,java_remove_annotations)\ + $(call Manpage_7,java_remove_imports)\ -include target/dependencies/*.mk diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/README.adoc new/jurand-1.3.2/README.adoc --- old/jurand-1.3.1/README.adoc 1970-01-01 01:00:00.000000000 +0100 +++ new/jurand-1.3.2/README.adoc 2023-11-21 16:00:46.000000000 +0100 @@ -0,0 +1,54 @@ += Jurand -- Java removal of annotations + +A tool for manipulating symbols present in `.java` source files. + +The tool can be used for patching `.java` sources in cases where using `sed` is insufficient due to Java language syntax. The tool follows Java language rules rather than applying simple regular expressions on the source code. + +Currently the tool is able to remove `import` statements and annotations. + +== Usage +---- +jurand [optional flags] <matcher>... [file path]... +---- + +Matcher:: +[horizontal] +`-n <name>`::: Simple (not fully-qualified) class name. +`-p <pattern>`::: Regex pattern to match names used in code. +[horizontal!] + +Optional flags:: +[horizontal] +`-a`::: Also remove annotations used in code. +`-i`, `--in-place`::: Replace the contents of files. +`-s`, `--strict`::: +Fail if any of the specified options was redundant and no changes associated + +with the option were made. This option is only applicable together with `-i`. +[horizontal!] + +== Specification +The tool removes import statements of specified matching class names and if `-a` is specified then also removes annotations. Arguments can be specified in arbitrary order. + +File path arguments are handled the following way: + +* Symlinks are ignored +* Regular files are handled regardless of the file name +* Directories are traversed recursively and all `.java` files are handled + +If no file path is provided then the tool reads from the standard input. + +Class name matching can be done in two ways: `-n` to match simple class names or `-p` to match the provided regex pattern against fully qualified names as present in the sources. These options can be specified multiple times. + +The specific implementation of the regex search engine is subject to change. Therefore only simple patterns should be used to guarantee that they will work with future versions. + +The tool writes the results to standard output unless `-i` option is specified in which case it will replace the original files' content. + +=== Strict mode +Additionally, when doing in-place modifications, it is possible to also specify `-s` or `--strict` which will cause the tool invocation to fail in the following cases: + +* No changes were made to any of the user-provided file or directory subtree +* One of the matchers did not match anything +* `-a` was specified but no annotation was removed + +== Note +Unicode literals (`\uXXXX`) are currently not recognized. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/README.md new/jurand-1.3.2/README.md --- old/jurand-1.3.1/README.md 2023-03-23 13:12:08.000000000 +0100 +++ new/jurand-1.3.2/README.md 1970-01-01 01:00:00.000000000 +0100 @@ -1,62 +0,0 @@ -# Jurand -- Java removal of annotations - -A tool for manipulating symbols present in `.java` source files. - -The tool can be used for patching `.java` sources in cases where using `sed` is -insufficient due to Java language syntax. The tool follows Java language rules -rather than applying simple regular expressions on the source code. - -Currently the tool is able to remove `import` statements and annotations. - -## Usage - -``` -jurand [optional flags] <matcher>... [file path]... - Matcher: - -n <name> - simple (not fully-qualified) class name - -p <pattern> - regex pattern to match names used in code - - Optional flags: - -a also remove annotations used in code - -i, --in-place - replace the contents of files - -s, --strict - (wih -i only) fail if any of the specified options was redundant - and no changes associated with the option were made -``` - -The tool removes import statements of specified matching class names and if -**`-a`** is specified then also removes annotations. Arguments can be specified -in arbitrary order. - -File path arguments are handled the following way: - -* Symlinks are ignored -* Regular files are handled regardless of the file name -* Directories are traversed recursively and all `.java` files are handled - -If no file path is provided then the tool reads from the standard input. - -Class name matching can be done two ways: **`-n`** to match simple class names -or **`-p`** to match the fully qualified name (if at all present in that form in -the sources) against the provided regex pattern. These options can be specified -multiple times. - -The specific implementation of the regex search engine is subject to change. -Therefore only simple patterns should be used to guarantee that they will work -with future versions. - -The tool writes the results to standard output unless **`-i`** option is -specified in which case it will replace the original files' content. - -Additionally, when doing in-place modifications, it is possible to also specify -**`-s`** or **`--strict`** which will cause the tool invocation to fail in the -following cases: - -* No changes were made to any of the user-provided file or directory subtree -* One of the matchers did not match anything -* **`-a`** was specified but no annotation was removed - -Unicode literals (`\uXXXX`) are currently not recognized. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/manpages/java_remove_annotations.adoc new/jurand-1.3.2/manpages/java_remove_annotations.adoc --- old/jurand-1.3.1/manpages/java_remove_annotations.adoc 1970-01-01 01:00:00.000000000 +0100 +++ new/jurand-1.3.2/manpages/java_remove_annotations.adoc 2023-11-21 16:00:46.000000000 +0100 @@ -0,0 +1,76 @@ += java_remove_annotations(7) +:doctype: manpage +:man source: JURAND +:man manual: Jurand + +== NAME +java_remove_annotations - remove imports and annotations from Java source files + +== SYNOPSIS +*%java_remove_annotations* [optional flags] <matcher>... [file path]... + +== DESCRIPTION +This macro removes import statements as well as usage of annotations from Java source files. The does the same as *java_remove_imports* and on top of that finds all uses of annotations and matches the content between the '@' symbol and either ending with whitespace or with an opening parethesis '(' (the annotation arguments). + +In case of match, the script also removes the block of paretheses that follows the matched annotation, if it is present. + +File path arguments are handled the following way: + +* Symlinks are ignored. +* Regular files are handled regardless of the file name. +* Directories are traversed recursively and all `.java` files are handled. + +Arguments can be specified in arbitrary order. + +Matcher is one of: + +*-n <name>*:: +Simple class name to be matched against the simple names of imported symbols. Names are matched for exact equality. Can be specified multiple times. + +*-p <pattern>*:: +Regex patterns to be matched against imported symbols. Each imported symbol found in the code is matched against each pattern. Can be specified multiple times. + +Optional flags: + +*-s, --strict*:: +Fail if any of the user provided arguments were redundant. + +== EXAMPLES +Example of usage in a *.spec* file: + +*%java_remove_annotations src -n Nullable* + +Examples of patterns: + +- Annotations present in Java source file: + + 1) @SuppressWarnings + 2) @SuppressFBWarnings(value = {"EI_EXPOSE_REP", "EI_EXPOSE_REP2"}) + 3) @org.junit.Test + 4) @org.junit.jupiter.api.Test + +- Names used to match: + + Name 'SuppressWarnings' matches 1) + Name 'Test' matches 3), 4). + + Name 'junit' does not match anything. + +- Patterns used to match: + + Pattern 'SuppressWarnings' matches 1). + Pattern 'Suppress' matches 1), 2). + Pattern 'org[.]junit[.]Test' matches 3). + Pattern 'junit' matches 3), 4). + + Pattern '@SuppressWarnings' does not match anything. + Pattern 'EI_EXPOSE_REP' does not match anything. + +== REPORTING BUGS +Bugs should be reported through the issue tracker at GitHub: https://github.com/fedora-java/jurand/issues. + +== AUTHOR +Written by Marián KonÄek. + +== SEE ALSO +*java_remove_imports*(7). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/manpages/java_remove_annotations.txt new/jurand-1.3.2/manpages/java_remove_annotations.txt --- old/jurand-1.3.1/manpages/java_remove_annotations.txt 2023-03-23 13:12:08.000000000 +0100 +++ new/jurand-1.3.2/manpages/java_remove_annotations.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,92 +0,0 @@ -java_remove_annotations(7) -========================== -:doctype: manpage -:man source: JURAND -:man manual: Jurand - -NAME ----- -java_remove_annotations - remove imports and annotations from Java source files - -SYNOPSIS --------- -*%java_remove_annotations* [optional flags] <matcher>... [file path]... - -DESCRIPTION ------------ -This macro removes import statements as well as usage of annotations from Java -source files. The does the same as *java_remove_imports* and on top of that -finds all uses of annotations and matches the content between the '@' symbol and -either ending with whitespace or with an opening parethesis '('. - -In case of match, the script also removes the block of paretheses that follows -the matched annotation, if it is present. - -File path arguments are handled the following way: - -* Symlinks are ignored -* Regular files are handled regardless of the file name -* Directories are traversed recursively and all `.java` files are handled - -Arguments can be specified in arbitrary order. - -Matcher is one of: - -*-n <name>*:: -Simple class name to be matched against the simple names of imported symbols. -Names are matched for exact equality. Can be specified multiple times. - -*-p <pattern>*:: -Regex patterns to be matched against imported symbols. Each imported symbol -found in the code is matched against each pattern. Can be specified multiple -times. - -Optional flags: - -*-s, --strict*:: -Fail if any of the user provided arguments were redundant. - -EXAMPLES --------- -Example of usage: - -*%java_remove_annotations src -n Nullable* - -Examples of patterns: - -- Annotations present in Java source file: - - 1) @SuppressWarnings - 2) @SuppressFBWarnings(value = {"EI_EXPOSE_REP", "EI_EXPOSE_REP2"}) - 3) @org.junit.Test - 4) @org.junit.jupiter.api.Test - -- Names used to match: - - Name 'SuppressWarnings' matches 1) - Name 'Test' matches 3), 4). - - Name 'junit' does not match anything. - -- Patterns used to match: - - Pattern 'SuppressWarnings' matches 1). - Pattern 'Suppress' matches 1), 2). - Pattern 'org[.]junit[.]Test' matches 3). - Pattern 'junit' matches 3), 4). - - Pattern '@SuppressWarnings' does not match anything. - Pattern 'EI_EXPOSE_REP' does not match anything. - -AUTHOR ------- -Written by Marián KonÄek. - -REPORTING BUGS --------------- -Bugs should be reported through the issue tracker at -GitHub: https://github.com/fedora-java/jurand/issues. - -SEE ALSO --------- -*java_remove_imports*(7). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/manpages/java_remove_imports.adoc new/jurand-1.3.2/manpages/java_remove_imports.adoc --- old/jurand-1.3.1/manpages/java_remove_imports.adoc 1970-01-01 01:00:00.000000000 +0100 +++ new/jurand-1.3.2/manpages/java_remove_imports.adoc 2023-11-21 16:00:46.000000000 +0100 @@ -0,0 +1,77 @@ += java_remove_imports(7) +:doctype: manpage +:man source: JURAND +:man manual: Jurand + +== NAME +java_remove_imports - remove import statements from Java source files + +== SYNOPSIS +*%java_remove_imports* [optional flags] <matcher>... [file path]... + +== DESCRIPTION +This macro removes import statements from Java source files. The script matches all non-whitespace content following the 'import [static]' statement against all patterns provided via the *-p* flag and all simple class names against names provided by the *-n* flag. + +File path arguments are handled the following way: + +* Symlinks are ignored. +* Regular files are handled regardless of the file name. +* Directories are traversed recursively and all `.java` files are handled. + +Arguments can be specified in arbitrary order. + +Matcher is one of: + +*-n <name>*:: +Simple class name to be matched against the simple names of imported symbols. Names are matched for exact equality. Can be specified multiple times. + +*-p <pattern>*:: +Regex patterns to be matched against imported symbols. Each imported symbol found in the code is matched against each pattern. Can be specified multiple times. + +Optional flags: + +*-s, --strict*:: +Fail if any of the user provided arguments were redundant. + +== EXAMPLES +Example of usage in a *.spec* file: + +*%java_remove_imports src -n Nullable* + +Examples of patterns: + +- Import statements present in Java source file: + + 1) import java.lang.Runnable; + 2) import java.util.List; + 3) import static java.util.*; + 4) import static java.lang.String.valueOf; + 5) import com.google.common.util.concurrent.Service; + +- Names used to match: + + Name 'Runnable' matches 1) + Name 'String' matches 4) + + Name 'util' does not match anything. + Name '*' does not match anything. + Name 'valueOf' does not match anything. + +- Patterns used to match: + + Pattern 'Runnable' matches 1). + Pattern '[*]' matches 3). + Pattern 'java[.]util' matches 2), 3). + Pattern 'util' matches 2), 3), 5). + Patterns 'java', 'java.*' match 1) - 4). + + Pattern 'static' does not match anything. + +== REPORTING BUGS +Bugs should be reported through the issue tracker at GitHub: https://github.com/fedora-java/jurand/issues. + +== AUTHOR +Written by Marián KonÄek. + +== SEE ALSO +*java_remove_annotations*(7). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/manpages/java_remove_imports.txt new/jurand-1.3.2/manpages/java_remove_imports.txt --- old/jurand-1.3.1/manpages/java_remove_imports.txt 2023-03-23 13:12:08.000000000 +0100 +++ new/jurand-1.3.2/manpages/java_remove_imports.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,92 +0,0 @@ -java_remove_imports(7) -====================== -:doctype: manpage -:man source: JURAND -:man manual: Jurand - -NAME ----- -java_remove_imports - remove import statements from Java source files - -SYNOPSIS --------- -*%java_remove_imports* [optional flags] <matcher>... [file path]... - -DESCRIPTION ------------ -This macro removes import statements from Java source files. The script matches -all non-whitespace content following the 'import [static]' statement against all -patterns provided via the *-p* flag and all simple class names against names -provided by the *-n* flag. - -File path arguments are handled the following way: - -* Symlinks are ignored -* Regular files are handled regardless of the file name -* Directories are traversed recursively and all `.java` files are handled - -Arguments can be specified in arbitrary order. - -Matcher is one of: - -*-n <name>*:: -Simple class name to be matched against the simple names of imported symbols. -Names are matched for exact equality. Can be specified multiple times. - -*-p <pattern>*:: -Regex patterns to be matched against imported symbols. Each imported symbol -found in the code is matched against each pattern. Can be specified multiple -times. - -Optional flags: - -*-s, --strict*:: -Fail if any of the user provided arguments were redundant. - -EXAMPLES --------- -Example of usage: - -*%java_remove_imports src -n Nullable* - -Examples of patterns: - -- Import statements present in Java source file: - - 1) import java.lang.Runnable; - 2) import java.util.List; - 3) import static java.util.*; - 4) import static java.lang.String.valueOf; - 5) import com.google.common.util.concurrent.Service; - -- Names used to match: - - Name 'Runnable' matches 1) - Name 'String' matches 4) - - Name 'util' does not match anything. - Name '*' does not match anything. - Name 'valueOf' does not match anything. - -- Patterns used to match: - - Pattern 'Runnable' matches 1). - Pattern '[*]' matches 3). - Pattern 'java[.]util' matches 2), 3). - Pattern 'util' matches 2), 3), 5). - Patterns 'java', 'java.*' match 1) - 4). - - Pattern 'static' does not match anything. - -AUTHOR ------- -Written by Marián KonÄek. - -REPORTING BUGS --------------- -Bugs should be reported through the issue tracker at -GitHub: https://github.com/fedora-java/jurand/issues. - -SEE ALSO --------- -*java_remove_annotations*(7). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/rules.mk new/jurand-1.3.2/rules.mk --- old/jurand-1.3.1/rules.mk 2023-03-23 13:12:08.000000000 +0100 +++ new/jurand-1.3.2/rules.mk 2023-11-21 16:00:46.000000000 +0100 @@ -1,47 +1,36 @@ -define Dependency_file -$(addprefix target/dependencies/,$(addsuffix .mk,$(subst /,.,$(basename $(1))))) -endef +MAKEFLAGS += -r -define Object_file -$(addprefix target/object_files/,$(addsuffix .o,$(subst /,.,$(basename $(1))))) -endef +Dependency_file = $(addprefix target/dependencies/,$(addsuffix .mk,$(subst /,.,$(basename $(1))))) +Object_file = $(addprefix target/object_files/,$(addsuffix .o,$(subst /,.,$(basename $(1))))) +Executable_file = $(addprefix target/bin/,$(addsuffix ,$(subst /,.,$(basename $(1))))) +Manpage_7 = $(addprefix target/manpages/,$(addsuffix .7,$(1))) -define Executable_file -$(addprefix target/bin/,$(addsuffix ,$(subst /,.,$(basename $(1))))) -endef +clean: + @rm -rfv target + +target target/object_files target/dependencies target/bin target/coverage target/manpages: + @mkdir -p $@ define Variable_rule # target_file, string_value -$(1): force - @mkdir -p $$(dir $$@) +$(1): force | target @echo '$(2)' | cmp -s - $$@ || echo '$(2)' > $$@ endef -define Manpage_rule # source_file -target/manpages/$(1).xml: manpages/$(1).txt - @mkdir -p $$(dir $$@) - asciidoc -b docbook -d manpage -o $$@ $$< - -target/manpages/$(1).7: target/manpages/$(1).xml - xmlto man --skip-validation -o target/manpages target/manpages/$(1).xml -manpages += target/manpages/$(1).7 -endef +$(eval $(call Variable_rule,target/compile_flags,$$(CXX) $$(CXXFLAGS))) +$(eval $(call Variable_rule,target/link_flags,$$(CXX) $$(LDFLAGS) $$(LDLIBS))) -define Dependency_file_rule # source_file -$(call Dependency_file,$(1)): src/$(1) - @mkdir -p $$(dir $$@) - $$(CXX) $$(CXXFLAGS) -MM -MG -MMD -MP -MF $$@ -MT $(call Object_file,$(1)) -o /dev/null $$< -endef - -define Object_file_rule # source_file -$(call Dependency_file_rule,$(1)) -$(call Object_file,$(1)): $(call Dependency_file,$(1)) target/compile_flags - @mkdir -p $$(dir $$@) - $$(CXX) $$(CXXFLAGS) -MMD -MP -MF $$< -MT $$@ -c -o $$@ $(addprefix src/,$(1)) -endef +target/manpages/%.7: manpages/%.adoc + asciidoctor -b manpage -D target/manpages $< -define Executable_file_rule # executable_name, source_file, object_files... -$(call Object_file_rule,$(2)) -$(call Executable_file,$(1)): target/link_flags $(call Object_file,$(2)) $(call Object_file,$(3)) - @mkdir -p $$(dir $$@) - $$(CXX) -o $$@ $$(LDFLAGS) $$(wordlist 2,$$(words $$^),$$^) $$(LDLIBS) -endef +# $(call Object_file,%) $(call Dependency_file,%)&: src/%.cpp target/compile_flags | target/object_files target/dependencies +$(call Object_file,%): src/%.cpp target/compile_flags | target/object_files target/dependencies + $(CXX) $(CXXFLAGS) -MMD -MP -MF $(call Dependency_file,$(<F)) -MT $(call Object_file,$(<F)) -c -o $(call Object_file,$(<F)) $(addprefix src/,$(<F)) + +$(call Executable_file,%): target/link_flags | target/bin + $(CXX) -o $@ $(LDFLAGS) $(wordlist 2,$(words $^),$^) $(LDLIBS) + +coverage: CXXFLAGS += --coverage -fno-elide-constructors -fno-default-inline +coverage: LDFLAGS += --coverage +coverage: test | target/coverage + @lcov --output-file target/coverage.info --directory target/object_files --capture --exclude '/usr/include/*' + @genhtml -o target/coverage target/coverage.info diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/src/java_symbols.hpp new/jurand-1.3.2/src/java_symbols.hpp --- old/jurand-1.3.1/src/java_symbols.hpp 2023-03-23 13:12:08.000000000 +0100 +++ new/jurand-1.3.2/src/java_symbols.hpp 2023-11-21 16:00:46.000000000 +0100 @@ -337,6 +337,12 @@ while (not symbol.empty()) { + // catch `@A ...` + if (symbol == "." and content.substr(new_end_pos).starts_with("..")) + { + break; + } + if (expecting_dot and symbol != ".") { if (symbol == "(") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/src/jurand_test.cpp new/jurand-1.3.2/src/jurand_test.cpp --- old/jurand-1.3.1/src/jurand_test.cpp 2023-03-23 13:12:08.000000000 +0100 +++ new/jurand-1.3.2/src/jurand_test.cpp 2023-11-21 16:00:46.000000000 +0100 @@ -308,5 +308,5 @@ patterns.clear(); } - std::cout << "Unit tests PASSED" << "\n"; + std::cout << "[PASS] Unit tests" << "\n"; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/test.sh new/jurand-1.3.2/test.sh --- old/jurand-1.3.1/test.sh 2023-03-23 13:12:08.000000000 +0100 +++ new/jurand-1.3.2/test.sh 2023-11-21 16:00:46.000000000 +0100 @@ -36,45 +36,71 @@ # Tests for simple invocations and return codes if ! ./target/bin/jurand | grep 'Usage:'; then - echo "fail: Usage string not printed" + echo "[FAIL] Usage string not printed" exit 1 fi if ! ./target/bin/jurand -h | grep 'Usage:'; then - echo "fail: Usage string not printed" + echo "[FAIL] Usage string not printed" exit 1 fi if ./target/bin/jurand -i; then - echo "fail: should have failed" + echo "[FAIL] Should have failed" + exit 1 +fi + +if ./target/bin/jurand -i -n 'D'; then + echo "[FAIL] Should have failed" exit 1 fi if ./target/bin/jurand -n; then - echo "fail: should have failed" + echo "[FAIL] Should have failed" exit 1 fi if ./target/bin/jurand -p; then - echo "fail: should have failed" + echo "[FAIL] Should have failed" exit 1 fi if ./target/bin/jurand nonexisting_file -n "A"; then - echo "fail: should have failed" + echo "[FAIL] Should have failed" exit 1 fi if [ -n "$(echo "import A;" | ./target/bin/jurand -n "A")" ]; then - echo "fail: output should be empty" + echo "[FAIL] Output should be empty" exit 1 fi if [ "$(echo "import A;" | ./target/bin/jurand -n "B")" != "import A;" ]; then - echo "fail: output should be identical to input" + echo "[FAIL] Output should be identical to input" exit 1 fi +{ + cp "test_resources/Simple.java" "target/test_resources/Simple.java" + + if ! ./target/bin/jurand -a -n 'D' "target/test_resources/Simple.java" | grep "target/test_resources/Simple.java"; then + echo "[FAIL] Should have printed the file name" + exit 1 + fi + + rm -f "target/test_resources/Simple.java" +} +{ + cp -r "test_resources/directory/resources" -t "target/test_resources" + + if ./target/bin/jurand -i -n 'D' "target/test_resources/resources"; then + echo "[FAIL] Should have failed" + exit 1 + fi + + rm -rf "target/test_resources/resources" +} + ################################################################################ # Tests for actual matching and removal @@ -118,6 +144,12 @@ test_file "Regression5.java" "Regression5.1.java" -a -n Serial +test_file "Array.java" "Array.1.java" -a -n C +test_file "Array.java" "Array.2.java" -a -n D +test_file "Array.java" "Array.3.java" -a -n E +test_file "Array.java" "Array.4.java" -a -n F +test_file "Array.java" "Array.5.java" -a -n C -n D -n E -n F + ################################################################################ # Tests for tool termination on invalid sources, result is irrelevant @@ -127,6 +159,8 @@ run_tool "Termination.4.java" -a -n "C" || : run_tool "Termination.5.java" -a -n "C" || : run_tool "Termination.6.java" -a -n "C" || : +run_tool "Termination.7.java" -a -n "C" || : +run_tool "Termination.8.java" -a -n "C" || : ################################################################################ # Tests of directory traversal @@ -139,6 +173,9 @@ ################################################################################ # Tests of strict mode +# Succesful for coverage +test_file "Simple.java" "Simple.1.java" -a -s -n "D" + # Nothing was matched/removed test_strict "Strict.1.java" "Strict.1.java" -p "z" test_strict "Strict.1.java" "Strict.1.java" -n "z" @@ -152,4 +189,4 @@ ################################################################################ -echo Tests PASSED +echo "[PASS] Integration tests" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/test_resources/Array.1.java new/jurand-1.3.2/test_resources/Array.1.java --- old/jurand-1.3.1/test_resources/Array.1.java 1970-01-01 01:00:00.000000000 +0100 +++ new/jurand-1.3.2/test_resources/Array.1.java 2023-11-21 16:00:46.000000000 +0100 @@ -0,0 +1,11 @@ +import A.B.D; +import A.B.E; +import A.B.F; + +interface Array { + void a(Object @D ... objects); + void b(Object @D[] objects); + Object @D[] c(Object @D ... objects); + Object @D[] d(@E Object @F[] objects); + Object [] e(Object [] objects); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/test_resources/Array.2.java new/jurand-1.3.2/test_resources/Array.2.java --- old/jurand-1.3.1/test_resources/Array.2.java 1970-01-01 01:00:00.000000000 +0100 +++ new/jurand-1.3.2/test_resources/Array.2.java 2023-11-21 16:00:46.000000000 +0100 @@ -0,0 +1,11 @@ +import A.B.C; +import A.B.E; +import A.B.F; + +interface Array { + void a(@C Object ... objects); + void b(@C Object [] objects); + @C Object [] c(@C Object ... objects); + @C Object [] d(@E Object @F[] objects); + @C Object @C[] e(@C Object @C[] objects); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/test_resources/Array.3.java new/jurand-1.3.2/test_resources/Array.3.java --- old/jurand-1.3.1/test_resources/Array.3.java 1970-01-01 01:00:00.000000000 +0100 +++ new/jurand-1.3.2/test_resources/Array.3.java 2023-11-21 16:00:46.000000000 +0100 @@ -0,0 +1,11 @@ +import A.B.C; +import A.B.D; +import A.B.F; + +interface Array { + void a(@C Object @D ... objects); + void b(@C Object @D[] objects); + @C Object @D[] c(@C Object @D ... objects); + @C Object @D[] d(Object @F[] objects); + @C Object @C[] e(@C Object @C[] objects); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/test_resources/Array.4.java new/jurand-1.3.2/test_resources/Array.4.java --- old/jurand-1.3.1/test_resources/Array.4.java 1970-01-01 01:00:00.000000000 +0100 +++ new/jurand-1.3.2/test_resources/Array.4.java 2023-11-21 16:00:46.000000000 +0100 @@ -0,0 +1,11 @@ +import A.B.C; +import A.B.D; +import A.B.E; + +interface Array { + void a(@C Object @D ... objects); + void b(@C Object @D[] objects); + @C Object @D[] c(@C Object @D ... objects); + @C Object @D[] d(@E Object [] objects); + @C Object @C[] e(@C Object @C[] objects); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/test_resources/Array.5.java new/jurand-1.3.2/test_resources/Array.5.java --- old/jurand-1.3.1/test_resources/Array.5.java 1970-01-01 01:00:00.000000000 +0100 +++ new/jurand-1.3.2/test_resources/Array.5.java 2023-11-21 16:00:46.000000000 +0100 @@ -0,0 +1,8 @@ + +interface Array { + void a(Object ... objects); + void b(Object [] objects); + Object [] c(Object ... objects); + Object [] d(Object [] objects); + Object [] e(Object [] objects); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/test_resources/Array.java new/jurand-1.3.2/test_resources/Array.java --- old/jurand-1.3.1/test_resources/Array.java 1970-01-01 01:00:00.000000000 +0100 +++ new/jurand-1.3.2/test_resources/Array.java 2023-11-21 16:00:46.000000000 +0100 @@ -0,0 +1,12 @@ +import A.B.C; +import A.B.D; +import A.B.E; +import A.B.F; + +interface Array { + void a(@C Object @D ... objects); + void b(@C Object @D[] objects); + @C Object @D[] c(@C Object @D ... objects); + @C Object @D[] d(@E Object @F[] objects); + @C Object @C[] e(@C Object @C[] objects); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/test_resources/Termination.7.java new/jurand-1.3.2/test_resources/Termination.7.java --- old/jurand-1.3.1/test_resources/Termination.7.java 1970-01-01 01:00:00.000000000 +0100 +++ new/jurand-1.3.2/test_resources/Termination.7.java 2023-11-21 16:00:46.000000000 +0100 @@ -0,0 +1,19 @@ +// Regression test for issue #5 +// See https://github.com/fedora-java/jurand/issues/5 +import java.io.Serial; + +class MyClass { + @Serial + int foo; +} + +@interface MyAnnotation { + @Serial + int foo = 0; + /* +} + +class MyOtherClass { + @Serial + int foo; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/test_resources/Termination.8.java new/jurand-1.3.2/test_resources/Termination.8.java --- old/jurand-1.3.1/test_resources/Termination.8.java 1970-01-01 01:00:00.000000000 +0100 +++ new/jurand-1.3.2/test_resources/Termination.8.java 2023-11-21 16:00:46.000000000 +0100 @@ -0,0 +1,5 @@ +import a.b.c.D; + +@D(value = "@D" +class Attributes { +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jurand-1.3.1/test_resources/directory/resources/empty new/jurand-1.3.2/test_resources/directory/resources/empty --- old/jurand-1.3.1/test_resources/directory/resources/empty 1970-01-01 01:00:00.000000000 +0100 +++ new/jurand-1.3.2/test_resources/directory/resources/empty 2023-11-21 16:00:46.000000000 +0100 @@ -0,0 +1 @@ + ++++++ jurand-cxx20.patch ++++++ --- /var/tmp/diff_new_pack.OOMLol/_old 2023-12-15 21:48:01.275777425 +0100 +++ /var/tmp/diff_new_pack.OOMLol/_new 2023-12-15 21:48:01.279777571 +0100 @@ -1,20 +1,20 @@ -diff -urEbwB jurand-1.3.1.orig/Makefile jurand-1.3.1/Makefile ---- jurand-1.3.1.orig/Makefile 2023-09-27 07:17:18.384159160 +0200 -+++ jurand-1.3.1/Makefile 2023-09-27 08:55:18.229794175 +0200 -@@ -12,7 +12,8 @@ +diff -auNr jurand-1.3.2-orig/Makefile jurand-1.3.2/Makefile +--- jurand-1.3.2-orig/Makefile 2023-12-14 16:27:32.535474016 +0800 ++++ jurand-1.3.2/Makefile 2023-12-14 16:28:45.112770530 +0800 +@@ -12,6 +12,9 @@ test: test.sh test-compile @./$< --CXXFLAGS += -g -std=c++2a -Isrc -Wall -Wextra -Wpedantic +CXXFLAGS += -g -std=gnu++2a -Isrc -Wall -Wextra -Wpedantic -D_GLIBCXX_USE_CXX11_ABI=1 +LDFLAGS += -pthread ++ + $(call Executable_file,jurand): $(call Object_file,jurand.cpp) + $(call Executable_file,jurand_test): $(call Object_file,jurand_test.cpp) - $(eval $(call Variable_rule,target/compile_flags,$(CXX) $(CXXFLAGS))) - $(eval $(call Variable_rule,target/link_flags,$(CXX) $(LDFLAGS) $(LDLIBS))) -diff -urEbwB jurand-1.3.1.orig/src/java_symbols.hpp jurand-1.3.1/src/java_symbols.hpp ---- jurand-1.3.1.orig/src/java_symbols.hpp 2023-09-27 07:17:18.384159160 +0200 -+++ jurand-1.3.1/src/java_symbols.hpp 2023-09-27 08:42:56.218651442 +0200 -@@ -630,14 +630,14 @@ +diff -auNr jurand-1.3.2-orig/src/java_symbols.hpp jurand-1.3.2/src/java_symbols.hpp +--- jurand-1.3.2-orig/src/java_symbols.hpp 2023-12-14 16:27:32.535474016 +0800 ++++ jurand-1.3.2/src/java_symbols.hpp 2023-12-14 16:30:01.613434431 +0800 +@@ -636,14 +636,14 @@ if (not parameters.in_place_) {