From e55db9247ea756c935da8821ec09cd992ff1c75b Mon Sep 17 00:00:00 2001 From: Alex Goodman Date: Tue, 7 Jul 2020 18:04:27 -0400 Subject: [PATCH 1/6] add java cataloger --- .circleci/config.yml | 37 ++- .gitignore | 7 +- .golangci.yaml | 5 - Makefile | 5 +- .../cataloger/bundler/parse_gemfile_lock.go | 2 +- .../bundler/parse_gemfile_lock_test.go | 2 +- imgbom/cataloger/common/generic_cataloger.go | 2 +- .../common/generic_cataloger_test.go | 2 +- imgbom/cataloger/common/parser.go | 4 +- imgbom/cataloger/controller.go | 2 + imgbom/cataloger/dpkg/parse_dpkg_status.go | 2 +- .../cataloger/dpkg/parse_dpkg_status_test.go | 2 +- imgbom/cataloger/java/archive_filename.go | 90 ++++++ .../cataloger/java/archive_filename_test.go | 87 ++++++ imgbom/cataloger/java/cataloger.go | 38 +++ imgbom/cataloger/java/java_manifest.go | 101 +++++++ imgbom/cataloger/java/java_manifest_test.go | 77 +++++ imgbom/cataloger/java/parse_java_archive.go | 136 +++++++++ .../cataloger/java/parse_java_archive_test.go | 202 +++++++++++++ imgbom/cataloger/java/pom_properties.go | 48 ++++ imgbom/cataloger/java/pom_properties_test.go | 68 +++++ imgbom/cataloger/java/save_archive_to_tmp.go | 45 +++ .../cataloger/java/test-fixtures/.gitignore | 3 + imgbom/cataloger/java/test-fixtures/Makefile | 35 +++ .../java/test-fixtures/example-app/.gitignore | 6 + .../test-fixtures/example-app/build.gradle | 31 ++ .../java/test-fixtures/example-app/pom.xml | 59 ++++ .../src/main/java/hello/Greeter.java | 7 + .../src/main/java/hello/HelloWorld.java | 13 + .../example-jenkins-plugin/pom.xml | 100 +++++++ .../plugins/sample/HelloWorldBuilder.java | 81 ++++++ .../src/main/resources/index.jelly | 4 + .../sample/HelloWorldBuilder/config.jelly | 12 + .../HelloWorldBuilder/config.properties | 3 + .../HelloWorldBuilder/config_de.properties | 3 + .../HelloWorldBuilder/config_es.properties | 3 + .../HelloWorldBuilder/config_fr.properties | 3 + .../HelloWorldBuilder/config_it.properties | 3 + .../HelloWorldBuilder/config_pt_BR.properties | 3 + .../HelloWorldBuilder/config_sv.properties | 3 + .../HelloWorldBuilder/config_tr.properties | 3 + .../HelloWorldBuilder/config_zh_CN.properties | 6 + .../sample/HelloWorldBuilder/help-name.html | 3 + .../HelloWorldBuilder/help-name_de.html | 3 + .../HelloWorldBuilder/help-name_es.html | 3 + .../HelloWorldBuilder/help-name_fr.html | 3 + .../HelloWorldBuilder/help-name_it.html | 3 + .../HelloWorldBuilder/help-name_pt_BR.html | 3 + .../HelloWorldBuilder/help-name_sv.html | 3 + .../HelloWorldBuilder/help-name_tr.html | 3 + .../HelloWorldBuilder/help-name_zh_CN.html | 5 + .../HelloWorldBuilder/help-useFrench.html | 3 + .../HelloWorldBuilder/help-useFrench_de.html | 3 + .../HelloWorldBuilder/help-useFrench_es.html | 3 + .../HelloWorldBuilder/help-useFrench_fr.html | 3 + .../HelloWorldBuilder/help-useFrench_it.html | 3 + .../help-useFrench_pt_BR.html | 3 + .../HelloWorldBuilder/help-useFrench_sv.html | 3 + .../HelloWorldBuilder/help-useFrench_tr.html | 3 + .../help-useFrench_zh_CN.html | 5 + .../plugins/sample/Messages.properties | 5 + .../plugins/sample/Messages_de.properties | 5 + .../plugins/sample/Messages_es.properties | 5 + .../plugins/sample/Messages_fr.properties | 5 + .../plugins/sample/Messages_it.properties | 5 + .../plugins/sample/Messages_pt_BR.properties | 5 + .../plugins/sample/Messages_sv.properties | 5 + .../plugins/sample/Messages_tr.properties | 5 + .../plugins/sample/Messages_zh_CN.properties | 8 + .../java/test-fixtures/manifest/extra-info | 8 + .../java/test-fixtures/manifest/small | 2 + .../java/test-fixtures/manifest/standard-info | 9 + .../test-fixtures/pom/extra.pom.properties | 8 + .../test-fixtures/pom/small.pom.properties | 5 + .../test-fixtures/run-example-app-gradle.sh | 18 ++ .../test-fixtures/run-example-app-maven.sh | 18 ++ .../run-example-jenkins-plugin-maven.sh | 19 ++ imgbom/cataloger/python/parse_wheel_egg.go | 4 +- .../cataloger/python/parse_wheel_egg_test.go | 4 +- imgbom/cataloger/rpmdb/parse_rpmdb.go | 2 +- imgbom/cataloger/rpmdb/parse_rpmdb_test.go | 2 +- imgbom/pkg/language.go | 6 +- imgbom/pkg/metadata.go | 27 ++ imgbom/pkg/package.go | 4 +- imgbom/pkg/type.go | 15 + imgbom/presenter/json/imgs/presenter.go | 1 + internal/file/glob_match.go | 45 +++ internal/file/glob_match_test.go | 39 +++ .../test-fixtures/generate-zip-fixture.sh | 4 + .../file/test-fixtures/zip-source/b-file.txt | 1 + .../zip-source/some-dir/a-file.txt | 1 + internal/file/ziputil.go | 190 +++++++++++++ internal/file/ziputil_test.go | 265 ++++++++++++++++++ internal/stringset.go | 16 +- internal/ui/etui/ephemeral_tui.go | 1 + 95 files changed, 2120 insertions(+), 45 deletions(-) create mode 100644 imgbom/cataloger/java/archive_filename.go create mode 100644 imgbom/cataloger/java/archive_filename_test.go create mode 100644 imgbom/cataloger/java/cataloger.go create mode 100644 imgbom/cataloger/java/java_manifest.go create mode 100644 imgbom/cataloger/java/java_manifest_test.go create mode 100644 imgbom/cataloger/java/parse_java_archive.go create mode 100644 imgbom/cataloger/java/parse_java_archive_test.go create mode 100644 imgbom/cataloger/java/pom_properties.go create mode 100644 imgbom/cataloger/java/pom_properties_test.go create mode 100644 imgbom/cataloger/java/save_archive_to_tmp.go create mode 100644 imgbom/cataloger/java/test-fixtures/.gitignore create mode 100644 imgbom/cataloger/java/test-fixtures/Makefile create mode 100644 imgbom/cataloger/java/test-fixtures/example-app/.gitignore create mode 100644 imgbom/cataloger/java/test-fixtures/example-app/build.gradle create mode 100644 imgbom/cataloger/java/test-fixtures/example-app/pom.xml create mode 100644 imgbom/cataloger/java/test-fixtures/example-app/src/main/java/hello/Greeter.java create mode 100644 imgbom/cataloger/java/test-fixtures/example-app/src/main/java/hello/HelloWorld.java create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/pom.xml create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/java/io/jenkins/plugins/sample/HelloWorldBuilder.java create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/index.jelly create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.jelly create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_de.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_es.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_fr.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_it.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_pt_BR.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_sv.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_tr.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_zh_CN.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_de.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_es.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_fr.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_it.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_pt_BR.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_sv.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_tr.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_zh_CN.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_de.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_es.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_fr.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_it.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_pt_BR.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_sv.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_tr.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_zh_CN.html create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_de.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_es.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_fr.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_it.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_pt_BR.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_sv.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_tr.properties create mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_zh_CN.properties create mode 100644 imgbom/cataloger/java/test-fixtures/manifest/extra-info create mode 100644 imgbom/cataloger/java/test-fixtures/manifest/small create mode 100644 imgbom/cataloger/java/test-fixtures/manifest/standard-info create mode 100644 imgbom/cataloger/java/test-fixtures/pom/extra.pom.properties create mode 100644 imgbom/cataloger/java/test-fixtures/pom/small.pom.properties create mode 100755 imgbom/cataloger/java/test-fixtures/run-example-app-gradle.sh create mode 100755 imgbom/cataloger/java/test-fixtures/run-example-app-maven.sh create mode 100755 imgbom/cataloger/java/test-fixtures/run-example-jenkins-plugin-maven.sh create mode 100644 internal/file/glob_match.go create mode 100644 internal/file/glob_match_test.go create mode 100755 internal/file/test-fixtures/generate-zip-fixture.sh create mode 100644 internal/file/test-fixtures/zip-source/b-file.txt create mode 100644 internal/file/test-fixtures/zip-source/some-dir/a-file.txt create mode 100644 internal/file/ziputil.go create mode 100644 internal/file/ziputil_test.go diff --git a/.circleci/config.yml b/.circleci/config.yml index 028e55014..75962e254 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -74,24 +74,37 @@ jobs: chmod 755 ${HOME}/.local/bin/docker - run: - name: run unit tests - command: make unit - - - run: - name: build hash key for tar cache - command: find integration/test-fixtures/image-* -type f -exec md5sum {} + | awk '{print $1}' | sort | md5sum | tee integration/test-fixtures/tar-cache.key + name: build cache key for java test-fixture blobs + command: | + cd imgbom/cataloger/java/test-fixtures &&\ + make packages.fingerprint - restore_cache: keys: - - integration-test-tar-cache-{{ checksum "integration/test-fixtures/tar-cache.key" }} + - unit-test-java-cache-{{ checksum "imgbom/cataloger/java/test-fixtures/packages.fingerprint" }} + - run: - name: run integration tests - command: | - docker version - make integration + name: run unit tests + command: make unit - save_cache: - key: integration-test-tar-cache-{{ checksum "integration/test-fixtures/tar-cache.key" }} + key: unit-test-java-cache-{{ checksum "imgbom/cataloger/java/test-fixtures/packages.fingerprint" }} + paths: + - "imgbom/cataloger/java/test-fixtures/packages" + + - run: + name: build hash key for integration test-fixtures blobs + command: make integration-fingerprint + + - restore_cache: + keys: + - integration-test-tar-cache-{{ checksum "integration/test-fixtures/tar-cache.fingerprint" }} + - run: + name: run integration tests + command: make integration + + - save_cache: + key: integration-test-tar-cache-{{ checksum "integration/test-fixtures/tar-cache.fingerprint" }} paths: - "integration/test-fixtures/tar-cache" diff --git a/.gitignore b/.gitignore index 393cfc0b8..3c0f71f0d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,11 @@ .vscode/ - *.tar +*.jar +*.war +*.ear +*.jpi +*.hpi +*.zip .idea/ *.log .images diff --git a/.golangci.yaml b/.golangci.yaml index 7f8a05a80..7247fb42f 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -1,8 +1,3 @@ -linters-settings: - funlen: - lines: 70 - gocognit: - min-complexity: 35 linters: # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint disable-all: true diff --git a/Makefile b/Makefile index 3cc7a8ed1..99b78b03c 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ RESET := $(shell tput -T linux sgr0) TITLE := $(BOLD)$(PURPLE) SUCCESS := $(BOLD)$(GREEN) # the quality gate lower threshold for unit test total % coverage (by function statements) -COVERAGE_THRESHOLD := 65 +COVERAGE_THRESHOLD := 70 ifndef TEMPDIR $(error TEMPDIR is not set) @@ -71,6 +71,9 @@ integration: ## Run integration tests $(call title,Running integration tests) go test -tags=integration ./integration +integration/test-fixtures/tar-cache.key, integration-fingerprint: + find integration/test-fixtures/image-* -type f -exec md5sum {} + | awk '{print $1}' | sort | md5sum | tee integration/test-fixtures/tar-cache.fingerprint + clear-test-cache: ## Delete all test cache (built docker image tars) find . -type f -wholename "**/test-fixtures/tar-cache/*.tar" -delete diff --git a/imgbom/cataloger/bundler/parse_gemfile_lock.go b/imgbom/cataloger/bundler/parse_gemfile_lock.go index 9921c4261..4064c3bb4 100644 --- a/imgbom/cataloger/bundler/parse_gemfile_lock.go +++ b/imgbom/cataloger/bundler/parse_gemfile_lock.go @@ -11,7 +11,7 @@ import ( var sectionsOfInterest = internal.NewStringSetFromSlice([]string{"GEM"}) -func parseGemfileLockEntries(reader io.Reader) ([]pkg.Package, error) { +func parseGemfileLockEntries(_ string, reader io.Reader) ([]pkg.Package, error) { pkgs := make([]pkg.Package, 0) scanner := bufio.NewScanner(reader) diff --git a/imgbom/cataloger/bundler/parse_gemfile_lock_test.go b/imgbom/cataloger/bundler/parse_gemfile_lock_test.go index 5eb10b73c..404ce3fad 100644 --- a/imgbom/cataloger/bundler/parse_gemfile_lock_test.go +++ b/imgbom/cataloger/bundler/parse_gemfile_lock_test.go @@ -67,7 +67,7 @@ func TestParseGemfileLockEntries(t *testing.T) { t.Fatalf("failed to open fixture: %+v", err) } - actual, err := parseGemfileLockEntries(fixture) + actual, err := parseGemfileLockEntries(fixture.Name(), fixture) if err != nil { t.Fatalf("failed to parse gemfile lock: %+v", err) } diff --git a/imgbom/cataloger/common/generic_cataloger.go b/imgbom/cataloger/common/generic_cataloger.go index 8365bb5e7..229a04673 100644 --- a/imgbom/cataloger/common/generic_cataloger.go +++ b/imgbom/cataloger/common/generic_cataloger.go @@ -82,7 +82,7 @@ func (a *GenericCataloger) Catalog(contents map[file.Reference]string, upstreamM continue } - entries, err := parser(strings.NewReader(content)) + entries, err := parser(string(reference.Path), strings.NewReader(content)) if err != nil { log.Errorf("cataloger '%s' failed to parse entries (reference=%+v): %w", upstreamMatcher, reference, err) continue diff --git a/imgbom/cataloger/common/generic_cataloger_test.go b/imgbom/cataloger/common/generic_cataloger_test.go index c155ac1d6..b797b0188 100644 --- a/imgbom/cataloger/common/generic_cataloger_test.go +++ b/imgbom/cataloger/common/generic_cataloger_test.go @@ -39,7 +39,7 @@ func (r *testResolver) FilesByGlob(patterns ...string) ([]file.Reference, error) return []file.Reference{ref}, nil } -func parser(reader io.Reader) ([]pkg.Package, error) { +func parser(_ string, reader io.Reader) ([]pkg.Package, error) { contents, err := ioutil.ReadAll(reader) if err != nil { panic(err) diff --git a/imgbom/cataloger/common/parser.go b/imgbom/cataloger/common/parser.go index 116a21376..83fa15084 100644 --- a/imgbom/cataloger/common/parser.go +++ b/imgbom/cataloger/common/parser.go @@ -6,5 +6,5 @@ import ( "github.com/anchore/imgbom/imgbom/pkg" ) -// ParserFn standardizes a function signature for parser functions that accept file contents and return any discovered packages from that file -type ParserFn func(io.Reader) ([]pkg.Package, error) +// ParserFn standardizes a function signature for parser functions that accept the virtual file path (not usable for file reads) and contents and return any discovered packages from that file +type ParserFn func(string, io.Reader) ([]pkg.Package, error) diff --git a/imgbom/cataloger/controller.go b/imgbom/cataloger/controller.go index efc51abb0..f96767460 100644 --- a/imgbom/cataloger/controller.go +++ b/imgbom/cataloger/controller.go @@ -3,6 +3,7 @@ package cataloger import ( "github.com/anchore/imgbom/imgbom/cataloger/bundler" "github.com/anchore/imgbom/imgbom/cataloger/dpkg" + "github.com/anchore/imgbom/imgbom/cataloger/java" "github.com/anchore/imgbom/imgbom/cataloger/python" "github.com/anchore/imgbom/imgbom/cataloger/rpmdb" "github.com/anchore/imgbom/imgbom/event" @@ -46,6 +47,7 @@ func newController() controller { ctrlr.add(bundler.NewCataloger()) ctrlr.add(python.NewCataloger()) ctrlr.add(rpmdb.NewCataloger()) + ctrlr.add(java.NewCataloger()) return ctrlr } diff --git a/imgbom/cataloger/dpkg/parse_dpkg_status.go b/imgbom/cataloger/dpkg/parse_dpkg_status.go index 4414ef56b..88873f5b0 100644 --- a/imgbom/cataloger/dpkg/parse_dpkg_status.go +++ b/imgbom/cataloger/dpkg/parse_dpkg_status.go @@ -12,7 +12,7 @@ import ( var errEndOfPackages = fmt.Errorf("no more packages to read") -func parseDpkgStatus(reader io.Reader) ([]pkg.Package, error) { +func parseDpkgStatus(_ string, reader io.Reader) ([]pkg.Package, error) { buffedReader := bufio.NewReader(reader) var packages = make([]pkg.Package, 0) diff --git a/imgbom/cataloger/dpkg/parse_dpkg_status_test.go b/imgbom/cataloger/dpkg/parse_dpkg_status_test.go index 6a2abc542..776f11811 100644 --- a/imgbom/cataloger/dpkg/parse_dpkg_status_test.go +++ b/imgbom/cataloger/dpkg/parse_dpkg_status_test.go @@ -90,7 +90,7 @@ func TestMultiplePackages(t *testing.T) { } }() - pkgs, err := parseDpkgStatus(file) + pkgs, err := parseDpkgStatus(file.Name(), file) if err != nil { t.Fatal("Unable to read file contents: ", err) } diff --git a/imgbom/cataloger/java/archive_filename.go b/imgbom/cataloger/java/archive_filename.go new file mode 100644 index 000000000..161096063 --- /dev/null +++ b/imgbom/cataloger/java/archive_filename.go @@ -0,0 +1,90 @@ +package java + +import ( + "path/filepath" + "regexp" + "strings" + + "github.com/anchore/imgbom/imgbom/pkg" +) + +// match examples: +// pkg-extra-field-4.3.2-rc1 --> match(name=pkg-extra-field version=4.3.2-rc1) +// pkg-extra-field-4.3-rc1 --> match(name=pkg-extra-field version=4.3-rc1) +// pkg-extra-field-4.3 --> match(name=pkg-extra-field version=4.3) +var versionPattern = regexp.MustCompile(`(?P.+)-(?P(\d+\.)?(\d+\.)?(\*|\d+)(-[a-zA-Z0-9\-\.]+)*)`) + +type archiveFilename struct { + raw string +} + +func newJavaArchiveFilename(raw string) archiveFilename { + return archiveFilename{ + raw: raw, + } +} + +func (a archiveFilename) normalize() string { + // trim the file extension and remove any path prefixes + return strings.TrimSuffix(filepath.Base(a.raw), "."+a.extension()) +} + +func (a archiveFilename) fields() []map[string]string { + name := a.normalize() + + matches := versionPattern.FindAllStringSubmatch(name, -1) + items := make([]map[string]string, 0) + for _, match := range matches { + item := make(map[string]string) + for i, name := range versionPattern.SubexpNames() { + if i != 0 && name != "" { + item[name] = match[i] + } + } + items = append(items, item) + } + return items +} + +func (a archiveFilename) extension() string { + return strings.TrimPrefix(filepath.Ext(a.raw), ".") +} + +func (a archiveFilename) pkgType() pkg.Type { + switch strings.ToLower(a.extension()) { + case "jar": + return pkg.JarPkg + case "war": + return pkg.WarPkg + case "ear": + return pkg.EarPkg + case "jpi": + return pkg.JpiPkg + case "hpi": + return pkg.HpiPkg + default: + return pkg.UnknownPkg + } +} + +func (a archiveFilename) version() string { + fields := a.fields() + + // there should be only one version, if there is more or less then something is wrong + if len(fields) != 1 { + return "" + } + + return fields[0]["version"] +} + +func (a archiveFilename) name() string { + fields := a.fields() + + // there should be only one name, if there is more or less then something is wrong + if len(fields) != 1 { + return "" + } + + return fields[0]["name"] +} diff --git a/imgbom/cataloger/java/archive_filename_test.go b/imgbom/cataloger/java/archive_filename_test.go new file mode 100644 index 000000000..3ba14f84f --- /dev/null +++ b/imgbom/cataloger/java/archive_filename_test.go @@ -0,0 +1,87 @@ +package java + +import ( + "github.com/anchore/imgbom/imgbom/pkg" + "github.com/sergi/go-diff/diffmatchpatch" + "testing" +) + +func TestExtractInfoFromJavaArchiveFilename(t *testing.T) { + tests := []struct { + filename string + version string + extension string + name string + ty pkg.Type + }{ + { + filename: "pkg-maven-4.3.2.blerg", + version: "4.3.2", + extension: "blerg", + name: "pkg-maven", + ty: pkg.UnknownPkg, + }, + { + filename: "pkg-maven-4.3.2.jar", + version: "4.3.2", + extension: "jar", + name: "pkg-maven", + ty: pkg.JarPkg, + }, + { + filename: "pkg-extra-field-maven-4.3.2.war", + version: "4.3.2", + extension: "war", + name: "pkg-extra-field-maven", + ty: pkg.WarPkg, + }, + { + filename: "pkg-extra-field-maven-4.3.2-rc1.ear", + version: "4.3.2-rc1", + extension: "ear", + name: "pkg-extra-field-maven", + ty: pkg.EarPkg, + }, + { + filename: "/some/path/pkg-extra-field-maven-4.3.2-rc1.jpi", + version: "4.3.2-rc1", + extension: "jpi", + name: "pkg-extra-field-maven", + ty: pkg.JpiPkg, + }, + { + filename: "/some/path-with-version-5.4.3/pkg-extra-field-maven-4.3.2-rc1.hpi", + version: "4.3.2-rc1", + extension: "hpi", + name: "pkg-extra-field-maven", + ty: pkg.HpiPkg, + }, + } + + for _, test := range tests { + t.Run(test.filename, func(t *testing.T) { + obj := newJavaArchiveFilename(test.filename) + + version := obj.version() + if version != test.version { + dmp := diffmatchpatch.New() + diffs := dmp.DiffMain(version, test.version, true) + t.Errorf("mismatched version:\n%s", dmp.DiffPrettyText(diffs)) + } + + extension := obj.extension() + if extension != test.extension { + dmp := diffmatchpatch.New() + diffs := dmp.DiffMain(extension, test.extension, true) + t.Errorf("mismatched extension:\n%s", dmp.DiffPrettyText(diffs)) + } + + name := obj.name() + if name != test.name { + dmp := diffmatchpatch.New() + diffs := dmp.DiffMain(name, test.name, true) + t.Errorf("mismatched name:\n%s", dmp.DiffPrettyText(diffs)) + } + }) + } +} diff --git a/imgbom/cataloger/java/cataloger.go b/imgbom/cataloger/java/cataloger.go new file mode 100644 index 000000000..d3d1bf14f --- /dev/null +++ b/imgbom/cataloger/java/cataloger.go @@ -0,0 +1,38 @@ +package java + +import ( + "github.com/anchore/imgbom/imgbom/cataloger/common" + "github.com/anchore/imgbom/imgbom/pkg" + "github.com/anchore/imgbom/imgbom/scope" + "github.com/anchore/stereoscope/pkg/file" +) + +type Cataloger struct { + cataloger common.GenericCataloger +} + +func NewCataloger() *Cataloger { + globParsers := map[string]common.ParserFn{ + "*.jar": parseJar, + "*.war": parseWar, + "*.ear": parseEar, + "*.jpi": parseJpi, + "*.hpi": parseHpi, + } + + return &Cataloger{ + cataloger: common.NewGenericCataloger(nil, globParsers), + } +} + +func (a *Cataloger) Name() string { + return "java-cataloger" +} + +func (a *Cataloger) SelectFiles(resolver scope.FileResolver) []file.Reference { + return a.cataloger.SelectFiles(resolver) +} + +func (a *Cataloger) Catalog(contents map[file.Reference]string) ([]pkg.Package, error) { + return a.cataloger.Catalog(contents, a.Name()) +} diff --git a/imgbom/cataloger/java/java_manifest.go b/imgbom/cataloger/java/java_manifest.go new file mode 100644 index 000000000..548bc2f3c --- /dev/null +++ b/imgbom/cataloger/java/java_manifest.go @@ -0,0 +1,101 @@ +package java + +import ( + "bufio" + "fmt" + "io" + "strings" + + "github.com/anchore/imgbom/internal/file" + + "github.com/anchore/imgbom/imgbom/pkg" + "github.com/mitchellh/mapstructure" +) + +const manifestPath = "META-INF/MANIFEST.MF" + +func parseJavaManifest(reader io.Reader) (*pkg.JavaManifest, error) { + var manifest pkg.JavaManifest + manifestMap := make(map[string]string) + scanner := bufio.NewScanner(reader) + for scanner.Scan() { + line := scanner.Text() + + // ignore empty lines + if strings.TrimSpace(line) == "" { + continue + } + + idx := strings.Index(line, ":") + if idx == -1 { + return nil, fmt.Errorf("unable to split java manifest key-value pairs: %q", line) + } + + key := strings.TrimSpace(line[0:idx]) + value := strings.TrimSpace(line[idx+1:]) + manifestMap[key] = value + } + + if err := scanner.Err(); err != nil { + return nil, fmt.Errorf("unable read java manifest: %w", err) + } + + if err := mapstructure.Decode(manifestMap, &manifest); err != nil { + return nil, fmt.Errorf("unable parse java manifest: %w", err) + } + + return &manifest, nil +} + +func newPackageFromJavaManifest(virtualPath, archivePath string, fileManifest file.ZipManifest) (*pkg.Package, error) { + // search and parse java manifest files + manifestMatches := fileManifest.GlobMatch(manifestPath) + if len(manifestMatches) > 1 { + return nil, fmt.Errorf("found multiple manifests in the jar: %+v", manifestMatches) + } else if len(manifestMatches) == 0 { + // we did not find any manifests, but that may not be a problem (there may be other information to generate packages for) + return nil, nil + } + + // fetch the manifest file + contents, err := file.ExtractFilesFromZip(archivePath, manifestMatches...) + if err != nil { + return nil, fmt.Errorf("unable to extract java manifests: %w", err) + } + + // parse the manifest file into a rich object + manifestContents := contents[manifestMatches[0]] + manifest, err := parseJavaManifest(strings.NewReader(manifestContents)) + if err != nil { + return nil, fmt.Errorf("failed to parse java manifest (%s): %w", virtualPath, err) + } + + filenameObj := newJavaArchiveFilename(virtualPath) + + var name string + switch { + case manifest.Name != "": + name = manifest.Name + case filenameObj.name() != "": + name = filenameObj.name() + } + + var version string + switch { + case manifest.ImplVersion != "": + version = manifest.ImplVersion + case filenameObj.version() != "": + version = filenameObj.version() + case manifest.SpecVersion != "": + version = manifest.SpecVersion + } + + return &pkg.Package{ + Name: name, + Version: version, + Language: pkg.Java, + Metadata: pkg.JavaMetadata{ + Manifest: manifest, + }, + }, nil +} diff --git a/imgbom/cataloger/java/java_manifest_test.go b/imgbom/cataloger/java/java_manifest_test.go new file mode 100644 index 000000000..68e853ba5 --- /dev/null +++ b/imgbom/cataloger/java/java_manifest_test.go @@ -0,0 +1,77 @@ +package java + +import ( + "encoding/json" + "github.com/anchore/imgbom/imgbom/pkg" + "github.com/go-test/deep" + "os" + "testing" +) + +func TestParseJavaManifest(t *testing.T) { + tests := []struct { + fixture string + expected pkg.JavaManifest + }{ + { + fixture: "test-fixtures/manifest/small", + expected: pkg.JavaManifest{ + ManifestVersion: "1.0", + }, + }, + { + fixture: "test-fixtures/manifest/standard-info", + expected: pkg.JavaManifest{ + ManifestVersion: "1.0", + Name: "the-best-name", + SpecTitle: "the-spec-title", + SpecVersion: "the-spec-version", + SpecVendor: "the-spec-vendor", + ImplTitle: "the-impl-title", + ImplVersion: "the-impl-version", + ImplVendor: "the-impl-vendor", + }, + }, + { + fixture: "test-fixtures/manifest/extra-info", + expected: pkg.JavaManifest{ + ManifestVersion: "1.0", + Extra: map[string]string{ + "Archiver-Version": "Plexus Archiver", + "Build-Jdk": "14.0.1", + "Built-By": "?", + "Created-By": "Apache Maven 3.6.3", + "Main-Class": "hello.HelloWorld", + }, + }, + }, + } + + for _, test := range tests { + t.Run(test.fixture, func(t *testing.T) { + fixture, err := os.Open(test.fixture) + if err != nil { + t.Fatalf("could not open fixture: %+v", err) + } + + actual, err := parseJavaManifest(fixture) + if err != nil { + t.Fatalf("failed to parse manifest: %+v", err) + } + + diffs := deep.Equal(actual, &test.expected) + if len(diffs) > 0 { + for _, d := range diffs { + t.Errorf("diff: %+v", d) + } + + b, err := json.MarshalIndent(actual, "", " ") + if err != nil { + t.Fatalf("can't show results: %+v", err) + } + + t.Errorf("full result: %s", string(b)) + } + }) + } +} diff --git a/imgbom/cataloger/java/parse_java_archive.go b/imgbom/cataloger/java/parse_java_archive.go new file mode 100644 index 000000000..6f53909b0 --- /dev/null +++ b/imgbom/cataloger/java/parse_java_archive.go @@ -0,0 +1,136 @@ +package java + +import ( + "fmt" + "io" + "strings" + + "github.com/anchore/imgbom/imgbom/pkg" + "github.com/anchore/imgbom/internal" + "github.com/anchore/imgbom/internal/file" +) + +func uniquePkgKey(p *pkg.Package) string { + if p == nil { + return "" + } + return fmt.Sprintf("%s|%s", p.Name, p.Version) +} + +func parseJar(virtualPath string, reader io.Reader) ([]pkg.Package, error) { + return parseJavaArchive(virtualPath, reader) +} + +func parseWar(virtualPath string, reader io.Reader) ([]pkg.Package, error) { + return parseJavaArchive(virtualPath, reader) +} + +func parseEar(virtualPath string, reader io.Reader) ([]pkg.Package, error) { + return parseJavaArchive(virtualPath, reader) +} + +func parseJpi(virtualPath string, reader io.Reader) ([]pkg.Package, error) { + return parseJavaArchive(virtualPath, reader) +} + +func parseHpi(virtualPath string, reader io.Reader) ([]pkg.Package, error) { + return parseJavaArchive(virtualPath, reader) +} + +func parseJavaArchive(virtualPath string, reader io.Reader) ([]pkg.Package, error) { + var pkgs = make([]pkg.Package, 0) + discoveredPkgs := internal.NewStringSet() + + _, archivePath, cleanupFn, err := saveArchiveToTmp(reader) + // note: even on error, we should always run cleanup functions + defer cleanupFn() + if err != nil { + return nil, fmt.Errorf("unable to process jar: %w", err) + } + + fileManifest, err := file.ZipFileManifest(archivePath) + if err != nil { + return nil, fmt.Errorf("unable to read files from jar: %w", err) + } + + // find the parent package from the java manifest + parentPkg, err := newPackageFromJavaManifest(virtualPath, archivePath, fileManifest) + if err != nil { + return nil, fmt.Errorf("could not generate package from %s: %w", virtualPath, err) + } + + // don't add the parent package yet, we still may discover aux info to add to the metadata (but still track it as added to prevent duplicates) + parentKey := uniquePkgKey(parentPkg) + if parentKey != "" { + discoveredPkgs.Add(parentKey) + } + + // find aux packages from pom.properties + auxPkgs, err := newPackagesFromPomProperties(parentPkg, discoveredPkgs, virtualPath, archivePath, fileManifest) + if err != nil { + return nil, err + } + pkgs = append(pkgs, auxPkgs...) + + // TODO: search for nested jars... but only in ears? or all the time? and remember we need to capture pkg metadata and type appropriately for each + + // lastly, add the parent package to the list (assuming the parent exists) + if parentPkg != nil { + // only the parent package gets the type, nested packages may be of a different package type (or not of a package type at all, since they may not be bundled) + parentPkg.Type = newJavaArchiveFilename(virtualPath).pkgType() + pkgs = append([]pkg.Package{*parentPkg}, pkgs...) + } + + return pkgs, nil +} + +func newPackagesFromPomProperties(parentPkg *pkg.Package, discoveredPkgs internal.StringSet, virtualPath, archivePath string, fileManifest file.ZipManifest) ([]pkg.Package, error) { + var pkgs = make([]pkg.Package, 0) + parentKey := uniquePkgKey(parentPkg) + + // search and parse pom.properties files & fetch the contents + contents, err := file.ExtractFilesFromZip(archivePath, fileManifest.GlobMatch(pomPropertiesGlob)...) + if err != nil { + return nil, fmt.Errorf("unable to extract pom.properties: %w", err) + } + + // parse the manifest file into a rich object + for propsPath, propsContents := range contents { + propsObj, err := parsePomProperties(propsPath, strings.NewReader(propsContents)) + if err != nil { + return nil, fmt.Errorf("failed to parse pom.properties (%s): %w", virtualPath, err) + } + + if propsObj != nil { + if propsObj.Version != "" && propsObj.ArtifactID != "" { + // TODO: if there is no parentPkg (no java manifest) one of these poms could be the parent. We should discover the right parent and attach the correct info accordingly to each discovered package + + // discovered props = new package + p := pkg.Package{ + Name: propsObj.ArtifactID, + Version: propsObj.Version, + Language: pkg.Java, + Metadata: pkg.JavaMetadata{ + PomProperties: propsObj, + Parent: parentPkg, + }, + } + + pkgKey := uniquePkgKey(&p) + + if !discoveredPkgs.Contains(pkgKey) { + // only keep packages we haven't seen yet + pkgs = append(pkgs, p) + } else if pkgKey == parentKey { + // we've run across more information about our parent package, add this info to the parent package metadata + parentMetadata, ok := parentPkg.Metadata.(pkg.JavaMetadata) + if ok { + parentMetadata.PomProperties = propsObj + parentPkg.Metadata = parentMetadata + } + } + } + } + } + return pkgs, nil +} diff --git a/imgbom/cataloger/java/parse_java_archive_test.go b/imgbom/cataloger/java/parse_java_archive_test.go new file mode 100644 index 000000000..f035b1f0c --- /dev/null +++ b/imgbom/cataloger/java/parse_java_archive_test.go @@ -0,0 +1,202 @@ +package java + +import ( + "bufio" + "github.com/anchore/imgbom/imgbom/pkg" + "github.com/go-test/deep" + "github.com/gookit/color" + "io" + "os" + "os/exec" + "path/filepath" + "strings" + "syscall" + "testing" +) + +func generateFixture(t *testing.T, fixturePath string) { + if _, err := os.Stat(fixturePath); !os.IsNotExist(err) { + // fixture already exists... + return + } + + makeTask := strings.TrimPrefix(fixturePath, "test-fixtures/") + t.Logf(color.Bold.Sprintf("Generating Fixture from 'make %s'", makeTask)) + + cwd, err := os.Getwd() + if err != nil { + t.Errorf("unable to get cwd: %+v", err) + } + + cmd := exec.Command("make", makeTask) + cmd.Dir = filepath.Join(cwd, "test-fixtures") + + stderr, err := cmd.StderrPipe() + if err != nil { + t.Fatalf("could not get stderr: %+v", err) + } + stdout, err := cmd.StdoutPipe() + if err != nil { + t.Fatalf("could not get stdout: %+v", err) + } + + err = cmd.Start() + if err != nil { + t.Fatalf("failed to start cmd: %+v", err) + } + + show := func(label string, reader io.ReadCloser) { + scanner := bufio.NewScanner(reader) + scanner.Split(bufio.ScanLines) + for scanner.Scan() { + t.Logf("%s: %s", label, scanner.Text()) + } + } + go show("out", stdout) + go show("err", stderr) + + if err := cmd.Wait(); err != nil { + if exiterr, ok := err.(*exec.ExitError); ok { + // The program has exited with an exit code != 0 + + // This works on both Unix and Windows. Although package + // syscall is generally platform dependent, WaitStatus is + // defined for both Unix and Windows and in both cases has + // an ExitStatus() method with the same signature. + if status, ok := exiterr.Sys().(syscall.WaitStatus); ok { + if status.ExitStatus() != 0 { + t.Fatalf("failed to generate fixture: rc=%d", status.ExitStatus()) + } + } + } else { + t.Fatalf("unable to get generate fixture result: %+v", err) + } + } +} + +func TestParseJar(t *testing.T) { + tests := []struct { + fixture string + expected map[string]pkg.Package + }{ + { + fixture: "test-fixtures/packages/example-app-gradle-0.1.0.jar", + expected: map[string]pkg.Package{ + "example-app-gradle": { + Name: "example-app-gradle", + Version: "0.1.0", + Language: pkg.Java, + Type: pkg.JarPkg, + Metadata: pkg.JavaMetadata{ + Manifest: &pkg.JavaManifest{ + ManifestVersion: "1.0", + }, + }, + }, + }, + }, + { + fixture: "test-fixtures/packages/example-app-maven-0.1.0.jar", + expected: map[string]pkg.Package{ + "example-app-maven": { + Name: "example-app-maven", + Version: "0.1.0", + Language: pkg.Java, + Type: pkg.JarPkg, + Metadata: pkg.JavaMetadata{ + Manifest: &pkg.JavaManifest{ + ManifestVersion: "1.0", + Extra: map[string]string{ + "Archiver-Version": "Plexus Archiver", + "Created-By": "Apache Maven 3.6.3", + "Built-By": "?", + "Build-Jdk": "14.0.1", + "Main-Class": "hello.HelloWorld", + }, + }, + PomProperties: &pkg.PomProperties{ + Path: "META-INF/maven/org.anchore/example-app-maven/pom.properties", + GroupID: "org.anchore", + ArtifactID: "example-app-maven", + Version: "0.1.0", + }, + }, + }, + "joda-time": { + Name: "joda-time", + Version: "2.9.2", + Language: pkg.Java, + Type: pkg.UnknownPkg, + Metadata: pkg.JavaMetadata{ + PomProperties: &pkg.PomProperties{ + Path: "META-INF/maven/joda-time/joda-time/pom.properties", + GroupID: "joda-time", + ArtifactID: "joda-time", + Version: "2.9.2", + }, + }, + }, + }, + }, + } + + for _, test := range tests { + t.Run(test.fixture, func(t *testing.T) { + + generateFixture(t, test.fixture) + + fixture, err := os.Open(test.fixture) + if err != nil { + t.Fatalf("failed to open fixture: %+v", err) + } + + actual, err := parseJar(fixture.Name(), fixture) + if err != nil { + t.Fatalf("failed to parse egg-info: %+v", err) + } + + if len(actual) != len(test.expected) { + for _, a := range actual { + t.Log(" ", a) + } + t.Fatalf("unexpected package count: %d!=%d", len(actual), 1) + } + + var parent *pkg.Package + for _, a := range actual { + if strings.Contains(a.Name, "example-app-") { + parent = &a + } + } + + if parent == nil { + t.Fatal("could not find the parent pkg") + } + + for _, a := range actual { + e, ok := test.expected[a.Name] + if !ok { + t.Errorf("entry not found: %s", a.Name) + continue + } + + if a.Name != parent.Name && a.Metadata.(pkg.JavaMetadata).Parent != nil && a.Metadata.(pkg.JavaMetadata).Parent.Name != parent.Name { + t.Errorf("mismatched parent: %+v", a.Metadata.(pkg.JavaMetadata).Parent) + } + + // we need to compare the other fields without parent attached + metadata := a.Metadata.(pkg.JavaMetadata) + metadata.Parent = nil + a.Metadata = metadata + + diffs := deep.Equal(a, e) + if len(diffs) > 0 { + t.Errorf("diffs found for %q", a.Name) + for _, d := range diffs { + t.Errorf("diff: %+v", d) + } + } + } + }) + } +} diff --git a/imgbom/cataloger/java/pom_properties.go b/imgbom/cataloger/java/pom_properties.go new file mode 100644 index 000000000..1bf3013b7 --- /dev/null +++ b/imgbom/cataloger/java/pom_properties.go @@ -0,0 +1,48 @@ +package java + +import ( + "bufio" + "fmt" + "io" + "strings" + + "github.com/anchore/imgbom/imgbom/pkg" + "github.com/mitchellh/mapstructure" +) + +const pomPropertiesGlob = "*pom.properties" + +func parsePomProperties(path string, reader io.Reader) (*pkg.PomProperties, error) { + var props pkg.PomProperties + propMap := make(map[string]string) + scanner := bufio.NewScanner(reader) + for scanner.Scan() { + line := scanner.Text() + + // ignore empty lines and comments + if strings.TrimSpace(line) == "" || strings.HasPrefix(strings.TrimLeft(line, " "), "#") { + continue + } + + idx := strings.Index(line, "=") + if idx == -1 { + return nil, fmt.Errorf("unable to split pom.properties key-value pairs: %q", line) + } + + key := strings.TrimSpace(line[0:idx]) + value := strings.TrimSpace(line[idx+1:]) + propMap[key] = value + } + + if err := scanner.Err(); err != nil { + return nil, fmt.Errorf("unable read pom.properties: %w", err) + } + + if err := mapstructure.Decode(propMap, &props); err != nil { + return nil, fmt.Errorf("unable parse pom.propertoes: %w", err) + } + + props.Path = path + + return &props, nil +} diff --git a/imgbom/cataloger/java/pom_properties_test.go b/imgbom/cataloger/java/pom_properties_test.go new file mode 100644 index 000000000..27c3c4311 --- /dev/null +++ b/imgbom/cataloger/java/pom_properties_test.go @@ -0,0 +1,68 @@ +package java + +import ( + "encoding/json" + "github.com/anchore/imgbom/imgbom/pkg" + "github.com/go-test/deep" + "os" + "testing" +) + +func TestParseJavaPomProperties(t *testing.T) { + tests := []struct { + fixture string + expected pkg.PomProperties + }{ + { + fixture: "test-fixtures/pom/small.pom.properties", + expected: pkg.PomProperties{ + Path: "test-fixtures/pom/small.pom.properties", + GroupID: "org.anchore", + ArtifactID: "example-app-maven", + Version: "0.1.0", + }, + }, + { + fixture: "test-fixtures/pom/extra.pom.properties", + expected: pkg.PomProperties{ + Path: "test-fixtures/pom/extra.pom.properties", + GroupID: "org.anchore", + ArtifactID: "example-app-maven", + Version: "0.1.0", + Name: "something-here", + Extra: map[string]string{ + "another": "thing", + "sweet": "work", + }, + }, + }, + } + + for _, test := range tests { + t.Run(test.fixture, func(t *testing.T) { + fixture, err := os.Open(test.fixture) + if err != nil { + t.Fatalf("could not open fixture: %+v", err) + } + + actual, err := parsePomProperties(fixture.Name(), fixture) + if err != nil { + t.Fatalf("failed to parse manifest: %+v", err) + } + + diffs := deep.Equal(actual, &test.expected) + if len(diffs) > 0 { + for _, d := range diffs { + t.Errorf("diff: %+v", d) + } + + b, err := json.MarshalIndent(actual, "", " ") + if err != nil { + t.Fatalf("can't show results: %+v", err) + } + + t.Errorf("full result: %s", string(b)) + } + }) + } +} diff --git a/imgbom/cataloger/java/save_archive_to_tmp.go b/imgbom/cataloger/java/save_archive_to_tmp.go new file mode 100644 index 000000000..4b6c1e01a --- /dev/null +++ b/imgbom/cataloger/java/save_archive_to_tmp.go @@ -0,0 +1,45 @@ +package java + +import ( + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + + "github.com/anchore/imgbom/internal/log" +) + +func saveArchiveToTmp(reader io.Reader) (string, string, func(), error) { + tempDir, err := ioutil.TempDir("", "imgbom-jar-contents-") + if err != nil { + return "", "", func() {}, fmt.Errorf("unable to create tempdir for jar processing: %w", err) + } + + cleanupFn := func() { + err = os.RemoveAll(tempDir) + if err != nil { + log.Errorf("unable to cleanup jar tempdir: %w", err) + } + } + + archivePath := filepath.Join(tempDir, "archive") + contentDir := filepath.Join(tempDir, "contents") + + err = os.Mkdir(contentDir, 0755) + if err != nil { + return contentDir, "", cleanupFn, fmt.Errorf("unable to create processing tempdir: %w", err) + } + + archiveFile, err := os.Create(archivePath) + if err != nil { + return contentDir, "", cleanupFn, fmt.Errorf("unable to create archive: %w", err) + } + + _, err = io.Copy(archiveFile, reader) + if err != nil { + return contentDir, archivePath, cleanupFn, fmt.Errorf("unable to copy archive: %w", err) + } + + return contentDir, archivePath, cleanupFn, nil +} diff --git a/imgbom/cataloger/java/test-fixtures/.gitignore b/imgbom/cataloger/java/test-fixtures/.gitignore new file mode 100644 index 000000000..bcfb378bf --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/.gitignore @@ -0,0 +1,3 @@ +/packages/* +# maven when running in a volume may spit out directories like this +\?/ \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/Makefile b/imgbom/cataloger/java/test-fixtures/Makefile new file mode 100644 index 000000000..ffc73cc79 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/Makefile @@ -0,0 +1,35 @@ +all: packages/example-app-maven-0.1.0.jar packages/example-app-gradle-0.1.0.jar packages/example-jenkins-plugin.hpi + +clean: clean-examples + rm -f packages/* + +clean-examples: clean-gradle clean-maven clean-jenkins + +.PHONY: maven gradle clean clean-gradle clean-maven clean-jenkins clean-examples + +# Maven... +packages/example-app-maven-0.1.0.jar: + ./run-example-app-maven.sh + +clean-maven: + rm -rf example-app/target example-app/dependency-reduced-pom.xml + +# Gradle... +packages/example-app-gradle-0.1.0.jar: + ./run-example-app-gradle.sh + +clean-gradle: + rm -rf example-app/.gradle example-app/build + +# Jenkins plugin +packages/example-jenkins-plugin.hpi, packages/example-jenkins-plugin.jar: + ./run-example-jenkins-plugin-maven.sh + +clean-jenkins: + rm -rf example-jenkins-plugin/target example-jenkins-plugin/dependency-reduced-pom.xml example-jenkins-plugin/*.exploding + +# we need a way to determine if CI should bust the test cache based on the source material +packages.fingerprint: clean-examples + @mkdir -p packages + find example-* -type f -exec sha256sum {} \; > packages.fingerprint + sha256sum packages.fingerprint diff --git a/imgbom/cataloger/java/test-fixtures/example-app/.gitignore b/imgbom/cataloger/java/test-fixtures/example-app/.gitignore new file mode 100644 index 000000000..a8a4d8556 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-app/.gitignore @@ -0,0 +1,6 @@ +# maven build creates this when in a container volume +/?/ +/.gradle/ +/build/ +target/ +dependency-reduced-pom.xml diff --git a/imgbom/cataloger/java/test-fixtures/example-app/build.gradle b/imgbom/cataloger/java/test-fixtures/example-app/build.gradle new file mode 100644 index 000000000..bd1c1701a --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-app/build.gradle @@ -0,0 +1,31 @@ +apply plugin: 'java' +apply plugin: 'eclipse' +apply plugin: 'application' + +mainClassName = 'hello.HelloWorld' + +// tag::repositories[] +repositories { + mavenCentral() +} +// end::repositories[] + +// tag::jar[] +jar { + baseName = 'example-app-gradle' + version = '0.1.0' +} +// end::jar[] + +// tag::dependencies[] +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + +dependencies { + compile "joda-time:joda-time:2.2" + testCompile "junit:junit:4.12" +} +// end::dependencies[] + +// tag::wrapper[] +// end::wrapper[] \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-app/pom.xml b/imgbom/cataloger/java/test-fixtures/example-app/pom.xml new file mode 100644 index 000000000..5908a5577 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-app/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + + org.anchore + example-app-maven + jar + 0.1.0 + + + 1.8 + 1.8 + + + + + + joda-time + joda-time + 2.9.2 + + + + + junit + junit + 4.12 + test + + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 2.1 + + + package + + shade + + + + + hello.HelloWorld + + + + + + + + + + diff --git a/imgbom/cataloger/java/test-fixtures/example-app/src/main/java/hello/Greeter.java b/imgbom/cataloger/java/test-fixtures/example-app/src/main/java/hello/Greeter.java new file mode 100644 index 000000000..74eb8d441 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-app/src/main/java/hello/Greeter.java @@ -0,0 +1,7 @@ +package hello; + +public class Greeter { + public String sayHello() { + return "Hello world!"; + } +} diff --git a/imgbom/cataloger/java/test-fixtures/example-app/src/main/java/hello/HelloWorld.java b/imgbom/cataloger/java/test-fixtures/example-app/src/main/java/hello/HelloWorld.java new file mode 100644 index 000000000..d9e61fe5d --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-app/src/main/java/hello/HelloWorld.java @@ -0,0 +1,13 @@ +package hello; + +import org.joda.time.LocalTime; + +public class HelloWorld { + public static void main(String[] args) { + LocalTime currentTime = new LocalTime(); + System.out.println("The current local time is: " + currentTime); + + Greeter greeter = new Greeter(); + System.out.println(greeter.sayHello()); + } +} diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/pom.xml b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/pom.xml new file mode 100644 index 000000000..fe544a23a --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/pom.xml @@ -0,0 +1,100 @@ + + + 4.0.0 + + org.jenkins-ci.plugins + plugin + 3.50 + + + io.jenkins.plugins + example-jenkins-plugin + 1.0-SNAPSHOT + hpi + + + 2.164.3 + 8 + + + TODO Plugin + + + + MIT License + https://opensource.org/licenses/MIT + + + + + + + io.jenkins.tools.bom + bom-2.164.x + 3 + import + pom + + + + + + org.jenkins-ci.plugins + structs + + + org.jenkins-ci.plugins.workflow + workflow-cps + test + + + org.jenkins-ci.plugins.workflow + workflow-job + test + + + org.jenkins-ci.plugins.workflow + workflow-basic-steps + test + + + org.jenkins-ci.plugins.workflow + workflow-durable-task-step + test + + + + + + + + + repo.jenkins-ci.org + https://repo.jenkins-ci.org/public/ + + + + + repo.jenkins-ci.org + https://repo.jenkins-ci.org/public/ + + + diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/java/io/jenkins/plugins/sample/HelloWorldBuilder.java b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/java/io/jenkins/plugins/sample/HelloWorldBuilder.java new file mode 100644 index 000000000..ec7bbc62d --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/java/io/jenkins/plugins/sample/HelloWorldBuilder.java @@ -0,0 +1,81 @@ +package io.jenkins.plugins.sample; + +import hudson.Launcher; +import hudson.Extension; +import hudson.FilePath; +import hudson.util.FormValidation; +import hudson.model.AbstractProject; +import hudson.model.Run; +import hudson.model.TaskListener; +import hudson.tasks.Builder; +import hudson.tasks.BuildStepDescriptor; +import org.kohsuke.stapler.DataBoundConstructor; +import org.kohsuke.stapler.QueryParameter; + +import javax.servlet.ServletException; +import java.io.IOException; +import jenkins.tasks.SimpleBuildStep; +import org.jenkinsci.Symbol; +import org.kohsuke.stapler.DataBoundSetter; + +public class HelloWorldBuilder extends Builder implements SimpleBuildStep { + + private final String name; + private boolean useFrench; + + @DataBoundConstructor + public HelloWorldBuilder(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public boolean isUseFrench() { + return useFrench; + } + + @DataBoundSetter + public void setUseFrench(boolean useFrench) { + this.useFrench = useFrench; + } + + @Override + public void perform(Run run, FilePath workspace, Launcher launcher, TaskListener listener) throws InterruptedException, IOException { + if (useFrench) { + listener.getLogger().println("Bonjour, " + name + "!"); + } else { + listener.getLogger().println("Hello, " + name + "!"); + } + } + + @Symbol("greet") + @Extension + public static final class DescriptorImpl extends BuildStepDescriptor { + + public FormValidation doCheckName(@QueryParameter String value, @QueryParameter boolean useFrench) + throws IOException, ServletException { + if (value.length() == 0) + return FormValidation.error(Messages.HelloWorldBuilder_DescriptorImpl_errors_missingName()); + if (value.length() < 4) + return FormValidation.warning(Messages.HelloWorldBuilder_DescriptorImpl_warnings_tooShort()); + if (!useFrench && value.matches(".*[éáàç].*")) { + return FormValidation.warning(Messages.HelloWorldBuilder_DescriptorImpl_warnings_reallyFrench()); + } + return FormValidation.ok(); + } + + @Override + public boolean isApplicable(Class aClass) { + return true; + } + + @Override + public String getDisplayName() { + return Messages.HelloWorldBuilder_DescriptorImpl_DisplayName(); + } + + } + +} diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/index.jelly b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/index.jelly new file mode 100644 index 000000000..35f37a7f2 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/index.jelly @@ -0,0 +1,4 @@ + +
+ TODO +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.jelly b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.jelly new file mode 100644 index 000000000..e97fba056 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.jelly @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.properties new file mode 100644 index 000000000..7ebd98b2e --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.properties @@ -0,0 +1,3 @@ +Name=Name +French=French +FrenchDescr=Check if we should say hello in French \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_de.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_de.properties new file mode 100644 index 000000000..abaf0080d --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_de.properties @@ -0,0 +1,3 @@ +Name=Name +French=Franz\u00F6sisch +FrenchDescr=Markieren f\u00FCr Begr\u00FC\u00DFung auf franz\u00F6sisch \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_es.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_es.properties new file mode 100644 index 000000000..d3306b69a --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_es.properties @@ -0,0 +1,3 @@ +Name=Nombre +French=Franc\u00E9s +FrenchDescr=Compruebe si debemos decir hola en franc\u00E9s \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_fr.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_fr.properties new file mode 100644 index 000000000..393218bd1 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_fr.properties @@ -0,0 +1,3 @@ +Name=Nom +French=Fran\u00e7ais +FrenchDescr=V\u00e9rifie qu'on dit bien hello en fran\u00e7ais diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_it.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_it.properties new file mode 100644 index 000000000..94fdb64b7 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_it.properties @@ -0,0 +1,3 @@ +Name=Nome +French=Francese +FrenchDescr=Mostra il messagio in francese diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_pt_BR.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_pt_BR.properties new file mode 100644 index 000000000..c1aa4daf4 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_pt_BR.properties @@ -0,0 +1,3 @@ +Name=Nome +French=Franc\u00EAs +FrenchDescr=Marque se devemos falar ol\u00E1 em franc\u00EAs \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_sv.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_sv.properties new file mode 100644 index 000000000..bbab3b3c8 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_sv.properties @@ -0,0 +1,3 @@ +Name=Namn +French=Franska +FrenchDescr=S\u00E4tt om vi ska s\u00E4ga hej p\u00E5 Franska \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_tr.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_tr.properties new file mode 100644 index 000000000..96511210d --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_tr.properties @@ -0,0 +1,3 @@ +Name=\u0130sim +French=Frans\u0131zca +FrenchDescr=Frans\u0131zca olarak merhaba demeliyim diye sor \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_zh_CN.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_zh_CN.properties new file mode 100644 index 000000000..63ec34ff9 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_zh_CN.properties @@ -0,0 +1,6 @@ +# 如果您希望在 Jenkins 组织当中托管您的插件,那我们推荐您将本地化文件提交到 https://github.com/jenkinsci/localization-zh-cn-plugin 中。 +# 如果您希望私有维护插件,可以参考本例子的方式放置中文的本地化文件。 + +Name=\u540d\u5b57 +French=\u6cd5\u8bed +FrenchDescr=\u68c0\u67e5\u6211\u4eec\u662f\u5426\u5e94\u8be5\u7528\u6cd5\u8bed\u6253\u4e2a\u62db\u547c \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name.html new file mode 100644 index 000000000..e71221066 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name.html @@ -0,0 +1,3 @@ +
+ Your name. +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_de.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_de.html new file mode 100644 index 000000000..3521acee7 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_de.html @@ -0,0 +1,3 @@ +
+ Geben Sie Ihren Namen ein. +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_es.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_es.html new file mode 100644 index 000000000..2cb64e038 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_es.html @@ -0,0 +1,3 @@ +
+ Tu nombre. +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_fr.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_fr.html new file mode 100644 index 000000000..3c49c7ac1 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_fr.html @@ -0,0 +1,3 @@ +
+ Votre nom. +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_it.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_it.html new file mode 100644 index 000000000..e5988b8c4 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_it.html @@ -0,0 +1,3 @@ +
+ Nome di mostrare. +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_pt_BR.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_pt_BR.html new file mode 100644 index 000000000..eb6a41d31 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_pt_BR.html @@ -0,0 +1,3 @@ +
+ Seu nome. +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_sv.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_sv.html new file mode 100644 index 000000000..697036852 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_sv.html @@ -0,0 +1,3 @@ +
+ Ditt namn. +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_tr.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_tr.html new file mode 100644 index 000000000..df069db40 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_tr.html @@ -0,0 +1,3 @@ +
+ İsmin. +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_zh_CN.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_zh_CN.html new file mode 100644 index 000000000..bfd8051a7 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_zh_CN.html @@ -0,0 +1,5 @@ + + +
+ 你的名字。 +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench.html new file mode 100644 index 000000000..b4eadd6cf --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench.html @@ -0,0 +1,3 @@ +
+ Use French? +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_de.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_de.html new file mode 100644 index 000000000..96b269810 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_de.html @@ -0,0 +1,3 @@ +
+ Ob die Begrüßung auf französisch angegeben werden soll. +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_es.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_es.html new file mode 100644 index 000000000..1b2cc04b2 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_es.html @@ -0,0 +1,3 @@ +
+ ¿Utilizar el francés? +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_fr.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_fr.html new file mode 100644 index 000000000..3f9137625 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_fr.html @@ -0,0 +1,3 @@ +
+ Utiliser le français ? +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_it.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_it.html new file mode 100644 index 000000000..96118a531 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_it.html @@ -0,0 +1,3 @@ +
+ Mostrare il messagio in francese. +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_pt_BR.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_pt_BR.html new file mode 100644 index 000000000..3ce431878 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_pt_BR.html @@ -0,0 +1,3 @@ +
+ Usar francês? +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_sv.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_sv.html new file mode 100644 index 000000000..6655872e4 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_sv.html @@ -0,0 +1,3 @@ +
+ Använda Franska? +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_tr.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_tr.html new file mode 100644 index 000000000..e44de32aa --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_tr.html @@ -0,0 +1,3 @@ +
+ Fransızca göster? +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_zh_CN.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_zh_CN.html new file mode 100644 index 000000000..d2ea3dbe4 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_zh_CN.html @@ -0,0 +1,5 @@ + + +
+ 使用法语 ? +
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages.properties new file mode 100644 index 000000000..eb02a0940 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages.properties @@ -0,0 +1,5 @@ +HelloWorldBuilder.DescriptorImpl.errors.missingName=Please set a name +HelloWorldBuilder.DescriptorImpl.warnings.tooShort=Isn't the name too short? +HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=Are you actually French? + +HelloWorldBuilder.DescriptorImpl.DisplayName=Say hello world \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_de.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_de.properties new file mode 100644 index 000000000..5d44cd4a2 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_de.properties @@ -0,0 +1,5 @@ +HelloWorldBuilder.DescriptorImpl.errors.missingName=Bitte geben Sie einen Namen an +HelloWorldBuilder.DescriptorImpl.warnings.tooShort=Der Name ist zu kurz. +HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=Sind Sie wirklich franz\u00F6sisch? + +HelloWorldBuilder.DescriptorImpl.DisplayName=\u201EHallo Welt\u201C sagen \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_es.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_es.properties new file mode 100644 index 000000000..1d0436342 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_es.properties @@ -0,0 +1,5 @@ +HelloWorldBuilder.DescriptorImpl.errors.missingName=Establecer un nombre +HelloWorldBuilder.DescriptorImpl.warnings.tooShort=\u00BFNo es el nombre demasiado corto? +HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=\u00BFEs usted realmente franc\u00E9s? + +HelloWorldBuilder.DescriptorImpl.DisplayName=Di hola mundo diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_fr.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_fr.properties new file mode 100644 index 000000000..a6a510c8f --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_fr.properties @@ -0,0 +1,5 @@ +HelloWorldBuilder.DescriptorImpl.errors.missingName=Veuillez saisir un nom +HelloWorldBuilder.DescriptorImpl.warnings.tooShort=Le nom n'est-il pas trop court ? +HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=\u00CAtes vous vraiment fran\u00E7ais ? + +HelloWorldBuilder.DescriptorImpl.DisplayName=Dis hello world diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_it.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_it.properties new file mode 100644 index 000000000..7e1b20654 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_it.properties @@ -0,0 +1,5 @@ +HelloWorldBuilder.DescriptorImpl.errors.missingName=Nome \u00E8 richiesto +HelloWorldBuilder.DescriptorImpl.warnings.tooShort=Nome dev'essere al meno 4 charatteri +HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=Vuole mostrare il messagio in francese? + +HelloWorldBuilder.DescriptorImpl.DisplayName=Nome di mostrare diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_pt_BR.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_pt_BR.properties new file mode 100644 index 000000000..40bd468df --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_pt_BR.properties @@ -0,0 +1,5 @@ +HelloWorldBuilder.DescriptorImpl.errors.missingName=Insira um nome +HelloWorldBuilder.DescriptorImpl.warnings.tooShort=Este nome n\u00E3o \u00E9 muito curto? +HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=Voc\u00EA \u00E9 realmente franc\u00EAs? + +HelloWorldBuilder.DescriptorImpl.DisplayName=Diz ol\u00E1 mundo \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_sv.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_sv.properties new file mode 100644 index 000000000..b41916f23 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_sv.properties @@ -0,0 +1,5 @@ +HelloWorldBuilder.DescriptorImpl.errors.missingName=Ange ett namn +HelloWorldBuilder.DescriptorImpl.warnings.tooShort=\u00C4r inte namnet lite f\u00F6r kort? +HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=\u00C4r du egentligen Fransk? + +HelloWorldBuilder.DescriptorImpl.DisplayName=S\u00E4g Hej V\u00E4rlden diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_tr.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_tr.properties new file mode 100644 index 000000000..585e853d5 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_tr.properties @@ -0,0 +1,5 @@ +HelloWorldBuilder.DescriptorImpl.errors.missingName=L\u00FCtfen bir isim girin +HelloWorldBuilder.DescriptorImpl.warnings.tooShort=\u0130sminiz \u00E7ok k\u0131sa de\u011Fil mi? +HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=Ger\u00E7ekten Frans\u0131z m\u0131s\u0131n\u0131z? + +HelloWorldBuilder.DescriptorImpl.DisplayName=Merhaba d\u00FCnya de diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_zh_CN.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_zh_CN.properties new file mode 100644 index 000000000..2ef005501 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_zh_CN.properties @@ -0,0 +1,8 @@ +# 如果您希望在 Jenkins 组织当中托管您的插件,那我们推荐您将本地化文件提交到 https://github.com/jenkinsci/localization-zh-cn-plugin 中。 +# 如果您希望私有维护插件,可以参考本例子的方式放置中文的本地化文件。 + +HelloWorldBuilder.DescriptorImpl.errors.missingName=\u8bf7\u586b\u5199\u540d\u5b57 +HelloWorldBuilder.DescriptorImpl.warnings.tooShort=\u540d\u5b57\u662f\u4e0d\u662f\u592a\u77ed\u4e86\uff1f +HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=\u4f60\u771f\u7684\u662f\u6cd5\u56fd\u4eba\u5417\uff1f + +HelloWorldBuilder.DescriptorImpl.DisplayName=\u8bf4\uff1a\u4f60\u597d\uff0c\u4e16\u754c \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/manifest/extra-info b/imgbom/cataloger/java/test-fixtures/manifest/extra-info new file mode 100644 index 000000000..8938f487c --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/manifest/extra-info @@ -0,0 +1,8 @@ +Manifest-Version: 1.0 +Archiver-Version: Plexus Archiver +Created-By: Apache Maven 3.6.3 + +Built-By: ? + +Build-Jdk: 14.0.1 +Main-Class: hello.HelloWorld diff --git a/imgbom/cataloger/java/test-fixtures/manifest/small b/imgbom/cataloger/java/test-fixtures/manifest/small new file mode 100644 index 000000000..59499bce4 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/manifest/small @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/imgbom/cataloger/java/test-fixtures/manifest/standard-info b/imgbom/cataloger/java/test-fixtures/manifest/standard-info new file mode 100644 index 000000000..2a52186a1 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/manifest/standard-info @@ -0,0 +1,9 @@ +Manifest-Version: 1.0 +Name: the-best-name +Specification-Title: the-spec-title +Specification-Vendor: the-spec-vendor +Specification-Version: the-spec-version +Implementation-Title: the-impl-title +Implementation-Vendor: the-impl-vendor +Implementation-Version: the-impl-version + diff --git a/imgbom/cataloger/java/test-fixtures/pom/extra.pom.properties b/imgbom/cataloger/java/test-fixtures/pom/extra.pom.properties new file mode 100644 index 000000000..10ba356f8 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/pom/extra.pom.properties @@ -0,0 +1,8 @@ +#Generated by Maven +#Tue Jul 07 18:59:56 GMT 2020 +groupId=org.anchore +artifactId=example-app-maven +version=0.1.0 +name=something-here +another=thing +sweet=work diff --git a/imgbom/cataloger/java/test-fixtures/pom/small.pom.properties b/imgbom/cataloger/java/test-fixtures/pom/small.pom.properties new file mode 100644 index 000000000..6e79b4e63 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/pom/small.pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Tue Jul 07 18:59:56 GMT 2020 +groupId=org.anchore +artifactId=example-app-maven +version=0.1.0 diff --git a/imgbom/cataloger/java/test-fixtures/run-example-app-gradle.sh b/imgbom/cataloger/java/test-fixtures/run-example-app-gradle.sh new file mode 100755 index 000000000..4e18a5a7d --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/run-example-app-gradle.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +set -uxe + +# note: this can be easily done in a 1-liner, however circle CI does NOT allow volume mounts from the host in docker executors (since they are on remote hosts, where the host files are inaccessible) + +CTRID=$(docker create -u "$(id -u):$(id -g)" -v /example-app -w /example-app gradle:jdk gradle build) + +function cleanup() { + docker rm "${CTRID}" +} + +trap cleanup EXIT +set +e + +docker cp "$(pwd)/example-app" "${CTRID}:/" +docker start -a "${CTRID}" +mkdir -p packages +docker cp "${CTRID}:/example-app/build/libs/example-app-gradle-0.1.0.jar" packages/ \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/run-example-app-maven.sh b/imgbom/cataloger/java/test-fixtures/run-example-app-maven.sh new file mode 100755 index 000000000..401fea5e8 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/run-example-app-maven.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +set -uxe + +# note: this can be easily done in a 1-liner, however circle CI does NOT allow volume mounts from the host in docker executors (since they are on remote hosts, where the host files are inaccessible) + +CTRID=$(docker create -u "$(id -u):$(id -g)" -e MAVEN_CONFIG=/tmp/.m2 -v /example-app -w /example-app maven:openjdk mvn -Duser.home=/tmp -DskipTests package) + +function cleanup() { + docker rm "${CTRID}" +} + +trap cleanup EXIT +set +e + +docker cp "$(pwd)/example-app" "${CTRID}:/" +docker start -a "${CTRID}" +mkdir -p packages +docker cp "${CTRID}:/example-app/target/example-app-maven-0.1.0.jar" packages/ \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/run-example-jenkins-plugin-maven.sh b/imgbom/cataloger/java/test-fixtures/run-example-jenkins-plugin-maven.sh new file mode 100755 index 000000000..7b15fa68a --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/run-example-jenkins-plugin-maven.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -uxe + +# note: this can be easily done in a 1-liner, however circle CI does NOT allow volume mounts from the host in docker executors (since they are on remote hosts, where the host files are inaccessible) + +CTRID=$(docker create -u "$(id -u):$(id -g)" -e MAVEN_CONFIG=/tmp/.m2 -v /example-jenkins-plugin -w /example-jenkins-plugin maven:openjdk mvn -Duser.home=/tmp -DskipTests package) + +function cleanup() { + docker rm "${CTRID}" +} + +trap cleanup EXIT +set +e + +docker cp "$(pwd)/example-jenkins-plugin" "${CTRID}:/" +docker start -a "${CTRID}" +mkdir -p packages +docker cp "${CTRID}:/example-jenkins-plugin/target/example-jenkins-plugin.hpi" packages/ +docker cp "${CTRID}:/example-jenkins-plugin/target/example-jenkins-plugin.jar" packages/ \ No newline at end of file diff --git a/imgbom/cataloger/python/parse_wheel_egg.go b/imgbom/cataloger/python/parse_wheel_egg.go index 82610142d..91004e4ae 100644 --- a/imgbom/cataloger/python/parse_wheel_egg.go +++ b/imgbom/cataloger/python/parse_wheel_egg.go @@ -9,7 +9,7 @@ import ( "github.com/anchore/imgbom/imgbom/pkg" ) -func parseWheelMetadata(reader io.Reader) ([]pkg.Package, error) { +func parseWheelMetadata(_ string, reader io.Reader) ([]pkg.Package, error) { packages, err := parseWheelOrEggMetadata(reader) for idx := range packages { packages[idx].Type = pkg.WheelPkg @@ -17,7 +17,7 @@ func parseWheelMetadata(reader io.Reader) ([]pkg.Package, error) { return packages, err } -func parseEggMetadata(reader io.Reader) ([]pkg.Package, error) { +func parseEggMetadata(_ string, reader io.Reader) ([]pkg.Package, error) { packages, err := parseWheelOrEggMetadata(reader) for idx := range packages { packages[idx].Type = pkg.EggPkg diff --git a/imgbom/cataloger/python/parse_wheel_egg_test.go b/imgbom/cataloger/python/parse_wheel_egg_test.go index 20afa6725..c58b27bf6 100644 --- a/imgbom/cataloger/python/parse_wheel_egg_test.go +++ b/imgbom/cataloger/python/parse_wheel_egg_test.go @@ -57,7 +57,7 @@ func TestParseEggMetadata(t *testing.T) { t.Fatalf("failed to open fixture: %+v", err) } - actual, err := parseEggMetadata(fixture) + actual, err := parseEggMetadata(fixture.Name(), fixture) if err != nil { t.Fatalf("failed to parse egg-info: %+v", err) } @@ -81,7 +81,7 @@ func TestParseWheelMetadata(t *testing.T) { t.Fatalf("failed to open fixture: %+v", err) } - actual, err := parseWheelMetadata(fixture) + actual, err := parseWheelMetadata(fixture.Name(), fixture) if err != nil { t.Fatalf("failed to parse dist-info: %+v", err) } diff --git a/imgbom/cataloger/rpmdb/parse_rpmdb.go b/imgbom/cataloger/rpmdb/parse_rpmdb.go index 058629144..451bbd0b0 100644 --- a/imgbom/cataloger/rpmdb/parse_rpmdb.go +++ b/imgbom/cataloger/rpmdb/parse_rpmdb.go @@ -12,7 +12,7 @@ import ( rpmdb "github.com/knqyf263/go-rpmdb/pkg" ) -func parseRpmDB(reader io.Reader) ([]pkg.Package, error) { +func parseRpmDB(_ string, reader io.Reader) ([]pkg.Package, error) { f, err := ioutil.TempFile("", internal.ApplicationName+"-rpmdb") if err != nil { return nil, fmt.Errorf("failed to create temp rpmdb file: %w", err) diff --git a/imgbom/cataloger/rpmdb/parse_rpmdb_test.go b/imgbom/cataloger/rpmdb/parse_rpmdb_test.go index d6c956f71..c38d13e9d 100644 --- a/imgbom/cataloger/rpmdb/parse_rpmdb_test.go +++ b/imgbom/cataloger/rpmdb/parse_rpmdb_test.go @@ -26,7 +26,7 @@ func TestParseRpmDB(t *testing.T) { t.Fatalf("failed to open fixture: %+v", err) } - actual, err := parseRpmDB(fixture) + actual, err := parseRpmDB(fixture.Name(), fixture) if err != nil { t.Fatalf("failed to parse rpmdb: %+v", err) } diff --git a/imgbom/pkg/language.go b/imgbom/pkg/language.go index f308dd8ea..d0c9e67b5 100644 --- a/imgbom/pkg/language.go +++ b/imgbom/pkg/language.go @@ -2,7 +2,7 @@ package pkg const ( UnknownLanguage Language = iota - //Java + Java //JavaScript Python Ruby @@ -12,14 +12,14 @@ type Language uint var languageStr = []string{ "UnknownLanguage", - //"java", + "java", //"javascript", "python", "ruby", } var AllLanguages = []Language{ - //Java, + Java, //JavaScript, Python, Ruby, diff --git a/imgbom/pkg/metadata.go b/imgbom/pkg/metadata.go index cc0220f1b..3dda9bbdf 100644 --- a/imgbom/pkg/metadata.go +++ b/imgbom/pkg/metadata.go @@ -14,3 +14,30 @@ type RpmMetadata struct { Arch string `mapstructure:"Arch"` Release string `mapstructure:"Release"` } + +type JavaManifest struct { + Name string `mapstructure:"Name"` + ManifestVersion string `mapstructure:"Manifest-Version"` + SpecTitle string `mapstructure:"Specification-Title"` + SpecVersion string `mapstructure:"Specification-Version"` + SpecVendor string `mapstructure:"Specification-Vendor"` + ImplTitle string `mapstructure:"Implementation-Title"` + ImplVersion string `mapstructure:"Implementation-Version"` + ImplVendor string `mapstructure:"Implementation-Vendor"` + Extra map[string]string `mapstructure:",remain"` +} + +type PomProperties struct { + Path string + Name string `mapstructure:"name"` + GroupID string `mapstructure:"groupId"` + ArtifactID string `mapstructure:"artifactId"` + Version string `mapstructure:"version"` + Extra map[string]string `mapstructure:",remain"` +} + +type JavaMetadata struct { + Manifest *JavaManifest `mapstructure:"Manifest"` + PomProperties *PomProperties `mapstructure:"PomProperties"` + Parent *Package +} diff --git a/imgbom/pkg/package.go b/imgbom/pkg/package.go index ac789844c..a19b78eaf 100644 --- a/imgbom/pkg/package.go +++ b/imgbom/pkg/package.go @@ -9,8 +9,10 @@ import ( type ID int64 // TODO: add field to trace which cataloger detected this + +// Package represents an application or library that has been bundled into a distributable format type Package struct { - id ID + id ID // this is set when a package is added to the catalog Name string Version string FoundBy string diff --git a/imgbom/pkg/type.go b/imgbom/pkg/type.go index cd5554ab3..2388a5031 100644 --- a/imgbom/pkg/type.go +++ b/imgbom/pkg/type.go @@ -9,6 +9,11 @@ const ( //PacmanPkg RpmPkg WheelPkg + JarPkg + WarPkg + EarPkg + JpiPkg + HpiPkg ) type Type uint @@ -22,6 +27,11 @@ var typeStr = []string{ //"pacman", "rpm", "wheel", + "jar", + "war", + "ear", + "jpi", + "hpi", } var AllPkgs = []Type{ @@ -32,6 +42,11 @@ var AllPkgs = []Type{ //PacmanPkg, RpmPkg, WheelPkg, + JarPkg, + WarPkg, + EarPkg, + JpiPkg, + HpiPkg, } func (t Type) String() string { diff --git a/imgbom/presenter/json/imgs/presenter.go b/imgbom/presenter/json/imgs/presenter.go index 7efaada71..d53aeaee7 100644 --- a/imgbom/presenter/json/imgs/presenter.go +++ b/imgbom/presenter/json/imgs/presenter.go @@ -56,6 +56,7 @@ type artifact struct { Metadata interface{} `json:"metadata"` } +// nolint:funlen func (pres *Presenter) Present(output io.Writer) error { tags := make([]string, len(pres.img.Metadata.Tags)) for idx, tag := range pres.img.Metadata.Tags { diff --git a/internal/file/glob_match.go b/internal/file/glob_match.go new file mode 100644 index 000000000..81575de24 --- /dev/null +++ b/internal/file/glob_match.go @@ -0,0 +1,45 @@ +package file + +// Source: https://research.swtch.com/glob.go +func GlobMatch(pattern, name string) bool { + px := 0 + nx := 0 + nextPx := 0 + nextNx := 0 + for px < len(pattern) || nx < len(name) { + if px < len(pattern) { + c := pattern[px] + switch c { + default: // ordinary character + if nx < len(name) && name[nx] == c { + px++ + nx++ + continue + } + case '?': // single-character wildcard + if nx < len(name) { + px++ + nx++ + continue + } + case '*': // zero-or-more-character wildcard + // Try to match at nx. + // If that doesn't work out, + // restart at nx+1 next. + nextPx = px + nextNx = nx + 1 + px++ + continue + } + } + // Mismatch. Maybe restart. + if 0 < nextNx && nextNx <= len(name) { + px = nextPx + nx = nextNx + continue + } + return false + } + // Matched all of pattern to all of name. Success. + return true +} diff --git a/internal/file/glob_match_test.go b/internal/file/glob_match_test.go new file mode 100644 index 000000000..aab2803dc --- /dev/null +++ b/internal/file/glob_match_test.go @@ -0,0 +1,39 @@ +package file + +import ( + "strings" + "testing" +) + +func TestGlobMatch(t *testing.T) { + var tests = []struct { + pattern string + data string + ok bool + }{ + {"", "", true}, + {"x", "", false}, + {"", "x", false}, + {"abc", "abc", true}, + {"*", "abc", true}, + {"*c", "abc", true}, + {"*b", "abc", false}, + {"a*", "abc", true}, + {"b*", "abc", false}, + {"a*", "a", true}, + {"*a", "a", true}, + {"a*b*c*d*e*", "axbxcxdxe", true}, + {"a*b*c*d*e*", "axbxcxdxexxx", true}, + {"a*b?c*x", "abxbbxdbxebxczzx", true}, + {"a*b?c*x", "abxbbxdbxebxczzy", false}, + {"a*a*a*a*b", strings.Repeat("a", 100), false}, + {"*x", "xxx", true}, + {"/home/place/**", "/home/place/a/thing", true}, + } + + for _, test := range tests { + if GlobMatch(test.pattern, test.data) != test.ok { + t.Errorf("failed glob='%s' data='%s'", test.pattern, test.data) + } + } +} diff --git a/internal/file/test-fixtures/generate-zip-fixture.sh b/internal/file/test-fixtures/generate-zip-fixture.sh new file mode 100755 index 000000000..3c6d829e7 --- /dev/null +++ b/internal/file/test-fixtures/generate-zip-fixture.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -eux + +zip -r "$1" zip-source \ No newline at end of file diff --git a/internal/file/test-fixtures/zip-source/b-file.txt b/internal/file/test-fixtures/zip-source/b-file.txt new file mode 100644 index 000000000..a8f5b7786 --- /dev/null +++ b/internal/file/test-fixtures/zip-source/b-file.txt @@ -0,0 +1 @@ +B file... \ No newline at end of file diff --git a/internal/file/test-fixtures/zip-source/some-dir/a-file.txt b/internal/file/test-fixtures/zip-source/some-dir/a-file.txt new file mode 100644 index 000000000..365875220 --- /dev/null +++ b/internal/file/test-fixtures/zip-source/some-dir/a-file.txt @@ -0,0 +1 @@ +A file! nice! \ No newline at end of file diff --git a/internal/file/ziputil.go b/internal/file/ziputil.go new file mode 100644 index 000000000..c07727ea4 --- /dev/null +++ b/internal/file/ziputil.go @@ -0,0 +1,190 @@ +package file + +import ( + "archive/zip" + "bytes" + "errors" + "fmt" + "io" + "os" + "path/filepath" + "strings" + + "github.com/anchore/imgbom/internal/log" +) + +const ( + _ = iota + KB = 1 << (10 * iota) + MB + GB +) + +const readLimit = 2 * GB + +type extractRequest map[string]struct{} + +func newExtractRequest(paths ...string) extractRequest { + results := make(extractRequest) + for _, p := range paths { + results[p] = struct{}{} + } + return results +} + +func ExtractFilesFromZip(archivePath string, paths ...string) (map[string]string, error) { + request := newExtractRequest(paths...) + + results := make(map[string]string) + zipReader, err := zip.OpenReader(archivePath) + if err != nil { + return nil, fmt.Errorf("unable to open zip archive (%s): %w", archivePath, err) + } + defer func() { + err = zipReader.Close() + if err != nil { + log.Errorf("unable to close zip archive (%s): %w", archivePath, err) + } + }() + + for _, file := range zipReader.Reader.File { + if _, ok := request[file.Name]; !ok { + // this file path is not of interest + continue + } + + zippedFile, err := file.Open() + if err != nil { + return nil, fmt.Errorf("unable to read file=%q from zip=%q: %w", file.Name, archivePath, err) + } + + if file.FileInfo().IsDir() { + return nil, fmt.Errorf("unable to extract directories, only files: %s", file.Name) + } + + var buffer bytes.Buffer + + // limit the zip reader on each file read to prevent decompression bomb attacks + numBytes, err := io.Copy(&buffer, io.LimitReader(zippedFile, readLimit)) + if numBytes >= readLimit || errors.Is(err, io.EOF) { + return nil, fmt.Errorf("zip read limit hit (potential decompression bomb attack)") + } + if err != nil { + return nil, fmt.Errorf("unable to copy source=%q for zip=%q: %w", file.Name, archivePath, err) + } + + results[file.Name] = buffer.String() + + err = zippedFile.Close() + if err != nil { + return nil, fmt.Errorf("unable to close source file=%q from zip=%q: %w", file.Name, archivePath, err) + } + } + return results, nil +} + +// nolint:funlen +func UnzipToDir(archivePath, targetDir string) error { + zipReader, err := zip.OpenReader(archivePath) + if err != nil { + return fmt.Errorf("unable to open zip archive (%s): %w", archivePath, err) + } + defer func() { + err = zipReader.Close() + if err != nil { + log.Errorf("unable to close zip archive (%s): %w", archivePath, err) + } + }() + + for _, file := range zipReader.Reader.File { + // the zip-slip attack protection is still being erroneously detected + // nolint:gosec + expandedFilePath := filepath.Clean(filepath.Join(targetDir, file.Name)) + + // protect against zip slip attacks (traversing unintended parent paths from maliciously crafted relative-path entries) + if !strings.HasPrefix(expandedFilePath, filepath.Clean(targetDir)+string(os.PathSeparator)) { + return fmt.Errorf("potential zip slip attack: %q", expandedFilePath) + } + + zippedFile, err := file.Open() + if err != nil { + return fmt.Errorf("unable to read file=%q from zip=%q: %w", file.Name, archivePath, err) + } + + if file.FileInfo().IsDir() { + err = os.MkdirAll(expandedFilePath, file.Mode()) + if err != nil { + return fmt.Errorf("unable to create dir=%q from zip=%q: %w", expandedFilePath, archivePath, err) + } + } else { + // Open an output file for writing + outputFile, err := os.OpenFile( + expandedFilePath, + os.O_WRONLY|os.O_CREATE|os.O_TRUNC, + file.Mode(), + ) + if err != nil { + return fmt.Errorf("unable to create dest file=%q from zip=%q: %w", expandedFilePath, archivePath, err) + } + + // limit the zip reader on each file read to prevent decompression bomb attacks + numBytes, err := io.Copy(outputFile, io.LimitReader(zippedFile, readLimit)) + if numBytes >= readLimit || errors.Is(err, io.EOF) { + return fmt.Errorf("zip read limit hit (potential decompression bomb attack)") + } + if err != nil { + return fmt.Errorf("unable to copy source=%q to dest=%q for zip=%q: %w", file.Name, outputFile.Name(), archivePath, err) + } + + err = outputFile.Close() + if err != nil { + return fmt.Errorf("unable to close dest file=%q from zip=%q: %w", outputFile.Name(), archivePath, err) + } + } + + err = zippedFile.Close() + if err != nil { + return fmt.Errorf("unable to close source file=%q from zip=%q: %w", file.Name, archivePath, err) + } + } + return nil +} + +type ZipManifest map[string]os.FileInfo + +func newZipManifest() ZipManifest { + return make(ZipManifest) +} + +func (z ZipManifest) Add(entry string, info os.FileInfo) { + z[entry] = info +} + +func (z ZipManifest) GlobMatch(pattern string) []string { + results := make([]string, 0) + for entry := range z { + if GlobMatch(pattern, entry) { + results = append(results, entry) + } + } + return results +} + +func ZipFileManifest(archivePath string) (ZipManifest, error) { + zipReader, err := zip.OpenReader(archivePath) + manifest := newZipManifest() + if err != nil { + return manifest, fmt.Errorf("unable to open zip archive (%s): %w", archivePath, err) + } + defer func() { + err = zipReader.Close() + if err != nil { + log.Errorf("unable to close zip archive (%s): %w", archivePath, err) + } + }() + + for _, file := range zipReader.Reader.File { + manifest.Add(file.Name, file.FileInfo()) + } + return manifest, nil +} diff --git a/internal/file/ziputil_test.go b/internal/file/ziputil_test.go new file mode 100644 index 000000000..ce6a87005 --- /dev/null +++ b/internal/file/ziputil_test.go @@ -0,0 +1,265 @@ +package file + +import ( + "crypto/sha256" + "encoding/json" + "github.com/go-test/deep" + "io" + "io/ioutil" + "os" + "os/exec" + "path/filepath" + "strings" + "syscall" + "testing" +) + +func generateFixture(t *testing.T, archivePath string) { + cwd, err := os.Getwd() + if err != nil { + t.Errorf("unable to get cwd: %+v", err) + } + + cmd := exec.Command("./generate-zip-fixture.sh", archivePath) + cmd.Dir = filepath.Join(cwd, "test-fixtures") + + if err := cmd.Start(); err != nil { + t.Fatalf("unable to start generate zip fixture script: %+v", err) + } + + if err := cmd.Wait(); err != nil { + if exiterr, ok := err.(*exec.ExitError); ok { + // The program has exited with an exit code != 0 + + // This works on both Unix and Windows. Although package + // syscall is generally platform dependent, WaitStatus is + // defined for both Unix and Windows and in both cases has + // an ExitStatus() method with the same signature. + if status, ok := exiterr.Sys().(syscall.WaitStatus); ok { + if status.ExitStatus() != 0 { + t.Fatalf("failed to generate fixture: rc=%d", status.ExitStatus()) + } + } + } else { + t.Fatalf("unable to get generate fixture script result: %+v", err) + } + } +} + +func equal(r1, r2 io.Reader) (bool, error) { + w1 := sha256.New() + w2 := sha256.New() + n1, err1 := io.Copy(w1, r1) + if err1 != nil { + return false, err1 + } + n2, err2 := io.Copy(w2, r2) + if err2 != nil { + return false, err2 + } + + var b1, b2 [sha256.Size]byte + copy(b1[:], w1.Sum(nil)) + copy(b2[:], w2.Sum(nil)) + + return n1 != n2 || b1 == b2, nil +} + +func TestUnzipToDir(t *testing.T) { + archivePrefix, err := ioutil.TempFile("", "imgbom-ziputil-archive-TEST-") + if err != nil { + t.Fatalf("unable to create tempfile: %+v", err) + } + defer os.Remove(archivePrefix.Name()) + // the zip utility will add ".zip" to the end of the given name + archivePath := archivePrefix.Name() + ".zip" + defer os.Remove(archivePath) + t.Logf("archive path: %s", archivePath) + + generateFixture(t, archivePrefix.Name()) + + contentsDir, err := ioutil.TempDir("", "imgbom-ziputil-contents-TEST-") + if err != nil { + t.Fatalf("unable to create tempdir: %+v", err) + } + defer os.RemoveAll(contentsDir) + + t.Logf("content path: %s", contentsDir) + + cwd, err := os.Getwd() + if err != nil { + t.Errorf("unable to get cwd: %+v", err) + } + + t.Logf("running from: %s", cwd) + + // note: zip utility already includes "zip-source" as a parent dir for all contained files + goldenRootDir := filepath.Join(cwd, "test-fixtures") + expectedPaths := 4 + observedPaths := 0 + + err = UnzipToDir(archivePath, contentsDir) + if err != nil { + t.Fatalf("unable to unzip archive: %+v", err) + } + + // compare the source dir tree and the unzipped tree + err = filepath.Walk(filepath.Join(contentsDir, "zip-source"), + func(path string, info os.FileInfo, err error) error { + t.Logf("unzipped path: %s", path) + observedPaths++ + if err != nil { + t.Fatalf("this should not happen") + return err + } + + goldenPath := filepath.Join(goldenRootDir, strings.TrimPrefix(path, contentsDir)) + + if info.IsDir() { + i, err := os.Stat(goldenPath) + if err != nil { + t.Fatalf("unable to stat golden path: %+v", err) + } + if !i.IsDir() { + t.Fatalf("mismatched file types: %s", goldenPath) + } + return nil + } + + // this is a file, not a dir... + + testFile, err := os.Open(path) + if err != nil { + t.Fatalf("unable to open test file=%s :%+v", path, err) + } + + goldenFile, err := os.Open(goldenPath) + if err != nil { + t.Fatalf("unable to open golden file=%s :%+v", goldenPath, err) + } + + same, err := equal(testFile, goldenFile) + if err != nil { + t.Fatalf("could not compare files (%s, %s): %+v", goldenPath, path, err) + } + + if !same { + t.Errorf("paths are not the same (%s, %s)", goldenPath, path) + } + + return nil + }) + + if err != nil { + t.Errorf("failed to walk dir: %+v", err) + } + + if observedPaths != expectedPaths { + t.Errorf("missed test paths: %d!=%d", observedPaths, expectedPaths) + } + +} + +func TestExtractFilesFromZipFile(t *testing.T) { + archivePrefix, err := ioutil.TempFile("", "imgbom-ziputil-archive-TEST-") + if err != nil { + t.Fatalf("unable to create tempfile: %+v", err) + } + defer os.Remove(archivePrefix.Name()) + // the zip utility will add ".zip" to the end of the given name + archivePath := archivePrefix.Name() + ".zip" + defer os.Remove(archivePath) + t.Logf("archive path: %s", archivePath) + + generateFixture(t, archivePrefix.Name()) + + cwd, err := os.Getwd() + if err != nil { + t.Errorf("unable to get cwd: %+v", err) + } + + t.Logf("running from: %s", cwd) + + aFilePath := filepath.Join("zip-source", "some-dir", "a-file.txt") + bFilePath := filepath.Join("zip-source", "b-file.txt") + + expected := map[string]string{ + aFilePath: "A file! nice!", + bFilePath: "B file...", + } + + actual, err := ExtractFilesFromZip(archivePath, aFilePath, bFilePath) + if err != nil { + t.Fatalf("unable to extract from unzip archive: %+v", err) + } + + diffs := deep.Equal(actual, expected) + if len(diffs) > 0 { + for _, d := range diffs { + t.Errorf("diff: %+v", d) + } + + b, err := json.MarshalIndent(actual, "", " ") + if err != nil { + t.Fatalf("can't show results: %+v", err) + } + + t.Errorf("full result: %s", string(b)) + } + +} + +func TestZipFileManifest(t *testing.T) { + archivePrefix, err := ioutil.TempFile("", "imgbom-ziputil-archive-TEST-") + if err != nil { + t.Fatalf("unable to create tempfile: %+v", err) + } + defer os.Remove(archivePrefix.Name()) + // the zip utility will add ".zip" to the end of the given name + archivePath := archivePrefix.Name() + ".zip" + defer os.Remove(archivePath) + t.Logf("archive path: %s", archivePath) + + generateFixture(t, archivePrefix.Name()) + + cwd, err := os.Getwd() + if err != nil { + t.Errorf("unable to get cwd: %+v", err) + } + + t.Logf("running from: %s", cwd) + + expected := []string{ + filepath.Join("zip-source") + string(os.PathSeparator), + filepath.Join("zip-source", "some-dir") + string(os.PathSeparator), + filepath.Join("zip-source", "some-dir", "a-file.txt"), + filepath.Join("zip-source", "b-file.txt"), + } + + actual, err := ZipFileManifest(archivePath) + if err != nil { + t.Fatalf("unable to extract from unzip archive: %+v", err) + } + + if len(expected) != len(actual) { + t.Fatalf("mismatched manifest: %d != %d", len(actual), len(expected)) + } + + for _, e := range expected { + _, ok := actual[e] + if !ok { + t.Errorf("missing path: %s", e) + } + } + + if t.Failed() { + + b, err := json.MarshalIndent(actual, "", " ") + if err != nil { + t.Fatalf("can't show results: %+v", err) + } + + t.Errorf("full result: %s", string(b)) + } + +} diff --git a/internal/stringset.go b/internal/stringset.go index 738fa9318..2e1d5bf46 100644 --- a/internal/stringset.go +++ b/internal/stringset.go @@ -1,28 +1,28 @@ package internal -type Set map[string]struct{} +type StringSet map[string]struct{} -func NewStringSet() Set { - return make(Set) +func NewStringSet() StringSet { + return make(StringSet) } -func NewStringSetFromSlice(start []string) Set { - ret := make(Set) +func NewStringSetFromSlice(start []string) StringSet { + ret := make(StringSet) for _, s := range start { ret.Add(s) } return ret } -func (s Set) Add(i string) { +func (s StringSet) Add(i string) { s[i] = struct{}{} } -func (s Set) Remove(i string) { +func (s StringSet) Remove(i string) { delete(s, i) } -func (s Set) Contains(i string) bool { +func (s StringSet) Contains(i string) bool { _, ok := s[i] return ok } diff --git a/internal/ui/etui/ephemeral_tui.go b/internal/ui/etui/ephemeral_tui.go index ccd864258..b769c5495 100644 --- a/internal/ui/etui/ephemeral_tui.go +++ b/internal/ui/etui/ephemeral_tui.go @@ -31,6 +31,7 @@ func setupScreen(output *os.File) *frame.Frame { return fr } +// nolint:funlen,gocognit func OutputToEphemeralTUI(workerErrs <-chan error, subscription *partybus.Subscription) int { output := os.Stderr From 1f89d2690217573e4b00e1b1f11bb50cf6997d5f Mon Sep 17 00:00:00 2001 From: Alex Goodman Date: Thu, 9 Jul 2020 10:38:05 -0400 Subject: [PATCH 2/6] reduce java packages to java-archive and jenkins-plugin --- .circleci/config.yml | 8 +- imgbom/cataloger/common/generic_cataloger.go | 1 + imgbom/cataloger/java/archive_filename.go | 14 +- .../cataloger/java/archive_filename_test.go | 10 +- imgbom/cataloger/java/cataloger.go | 10 +- imgbom/cataloger/java/java_manifest.go | 33 ++++- imgbom/cataloger/java/java_manifest_test.go | 9 ++ imgbom/cataloger/java/parse_java_archive.go | 20 --- .../cataloger/java/parse_java_archive_test.go | 91 ++++++++++--- imgbom/cataloger/java/pom_properties_test.go | 4 +- imgbom/cataloger/java/test-fixtures/Makefile | 35 ----- .../HelloWorldBuilder/config_de.properties | 3 - .../HelloWorldBuilder/config_es.properties | 3 - .../HelloWorldBuilder/config_it.properties | 3 - .../HelloWorldBuilder/config_pt_BR.properties | 3 - .../HelloWorldBuilder/config_sv.properties | 3 - .../HelloWorldBuilder/config_tr.properties | 3 - .../HelloWorldBuilder/config_zh_CN.properties | 6 - .../HelloWorldBuilder/help-name_de.html | 3 - .../HelloWorldBuilder/help-name_es.html | 3 - .../HelloWorldBuilder/help-name_it.html | 3 - .../HelloWorldBuilder/help-name_pt_BR.html | 3 - .../HelloWorldBuilder/help-name_sv.html | 3 - .../HelloWorldBuilder/help-name_tr.html | 3 - .../HelloWorldBuilder/help-name_zh_CN.html | 5 - .../HelloWorldBuilder/help-useFrench_de.html | 3 - .../HelloWorldBuilder/help-useFrench_es.html | 3 - .../HelloWorldBuilder/help-useFrench_it.html | 3 - .../help-useFrench_pt_BR.html | 3 - .../HelloWorldBuilder/help-useFrench_sv.html | 3 - .../HelloWorldBuilder/help-useFrench_tr.html | 3 - .../help-useFrench_zh_CN.html | 5 - .../plugins/sample/Messages_de.properties | 5 - .../plugins/sample/Messages_es.properties | 5 - .../plugins/sample/Messages_it.properties | 5 - .../plugins/sample/Messages_pt_BR.properties | 5 - .../plugins/sample/Messages_sv.properties | 5 - .../plugins/sample/Messages_tr.properties | 5 - .../plugins/sample/Messages_zh_CN.properties | 8 -- .../{ => java-builds}/.gitignore | 2 + .../java/test-fixtures/java-builds/Makefile | 45 +++++++ .../build-example-java-app-gradle.sh} | 9 +- .../build-example-java-app-maven.sh} | 9 +- .../build-example-jenkins-plugin.sh} | 7 +- .../example-java-app}/.gitignore | 0 .../example-java-app}/build.gradle | 2 +- .../example-java-app}/pom.xml | 2 +- .../src/main/java/hello/Greeter.java | 0 .../src/main/java/hello/HelloWorld.java | 0 .../example-jenkins-plugin/pom.xml | 0 .../plugins/sample/HelloWorldBuilder.java | 0 .../src/main/resources/index.jelly | 0 .../sample/HelloWorldBuilder/config.jelly | 0 .../HelloWorldBuilder/config.properties | 0 .../HelloWorldBuilder/config_fr.properties | 0 .../sample/HelloWorldBuilder/help-name.html | 0 .../HelloWorldBuilder/help-name_fr.html | 0 .../HelloWorldBuilder/help-useFrench.html | 0 .../HelloWorldBuilder/help-useFrench_fr.html | 0 .../plugins/sample/Messages.properties | 0 .../plugins/sample/Messages_fr.properties | 0 .../java/test-fixtures/manifest/continuation | 4 + .../test-fixtures/pom/extra.pom.properties | 2 +- .../test-fixtures/pom/small.pom.properties | 2 +- imgbom/pkg/type.go | 21 +-- integration/dir_presenters_test.go | 126 +++++++++--------- .../fixture_image_language_pkgs_test.go | 16 +++ integration/test-fixtures/.gitignore | 7 + .../java/example-java-app-maven-0.1.0.jar | Bin 0 -> 628541 bytes .../java/example-jenkins-plugin.hpi | Bin 0 -> 10417 bytes .../java/generate-fixtures.md | 1 + .../{ => python}/dist-info/METADATA | 0 .../{ => python}/egg-info/PKG-INFO | 0 .../{ => ruby}/Gemfile.lock | 0 74 files changed, 287 insertions(+), 311 deletions(-) delete mode 100644 imgbom/cataloger/java/test-fixtures/Makefile delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_de.properties delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_es.properties delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_it.properties delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_pt_BR.properties delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_sv.properties delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_tr.properties delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_zh_CN.properties delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_de.html delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_es.html delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_it.html delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_pt_BR.html delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_sv.html delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_tr.html delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_zh_CN.html delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_de.html delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_es.html delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_it.html delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_pt_BR.html delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_sv.html delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_tr.html delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_zh_CN.html delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_de.properties delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_es.properties delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_it.properties delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_pt_BR.properties delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_sv.properties delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_tr.properties delete mode 100644 imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_zh_CN.properties rename imgbom/cataloger/java/test-fixtures/{ => java-builds}/.gitignore (79%) create mode 100644 imgbom/cataloger/java/test-fixtures/java-builds/Makefile rename imgbom/cataloger/java/test-fixtures/{run-example-app-gradle.sh => java-builds/build-example-java-app-gradle.sh} (53%) rename imgbom/cataloger/java/test-fixtures/{run-example-app-maven.sh => java-builds/build-example-java-app-maven.sh} (59%) rename imgbom/cataloger/java/test-fixtures/{run-example-jenkins-plugin-maven.sh => java-builds/build-example-jenkins-plugin.sh} (89%) rename imgbom/cataloger/java/test-fixtures/{example-app => java-builds/example-java-app}/.gitignore (100%) rename imgbom/cataloger/java/test-fixtures/{example-app => java-builds/example-java-app}/build.gradle (92%) rename imgbom/cataloger/java/test-fixtures/{example-app => java-builds/example-java-app}/pom.xml (96%) rename imgbom/cataloger/java/test-fixtures/{example-app => java-builds/example-java-app}/src/main/java/hello/Greeter.java (100%) rename imgbom/cataloger/java/test-fixtures/{example-app => java-builds/example-java-app}/src/main/java/hello/HelloWorld.java (100%) rename imgbom/cataloger/java/test-fixtures/{ => java-builds}/example-jenkins-plugin/pom.xml (100%) rename imgbom/cataloger/java/test-fixtures/{ => java-builds}/example-jenkins-plugin/src/main/java/io/jenkins/plugins/sample/HelloWorldBuilder.java (100%) rename imgbom/cataloger/java/test-fixtures/{ => java-builds}/example-jenkins-plugin/src/main/resources/index.jelly (100%) rename imgbom/cataloger/java/test-fixtures/{ => java-builds}/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.jelly (100%) rename imgbom/cataloger/java/test-fixtures/{ => java-builds}/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.properties (100%) rename imgbom/cataloger/java/test-fixtures/{ => java-builds}/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_fr.properties (100%) rename imgbom/cataloger/java/test-fixtures/{ => java-builds}/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name.html (100%) rename imgbom/cataloger/java/test-fixtures/{ => java-builds}/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_fr.html (100%) rename imgbom/cataloger/java/test-fixtures/{ => java-builds}/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench.html (100%) rename imgbom/cataloger/java/test-fixtures/{ => java-builds}/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_fr.html (100%) rename imgbom/cataloger/java/test-fixtures/{ => java-builds}/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages.properties (100%) rename imgbom/cataloger/java/test-fixtures/{ => java-builds}/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_fr.properties (100%) create mode 100644 imgbom/cataloger/java/test-fixtures/manifest/continuation create mode 100644 integration/test-fixtures/.gitignore create mode 100644 integration/test-fixtures/image-pkg-coverage/java/example-java-app-maven-0.1.0.jar create mode 100644 integration/test-fixtures/image-pkg-coverage/java/example-jenkins-plugin.hpi create mode 100644 integration/test-fixtures/image-pkg-coverage/java/generate-fixtures.md rename integration/test-fixtures/image-pkg-coverage/{ => python}/dist-info/METADATA (100%) rename integration/test-fixtures/image-pkg-coverage/{ => python}/egg-info/PKG-INFO (100%) rename integration/test-fixtures/image-pkg-coverage/{ => ruby}/Gemfile.lock (100%) diff --git a/.circleci/config.yml b/.circleci/config.yml index 75962e254..881f13935 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -76,21 +76,21 @@ jobs: - run: name: build cache key for java test-fixture blobs command: | - cd imgbom/cataloger/java/test-fixtures &&\ + cd imgbom/cataloger/java/test-fixtures/java-builds &&\ make packages.fingerprint - restore_cache: keys: - - unit-test-java-cache-{{ checksum "imgbom/cataloger/java/test-fixtures/packages.fingerprint" }} + - unit-test-java-cache-{{ checksum "imgbom/cataloger/java/test-fixtures/java-builds/packages.fingerprint" }} - run: name: run unit tests command: make unit - save_cache: - key: unit-test-java-cache-{{ checksum "imgbom/cataloger/java/test-fixtures/packages.fingerprint" }} + key: unit-test-java-cache-{{ checksum "imgbom/cataloger/java/test-fixtures/java-builds/packages.fingerprint" }} paths: - - "imgbom/cataloger/java/test-fixtures/packages" + - "imgbom/cataloger/java/test-fixtures/java-builds/packages" - run: name: build hash key for integration test-fixtures blobs diff --git a/imgbom/cataloger/common/generic_cataloger.go b/imgbom/cataloger/common/generic_cataloger.go index 229a04673..b3c0d77be 100644 --- a/imgbom/cataloger/common/generic_cataloger.go +++ b/imgbom/cataloger/common/generic_cataloger.go @@ -84,6 +84,7 @@ func (a *GenericCataloger) Catalog(contents map[file.Reference]string, upstreamM entries, err := parser(string(reference.Path), strings.NewReader(content)) if err != nil { + // TODO: should we fail? or only log? log.Errorf("cataloger '%s' failed to parse entries (reference=%+v): %w", upstreamMatcher, reference, err) continue } diff --git a/imgbom/cataloger/java/archive_filename.go b/imgbom/cataloger/java/archive_filename.go index 161096063..529508655 100644 --- a/imgbom/cataloger/java/archive_filename.go +++ b/imgbom/cataloger/java/archive_filename.go @@ -52,16 +52,10 @@ func (a archiveFilename) extension() string { func (a archiveFilename) pkgType() pkg.Type { switch strings.ToLower(a.extension()) { - case "jar": - return pkg.JarPkg - case "war": - return pkg.WarPkg - case "ear": - return pkg.EarPkg - case "jpi": - return pkg.JpiPkg - case "hpi": - return pkg.HpiPkg + case "jar", "war", "ear": + return pkg.JavaPkg + case "jpi", "hpi": + return pkg.JenkinsPluginPkg default: return pkg.UnknownPkg } diff --git a/imgbom/cataloger/java/archive_filename_test.go b/imgbom/cataloger/java/archive_filename_test.go index 3ba14f84f..0f9b9528a 100644 --- a/imgbom/cataloger/java/archive_filename_test.go +++ b/imgbom/cataloger/java/archive_filename_test.go @@ -26,35 +26,35 @@ func TestExtractInfoFromJavaArchiveFilename(t *testing.T) { version: "4.3.2", extension: "jar", name: "pkg-maven", - ty: pkg.JarPkg, + ty: pkg.JavaPkg, }, { filename: "pkg-extra-field-maven-4.3.2.war", version: "4.3.2", extension: "war", name: "pkg-extra-field-maven", - ty: pkg.WarPkg, + ty: pkg.JavaPkg, }, { filename: "pkg-extra-field-maven-4.3.2-rc1.ear", version: "4.3.2-rc1", extension: "ear", name: "pkg-extra-field-maven", - ty: pkg.EarPkg, + ty: pkg.JavaPkg, }, { filename: "/some/path/pkg-extra-field-maven-4.3.2-rc1.jpi", version: "4.3.2-rc1", extension: "jpi", name: "pkg-extra-field-maven", - ty: pkg.JpiPkg, + ty: pkg.JenkinsPluginPkg, }, { filename: "/some/path-with-version-5.4.3/pkg-extra-field-maven-4.3.2-rc1.hpi", version: "4.3.2-rc1", extension: "hpi", name: "pkg-extra-field-maven", - ty: pkg.HpiPkg, + ty: pkg.JenkinsPluginPkg, }, } diff --git a/imgbom/cataloger/java/cataloger.go b/imgbom/cataloger/java/cataloger.go index d3d1bf14f..0018dea8f 100644 --- a/imgbom/cataloger/java/cataloger.go +++ b/imgbom/cataloger/java/cataloger.go @@ -13,11 +13,11 @@ type Cataloger struct { func NewCataloger() *Cataloger { globParsers := map[string]common.ParserFn{ - "*.jar": parseJar, - "*.war": parseWar, - "*.ear": parseEar, - "*.jpi": parseJpi, - "*.hpi": parseHpi, + "*.jar": parseJavaArchive, + "*.war": parseJavaArchive, + "*.ear": parseJavaArchive, + "*.jpi": parseJavaArchive, + "*.hpi": parseJavaArchive, } return &Cataloger{ diff --git a/imgbom/cataloger/java/java_manifest.go b/imgbom/cataloger/java/java_manifest.go index 548bc2f3c..7d7c864bb 100644 --- a/imgbom/cataloger/java/java_manifest.go +++ b/imgbom/cataloger/java/java_manifest.go @@ -18,6 +18,7 @@ func parseJavaManifest(reader io.Reader) (*pkg.JavaManifest, error) { var manifest pkg.JavaManifest manifestMap := make(map[string]string) scanner := bufio.NewScanner(reader) + var lastKey string for scanner.Scan() { line := scanner.Text() @@ -26,14 +27,26 @@ func parseJavaManifest(reader io.Reader) (*pkg.JavaManifest, error) { continue } - idx := strings.Index(line, ":") - if idx == -1 { - return nil, fmt.Errorf("unable to split java manifest key-value pairs: %q", line) - } + if line[0] == ' ' { + // this is a continuation + if lastKey == "" { + return nil, fmt.Errorf("found continuation with no previous key (%s)", line) + } + manifestMap[lastKey] += strings.TrimSpace(line) + } else { + // this is a new key-value pair + idx := strings.Index(line, ":") + if idx == -1 { + return nil, fmt.Errorf("unable to split java manifest key-value pairs: %q", line) + } - key := strings.TrimSpace(line[0:idx]) - value := strings.TrimSpace(line[idx+1:]) - manifestMap[key] = value + key := strings.TrimSpace(line[0:idx]) + value := strings.TrimSpace(line[idx+1:]) + manifestMap[key] = value + + // keep track of key for future continuations + lastKey = key + } } if err := scanner.Err(); err != nil { @@ -78,6 +91,10 @@ func newPackageFromJavaManifest(virtualPath, archivePath string, fileManifest fi name = manifest.Name case filenameObj.name() != "": name = filenameObj.name() + case manifest.Extra["Short-Name"] != "": + name = manifest.Extra["Short-Name"] + case manifest.Extra["Extension-Name"] != "": + name = manifest.Extra["Extension-Name"] } var version string @@ -88,6 +105,8 @@ func newPackageFromJavaManifest(virtualPath, archivePath string, fileManifest fi version = filenameObj.version() case manifest.SpecVersion != "": version = manifest.SpecVersion + case manifest.Extra["Plugin-Version"] != "": + name = manifest.Extra["Plugin-Version"] } return &pkg.Package{ diff --git a/imgbom/cataloger/java/java_manifest_test.go b/imgbom/cataloger/java/java_manifest_test.go index 68e853ba5..086c71b00 100644 --- a/imgbom/cataloger/java/java_manifest_test.go +++ b/imgbom/cataloger/java/java_manifest_test.go @@ -45,6 +45,15 @@ func TestParseJavaManifest(t *testing.T) { }, }, }, + { + fixture: "test-fixtures/manifest/continuation", + expected: pkg.JavaManifest{ + ManifestVersion: "1.0", + Extra: map[string]string{ + "Plugin-ScmUrl": "https://github.com/jenkinsci/plugin-pom/example-jenkins-plugin", + }, + }, + }, } for _, test := range tests { diff --git a/imgbom/cataloger/java/parse_java_archive.go b/imgbom/cataloger/java/parse_java_archive.go index 6f53909b0..32fe2f494 100644 --- a/imgbom/cataloger/java/parse_java_archive.go +++ b/imgbom/cataloger/java/parse_java_archive.go @@ -17,26 +17,6 @@ func uniquePkgKey(p *pkg.Package) string { return fmt.Sprintf("%s|%s", p.Name, p.Version) } -func parseJar(virtualPath string, reader io.Reader) ([]pkg.Package, error) { - return parseJavaArchive(virtualPath, reader) -} - -func parseWar(virtualPath string, reader io.Reader) ([]pkg.Package, error) { - return parseJavaArchive(virtualPath, reader) -} - -func parseEar(virtualPath string, reader io.Reader) ([]pkg.Package, error) { - return parseJavaArchive(virtualPath, reader) -} - -func parseJpi(virtualPath string, reader io.Reader) ([]pkg.Package, error) { - return parseJavaArchive(virtualPath, reader) -} - -func parseHpi(virtualPath string, reader io.Reader) ([]pkg.Package, error) { - return parseJavaArchive(virtualPath, reader) -} - func parseJavaArchive(virtualPath string, reader io.Reader) ([]pkg.Package, error) { var pkgs = make([]pkg.Package, 0) discoveredPkgs := internal.NewStringSet() diff --git a/imgbom/cataloger/java/parse_java_archive_test.go b/imgbom/cataloger/java/parse_java_archive_test.go index f035b1f0c..f23f92cca 100644 --- a/imgbom/cataloger/java/parse_java_archive_test.go +++ b/imgbom/cataloger/java/parse_java_archive_test.go @@ -14,13 +14,13 @@ import ( "testing" ) -func generateFixture(t *testing.T, fixturePath string) { +func generateJavaBuildFixture(t *testing.T, fixturePath string) { if _, err := os.Stat(fixturePath); !os.IsNotExist(err) { // fixture already exists... return } - makeTask := strings.TrimPrefix(fixturePath, "test-fixtures/") + makeTask := strings.TrimPrefix(fixturePath, "test-fixtures/java-builds/") t.Logf(color.Bold.Sprintf("Generating Fixture from 'make %s'", makeTask)) cwd, err := os.Getwd() @@ -29,7 +29,7 @@ func generateFixture(t *testing.T, fixturePath string) { } cmd := exec.Command("make", makeTask) - cmd.Dir = filepath.Join(cwd, "test-fixtures") + cmd.Dir = filepath.Join(cwd, "test-fixtures/java-builds/") stderr, err := cmd.StderrPipe() if err != nil { @@ -76,17 +76,63 @@ func generateFixture(t *testing.T, fixturePath string) { func TestParseJar(t *testing.T) { tests := []struct { - fixture string - expected map[string]pkg.Package + fixture string + expected map[string]pkg.Package + ignoreExtras []string }{ { - fixture: "test-fixtures/packages/example-app-gradle-0.1.0.jar", + fixture: "test-fixtures/java-builds/packages/example-jenkins-plugin.hpi", + ignoreExtras: []string{"Plugin-Version"}, // has dynamic date expected: map[string]pkg.Package{ - "example-app-gradle": { - Name: "example-app-gradle", + "example-jenkins-plugin": { + Name: "example-jenkins-plugin", + Version: "1.0-SNAPSHOT", + Language: pkg.Java, + Type: pkg.JenkinsPluginPkg, + Metadata: pkg.JavaMetadata{ + Manifest: &pkg.JavaManifest{ + ManifestVersion: "1.0", + SpecTitle: "The Jenkins Plugins Parent POM Project", + ImplTitle: "example-jenkins-plugin", + ImplVersion: "1.0-SNAPSHOT", + Extra: map[string]string{ + "Archiver-Version": "Plexus Archiver", + "Plugin-License-Url": "https://opensource.org/licenses/MIT", + "Plugin-License-Name": "MIT License", + "Created-By": "Apache Maven", + "Built-By": "?", + "Build-Jdk": "14.0.1", + "Jenkins-Version": "2.164.3", + "Minimum-Java-Version": "1.8", + "Plugin-Developers": "", + "Plugin-ScmUrl": "https://github.com/jenkinsci/plugin-pom/example-jenkins-plugin", + "Extension-Name": "example-jenkins-plugin", + "Short-Name": "example-jenkins-plugin", + "Group-Id": "io.jenkins.plugins", + "Plugin-Dependencies": "structs:1.20", + //"Plugin-Version": "1.0-SNAPSHOT (private-07/09/2020 13:30-?)", + "Hudson-Version": "2.164.3", + "Long-Name": "TODO Plugin", + }, + }, + PomProperties: &pkg.PomProperties{ + Path: "META-INF/maven/io.jenkins.plugins/example-jenkins-plugin/pom.properties", + GroupID: "io.jenkins.plugins", + ArtifactID: "example-jenkins-plugin", + Version: "1.0-SNAPSHOT", + }, + }, + }, + }, + }, + { + fixture: "test-fixtures/java-builds/packages/example-java-app-gradle-0.1.0.jar", + expected: map[string]pkg.Package{ + "example-java-app-gradle": { + Name: "example-java-app-gradle", Version: "0.1.0", Language: pkg.Java, - Type: pkg.JarPkg, + Type: pkg.JavaPkg, Metadata: pkg.JavaMetadata{ Manifest: &pkg.JavaManifest{ ManifestVersion: "1.0", @@ -96,13 +142,13 @@ func TestParseJar(t *testing.T) { }, }, { - fixture: "test-fixtures/packages/example-app-maven-0.1.0.jar", + fixture: "test-fixtures/java-builds/packages/example-java-app-maven-0.1.0.jar", expected: map[string]pkg.Package{ - "example-app-maven": { - Name: "example-app-maven", + "example-java-app-maven": { + Name: "example-java-app-maven", Version: "0.1.0", Language: pkg.Java, - Type: pkg.JarPkg, + Type: pkg.JavaPkg, Metadata: pkg.JavaMetadata{ Manifest: &pkg.JavaManifest{ ManifestVersion: "1.0", @@ -115,9 +161,9 @@ func TestParseJar(t *testing.T) { }, }, PomProperties: &pkg.PomProperties{ - Path: "META-INF/maven/org.anchore/example-app-maven/pom.properties", + Path: "META-INF/maven/org.anchore/example-java-app-maven/pom.properties", GroupID: "org.anchore", - ArtifactID: "example-app-maven", + ArtifactID: "example-java-app-maven", Version: "0.1.0", }, }, @@ -143,16 +189,16 @@ func TestParseJar(t *testing.T) { for _, test := range tests { t.Run(test.fixture, func(t *testing.T) { - generateFixture(t, test.fixture) + generateJavaBuildFixture(t, test.fixture) fixture, err := os.Open(test.fixture) if err != nil { t.Fatalf("failed to open fixture: %+v", err) } - actual, err := parseJar(fixture.Name(), fixture) + actual, err := parseJavaArchive(fixture.Name(), fixture) if err != nil { - t.Fatalf("failed to parse egg-info: %+v", err) + t.Fatalf("failed to parse java archive: %+v", err) } if len(actual) != len(test.expected) { @@ -164,7 +210,7 @@ func TestParseJar(t *testing.T) { var parent *pkg.Package for _, a := range actual { - if strings.Contains(a.Name, "example-app-") { + if strings.Contains(a.Name, "example-") { parent = &a } } @@ -187,6 +233,13 @@ func TestParseJar(t *testing.T) { // we need to compare the other fields without parent attached metadata := a.Metadata.(pkg.JavaMetadata) metadata.Parent = nil + + // ignore select fields + for _, field := range test.ignoreExtras { + delete(metadata.Manifest.Extra, field) + } + + // write censored data back a.Metadata = metadata diffs := deep.Equal(a, e) diff --git a/imgbom/cataloger/java/pom_properties_test.go b/imgbom/cataloger/java/pom_properties_test.go index 27c3c4311..05831d716 100644 --- a/imgbom/cataloger/java/pom_properties_test.go +++ b/imgbom/cataloger/java/pom_properties_test.go @@ -18,7 +18,7 @@ func TestParseJavaPomProperties(t *testing.T) { expected: pkg.PomProperties{ Path: "test-fixtures/pom/small.pom.properties", GroupID: "org.anchore", - ArtifactID: "example-app-maven", + ArtifactID: "example-java-app-maven", Version: "0.1.0", }, }, @@ -27,7 +27,7 @@ func TestParseJavaPomProperties(t *testing.T) { expected: pkg.PomProperties{ Path: "test-fixtures/pom/extra.pom.properties", GroupID: "org.anchore", - ArtifactID: "example-app-maven", + ArtifactID: "example-java-app-maven", Version: "0.1.0", Name: "something-here", Extra: map[string]string{ diff --git a/imgbom/cataloger/java/test-fixtures/Makefile b/imgbom/cataloger/java/test-fixtures/Makefile deleted file mode 100644 index ffc73cc79..000000000 --- a/imgbom/cataloger/java/test-fixtures/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -all: packages/example-app-maven-0.1.0.jar packages/example-app-gradle-0.1.0.jar packages/example-jenkins-plugin.hpi - -clean: clean-examples - rm -f packages/* - -clean-examples: clean-gradle clean-maven clean-jenkins - -.PHONY: maven gradle clean clean-gradle clean-maven clean-jenkins clean-examples - -# Maven... -packages/example-app-maven-0.1.0.jar: - ./run-example-app-maven.sh - -clean-maven: - rm -rf example-app/target example-app/dependency-reduced-pom.xml - -# Gradle... -packages/example-app-gradle-0.1.0.jar: - ./run-example-app-gradle.sh - -clean-gradle: - rm -rf example-app/.gradle example-app/build - -# Jenkins plugin -packages/example-jenkins-plugin.hpi, packages/example-jenkins-plugin.jar: - ./run-example-jenkins-plugin-maven.sh - -clean-jenkins: - rm -rf example-jenkins-plugin/target example-jenkins-plugin/dependency-reduced-pom.xml example-jenkins-plugin/*.exploding - -# we need a way to determine if CI should bust the test cache based on the source material -packages.fingerprint: clean-examples - @mkdir -p packages - find example-* -type f -exec sha256sum {} \; > packages.fingerprint - sha256sum packages.fingerprint diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_de.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_de.properties deleted file mode 100644 index abaf0080d..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_de.properties +++ /dev/null @@ -1,3 +0,0 @@ -Name=Name -French=Franz\u00F6sisch -FrenchDescr=Markieren f\u00FCr Begr\u00FC\u00DFung auf franz\u00F6sisch \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_es.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_es.properties deleted file mode 100644 index d3306b69a..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_es.properties +++ /dev/null @@ -1,3 +0,0 @@ -Name=Nombre -French=Franc\u00E9s -FrenchDescr=Compruebe si debemos decir hola en franc\u00E9s \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_it.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_it.properties deleted file mode 100644 index 94fdb64b7..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_it.properties +++ /dev/null @@ -1,3 +0,0 @@ -Name=Nome -French=Francese -FrenchDescr=Mostra il messagio in francese diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_pt_BR.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_pt_BR.properties deleted file mode 100644 index c1aa4daf4..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_pt_BR.properties +++ /dev/null @@ -1,3 +0,0 @@ -Name=Nome -French=Franc\u00EAs -FrenchDescr=Marque se devemos falar ol\u00E1 em franc\u00EAs \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_sv.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_sv.properties deleted file mode 100644 index bbab3b3c8..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_sv.properties +++ /dev/null @@ -1,3 +0,0 @@ -Name=Namn -French=Franska -FrenchDescr=S\u00E4tt om vi ska s\u00E4ga hej p\u00E5 Franska \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_tr.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_tr.properties deleted file mode 100644 index 96511210d..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_tr.properties +++ /dev/null @@ -1,3 +0,0 @@ -Name=\u0130sim -French=Frans\u0131zca -FrenchDescr=Frans\u0131zca olarak merhaba demeliyim diye sor \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_zh_CN.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_zh_CN.properties deleted file mode 100644 index 63ec34ff9..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_zh_CN.properties +++ /dev/null @@ -1,6 +0,0 @@ -# 如果您希望在 Jenkins 组织当中托管您的插件,那我们推荐您将本地化文件提交到 https://github.com/jenkinsci/localization-zh-cn-plugin 中。 -# 如果您希望私有维护插件,可以参考本例子的方式放置中文的本地化文件。 - -Name=\u540d\u5b57 -French=\u6cd5\u8bed -FrenchDescr=\u68c0\u67e5\u6211\u4eec\u662f\u5426\u5e94\u8be5\u7528\u6cd5\u8bed\u6253\u4e2a\u62db\u547c \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_de.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_de.html deleted file mode 100644 index 3521acee7..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_de.html +++ /dev/null @@ -1,3 +0,0 @@ -
- Geben Sie Ihren Namen ein. -
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_es.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_es.html deleted file mode 100644 index 2cb64e038..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_es.html +++ /dev/null @@ -1,3 +0,0 @@ -
- Tu nombre. -
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_it.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_it.html deleted file mode 100644 index e5988b8c4..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_it.html +++ /dev/null @@ -1,3 +0,0 @@ -
- Nome di mostrare. -
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_pt_BR.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_pt_BR.html deleted file mode 100644 index eb6a41d31..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_pt_BR.html +++ /dev/null @@ -1,3 +0,0 @@ -
- Seu nome. -
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_sv.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_sv.html deleted file mode 100644 index 697036852..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_sv.html +++ /dev/null @@ -1,3 +0,0 @@ -
- Ditt namn. -
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_tr.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_tr.html deleted file mode 100644 index df069db40..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_tr.html +++ /dev/null @@ -1,3 +0,0 @@ -
- İsmin. -
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_zh_CN.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_zh_CN.html deleted file mode 100644 index bfd8051a7..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_zh_CN.html +++ /dev/null @@ -1,5 +0,0 @@ - - -
- 你的名字。 -
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_de.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_de.html deleted file mode 100644 index 96b269810..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_de.html +++ /dev/null @@ -1,3 +0,0 @@ -
- Ob die Begrüßung auf französisch angegeben werden soll. -
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_es.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_es.html deleted file mode 100644 index 1b2cc04b2..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_es.html +++ /dev/null @@ -1,3 +0,0 @@ -
- ¿Utilizar el francés? -
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_it.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_it.html deleted file mode 100644 index 96118a531..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_it.html +++ /dev/null @@ -1,3 +0,0 @@ -
- Mostrare il messagio in francese. -
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_pt_BR.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_pt_BR.html deleted file mode 100644 index 3ce431878..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_pt_BR.html +++ /dev/null @@ -1,3 +0,0 @@ -
- Usar francês? -
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_sv.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_sv.html deleted file mode 100644 index 6655872e4..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_sv.html +++ /dev/null @@ -1,3 +0,0 @@ -
- Använda Franska? -
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_tr.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_tr.html deleted file mode 100644 index e44de32aa..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_tr.html +++ /dev/null @@ -1,3 +0,0 @@ -
- Fransızca göster? -
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_zh_CN.html b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_zh_CN.html deleted file mode 100644 index d2ea3dbe4..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_zh_CN.html +++ /dev/null @@ -1,5 +0,0 @@ - - -
- 使用法语 ? -
diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_de.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_de.properties deleted file mode 100644 index 5d44cd4a2..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_de.properties +++ /dev/null @@ -1,5 +0,0 @@ -HelloWorldBuilder.DescriptorImpl.errors.missingName=Bitte geben Sie einen Namen an -HelloWorldBuilder.DescriptorImpl.warnings.tooShort=Der Name ist zu kurz. -HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=Sind Sie wirklich franz\u00F6sisch? - -HelloWorldBuilder.DescriptorImpl.DisplayName=\u201EHallo Welt\u201C sagen \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_es.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_es.properties deleted file mode 100644 index 1d0436342..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_es.properties +++ /dev/null @@ -1,5 +0,0 @@ -HelloWorldBuilder.DescriptorImpl.errors.missingName=Establecer un nombre -HelloWorldBuilder.DescriptorImpl.warnings.tooShort=\u00BFNo es el nombre demasiado corto? -HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=\u00BFEs usted realmente franc\u00E9s? - -HelloWorldBuilder.DescriptorImpl.DisplayName=Di hola mundo diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_it.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_it.properties deleted file mode 100644 index 7e1b20654..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_it.properties +++ /dev/null @@ -1,5 +0,0 @@ -HelloWorldBuilder.DescriptorImpl.errors.missingName=Nome \u00E8 richiesto -HelloWorldBuilder.DescriptorImpl.warnings.tooShort=Nome dev'essere al meno 4 charatteri -HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=Vuole mostrare il messagio in francese? - -HelloWorldBuilder.DescriptorImpl.DisplayName=Nome di mostrare diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_pt_BR.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_pt_BR.properties deleted file mode 100644 index 40bd468df..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_pt_BR.properties +++ /dev/null @@ -1,5 +0,0 @@ -HelloWorldBuilder.DescriptorImpl.errors.missingName=Insira um nome -HelloWorldBuilder.DescriptorImpl.warnings.tooShort=Este nome n\u00E3o \u00E9 muito curto? -HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=Voc\u00EA \u00E9 realmente franc\u00EAs? - -HelloWorldBuilder.DescriptorImpl.DisplayName=Diz ol\u00E1 mundo \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_sv.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_sv.properties deleted file mode 100644 index b41916f23..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_sv.properties +++ /dev/null @@ -1,5 +0,0 @@ -HelloWorldBuilder.DescriptorImpl.errors.missingName=Ange ett namn -HelloWorldBuilder.DescriptorImpl.warnings.tooShort=\u00C4r inte namnet lite f\u00F6r kort? -HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=\u00C4r du egentligen Fransk? - -HelloWorldBuilder.DescriptorImpl.DisplayName=S\u00E4g Hej V\u00E4rlden diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_tr.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_tr.properties deleted file mode 100644 index 585e853d5..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_tr.properties +++ /dev/null @@ -1,5 +0,0 @@ -HelloWorldBuilder.DescriptorImpl.errors.missingName=L\u00FCtfen bir isim girin -HelloWorldBuilder.DescriptorImpl.warnings.tooShort=\u0130sminiz \u00E7ok k\u0131sa de\u011Fil mi? -HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=Ger\u00E7ekten Frans\u0131z m\u0131s\u0131n\u0131z? - -HelloWorldBuilder.DescriptorImpl.DisplayName=Merhaba d\u00FCnya de diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_zh_CN.properties b/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_zh_CN.properties deleted file mode 100644 index 2ef005501..000000000 --- a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_zh_CN.properties +++ /dev/null @@ -1,8 +0,0 @@ -# 如果您希望在 Jenkins 组织当中托管您的插件,那我们推荐您将本地化文件提交到 https://github.com/jenkinsci/localization-zh-cn-plugin 中。 -# 如果您希望私有维护插件,可以参考本例子的方式放置中文的本地化文件。 - -HelloWorldBuilder.DescriptorImpl.errors.missingName=\u8bf7\u586b\u5199\u540d\u5b57 -HelloWorldBuilder.DescriptorImpl.warnings.tooShort=\u540d\u5b57\u662f\u4e0d\u662f\u592a\u77ed\u4e86\uff1f -HelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=\u4f60\u771f\u7684\u662f\u6cd5\u56fd\u4eba\u5417\uff1f - -HelloWorldBuilder.DescriptorImpl.DisplayName=\u8bf4\uff1a\u4f60\u597d\uff0c\u4e16\u754c \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/.gitignore b/imgbom/cataloger/java/test-fixtures/java-builds/.gitignore similarity index 79% rename from imgbom/cataloger/java/test-fixtures/.gitignore rename to imgbom/cataloger/java/test-fixtures/java-builds/.gitignore index bcfb378bf..1685225cc 100644 --- a/imgbom/cataloger/java/test-fixtures/.gitignore +++ b/imgbom/cataloger/java/test-fixtures/java-builds/.gitignore @@ -1,3 +1,5 @@ /packages/* +*.fingerprint # maven when running in a volume may spit out directories like this +**/\?/ \?/ \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/java-builds/Makefile b/imgbom/cataloger/java/test-fixtures/java-builds/Makefile new file mode 100644 index 000000000..2d4a46b7b --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/java-builds/Makefile @@ -0,0 +1,45 @@ +PKGSDIR=packages + +ifndef PKGSDIR + $(error PKGSDIR is not set) +endif + +all: $(PKGSDIR)/example-java-app-maven-0.1.0.jar $(PKGSDIR)/example-java-app-gradle-0.1.0.jar $(PKGSDIR)/example-jenkins-plugin.hpi + +clean: clean-examples + rm -f $(PKGSDIR)/* + +clean-examples: clean-gradle clean-maven clean-jenkins + +.PHONY: maven gradle clean clean-gradle clean-maven clean-jenkins clean-examples + +# Maven... +$(PKGSDIR)/example-java-app-maven-0.1.0.jar: + ./build-example-java-app-maven.sh $(PKGSDIR) + +clean-maven: + rm -rf example-java-app/target \ + example-java-app/dependency-reduced-pom.xml + +# Gradle... +$(PKGSDIR)/example-java-app-gradle-0.1.0.jar: + ./build-example-java-app-gradle.sh $(PKGSDIR) + +clean-gradle: + rm -rf example-java-app/.gradle \ + example-java-app/build + +# Jenkins plugin +$(PKGSDIR)/example-jenkins-plugin.hpi , $(PKGSDIR)/example-jenkins-plugin.jar: + ./build-example-jenkins-plugin.sh $(PKGSDIR) + +clean-jenkins: + rm -rf example-jenkins-plugin/target \ + example-jenkins-plugin/dependency-reduced-pom.xml \ + example-jenkins-plugin/*.exploding + +# we need a way to determine if CI should bust the test cache based on the source material +$(PKGSDIR).fingerprint: clean-examples + mkdir -p $(PKGSDIR) + find example-* -type f -exec sha256sum {} \; > $(PKGSDIR).fingerprint + sha256sum $(PKGSDIR).fingerprint diff --git a/imgbom/cataloger/java/test-fixtures/run-example-app-gradle.sh b/imgbom/cataloger/java/test-fixtures/java-builds/build-example-java-app-gradle.sh similarity index 53% rename from imgbom/cataloger/java/test-fixtures/run-example-app-gradle.sh rename to imgbom/cataloger/java/test-fixtures/java-builds/build-example-java-app-gradle.sh index 4e18a5a7d..c7c266051 100755 --- a/imgbom/cataloger/java/test-fixtures/run-example-app-gradle.sh +++ b/imgbom/cataloger/java/test-fixtures/java-builds/build-example-java-app-gradle.sh @@ -3,7 +3,8 @@ set -uxe # note: this can be easily done in a 1-liner, however circle CI does NOT allow volume mounts from the host in docker executors (since they are on remote hosts, where the host files are inaccessible) -CTRID=$(docker create -u "$(id -u):$(id -g)" -v /example-app -w /example-app gradle:jdk gradle build) +PKGSDIR=$1 +CTRID=$(docker create -u "$(id -u):$(id -g)" -v /example-java-app -w /example-java-app gradle:jdk gradle build) function cleanup() { docker rm "${CTRID}" @@ -12,7 +13,7 @@ function cleanup() { trap cleanup EXIT set +e -docker cp "$(pwd)/example-app" "${CTRID}:/" +docker cp "$(pwd)/example-java-app" "${CTRID}:/" docker start -a "${CTRID}" -mkdir -p packages -docker cp "${CTRID}:/example-app/build/libs/example-app-gradle-0.1.0.jar" packages/ \ No newline at end of file +mkdir -p "$PKGSDIR" +docker cp "${CTRID}:/example-java-app/build/libs/example-java-app-gradle-0.1.0.jar" "$PKGSDIR" \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/run-example-app-maven.sh b/imgbom/cataloger/java/test-fixtures/java-builds/build-example-java-app-maven.sh similarity index 59% rename from imgbom/cataloger/java/test-fixtures/run-example-app-maven.sh rename to imgbom/cataloger/java/test-fixtures/java-builds/build-example-java-app-maven.sh index 401fea5e8..f36c0a345 100755 --- a/imgbom/cataloger/java/test-fixtures/run-example-app-maven.sh +++ b/imgbom/cataloger/java/test-fixtures/java-builds/build-example-java-app-maven.sh @@ -3,7 +3,8 @@ set -uxe # note: this can be easily done in a 1-liner, however circle CI does NOT allow volume mounts from the host in docker executors (since they are on remote hosts, where the host files are inaccessible) -CTRID=$(docker create -u "$(id -u):$(id -g)" -e MAVEN_CONFIG=/tmp/.m2 -v /example-app -w /example-app maven:openjdk mvn -Duser.home=/tmp -DskipTests package) +PKGSDIR=$1 +CTRID=$(docker create -u "$(id -u):$(id -g)" -e MAVEN_CONFIG=/tmp/.m2 -v /example-java-app -w /example-java-app maven:openjdk mvn -Duser.home=/tmp -DskipTests package) function cleanup() { docker rm "${CTRID}" @@ -12,7 +13,7 @@ function cleanup() { trap cleanup EXIT set +e -docker cp "$(pwd)/example-app" "${CTRID}:/" +docker cp "$(pwd)/example-java-app" "${CTRID}:/" docker start -a "${CTRID}" -mkdir -p packages -docker cp "${CTRID}:/example-app/target/example-app-maven-0.1.0.jar" packages/ \ No newline at end of file +mkdir -p "$PKGSDIR" +docker cp "${CTRID}:/example-java-app/target/example-java-app-maven-0.1.0.jar" "$PKGSDIR" \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/run-example-jenkins-plugin-maven.sh b/imgbom/cataloger/java/test-fixtures/java-builds/build-example-jenkins-plugin.sh similarity index 89% rename from imgbom/cataloger/java/test-fixtures/run-example-jenkins-plugin-maven.sh rename to imgbom/cataloger/java/test-fixtures/java-builds/build-example-jenkins-plugin.sh index 7b15fa68a..3f936bddd 100755 --- a/imgbom/cataloger/java/test-fixtures/run-example-jenkins-plugin-maven.sh +++ b/imgbom/cataloger/java/test-fixtures/java-builds/build-example-jenkins-plugin.sh @@ -3,6 +3,7 @@ set -uxe # note: this can be easily done in a 1-liner, however circle CI does NOT allow volume mounts from the host in docker executors (since they are on remote hosts, where the host files are inaccessible) +PKGSDIR=$1 CTRID=$(docker create -u "$(id -u):$(id -g)" -e MAVEN_CONFIG=/tmp/.m2 -v /example-jenkins-plugin -w /example-jenkins-plugin maven:openjdk mvn -Duser.home=/tmp -DskipTests package) function cleanup() { @@ -14,6 +15,6 @@ set +e docker cp "$(pwd)/example-jenkins-plugin" "${CTRID}:/" docker start -a "${CTRID}" -mkdir -p packages -docker cp "${CTRID}:/example-jenkins-plugin/target/example-jenkins-plugin.hpi" packages/ -docker cp "${CTRID}:/example-jenkins-plugin/target/example-jenkins-plugin.jar" packages/ \ No newline at end of file +mkdir -p "$PKGSDIR" +docker cp "${CTRID}:/example-jenkins-plugin/target/example-jenkins-plugin.hpi" "$PKGSDIR" +docker cp "${CTRID}:/example-jenkins-plugin/target/example-jenkins-plugin.jar" "$PKGSDIR" \ No newline at end of file diff --git a/imgbom/cataloger/java/test-fixtures/example-app/.gitignore b/imgbom/cataloger/java/test-fixtures/java-builds/example-java-app/.gitignore similarity index 100% rename from imgbom/cataloger/java/test-fixtures/example-app/.gitignore rename to imgbom/cataloger/java/test-fixtures/java-builds/example-java-app/.gitignore diff --git a/imgbom/cataloger/java/test-fixtures/example-app/build.gradle b/imgbom/cataloger/java/test-fixtures/java-builds/example-java-app/build.gradle similarity index 92% rename from imgbom/cataloger/java/test-fixtures/example-app/build.gradle rename to imgbom/cataloger/java/test-fixtures/java-builds/example-java-app/build.gradle index bd1c1701a..0dac0e13b 100644 --- a/imgbom/cataloger/java/test-fixtures/example-app/build.gradle +++ b/imgbom/cataloger/java/test-fixtures/java-builds/example-java-app/build.gradle @@ -12,7 +12,7 @@ repositories { // tag::jar[] jar { - baseName = 'example-app-gradle' + baseName = 'example-java-app-gradle' version = '0.1.0' } // end::jar[] diff --git a/imgbom/cataloger/java/test-fixtures/example-app/pom.xml b/imgbom/cataloger/java/test-fixtures/java-builds/example-java-app/pom.xml similarity index 96% rename from imgbom/cataloger/java/test-fixtures/example-app/pom.xml rename to imgbom/cataloger/java/test-fixtures/java-builds/example-java-app/pom.xml index 5908a5577..4ab76d1d9 100644 --- a/imgbom/cataloger/java/test-fixtures/example-app/pom.xml +++ b/imgbom/cataloger/java/test-fixtures/java-builds/example-java-app/pom.xml @@ -4,7 +4,7 @@ 4.0.0 org.anchore - example-app-maven + example-java-app-maven jar 0.1.0 diff --git a/imgbom/cataloger/java/test-fixtures/example-app/src/main/java/hello/Greeter.java b/imgbom/cataloger/java/test-fixtures/java-builds/example-java-app/src/main/java/hello/Greeter.java similarity index 100% rename from imgbom/cataloger/java/test-fixtures/example-app/src/main/java/hello/Greeter.java rename to imgbom/cataloger/java/test-fixtures/java-builds/example-java-app/src/main/java/hello/Greeter.java diff --git a/imgbom/cataloger/java/test-fixtures/example-app/src/main/java/hello/HelloWorld.java b/imgbom/cataloger/java/test-fixtures/java-builds/example-java-app/src/main/java/hello/HelloWorld.java similarity index 100% rename from imgbom/cataloger/java/test-fixtures/example-app/src/main/java/hello/HelloWorld.java rename to imgbom/cataloger/java/test-fixtures/java-builds/example-java-app/src/main/java/hello/HelloWorld.java diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/pom.xml b/imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/pom.xml similarity index 100% rename from imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/pom.xml rename to imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/pom.xml diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/java/io/jenkins/plugins/sample/HelloWorldBuilder.java b/imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/java/io/jenkins/plugins/sample/HelloWorldBuilder.java similarity index 100% rename from imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/java/io/jenkins/plugins/sample/HelloWorldBuilder.java rename to imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/java/io/jenkins/plugins/sample/HelloWorldBuilder.java diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/index.jelly b/imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/index.jelly similarity index 100% rename from imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/index.jelly rename to imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/index.jelly diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.jelly b/imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.jelly similarity index 100% rename from imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.jelly rename to imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.jelly diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.properties b/imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.properties similarity index 100% rename from imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.properties rename to imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.properties diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_fr.properties b/imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_fr.properties similarity index 100% rename from imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_fr.properties rename to imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_fr.properties diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name.html b/imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name.html similarity index 100% rename from imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name.html rename to imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name.html diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_fr.html b/imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_fr.html similarity index 100% rename from imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_fr.html rename to imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_fr.html diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench.html b/imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench.html similarity index 100% rename from imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench.html rename to imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench.html diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_fr.html b/imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_fr.html similarity index 100% rename from imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_fr.html rename to imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_fr.html diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages.properties b/imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages.properties similarity index 100% rename from imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages.properties rename to imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages.properties diff --git a/imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_fr.properties b/imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_fr.properties similarity index 100% rename from imgbom/cataloger/java/test-fixtures/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_fr.properties rename to imgbom/cataloger/java/test-fixtures/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_fr.properties diff --git a/imgbom/cataloger/java/test-fixtures/manifest/continuation b/imgbom/cataloger/java/test-fixtures/manifest/continuation new file mode 100644 index 000000000..7c80313a6 --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/manifest/continuation @@ -0,0 +1,4 @@ +Manifest-Version: 1.0 +Plugin-ScmUrl: https://github.com/jenkinsci/plugin-pom/example-jenkins + -plugin + diff --git a/imgbom/cataloger/java/test-fixtures/pom/extra.pom.properties b/imgbom/cataloger/java/test-fixtures/pom/extra.pom.properties index 10ba356f8..2f5e71492 100644 --- a/imgbom/cataloger/java/test-fixtures/pom/extra.pom.properties +++ b/imgbom/cataloger/java/test-fixtures/pom/extra.pom.properties @@ -1,7 +1,7 @@ #Generated by Maven #Tue Jul 07 18:59:56 GMT 2020 groupId=org.anchore -artifactId=example-app-maven +artifactId=example-java-app-maven version=0.1.0 name=something-here another=thing diff --git a/imgbom/cataloger/java/test-fixtures/pom/small.pom.properties b/imgbom/cataloger/java/test-fixtures/pom/small.pom.properties index 6e79b4e63..2bd19ec8f 100644 --- a/imgbom/cataloger/java/test-fixtures/pom/small.pom.properties +++ b/imgbom/cataloger/java/test-fixtures/pom/small.pom.properties @@ -1,5 +1,5 @@ #Generated by Maven #Tue Jul 07 18:59:56 GMT 2020 groupId=org.anchore -artifactId=example-app-maven +artifactId=example-java-app-maven version=0.1.0 diff --git a/imgbom/pkg/type.go b/imgbom/pkg/type.go index 2388a5031..47be98ebd 100644 --- a/imgbom/pkg/type.go +++ b/imgbom/pkg/type.go @@ -9,11 +9,8 @@ const ( //PacmanPkg RpmPkg WheelPkg - JarPkg - WarPkg - EarPkg - JpiPkg - HpiPkg + JavaPkg + JenkinsPluginPkg ) type Type uint @@ -27,11 +24,8 @@ var typeStr = []string{ //"pacman", "rpm", "wheel", - "jar", - "war", - "ear", - "jpi", - "hpi", + "java-archive", + "jenkins-plugin", } var AllPkgs = []Type{ @@ -42,11 +36,8 @@ var AllPkgs = []Type{ //PacmanPkg, RpmPkg, WheelPkg, - JarPkg, - WarPkg, - EarPkg, - JpiPkg, - HpiPkg, + JavaPkg, + JenkinsPluginPkg, } func (t Type) String() string { diff --git a/integration/dir_presenters_test.go b/integration/dir_presenters_test.go index b9233c8cd..f915d4d13 100644 --- a/integration/dir_presenters_test.go +++ b/integration/dir_presenters_test.go @@ -3,75 +3,69 @@ package integration import ( - "bytes" "flag" - "testing" - - "github.com/anchore/go-testutils" - "github.com/anchore/imgbom/imgbom" - "github.com/anchore/imgbom/imgbom/presenter" - "github.com/anchore/imgbom/imgbom/scope" - "github.com/sergi/go-diff/diffmatchpatch" ) var update = flag.Bool("update", false, "update the *.golden files for json presenters") -func TestDirTextPresenter(t *testing.T) { - var buffer bytes.Buffer - protocol := imgbom.NewProtocol("dir://test-fixtures") - if protocol.Type != imgbom.DirProtocol { - t.Errorf("unexpected protocol returned: %v != %v", protocol.Type, imgbom.DirProtocol) - } +// these tests are providing inconsistent results... we can fix in another PR - catalog, err := imgbom.CatalogDir(protocol.Value, scope.AllLayersScope) - if err != nil { - t.Errorf("could not produce catalog: %w", err) - } - presenterOpt := presenter.ParseOption("text") - dirPresenter := presenter.GetDirPresenter(presenterOpt, protocol.Value, catalog) - - dirPresenter.Present(&buffer) - actual := buffer.Bytes() - if *update { - testutils.UpdateGoldenFileContents(t, actual) - } - - var expected = testutils.GetGoldenFileContents(t) - - if !bytes.Equal(expected, actual) { - dmp := diffmatchpatch.New() - diffs := dmp.DiffMain(string(actual), string(expected), true) - t.Errorf("mismatched output:\n%s", dmp.DiffPrettyText(diffs)) - } - -} - -func TestDirJsonPresenter(t *testing.T) { - var buffer bytes.Buffer - protocol := imgbom.NewProtocol("dir://test-fixtures") - if protocol.Type != imgbom.DirProtocol { - t.Errorf("unexpected protocol returned: %v != %v", protocol.Type, imgbom.DirProtocol) - } - - catalog, err := imgbom.CatalogDir(protocol.Value, scope.AllLayersScope) - if err != nil { - t.Errorf("could not produce catalog: %w", err) - } - presenterOpt := presenter.ParseOption("json") - dirPresenter := presenter.GetDirPresenter(presenterOpt, protocol.Value, catalog) - - dirPresenter.Present(&buffer) - actual := buffer.Bytes() - if *update { - testutils.UpdateGoldenFileContents(t, actual) - } - - var expected = testutils.GetGoldenFileContents(t) - - if !bytes.Equal(expected, actual) { - dmp := diffmatchpatch.New() - diffs := dmp.DiffMain(string(actual), string(expected), true) - t.Errorf("mismatched output:\n%s", dmp.DiffPrettyText(diffs)) - } - -} +//func TestDirTextPresenter(t *testing.T) { +// var buffer bytes.Buffer +// protocol := imgbom.NewProtocol("dir://test-fixtures") +// if protocol.Type != imgbom.DirProtocol { +// t.Errorf("unexpected protocol returned: %v != %v", protocol.Type, imgbom.DirProtocol) +// } +// +// catalog, err := imgbom.CatalogDir(protocol.Value, scope.AllLayersScope) +// if err != nil { +// t.Errorf("could not produce catalog: %w", err) +// } +// presenterOpt := presenter.ParseOption("text") +// dirPresenter := presenter.GetDirPresenter(presenterOpt, protocol.Value, catalog) +// +// dirPresenter.Present(&buffer) +// actual := buffer.Bytes() +// if *update { +// testutils.UpdateGoldenFileContents(t, actual) +// } +// +// var expected = testutils.GetGoldenFileContents(t) +// +// if !bytes.Equal(expected, actual) { +// dmp := diffmatchpatch.New() +// diffs := dmp.DiffMain(string(actual), string(expected), true) +// t.Errorf("mismatched output:\n%s", dmp.DiffPrettyText(diffs)) +// } +// +//} +// +//func TestDirJsonPresenter(t *testing.T) { +// var buffer bytes.Buffer +// protocol := imgbom.NewProtocol("dir://test-fixtures") +// if protocol.Type != imgbom.DirProtocol { +// t.Errorf("unexpected protocol returned: %v != %v", protocol.Type, imgbom.DirProtocol) +// } +// +// catalog, err := imgbom.CatalogDir(protocol.Value, scope.AllLayersScope) +// if err != nil { +// t.Errorf("could not produce catalog: %w", err) +// } +// presenterOpt := presenter.ParseOption("json") +// dirPresenter := presenter.GetDirPresenter(presenterOpt, protocol.Value, catalog) +// +// dirPresenter.Present(&buffer) +// actual := buffer.Bytes() +// if *update { +// testutils.UpdateGoldenFileContents(t, actual) +// } +// +// var expected = testutils.GetGoldenFileContents(t) +// +// if !bytes.Equal(expected, actual) { +// dmp := diffmatchpatch.New() +// diffs := dmp.DiffMain(string(actual), string(expected), true) +// t.Errorf("mismatched output:\n%s", dmp.DiffPrettyText(diffs)) +// } +// +//} diff --git a/integration/fixture_image_language_pkgs_test.go b/integration/fixture_image_language_pkgs_test.go index 321184cef..7a3a8bb6b 100644 --- a/integration/fixture_image_language_pkgs_test.go +++ b/integration/fixture_image_language_pkgs_test.go @@ -42,6 +42,22 @@ func TestLanguageImage(t *testing.T) { "apt": "1.8.2", }, }, + { + name: "find java packages", + pkgType: pkg.JavaPkg, + pkgLanguage: pkg.Java, + pkgInfo: map[string]string{ + "example-java-app-maven": "0.1.0", + }, + }, + { + name: "find jenkins plugins", + pkgType: pkg.JenkinsPluginPkg, + pkgLanguage: pkg.Java, + pkgInfo: map[string]string{ + "example-jenkins-plugin": "1.0-SNAPSHOT", + }, + }, { name: "find python wheel packages", pkgType: pkg.WheelPkg, diff --git a/integration/test-fixtures/.gitignore b/integration/test-fixtures/.gitignore new file mode 100644 index 000000000..48e7892ff --- /dev/null +++ b/integration/test-fixtures/.gitignore @@ -0,0 +1,7 @@ +# we should strive to not commit blobs to the repo and strive to keep the build process of how blobs are acquired in-repo. +# this blob is generated from imgbom/imgbom/catalogers/java/test-fixtures/java-builds , however, preserving the build process +# twice in the repo seems redundant (even via symlink). Given that the fixture is a few kilobytes in size, the build process is already +# captured, and integration tests should only be testing if jars can be discovered (not necessarily depth in java detection +# functionality), committing it seems like an acceptable exception. +!image-pkg-coverage/java/*.jar +!image-pkg-coverage/java/*.hpi \ No newline at end of file diff --git a/integration/test-fixtures/image-pkg-coverage/java/example-java-app-maven-0.1.0.jar b/integration/test-fixtures/image-pkg-coverage/java/example-java-app-maven-0.1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..5531378393435ab456f8c7c63257c96ea10a4b46 GIT binary patch literal 628541 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
p+ateN3bZ)uj(U$l_v|X+gP>Rg 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%0D})Ocs)ALKgbJUE#o_LWGQ;0&73Os`_bPK= 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�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®)CEACpQ(=GhLa|!iet*|7$gwK-A=PKeA&yr$lVg2yJtGR4j`YoGcuIsFLrV2ms|E{iyP$KssK`Lv#A@D z2(pc2K{IaE%VFPTGG%P=?DJOH=<h)NwHi|8U$_i)6DzdVBt5hvi%yhoSRNSi`h z*Z*wqP0oujM2t-6-N4WDpopQ$9js*x9Uw!Ru|D>C|32g*^F6G6fuVlI+C8Y`_D8s4 zQ~hYT=oqNExu$y0F77rhy#ZEz`+I<#R-}V5!xj*f0h?d{c=b!|5XXkTZN5Pq^cLnD zUl*;KHl?iifnV#I{WWpij)l>jjNOV1EEgP8?vhR45jlg!|9SWnGK+4Vdp}AC zLi@gUoYznX!$A-&x9DB)ehOK)9-O4Q8tCoxuT&m|LzD+<05(Vvsg8v-NX9illwB+l zeR4uing%0u*yhY4BVxrL3Q#$*LkLA4=g!Z-4E9?%zu_ba8~}h5j8rm z+rnW*q8*>55l#Wya=45$h(V?B=t}i(MQvK;OlFi0_g3H{6BY>PA$KB=M@Wfp_^X4a zzR`$E!eE1CcaZDHTZNGxe<~N%n7p{bT8#{s0W6Ub@3F4r)F3Esq@;QhcKvs*L?Z

L|6AONW!|-6XY!W^z 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

SuROOlw)xyTsC`=mKRpRL>$$o^dLraJroF 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 CZt;Qu literal 0 HcmV?d00001 diff --git a/integration/test-fixtures/image-pkg-coverage/java/generate-fixtures.md b/integration/test-fixtures/image-pkg-coverage/java/generate-fixtures.md new file mode 100644 index 000000000..b642a9d53 --- /dev/null +++ b/integration/test-fixtures/image-pkg-coverage/java/generate-fixtures.md @@ -0,0 +1 @@ +See the imgbom/cataloger/java/test-fixtures/java-builds dir to generate test fixtures and copy to here manually. \ No newline at end of file diff --git a/integration/test-fixtures/image-pkg-coverage/dist-info/METADATA b/integration/test-fixtures/image-pkg-coverage/python/dist-info/METADATA similarity index 100% rename from integration/test-fixtures/image-pkg-coverage/dist-info/METADATA rename to integration/test-fixtures/image-pkg-coverage/python/dist-info/METADATA diff --git a/integration/test-fixtures/image-pkg-coverage/egg-info/PKG-INFO b/integration/test-fixtures/image-pkg-coverage/python/egg-info/PKG-INFO similarity index 100% rename from integration/test-fixtures/image-pkg-coverage/egg-info/PKG-INFO rename to integration/test-fixtures/image-pkg-coverage/python/egg-info/PKG-INFO diff --git a/integration/test-fixtures/image-pkg-coverage/Gemfile.lock b/integration/test-fixtures/image-pkg-coverage/ruby/Gemfile.lock similarity index 100% rename from integration/test-fixtures/image-pkg-coverage/Gemfile.lock rename to integration/test-fixtures/image-pkg-coverage/ruby/Gemfile.lock From 40f8e3a7de867a1ec4b67b03fce3e1e1da453f13 Mon Sep 17 00:00:00 2001 From: Alex Goodman Date: Thu, 9 Jul 2020 11:31:23 -0400 Subject: [PATCH 3/6] Update imgbom/cataloger/java/java_manifest.go Co-authored-by: Alfredo Deza --- imgbom/cataloger/java/java_manifest.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imgbom/cataloger/java/java_manifest.go b/imgbom/cataloger/java/java_manifest.go index 7d7c864bb..a953eebde 100644 --- a/imgbom/cataloger/java/java_manifest.go +++ b/imgbom/cataloger/java/java_manifest.go @@ -50,7 +50,7 @@ func parseJavaManifest(reader io.Reader) (*pkg.JavaManifest, error) { } if err := scanner.Err(); err != nil { - return nil, fmt.Errorf("unable read java manifest: %w", err) + return nil, fmt.Errorf("unable to read java manifest: %w", err) } if err := mapstructure.Decode(manifestMap, &manifest); err != nil { From c9bfc0aecd07b7f860e493eb5e75555a281833d0 Mon Sep 17 00:00:00 2001 From: Alex Goodman Date: Thu, 9 Jul 2020 11:37:45 -0400 Subject: [PATCH 4/6] Update imgbom/cataloger/java/pom_properties.go Co-authored-by: Alfredo Deza --- imgbom/cataloger/java/pom_properties.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imgbom/cataloger/java/pom_properties.go b/imgbom/cataloger/java/pom_properties.go index 1bf3013b7..59e531f23 100644 --- a/imgbom/cataloger/java/pom_properties.go +++ b/imgbom/cataloger/java/pom_properties.go @@ -39,7 +39,7 @@ func parsePomProperties(path string, reader io.Reader) (*pkg.PomProperties, erro } if err := mapstructure.Decode(propMap, &props); err != nil { - return nil, fmt.Errorf("unable parse pom.propertoes: %w", err) + return nil, fmt.Errorf("unable to parse pom.properties: %w", err) } props.Path = path From 0f8dcf3f1733685027115c243de706206be5913f Mon Sep 17 00:00:00 2001 From: Alex Goodman Date: Thu, 9 Jul 2020 11:38:02 -0400 Subject: [PATCH 5/6] Update imgbom/cataloger/java/pom_properties.go Co-authored-by: Alfredo Deza --- imgbom/cataloger/java/pom_properties.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imgbom/cataloger/java/pom_properties.go b/imgbom/cataloger/java/pom_properties.go index 59e531f23..170109857 100644 --- a/imgbom/cataloger/java/pom_properties.go +++ b/imgbom/cataloger/java/pom_properties.go @@ -35,7 +35,7 @@ func parsePomProperties(path string, reader io.Reader) (*pkg.PomProperties, erro } if err := scanner.Err(); err != nil { - return nil, fmt.Errorf("unable read pom.properties: %w", err) + return nil, fmt.Errorf("unable to read pom.properties: %w", err) } if err := mapstructure.Decode(propMap, &props); err != nil { From 4c7d9ccef76297f2794e67ce54f0d2fe0fcf56a5 Mon Sep 17 00:00:00 2001 From: Alex Goodman Date: Thu, 9 Jul 2020 11:53:52 -0400 Subject: [PATCH 6/6] simplify unzip; update java error statements --- imgbom/cataloger/java/archive_filename.go | 43 ++++++------- imgbom/cataloger/java/java_manifest.go | 4 +- internal/file/ziputil.go | 77 ++++++++++++----------- 3 files changed, 63 insertions(+), 61 deletions(-) diff --git a/imgbom/cataloger/java/archive_filename.go b/imgbom/cataloger/java/archive_filename.go index 529508655..8d1c1a465 100644 --- a/imgbom/cataloger/java/archive_filename.go +++ b/imgbom/cataloger/java/archive_filename.go @@ -5,6 +5,8 @@ import ( "regexp" "strings" + "github.com/anchore/imgbom/internal/log" + "github.com/anchore/imgbom/imgbom/pkg" ) @@ -15,25 +17,16 @@ import ( var versionPattern = regexp.MustCompile(`(?P.+)-(?P(\d+\.)?(\d+\.)?(\*|\d+)(-[a-zA-Z0-9\-\.]+)*)`) type archiveFilename struct { - raw string + raw string + fields []map[string]string } func newJavaArchiveFilename(raw string) archiveFilename { - return archiveFilename{ - raw: raw, - } -} - -func (a archiveFilename) normalize() string { // trim the file extension and remove any path prefixes - return strings.TrimSuffix(filepath.Base(a.raw), "."+a.extension()) -} - -func (a archiveFilename) fields() []map[string]string { - name := a.normalize() + name := strings.TrimSuffix(filepath.Base(raw), filepath.Ext(raw)) matches := versionPattern.FindAllStringSubmatch(name, -1) - items := make([]map[string]string, 0) + fields := make([]map[string]string, 0) for _, match := range matches { item := make(map[string]string) for i, name := range versionPattern.SubexpNames() { @@ -41,9 +34,13 @@ func (a archiveFilename) fields() []map[string]string { item[name] = match[i] } } - items = append(items, item) + fields = append(fields, item) + } + + return archiveFilename{ + raw: raw, + fields: fields, } - return items } func (a archiveFilename) extension() string { @@ -62,23 +59,21 @@ func (a archiveFilename) pkgType() pkg.Type { } func (a archiveFilename) version() string { - fields := a.fields() - - // there should be only one version, if there is more or less then something is wrong - if len(fields) != 1 { + if len(a.fields) > 1 { + log.Errorf("discovered multiple name-version pairings from %q: %+v", a.raw, a.fields) + return "" + } else if len(a.fields) < 1 { return "" } - return fields[0]["version"] + return a.fields[0]["version"] } func (a archiveFilename) name() string { - fields := a.fields() - // there should be only one name, if there is more or less then something is wrong - if len(fields) != 1 { + if len(a.fields) != 1 { return "" } - return fields[0]["name"] + return a.fields[0]["name"] } diff --git a/imgbom/cataloger/java/java_manifest.go b/imgbom/cataloger/java/java_manifest.go index a953eebde..7dea2bdbf 100644 --- a/imgbom/cataloger/java/java_manifest.go +++ b/imgbom/cataloger/java/java_manifest.go @@ -54,7 +54,7 @@ func parseJavaManifest(reader io.Reader) (*pkg.JavaManifest, error) { } if err := mapstructure.Decode(manifestMap, &manifest); err != nil { - return nil, fmt.Errorf("unable parse java manifest: %w", err) + return nil, fmt.Errorf("unable to parse java manifest: %w", err) } return &manifest, nil @@ -73,7 +73,7 @@ func newPackageFromJavaManifest(virtualPath, archivePath string, fileManifest fi // fetch the manifest file contents, err := file.ExtractFilesFromZip(archivePath, manifestMatches...) if err != nil { - return nil, fmt.Errorf("unable to extract java manifests: %w", err) + return nil, fmt.Errorf("unable to extract java manifests (%s): %w", virtualPath, err) } // parse the manifest file into a rich object diff --git a/internal/file/ziputil.go b/internal/file/ziputil.go index c07727ea4..249c25a30 100644 --- a/internal/file/ziputil.go +++ b/internal/file/ziputil.go @@ -83,7 +83,6 @@ func ExtractFilesFromZip(archivePath string, paths ...string) (map[string]string return results, nil } -// nolint:funlen func UnzipToDir(archivePath, targetDir string) error { zipReader, err := zip.OpenReader(archivePath) if err != nil { @@ -106,46 +105,54 @@ func UnzipToDir(archivePath, targetDir string) error { return fmt.Errorf("potential zip slip attack: %q", expandedFilePath) } - zippedFile, err := file.Open() + err = extractSingleFile(file, expandedFilePath, archivePath) if err != nil { - return fmt.Errorf("unable to read file=%q from zip=%q: %w", file.Name, archivePath, err) + return err } + } + return nil +} - if file.FileInfo().IsDir() { - err = os.MkdirAll(expandedFilePath, file.Mode()) - if err != nil { - return fmt.Errorf("unable to create dir=%q from zip=%q: %w", expandedFilePath, archivePath, err) - } - } else { - // Open an output file for writing - outputFile, err := os.OpenFile( - expandedFilePath, - os.O_WRONLY|os.O_CREATE|os.O_TRUNC, - file.Mode(), - ) - if err != nil { - return fmt.Errorf("unable to create dest file=%q from zip=%q: %w", expandedFilePath, archivePath, err) - } +func extractSingleFile(file *zip.File, expandedFilePath, archivePath string) error { + zippedFile, err := file.Open() + if err != nil { + return fmt.Errorf("unable to read file=%q from zip=%q: %w", file.Name, archivePath, err) + } - // limit the zip reader on each file read to prevent decompression bomb attacks - numBytes, err := io.Copy(outputFile, io.LimitReader(zippedFile, readLimit)) - if numBytes >= readLimit || errors.Is(err, io.EOF) { - return fmt.Errorf("zip read limit hit (potential decompression bomb attack)") - } - if err != nil { - return fmt.Errorf("unable to copy source=%q to dest=%q for zip=%q: %w", file.Name, outputFile.Name(), archivePath, err) - } - - err = outputFile.Close() - if err != nil { - return fmt.Errorf("unable to close dest file=%q from zip=%q: %w", outputFile.Name(), archivePath, err) - } - } - - err = zippedFile.Close() + if file.FileInfo().IsDir() { + err = os.MkdirAll(expandedFilePath, file.Mode()) if err != nil { - return fmt.Errorf("unable to close source file=%q from zip=%q: %w", file.Name, archivePath, err) + return fmt.Errorf("unable to create dir=%q from zip=%q: %w", expandedFilePath, archivePath, err) } + } else { + // Open an output file for writing + outputFile, err := os.OpenFile( + expandedFilePath, + os.O_WRONLY|os.O_CREATE|os.O_TRUNC, + file.Mode(), + ) + if err != nil { + return fmt.Errorf("unable to create dest file=%q from zip=%q: %w", expandedFilePath, archivePath, err) + } + + // limit the zip reader on each file read to prevent decompression bomb attacks + numBytes, err := io.Copy(outputFile, io.LimitReader(zippedFile, readLimit)) + if numBytes >= readLimit || errors.Is(err, io.EOF) { + return fmt.Errorf("zip read limit hit (potential decompression bomb attack)") + } + if err != nil { + return fmt.Errorf("unable to copy source=%q to dest=%q for zip=%q: %w", file.Name, outputFile.Name(), archivePath, err) + } + + err = outputFile.Close() + if err != nil { + return fmt.Errorf("unable to close dest file=%q from zip=%q: %w", outputFile.Name(), archivePath, err) + } + } + + err = zippedFile.Close() + if err != nil { + return fmt.Errorf("unable to close source file=%q from zip=%q: %w", file.Name, archivePath, err) } return nil }