From 553fb460e0e80935e112d60a6cb6fb886fb41260 Mon Sep 17 00:00:00 2001 From: Alexey Ovchinnikov Date: Wed, 16 Oct 2024 09:47:54 -0500 Subject: [PATCH 1/6] bundler: Add GemPlatformSpecificDependency class This class represents binary dependencies which some gems have. Signed-off-by: Alexey Ovchinnikov --- .../core/package_managers/bundler/parser.py | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/cachi2/core/package_managers/bundler/parser.py b/cachi2/core/package_managers/bundler/parser.py index dd576ca33..c50988cae 100644 --- a/cachi2/core/package_managers/bundler/parser.py +++ b/cachi2/core/package_managers/bundler/parser.py @@ -80,6 +80,36 @@ def download_to(self, deps_dir: RootedPath) -> None: download_binary_file(self.remote_location, fs_location) +class GemPlatformSpecificDependency(GemDependency): + """ + Represents a gem dependency built for a specific platform. + + Attributes: + platform: Platform for which the dependency was built. + """ + + platform: str + + @property + def remote_location(self) -> str: + """Return remote location to download this gem from.""" + return f"{self.source}downloads/{self.name}-{self.version}-{self.platform}.gem" + + def download_to(self, deps_dir: RootedPath) -> None: + """Download represented gem to specified file system location.""" + fs_location = deps_dir.join_within_root( + Path(f"{self.name}-{self.version}-{self.platform}.gem") + ) + log.info( + "Downloading platform-specific gem %s-%s-%s", self.name, self.version, self.platform + ) + # A combination of Ruby v.3.0.7 and some Bundler dependencies results in + # -gnu suffix being dropped from some platforms. This was observed on + # sqlite3-aarch-linux-gnu. We discourage using outdated platforms + # for building dependencies and cnsider this to be a limitation of Ruby. + download_binary_file(self.remote_location, fs_location) + + class GitDependency(_GemMetadata): """ Represents a git dependency. @@ -162,7 +192,9 @@ def purl(self) -> str: return purl.to_string() -BundlerDependency = Union[GemDependency, GitDependency, PathDependency] +BundlerDependency = Union[ + GemDependency, GemPlatformSpecificDependency, GitDependency, PathDependency +] ParseResult = list[BundlerDependency] From 98e82df80da227a38524c85adc471f6dc6b9c0e0 Mon Sep 17 00:00:00 2001 From: Alexey Ovchinnikov Date: Wed, 16 Oct 2024 09:51:43 -0500 Subject: [PATCH 2/6] bundler: Add handling for allow_binary flag Some dependencies contain architecture-specific components. Their name and location differ from standard Ruby-only dependencies. As a result prior to this commit such dependencies would be skipped during prefetch. This, in turn, failed hermetic builds because a dependency would end up missing. Resolves: https://github.com/containerbuildsystem/cachi2/issues/672 Signed-off-by: Alexey Ovchinnikov --- cachi2/core/package_managers/bundler/main.py | 18 ++- .../core/package_managers/bundler/parser.py | 21 +++- .../bundler/scripts/lockfile_parser.rb | 1 + .../package_managers/bundler/test_main.py | 2 +- .../package_managers/bundler/test_parser.py | 106 +++++++++++++++++- 5 files changed, 138 insertions(+), 10 deletions(-) diff --git a/cachi2/core/package_managers/bundler/main.py b/cachi2/core/package_managers/bundler/main.py index 084c8a1dd..280855d2e 100644 --- a/cachi2/core/package_managers/bundler/main.py +++ b/cachi2/core/package_managers/bundler/main.py @@ -27,10 +27,13 @@ def fetch_bundler_source(request: Request) -> RequestOutput: ) project_files: list[ProjectFile] = [] - for package in request.packages: + for package in request.bundler_packages: path_within_root = request.source_dir.join_within_root(package.path) components.extend( - _resolve_bundler_package(package_dir=path_within_root, output_dir=request.output_dir) + _resolve_bundler_package( + package_dir=path_within_root, + output_dir=request.output_dir, + ) ) project_files.append(_prepare_for_hermetic_build(request.source_dir, request.output_dir)) @@ -41,11 +44,15 @@ def fetch_bundler_source(request: Request) -> RequestOutput: ) -def _resolve_bundler_package(package_dir: RootedPath, output_dir: RootedPath) -> list[Component]: +def _resolve_bundler_package( + package_dir: RootedPath, + output_dir: RootedPath, + allow_binary: bool = False, +) -> list[Component]: """Process a request for a single bundler package.""" deps_dir = output_dir.join_within_root("deps", "bundler") deps_dir.path.mkdir(parents=True, exist_ok=True) - dependencies = parse_lockfile(package_dir) + dependencies = parse_lockfile(package_dir, allow_binary) name, version = _get_main_package_name_and_version(package_dir, dependencies) vcs_url = get_repo_id(package_dir.root).as_vcs_url_qualifier() @@ -60,7 +67,8 @@ def _resolve_bundler_package(package_dir: RootedPath, output_dir: RootedPath) -> components = [Component(name=name, version=version, purl=main_package_purl.to_string())] for dep in dependencies: dep.download_to(deps_dir) - components.append(Component(name=dep.name, version=dep.version, purl=dep.purl)) + c = Component(name=dep.name, version=dep.version, purl=dep.purl) + components.append(c) return components diff --git a/cachi2/core/package_managers/bundler/parser.py b/cachi2/core/package_managers/bundler/parser.py index c50988cae..a70872c32 100644 --- a/cachi2/core/package_managers/bundler/parser.py +++ b/cachi2/core/package_managers/bundler/parser.py @@ -198,7 +198,7 @@ def purl(self) -> str: ParseResult = list[BundlerDependency] -def parse_lockfile(package_dir: RootedPath) -> ParseResult: +def parse_lockfile(package_dir: RootedPath, allow_binary: bool = False) -> ParseResult: """Parse a Gemfile.lock file and return a list of dependencies.""" lockfile_path = package_dir.join_within_root(GEMFILE_LOCK) gemfile_path = package_dir.join_within_root(GEMFILE) @@ -226,7 +226,24 @@ def parse_lockfile(package_dir: RootedPath) -> ParseResult: result: ParseResult = [] for dep in dependencies: if dep["type"] == "rubygems": - result.append(GemDependency(**dep)) + if dep["platform"] == "ruby": + result.append(GemDependency(**dep)) + else: + full_name = "-".join([dep["name"], dep["version"], dep["platform"]]) + log.info("Found a binary dependency %s", full_name) + if allow_binary: + log.warning( + "Will download binary dependency %s because 'allow_binary' is set to True", + full_name, + ) + result.append(GemPlatformSpecificDependency(**dep)) + else: + # No need to force a platform if we skip the packages. + log.warning( + "Skipping binary dependency %s because 'allow_binary' is set to False." + " This will likely result in an unbuildable package.", + full_name, + ) elif dep["type"] == "git": result.append(GitDependency(**dep)) elif dep["type"] == "path": diff --git a/cachi2/core/package_managers/bundler/scripts/lockfile_parser.rb b/cachi2/core/package_managers/bundler/scripts/lockfile_parser.rb index 96b25ca46..15afc71b3 100755 --- a/cachi2/core/package_managers/bundler/scripts/lockfile_parser.rb +++ b/cachi2/core/package_managers/bundler/scripts/lockfile_parser.rb @@ -18,6 +18,7 @@ when Bundler::Source::Rubygems parsed_spec[:type] = 'rubygems' parsed_spec[:source] = spec.source.remotes.map(&:to_s).first + parsed_spec[:platform] = spec.platform when Bundler::Source::Git parsed_spec[:type] = 'git' parsed_spec[:url] = spec.source.uri diff --git a/tests/unit/package_managers/bundler/test_main.py b/tests/unit/package_managers/bundler/test_main.py index dd4d195da..2fabe2283 100644 --- a/tests/unit/package_managers/bundler/test_main.py +++ b/tests/unit/package_managers/bundler/test_main.py @@ -64,7 +64,7 @@ def test_resolve_bundler_package( components = _resolve_bundler_package(package_dir=package_dir, output_dir=output_dir) - mock_parse_lockfile.assert_called_once_with(package_dir) + mock_parse_lockfile.assert_called_once_with(package_dir, False) mock_get_main_package_name_and_version.assert_called_once_with(package_dir, deps) mock_gem_dep_download_to.assert_called_with(deps_dir) mock_git_dep_download_to.assert_called_with(deps_dir) diff --git a/tests/unit/package_managers/bundler/test_parser.py b/tests/unit/package_managers/bundler/test_parser.py index 687a4ca05..2a0387340 100644 --- a/tests/unit/package_managers/bundler/test_parser.py +++ b/tests/unit/package_managers/bundler/test_parser.py @@ -1,8 +1,9 @@ import json +import re import subprocess from copy import deepcopy from pathlib import Path -from typing import Any +from typing import Any, Iterable from unittest import mock import pydantic @@ -15,6 +16,7 @@ GEMFILE_LOCK, BundlerDependency, GemDependency, + GemPlatformSpecificDependency, GitDependency, PathDependency, parse_lockfile, @@ -22,6 +24,18 @@ from cachi2.core.rooted_path import RootedPath from tests.common_utils import GIT_REF +RegexpStr = str # a string representing a regular expression. + + +def some_message_contains_substring(substring: RegexpStr, messages: Iterable[str]) -> bool: + """Check if substring-matching regexp could be found in any message. + + This produces a bit less coupling between tests and code than + checking for a full message. + """ + r = re.compile(substring) + return any(r.match(m) is not None for m in messages) + @pytest.fixture def empty_bundler_files(rooted_tmp_path: RootedPath) -> tuple[RootedPath, RootedPath]: @@ -150,6 +164,7 @@ def test_parse_gemlock( { "type": "rubygems", "source": "https://rubygems.org/", + "platform": "ruby", **base_dep, }, ] @@ -199,7 +214,7 @@ def test_parse_gemlock_empty( ], ) @mock.patch("cachi2.core.package_managers.bundler.parser.download_binary_file") -def test_dependencies_could_be_downloaded( +def test_source_gem_dependencies_could_be_downloaded( mock_downloader: mock.MagicMock, caplog: pytest.LogCaptureFixture, source: str, @@ -215,6 +230,29 @@ def test_dependencies_could_be_downloaded( mock_downloader.assert_called_once_with(expected_source_url, expected_destination) +@mock.patch("cachi2.core.package_managers.bundler.parser.download_binary_file") +def test_binary_gem_dependencies_could_be_downloaded( + mock_downloader: mock.MagicMock, + caplog: pytest.LogCaptureFixture, +) -> None: + base_destination = RootedPath("/tmp/foo") + source = "https://rubygems.org/" + platform = "m6502_wm" + dependency = GemPlatformSpecificDependency( + name="foo", + version="0.0.2", + source=source, + platform=platform, + ) + expected_source_url = f"{source}downloads/foo-0.0.2-{platform}.gem" + expected_destination = base_destination.join_within_root(Path(f"foo-0.0.2-{platform}.gem")) + + dependency.download_to(base_destination) + + assert some_message_contains_substring("Downloading platform-specific gem", caplog.messages) + mock_downloader.assert_called_once_with(expected_source_url, expected_destination) + + @mock.patch("cachi2.core.package_managers.bundler.parser.Repo.clone_from") def test_download_git_dependency_works( mock_git_clone: mock.Mock, @@ -302,3 +340,67 @@ def test_purls(rooted_tmp_path_repo: RootedPath) -> None: for dep, expected_purl in deps: assert dep.purl == expected_purl + + +@mock.patch("cachi2.core.package_managers.bundler.parser.run_cmd") +def test_parse_gemlock_detects_binaries_and_adds_to_parse_result_when_allowed_to( + mock_run_cmd: mock.MagicMock, + empty_bundler_files: tuple[RootedPath, RootedPath], + sample_parser_output: dict[str, Any], + rooted_tmp_path: RootedPath, + caplog: pytest.LogCaptureFixture, +) -> None: + base_dep: dict[str, str] = sample_parser_output["dependencies"][0] + sample_parser_output["dependencies"] = [ + { + "type": "rubygems", + "source": "https://rubygems.org/", + "platform": "i8080_cpm", + **base_dep, + }, + ] + + mock_run_cmd.return_value = json.dumps(sample_parser_output) + result = parse_lockfile(rooted_tmp_path, allow_binary=True) + + expected_deps = [ + GemPlatformSpecificDependency( + name="example", + version="0.1.0", + source="https://rubygems.org/", + platform="i8080_cpm", + ), + ] + + assert some_message_contains_substring("Found a binary dependency", caplog.messages) + assert some_message_contains_substring("Will download binary dependency", caplog.messages) + assert result == expected_deps + + +@mock.patch("cachi2.core.package_managers.bundler.parser.run_cmd") +def test_parse_gemlock_detects_binaries_and_skips_then_when_instructed_to_skip( + mock_run_cmd: mock.MagicMock, + empty_bundler_files: tuple[RootedPath, RootedPath], + sample_parser_output: dict[str, Any], + rooted_tmp_path: RootedPath, + caplog: pytest.LogCaptureFixture, +) -> None: + base_dep: dict[str, str] = sample_parser_output["dependencies"][0] + sample_parser_output["dependencies"] = [ + { + "type": "rubygems", + "source": "https://rubygems.org/", + "platform": "i8080_cpm", + **base_dep, + }, + ] + + mock_run_cmd.return_value = json.dumps(sample_parser_output) + result = parse_lockfile(rooted_tmp_path, allow_binary=False) + + expected_deps: list = [] # mypy demanded this annotation and is content with it. + + assert some_message_contains_substring("Found a binary dependency", caplog.messages) + assert some_message_contains_substring("Skipping binary dependency", caplog.messages) + + assert result == expected_deps From 36291524debf530ee75cbe2034b410835d7090a3 Mon Sep 17 00:00:00 2001 From: Alexey Ovchinnikov Date: Wed, 16 Oct 2024 09:40:28 -0500 Subject: [PATCH 3/6] bundler: Adding allow_binary flag to input model Some gems have hard dependencies on binary-only gems (at the moment of writing sorbet was one such gem). This commit introduces a way to allow downloading binary gems by adding an allow_binary flag along the lines of pip's allow_binary flag. Signed-off-by: Alexey Ovchinnikov --- cachi2/core/models/input.py | 1 + cachi2/core/models/property_semantics.py | 8 ++++++++ cachi2/core/models/sbom.py | 1 + cachi2/core/package_managers/bundler/main.py | 11 ++++++++++- 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/cachi2/core/models/input.py b/cachi2/core/models/input.py index 6a28e89bf..c6d908c9b 100644 --- a/cachi2/core/models/input.py +++ b/cachi2/core/models/input.py @@ -115,6 +115,7 @@ class BundlerPackageInput(_PackageInputBase): """Accepted input for a bundler package.""" type: Literal["bundler"] + allow_binary: bool = False class GenericPackageInput(_PackageInputBase): diff --git a/cachi2/core/models/property_semantics.py b/cachi2/core/models/property_semantics.py index aa6f4afe6..6261b9a77 100644 --- a/cachi2/core/models/property_semantics.py +++ b/cachi2/core/models/property_semantics.py @@ -33,6 +33,7 @@ class PropertySet: npm_bundled: bool = False npm_development: bool = False pip_package_binary: bool = False + bundler_package_binary: bool = False @classmethod def from_properties(cls, props: Iterable[Property]) -> "Self": @@ -42,6 +43,7 @@ def from_properties(cls, props: Iterable[Property]) -> "Self": npm_bundled = False npm_development = False pip_package_binary = False + bundler_package_binary = False for prop in props: if prop.name == "cachi2:found_by": @@ -54,6 +56,8 @@ def from_properties(cls, props: Iterable[Property]) -> "Self": npm_development = True elif prop.name == "cachi2:pip:package:binary": pip_package_binary = True + elif prop.name == "cachi2:bundler:package:binary": + bundler_package_binary = True else: assert_never(prop.name) @@ -63,6 +67,7 @@ def from_properties(cls, props: Iterable[Property]) -> "Self": npm_bundled, npm_development, pip_package_binary, + bundler_package_binary, ) def to_properties(self) -> list[Property]: @@ -80,6 +85,8 @@ def to_properties(self) -> list[Property]: props.append(Property(name="cdx:npm:package:development", value="true")) if self.pip_package_binary: props.append(Property(name="cachi2:pip:package:binary", value="true")) + if self.bundler_package_binary: + props.append(Property(name="cachi2:bundler:package:binary", value="true")) return sorted(props, key=lambda p: (p.name, p.value)) @@ -92,4 +99,5 @@ def merge(self, other: "Self") -> "Self": npm_bundled=self.npm_bundled and other.npm_bundled, npm_development=self.npm_development and other.npm_development, pip_package_binary=self.pip_package_binary or other.pip_package_binary, + bundler_package_binary=self.bundler_package_binary or other.bundler_package_binary, ) diff --git a/cachi2/core/models/sbom.py b/cachi2/core/models/sbom.py index d9e00a45b..3df1ca624 100644 --- a/cachi2/core/models/sbom.py +++ b/cachi2/core/models/sbom.py @@ -5,6 +5,7 @@ from cachi2.core.models.validators import unique_sorted PropertyName = Literal[ + "cachi2:bundler:package:binary", "cachi2:found_by", "cachi2:missing_hash:in_file", "cachi2:pip:package:binary", diff --git a/cachi2/core/package_managers/bundler/main.py b/cachi2/core/package_managers/bundler/main.py index 280855d2e..dce93f763 100644 --- a/cachi2/core/package_managers/bundler/main.py +++ b/cachi2/core/package_managers/bundler/main.py @@ -9,8 +9,14 @@ from cachi2.core.errors import PackageRejected, UnsupportedFeature from cachi2.core.models.input import Request from cachi2.core.models.output import EnvironmentVariable, ProjectFile, RequestOutput +from cachi2.core.models.property_semantics import PropertySet from cachi2.core.models.sbom import Component -from cachi2.core.package_managers.bundler.parser import ParseResult, PathDependency, parse_lockfile +from cachi2.core.package_managers.bundler.parser import ( + GemPlatformSpecificDependency, + ParseResult, + PathDependency, + parse_lockfile, +) from cachi2.core.rooted_path import RootedPath from cachi2.core.scm import get_repo_id @@ -33,6 +39,7 @@ def fetch_bundler_source(request: Request) -> RequestOutput: _resolve_bundler_package( package_dir=path_within_root, output_dir=request.output_dir, + allow_binary=package.allow_binary, ) ) project_files.append(_prepare_for_hermetic_build(request.source_dir, request.output_dir)) @@ -68,6 +75,8 @@ def _resolve_bundler_package( for dep in dependencies: dep.download_to(deps_dir) c = Component(name=dep.name, version=dep.version, purl=dep.purl) + if isinstance(dep, GemPlatformSpecificDependency): + c.properties = PropertySet(bundler_package_binary=True).to_properties() components.append(c) return components From dbdac142f712df3249b1eccfaf7fc2a79af34cee Mon Sep 17 00:00:00 2001 From: Alexey Ovchinnikov Date: Fri, 18 Oct 2024 06:25:11 -0500 Subject: [PATCH 4/6] bundler: Pinning bundler version to the system one When there is a version mismatch between a lockfile and bundler used to build a package, bundler might try to install a version specified in the lockfile. This will result in a build failure in a hermetic environment. This change forces bundler to always use whichever version is present in the system by overriding BUNDLE_VERSION variable and setting it to 'system'. See https://bundler.io/v2.5/man/bundle-config.1.html#LIST-OF-AVAILABLE-KEYS for details. Signed-off-by: Alexey Ovchinnikov --- cachi2/core/package_managers/bundler/main.py | 1 + tests/unit/package_managers/bundler/test_main.py | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/cachi2/core/package_managers/bundler/main.py b/cachi2/core/package_managers/bundler/main.py index dce93f763..8ecea75e8 100644 --- a/cachi2/core/package_managers/bundler/main.py +++ b/cachi2/core/package_managers/bundler/main.py @@ -159,6 +159,7 @@ def _prepare_for_hermetic_build(source_dir: RootedPath, output_dir: RootedPath) BUNDLE_CACHE_PATH: "${output_dir}/deps/bundler" BUNDLE_DEPLOYMENT: "true" BUNDLE_NO_PRUNE: "true" + BUNDLE_VERSION: "system" """ ) if potential_bundle_config.is_file(): diff --git a/tests/unit/package_managers/bundler/test_main.py b/tests/unit/package_managers/bundler/test_main.py index 2fabe2283..1b2638bf5 100644 --- a/tests/unit/package_managers/bundler/test_main.py +++ b/tests/unit/package_managers/bundler/test_main.py @@ -127,6 +127,7 @@ def test__prepare_for_hermetic_build_injects_necessary_variable_into_empty_confi BUNDLE_CACHE_PATH: "${output_dir}/deps/bundler" BUNDLE_DEPLOYMENT: "true" BUNDLE_NO_PRUNE: "true" + BUNDLE_VERSION: "system" """ ) @@ -146,6 +147,7 @@ def test__prepare_for_hermetic_build_injects_necessary_variable_into_existing_co BUNDLE_CACHE_PATH: "${output_dir}/deps/bundler" BUNDLE_DEPLOYMENT: "true" BUNDLE_NO_PRUNE: "true" + BUNDLE_VERSION: "system" """ ) existing_preamble = dedent( @@ -175,6 +177,7 @@ def test__prepare_for_hermetic_build_injects_necessary_variable_into_existing_al BUNDLE_CACHE_PATH: "${output_dir}/deps/bundler" BUNDLE_DEPLOYMENT: "true" BUNDLE_NO_PRUNE: "true" + BUNDLE_VERSION: "system" """ ) existing_preamble = dedent( @@ -209,6 +212,7 @@ def test__prepare_for_hermetic_build_ignores_a_directory_in_place_of_config( BUNDLE_CACHE_PATH: "${output_dir}/deps/bundler" BUNDLE_DEPLOYMENT: "true" BUNDLE_NO_PRUNE: "true" + BUNDLE_VERSION: "system" """ ) From c6c1d49d984f05788478cc7e42ca58c160eaa9ec Mon Sep 17 00:00:00 2001 From: Alexey Ovchinnikov Date: Thu, 10 Oct 2024 12:29:37 -0500 Subject: [PATCH 5/6] bundler: Adding e2e tests This commit adds e2e to bundler. The tests verify that gems pre-fetched with cachi2 could be built in isolation. Signed-off-by: Alexey Ovchinnikov --- tests/integration/test_bundler.py | 73 +++++++++++++++++++ .../container/Containerfile | 19 +++++ .../container/Containerfile | 19 +++++ 3 files changed, 111 insertions(+) create mode 100644 tests/integration/test_data/bundler_everything_present/container/Containerfile create mode 100644 tests/integration/test_data/bundler_everything_present_except_gemspec/container/Containerfile diff --git a/tests/integration/test_bundler.py b/tests/integration/test_bundler.py index 806c86bd2..f9eafd217 100644 --- a/tests/integration/test_bundler.py +++ b/tests/integration/test_bundler.py @@ -100,3 +100,76 @@ def test_bundler_packages( utils.fetch_deps_and_check_output( tmp_path, test_case, test_params, source_folder, test_data_dir, cachi2_image ) + + +@pytest.mark.parametrize( + "test_params,check_cmd,expected_cmd_output", + [ + pytest.param( + utils.TestParameters( + repo="https://github.com/cachito-testing/cachi2-bundler.git", + ref="well_formed_ruby_all_features", + packages=({"path": ".", "type": "bundler", "allow_binary": "true"},), + flags=["--dev-package-managers"], + check_output=False, + check_deps_checksums=False, + check_vendor_checksums=False, + expected_exit_code=0, + expected_output="", + ), + [], # No additional commands are run to verify the build + [], + id="bundler_everything_present", + ), + pytest.param( + utils.TestParameters( + repo="https://github.com/cachito-testing/cachi2-bundler.git", + ref="well_formed_ruby_without_gemspec", + packages=({"path": ".", "type": "bundler", "allow_binary": "true"},), + flags=["--dev-package-managers"], + check_output=False, + check_deps_checksums=False, + check_vendor_checksums=False, + expected_exit_code=0, + expected_output="", + ), + [], # No additional commands are run to verify the build + [], + id="bundler_everything_present_except_gemspec", + ), + ], +) +def test_e2e_bundler( + test_params: utils.TestParameters, + check_cmd: list[str], + expected_cmd_output: str, + cachi2_image: utils.ContainerImage, + tmp_path: Path, + test_data_dir: Path, + request: pytest.FixtureRequest, +) -> None: + """ + End to end test for bundler. + + :param test_params: Test case arguments + :param tmp_path: Temp directory for pytest + """ + test_case = request.node.callspec.id + + source_folder = utils.clone_repository( + test_params.repo, test_params.ref, f"{test_case}-source", tmp_path + ) + + output_folder = utils.fetch_deps_and_check_output( + tmp_path, test_case, test_params, source_folder, test_data_dir, cachi2_image + ) + + utils.build_image_and_check_cmd( + tmp_path, + output_folder, + test_data_dir, + test_case, + check_cmd, + expected_cmd_output, + cachi2_image, + ) diff --git a/tests/integration/test_data/bundler_everything_present/container/Containerfile b/tests/integration/test_data/bundler_everything_present/container/Containerfile new file mode 100644 index 000000000..d8b657fa9 --- /dev/null +++ b/tests/integration/test_data/bundler_everything_present/container/Containerfile @@ -0,0 +1,19 @@ +FROM docker.io/ruby:3.3 + +# Test disabled network access +RUN if curl -IsS www.google.com; then echo "Has network access!"; exit 1; fi + +# Print cachi2 env vars file +RUN cat /tmp/cachi2.env + +# Check bundler deps +RUN ls /tmp/bundler_everything_present-output/deps/bundler + +# Check content of source repository folder +RUN ls /tmp/bundler_everything_present-source/ + +# This should be a COPY, but the source code and Containerfile are in different directories +RUN cp -r /tmp/bundler_everything_present-source /src + +WORKDIR /src +RUN . /tmp/cachi2.env && bundle install diff --git a/tests/integration/test_data/bundler_everything_present_except_gemspec/container/Containerfile b/tests/integration/test_data/bundler_everything_present_except_gemspec/container/Containerfile new file mode 100644 index 000000000..bf95b6e68 --- /dev/null +++ b/tests/integration/test_data/bundler_everything_present_except_gemspec/container/Containerfile @@ -0,0 +1,19 @@ +FROM docker.io/ruby:3.3 + +# Test disabled network access +RUN if curl -IsS www.google.com; then echo "Has network access!"; exit 1; fi + +# Print cachi2 env vars file +RUN cat /tmp/cachi2.env + +# Check bundler deps +RUN ls /tmp/bundler_everything_present_except_gemspec-output/deps/bundler + +# Check content of source repository folder +RUN ls /tmp/bundler_everything_present_except_gemspec-source/ + +# This should be a COPY, but the source code and Containerfile are in different directories +RUN cp -r /tmp/bundler_everything_present_except_gemspec-source /src + +WORKDIR /src +RUN . /tmp/cachi2.env && bundle install From 0927391bc676e98202fb549c79b722cbad6d8d24 Mon Sep 17 00:00:00 2001 From: Alexey Ovchinnikov Date: Tue, 22 Oct 2024 06:11:21 -0500 Subject: [PATCH 6/6] bundler: Adding e2e tests data A snapshot of e2e data for e2e tests. Signed-off-by: Alexey Ovchinnikov --- tests/integration/test_bundler.py | 4 +- .../.build-config.yaml | 11 + .../bundler_everything_present/bom.json | 639 ++++++++++++++++++ .../fetch_deps_sha256sums.json | 245 +++++++ .../vendor_sha256sums.json | 1 + .../.build-config.yaml | 11 + .../bom.json | 626 +++++++++++++++++ .../fetch_deps_sha256sums.json | 245 +++++++ .../vendor_sha256sums.json | 1 + 9 files changed, 1781 insertions(+), 2 deletions(-) create mode 100644 tests/integration/test_data/bundler_everything_present/.build-config.yaml create mode 100644 tests/integration/test_data/bundler_everything_present/bom.json create mode 100644 tests/integration/test_data/bundler_everything_present/fetch_deps_sha256sums.json create mode 100644 tests/integration/test_data/bundler_everything_present/vendor_sha256sums.json create mode 100644 tests/integration/test_data/bundler_everything_present_except_gemspec/.build-config.yaml create mode 100644 tests/integration/test_data/bundler_everything_present_except_gemspec/bom.json create mode 100644 tests/integration/test_data/bundler_everything_present_except_gemspec/fetch_deps_sha256sums.json create mode 100644 tests/integration/test_data/bundler_everything_present_except_gemspec/vendor_sha256sums.json diff --git a/tests/integration/test_bundler.py b/tests/integration/test_bundler.py index f9eafd217..5b430b4dc 100644 --- a/tests/integration/test_bundler.py +++ b/tests/integration/test_bundler.py @@ -111,7 +111,7 @@ def test_bundler_packages( ref="well_formed_ruby_all_features", packages=({"path": ".", "type": "bundler", "allow_binary": "true"},), flags=["--dev-package-managers"], - check_output=False, + check_output=True, check_deps_checksums=False, check_vendor_checksums=False, expected_exit_code=0, @@ -127,7 +127,7 @@ def test_bundler_packages( ref="well_formed_ruby_without_gemspec", packages=({"path": ".", "type": "bundler", "allow_binary": "true"},), flags=["--dev-package-managers"], - check_output=False, + check_output=True, check_deps_checksums=False, check_vendor_checksums=False, expected_exit_code=0, diff --git a/tests/integration/test_data/bundler_everything_present/.build-config.yaml b/tests/integration/test_data/bundler_everything_present/.build-config.yaml new file mode 100644 index 000000000..e0346bfd0 --- /dev/null +++ b/tests/integration/test_data/bundler_everything_present/.build-config.yaml @@ -0,0 +1,11 @@ +environment_variables: +- name: BUNDLE_APP_CONFIG + value: ${output_dir}/bundler/config_override +project_files: +- abspath: ${test_case_tmpdir}/bundler_everything_present-output/bundler/config_override/config + template: |2 + + BUNDLE_CACHE_PATH: "${output_dir}/deps/bundler" + BUNDLE_DEPLOYMENT: "true" + BUNDLE_NO_PRUNE: "true" + BUNDLE_VERSION: "system" diff --git a/tests/integration/test_data/bundler_everything_present/bom.json b/tests/integration/test_data/bundler_everything_present/bom.json new file mode 100644 index 000000000..e4d8271b8 --- /dev/null +++ b/tests/integration/test_data/bundler_everything_present/bom.json @@ -0,0 +1,639 @@ +{ + "bomFormat": "CycloneDX", + "components": [ + { + "name": "actioncable", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/actioncable@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "actionmailbox", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/actionmailbox@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "actionmailer", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/actionmailer@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "actionpack", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/actionpack@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "actiontext", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/actiontext@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "actionview", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/actionview@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "activejob", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/activejob@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "activemodel", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/activemodel@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "activerecord", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/activerecord@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "activestorage", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/activestorage@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "activesupport", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/activesupport@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "addressable", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/addressable@2.8.7", + "type": "library", + "version": "2.8.7" + }, + { + "name": "builder", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/builder@3.3.0", + "type": "library", + "version": "3.3.0" + }, + { + "name": "concurrent-ruby", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/concurrent-ruby@1.3.4", + "type": "library", + "version": "1.3.4" + }, + { + "name": "crass", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/crass@1.0.6", + "type": "library", + "version": "1.0.6" + }, + { + "name": "date", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/date@3.3.4", + "type": "library", + "version": "3.3.4" + }, + { + "name": "erubi", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/erubi@1.13.0", + "type": "library", + "version": "1.13.0" + }, + { + "name": "globalid", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/globalid@1.2.1", + "type": "library", + "version": "1.2.1" + }, + { + "name": "i18n", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/i18n@1.14.6", + "type": "library", + "version": "1.14.6" + }, + { + "name": "json-schema", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/json-schema@3.0.0?vcs_url=git%2Bhttps://github.com/3scale/json-schema%4026487618a68443e94d623bb585cb464b07d36702", + "type": "library", + "version": "3.0.0" + }, + { + "name": "loofah", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/loofah@2.22.0", + "type": "library", + "version": "2.22.0" + }, + { + "name": "mail", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/mail@2.8.1", + "type": "library", + "version": "2.8.1" + }, + { + "name": "marcel", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/marcel@1.0.4", + "type": "library", + "version": "1.0.4" + }, + { + "name": "method_source", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/method_source@1.1.0", + "type": "library", + "version": "1.1.0" + }, + { + "name": "mini_mime", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/mini_mime@1.1.5", + "type": "library", + "version": "1.1.5" + }, + { + "name": "minitest", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/minitest@5.25.1", + "type": "library", + "version": "5.25.1" + }, + { + "name": "mygem", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/mygem@0.0.1", + "type": "library", + "version": "0.0.1" + }, + { + "name": "net-imap", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/net-imap@0.4.16", + "type": "library", + "version": "0.4.16" + }, + { + "name": "net-pop", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/net-pop@0.1.2", + "type": "library", + "version": "0.1.2" + }, + { + "name": "net-protocol", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/net-protocol@0.2.2", + "type": "library", + "version": "0.2.2" + }, + { + "name": "net-smtp", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/net-smtp@0.5.0", + "type": "library", + "version": "0.5.0" + }, + { + "name": "nio4r", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/nio4r@2.7.3", + "type": "library", + "version": "2.7.3" + }, + { + "name": "nokogiri", + "properties": [ + { + "name": "cachi2:bundler:package:binary", + "value": "true" + } + ], + "purl": "pkg:gem/nokogiri@1.16.7", + "type": "library", + "version": "1.16.7" + }, + { + "name": "public_suffix", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/public_suffix@6.0.1", + "type": "library", + "version": "6.0.1" + }, + { + "name": "quux", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/quux@0.0.1?vcs_url=git%2Bhttps://github.com/cachito-testing/cachi2-bundler.git%40f2d2d64600559d801b44170113a93d754052e9f7#quux", + "type": "library", + "version": "0.0.1" + }, + { + "name": "racc", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/racc@1.8.1", + "type": "library", + "version": "1.8.1" + }, + { + "name": "rack-test", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/rack-test@2.1.0", + "type": "library", + "version": "2.1.0" + }, + { + "name": "rack", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/rack@2.2.9", + "type": "library", + "version": "2.2.9" + }, + { + "name": "rails-dom-testing", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/rails-dom-testing@2.2.0", + "type": "library", + "version": "2.2.0" + }, + { + "name": "rails-html-sanitizer", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/rails-html-sanitizer@1.6.0", + "type": "library", + "version": "1.6.0" + }, + { + "name": "rails", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/rails@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "railties", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/railties@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "rake", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/rake@13.2.1", + "type": "library", + "version": "13.2.1" + }, + { + "name": "sprockets-rails", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/sprockets-rails@3.5.2", + "type": "library", + "version": "3.5.2" + }, + { + "name": "sprockets", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/sprockets@4.2.1", + "type": "library", + "version": "4.2.1" + }, + { + "name": "thor", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/thor@1.3.2", + "type": "library", + "version": "1.3.2" + }, + { + "name": "timeout", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/timeout@0.4.1", + "type": "library", + "version": "0.4.1" + }, + { + "name": "tmp", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/tmp@0.1.2?vcs_url=git%2Bhttps://github.com/cachito-testing/cachi2-bundler.git%40f2d2d64600559d801b44170113a93d754052e9f7", + "type": "library", + "version": "0.1.2" + }, + { + "name": "tzinfo", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/tzinfo@2.0.6", + "type": "library", + "version": "2.0.6" + }, + { + "name": "websocket-driver", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/websocket-driver@0.7.6", + "type": "library", + "version": "0.7.6" + }, + { + "name": "websocket-extensions", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/websocket-extensions@0.1.5", + "type": "library", + "version": "0.1.5" + }, + { + "name": "zeitwerk", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/zeitwerk@2.6.18", + "type": "library", + "version": "2.6.18" + } + ], + "metadata": { + "tools": [ + { + "name": "cachi2", + "vendor": "red hat" + } + ] + }, + "specVersion": "1.4", + "version": 1 +} diff --git a/tests/integration/test_data/bundler_everything_present/fetch_deps_sha256sums.json b/tests/integration/test_data/bundler_everything_present/fetch_deps_sha256sums.json new file mode 100644 index 000000000..a1ace8a73 --- /dev/null +++ b/tests/integration/test_data/bundler_everything_present/fetch_deps_sha256sums.json @@ -0,0 +1,245 @@ +{ + "bundler/actioncable-6.1.7.gem": "sha256:ee5345e1ac0a9ec24af8d21d46d6e8d85dd76b28b14ab60929c2da3e7d5bfe64", + "bundler/actionmailbox-6.1.7.gem": "sha256:c4364381e724b39eee3381e6eb3fdc80f121ac9a53dea3fd9ef687a9040b8a08", + "bundler/actionmailer-6.1.7.gem": "sha256:5561c298a13e6d43eb71098be366f59be51470358e6e6e49ebaaf43502906fa4", + "bundler/actionpack-6.1.7.gem": "sha256:3a8580e3721757371328906f953b332d5c95bd56a1e4f344b3fee5d55dc1cf37", + "bundler/actiontext-6.1.7.gem": "sha256:c5d3af4168619923d0ff661207215face3e03f7a04c083b5d347f190f639798e", + "bundler/actionview-6.1.7.gem": "sha256:c166e890d2933ffbb6eb2a2eac1b54f03890e33b8b7269503af848db88afc8d4", + "bundler/activejob-6.1.7.gem": "sha256:e5d2ac525b6be5ccf242534af504ea2c7b406fb5f7880495ce3c1407e749c415", + "bundler/activemodel-6.1.7.gem": "sha256:7ec2b54676e30b523b2af16f027d74304a49d3cba83e2c400b3cf3dd153d6da0", + "bundler/activerecord-6.1.7.gem": "sha256:52e4a2601bb41b87db2be68c3f62add64c4614b580f9b540131d7a3e028a5db7", + "bundler/activestorage-6.1.7.gem": "sha256:e0af9a8fc6a2b92172c1061bc546f6c47b1f3b5d94b63f2aaaea68a1a6db75fb", + "bundler/activesupport-6.1.7.gem": "sha256:f9dee8a4cc315714e29228328428437c8779f58237749339afadbdcfb5c0b74c", + "bundler/addressable-2.8.7.gem": "sha256:462986537cf3735ab5f3c0f557f14155d778f4b43ea4f485a9deb9c8f7c58232", + "bundler/builder-3.3.0.gem": "sha256:497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f", + "bundler/concurrent-ruby-1.3.4.gem": "sha256:d4aa926339b0a86b5b5054a0a8c580163e6f5dcbdfd0f4bb916b1a2570731c32", + "bundler/crass-1.0.6.gem": "sha256:dc516022a56e7b3b156099abc81b6d2b08ea1ed12676ac7a5657617f012bd45d", + "bundler/date-3.3.4.gem": "sha256:971f2cb66b945bcbea4ddd9c7908c9400b31a71bc316833cb42fa584b59d3291", + "bundler/erubi-1.13.0.gem": "sha256:fca61b47daefd865d0fb50d168634f27ad40181867445badf6427c459c33cd62", + "bundler/globalid-1.2.1.gem": "sha256:70bf76711871f843dbba72beb8613229a49429d1866828476f9c9d6ccc327ce9", + "bundler/i18n-1.14.6.gem": "sha256:dc229a74f5d181f09942dd60ab5d6e667f7392c4ee826f35096db36d1fe3614c", + "bundler/json-schema-26487618a684/.git/HEAD": "sha256:ff8a3ad4280249bd490f5c955e9fd770b14da6e5c9abc0e0b0d07572afe8c0ed", + "bundler/json-schema-26487618a684/.git/config": "sha256:d87f683f571d97aa65d8ae77aa6a6f7a57437747a468f91ef14afd5f46bfdc22", + "bundler/json-schema-26487618a684/.git/description": "sha256:85ab6c163d43a17ea9cf7788308bca1466f1b0a8d1cc92e26e9bf63da4062aee", + "bundler/json-schema-26487618a684/.git/hooks/applypatch-msg.sample": "sha256:8bf35846bc3d90db12f711dd961292eb1c617b6f62c2c4e702706b71f2a897b2", + "bundler/json-schema-26487618a684/.git/hooks/commit-msg.sample": "sha256:3aa1d8934de407e8dd617e2b73612d04d225d9adbea20626b10945d8ab4f4f4a", + "bundler/json-schema-26487618a684/.git/hooks/post-update.sample": "sha256:d0d00b057e31fbe8207f3a1496797050fcadad75df883842e979a965bd6a298f", + "bundler/json-schema-26487618a684/.git/hooks/pre-applypatch.sample": "sha256:0e01aa4a2a7387a2d06a058113c18faa58e8191b840b45529db82c8ab39521c2", + "bundler/json-schema-26487618a684/.git/hooks/pre-commit.sample": "sha256:4d44c83bc3c0271d2ecd328b1d08d9af89f928511c02dcd4a4e81b761b6df1f6", + "bundler/json-schema-26487618a684/.git/hooks/pre-merge-commit.sample": "sha256:6e9d4320214965de9ec5bf4a94cde33d9f0c32c8085926277664d0f494fef7cc", + "bundler/json-schema-26487618a684/.git/hooks/pre-push.sample": "sha256:329a5f4509a242b8d1916ec617f85a5383190b34ac35d414224091ed9ceb2dd6", + "bundler/json-schema-26487618a684/.git/hooks/pre-receive.sample": "sha256:f6db83ee6e0153ace9f9de7a0a15f4902e33ebd3051b5f4d4587c9a5c8a07659", + "bundler/json-schema-26487618a684/.git/hooks/push-to-checkout.sample": "sha256:e1acad23702af2ad4c58bd616d399ab8f0fe5a470f044f20ac497aded0f45ec5", + "bundler/json-schema-26487618a684/.git/hooks/sendemail-validate.sample": "sha256:23a33477f01ffe5246b46a9d1db7c39d73d193ce19ed4116e00cbb031ec5f2eb", + "bundler/json-schema-26487618a684/.git/hooks/update.sample": "sha256:1b21448c0c321a3004d8db76adc43d14b8b3c948dadc57795ffe8e5f0726aae1", + "bundler/json-schema-26487618a684/.git/index": "sha256:ae9e6e26365b2f5634497a84ec429d95fb2d7fabb0dceb3d111ae29794b09891", + "bundler/json-schema-26487618a684/.git/info/exclude": "sha256:6671fe83b7a07c8932ee89164d1f2793b2318058eb8b98dc5c06ee0a5a3b0ec1", + "bundler/json-schema-26487618a684/.git/logs/HEAD": "sha256:c460317273b1aa49c96c09cd3fbf5adc5dee2fbe8a13834908d59575e69ba605", + "bundler/json-schema-26487618a684/.git/logs/refs/heads/master": "sha256:c1b2838c34b46f8d96fbcde86845626e7a5adbf1dc26d88203b40657d66f6a56", + "bundler/json-schema-26487618a684/.git/logs/refs/remotes/origin/HEAD": "sha256:c1b2838c34b46f8d96fbcde86845626e7a5adbf1dc26d88203b40657d66f6a56", + "bundler/json-schema-26487618a684/.git/objects/pack/pack-d5b124bddc5450b1be76e7b5be4049dd9b7fb91d.idx": "sha256:4040c8df3e30bdb8755be252fd6887e12074db927091dccf10b077354b61e4fb", + "bundler/json-schema-26487618a684/.git/objects/pack/pack-d5b124bddc5450b1be76e7b5be4049dd9b7fb91d.pack": "sha256:f307e5a43031d93e12253b5340e342ee393caf8cc9513a2f9490f8124c15215d", + "bundler/json-schema-26487618a684/.git/objects/pack/pack-d5b124bddc5450b1be76e7b5be4049dd9b7fb91d.rev": "sha256:60fe9d43f53bd25fe99594a897d52cd6813bffa252edf4cc731103c434fa5bee", + "bundler/json-schema-26487618a684/.git/packed-refs": "sha256:1b28949f81f34c1db7d6fb91eee5e1bc5d0bc7cf8246ee7095d77a915b3f490e", + "bundler/json-schema-26487618a684/.git/refs/heads/master": "sha256:ff8a3ad4280249bd490f5c955e9fd770b14da6e5c9abc0e0b0d07572afe8c0ed", + "bundler/json-schema-26487618a684/.git/refs/remotes/origin/HEAD": "sha256:cdc65e67690c4c6475174e5ec662b70655246a2f3924354778835ab3be70aa76", + "bundler/json-schema-26487618a684/.gitignore": "sha256:21c10a60789a533e6f8e94b21995491f7aef67b1e3a0cacd46024381d16e4a0b", + "bundler/json-schema-26487618a684/.gitmodules": "sha256:eb7bc5360d086ba520b5b759fdb5a18114c9624f8c9137c385d878ac4978b011", + "bundler/json-schema-26487618a684/.travis.yml": "sha256:68c20440e3994aa63e589a1dd2e353f12780ee74c376db8a80fd3db4851aadce", + "bundler/json-schema-26487618a684/CHANGELOG.md": "sha256:a44b1ea3a9ce72afe962728897dab5ddfcd79e4c14d8bad56bef53e354087104", + "bundler/json-schema-26487618a684/CONTRIBUTING.md": "sha256:11c395c3d82b9c558b29be02cdcebb227b867fcc6d453ed16d5368292c2e0557", + "bundler/json-schema-26487618a684/CONTRIBUTORS.md": "sha256:1bcc7477eccf7cf07f453930f7a13a363dd42c6cc088d17f8e1998fa4b111a2d", + "bundler/json-schema-26487618a684/Gemfile": "sha256:dc883081b53a436b6df7589d669a1fc3c8bd91b7c8e0e89bd3d683dbe707bb8a", + "bundler/json-schema-26487618a684/LICENSE.md": "sha256:e145970d2f70a81d23f674bbf30ff26187ff86cd3f9ab8af2cc70bdc0c898cfa", + "bundler/json-schema-26487618a684/README.md": "sha256:14e4ff823f01a97f96ff3147986ce5a547d452e63bbe6633c0c86d5bf20efee2", + "bundler/json-schema-26487618a684/Rakefile": "sha256:b3c132d5c3e1ca42dcad0ca8b4e9c03519072cc107be4e81bca5e2ac6441d090", + "bundler/json-schema-26487618a684/VERSION.yml": "sha256:08f20d30b5d9d05d93d463915e927bbcdfc57a300b02b94cacf41dfb9902fa80", + "bundler/json-schema-26487618a684/gemfiles/Gemfile.multi_json.x": "sha256:4526d45bb21904022da72b778b4750573f81f4435e36434b3f7c2143f2947dc2", + "bundler/json-schema-26487618a684/gemfiles/Gemfile.ruby_19.x": "sha256:ebdd3c725abceec339b3483b729994df9e6541c53cc28fee85b29956b6954fec", + "bundler/json-schema-26487618a684/gemfiles/Gemfile.uuidtools.x": "sha256:2b6e8de1bcf775ba90391ae6be528dca7aa16b929a7d57fdb7c803f545ccc299", + "bundler/json-schema-26487618a684/gemfiles/Gemfile.yajl-ruby.x": "sha256:0e6a8f127d3da990bb6a7c095cbf52127deff829831bde12c259df1e21edae47", + "bundler/json-schema-26487618a684/json-schema.gemspec": "sha256:ab02198bb9bf8c864695a798137d0c448fbc8fb991814cf6ef8f6581ac2b9872", + "bundler/json-schema-26487618a684/lib/json-schema.rb": "sha256:e11052edd540fede22a6ca6bd8573c29a68ce17024441b1157faafe3589cb9f8", + "bundler/json-schema-26487618a684/lib/json-schema/attribute.rb": "sha256:7747380181ceafdec1ce68b9da819cce22d2683d14291546a93d7dfef8f799f7", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/additionalitems.rb": "sha256:7d3594e8c67a253da712884412f53385ae9c143f5d1c41c9786cb649eb332e91", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/additionalproperties.rb": "sha256:acc32fd467d583a8b30bb61b1dc7f6670d604c89210cb5c69e56e3757c1969be", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/allof.rb": "sha256:5fe47c91ded77cbaadda0e5bfa0a2c5fc2784b7bf50413b8a58e8d78999634fc", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/anyof.rb": "sha256:3d19935b90ed5a32d87486539fc8f832b45410cb7682d0f50241a96dfc8fef8c", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/dependencies.rb": "sha256:b7b11c0ba09a086b85342f135e4e948d3064e66d74ed901e0166afc613910beb", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/dependencies_v4.rb": "sha256:32ea73f3f62dd6c0fdafab69c8b930f1fa4e47ab8cd774478a633ca5331036f7", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/disallow.rb": "sha256:05328663ef6d98fdbcd40d089eca8ee674ca43f1df940f10ae71f4378c36e26e", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/divisibleby.rb": "sha256:0843f6d2eb584e9ff6d6aef7f7feb62836912aebca6ee0e873fdf4488d9fdf46", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/enum.rb": "sha256:1c5fe96d73af5c659f811cb0a91fa60479e5c409a906b9172aac2d4e8b5c0d56", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/extends.rb": "sha256:48cc21b2d2d8ccf6818184c811d753661861f7c43874ef6089b6d60ea2052a3d", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/format.rb": "sha256:8817386eda3019ede68ce9e69ecd263380be372114d21e8a250dcdf317abd769", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/formats/custom.rb": "sha256:d85fe15d48178ff8081c8679688eaf7b9316bd04e85a8d8b17d76164b7c56129", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/formats/date.rb": "sha256:0bee6d821746f0a031ba46785f3a4f6bff1b59aac1243f483c6caada84c2affb", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/formats/date_time.rb": "sha256:b9dbe0ba822317a83425290725ed9301e8257c2cf1f6c25b244fe5f7344b32ed", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/formats/date_time_v4.rb": "sha256:2ccb1aee044a68bd728fc4fbe4cd31863ae5f79dbe207fc702acfd730b7f2961", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/formats/ip.rb": "sha256:a10d0400acc6475193de9c4ff743563494f464cfb9ec725f9f3ee7baeedd97f7", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/formats/time.rb": "sha256:2b15b837d7ae11e03acbeb89b73343a2dc518e088c0dbe6eca994431df4e1da7", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/formats/uri.rb": "sha256:778e578d2e6748d8c874d4fd45f6e0e478add09e4f0ae4fdec76829af7bfec1f", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/items.rb": "sha256:2d1d266f18e3a8b248279494942a338bb061bc2a15855546ce79372aaf719d96", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limit.rb": "sha256:34d4672f4ceb106a8805eed68e8345a50a948e3730479b6b34ca4faa204cdee2", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/items.rb": "sha256:1ff4db5d3d9c1834c9bf90e393e590280fe439a39ac8b4518b4d9ac4f698ae15", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/length.rb": "sha256:eb2c227a44a820bbbc762fb674320579179e30f9fa3a521afbb69a95d338d476", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/max_items.rb": "sha256:2cf6f729f9342e1f269161a5a9b226391387d422f6f0a8cc1487b0494a04d3ab", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/max_length.rb": "sha256:5cd2977fc6c72f33aa88ac1968e6b50eab5ff5c60d7fc9f5fbb029f8536fdb9e", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/max_properties.rb": "sha256:3869ef051ff327da20a0ce4f8eeee6252f4715dbcd4fd239991c83e7b2878de9", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/maximum.rb": "sha256:68dc341fda545f1af2540e028909cf4de3724c583d10fbe0fbefe1494c5ef75b", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/maximum_inclusive.rb": "sha256:15cda2765e2847889c9e419bd62618aa6f2eedb1aee831f6dc92dbac4a176b87", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/min_items.rb": "sha256:ff10ab9ac5eab6564366703d65f12e85a4016a787006b932c44f6ff405c84e0d", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/min_length.rb": "sha256:b202235eb539cb3eb5fe775aef201efca57413d51d0fa01e1cea23e1bc2c1bba", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/min_properties.rb": "sha256:1f49e6dd3f64654aee7b76765e4d9bda74510155ce83b1966b4521e70c19fb58", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/minimum.rb": "sha256:3150d183d223630a8dbc174630b3463f38b5480ce02995747304228330065433", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/minimum_inclusive.rb": "sha256:badfc885a2112ccde861b4812119e93df50fae5be283af17b38be5070ab05cb4", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/numeric.rb": "sha256:e2dcddc1c17e23c775dde49664b3ab964c13b7519ce9e604bead9513e8eedc54", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/properties.rb": "sha256:6a511440cc50d2ee87959e8d612ac5611ad92a53977aa8a1720061490e052e7d", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/maxdecimal.rb": "sha256:a43710fbba7150d7d6def0c88a2d7b2b2cbedae3a7ed82601fbb80bb706d7b88", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/multipleof.rb": "sha256:c85f23f3a4383f11061fc1bb1e519176d48e750df945bc29a518cf9a4598c485", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/not.rb": "sha256:08f8224e938471b0af77014c86c0efbb115f8f40176347f460a20a6940701e3d", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/oneof.rb": "sha256:dcd88343ee2ce5ccbef5c3bc116644fe57819de2fef7df4123296ac9f7d2ea17", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/pattern.rb": "sha256:e42c356b932abbe1bec57bf73ca96a5d9fdbd93bf50cd8f4ff4e47a25c8e6ea9", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/patternproperties.rb": "sha256:72dddf5b8e772dae2b744d3678aa20d29119af53abccf78bea87c96973c1a7fa", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/properties.rb": "sha256:beff325c5dd8d9b314288308f4ae08b501e99d4c4e7978acf1014f87cb525b86", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/properties_optional.rb": "sha256:b1385d640b0892abdbfc6ec72ba61442eae8dd7ecbdd69feb40faa200bb6ab57", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/properties_v4.rb": "sha256:affe83f30a31132d9732f3deb6d6aa177d7c692caa413a2333e80bf1f860c254", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/ref.rb": "sha256:31b564c3cbe7f856423c122b88be9fb97b5f97656746a955b9dee8981f58a62c", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/required.rb": "sha256:4c389e3b43033509380de5de847cc93cc78519818b664cb9fa67a1c19428a16e", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/type.rb": "sha256:cdfdac52186c4b154172e3bb8ac2f02b495c8a2c20044f306a52cf5b3fb80634", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/type_v4.rb": "sha256:5bb5488445ad94f35d6f0eda63e7b2478f9d3c9b8616adeb95aea4381bd9d7e2", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/uniqueitems.rb": "sha256:dcadd9687b8faccc7312f708b58ad89d4a824df3cb3c588b37fc6dec7e740d61", + "bundler/json-schema-26487618a684/lib/json-schema/errors/custom_format_error.rb": "sha256:4dec4d53f3787bd840402e7f50f566e515f3e6cac6cbe70ffb9357cf8ec59d9a", + "bundler/json-schema-26487618a684/lib/json-schema/errors/json_load_error.rb": "sha256:866d3a0066d11cad52a331153253abfac590a2fdfe9446540cbbdf51e5e9d94e", + "bundler/json-schema-26487618a684/lib/json-schema/errors/json_parse_error.rb": "sha256:a04c1d193742b02361862e714675cc656703d14c6c1ae4a3b897bea56bd42b19", + "bundler/json-schema-26487618a684/lib/json-schema/errors/schema_error.rb": "sha256:d0ecfd25e639e968447db44e91e865f690072315ee1e299fd7e9e540e5de5639", + "bundler/json-schema-26487618a684/lib/json-schema/errors/schema_parse_error.rb": "sha256:edbfa9e620d8f5cbf5532ea98ac6e27b48a41902121d4b8c116ed1e89d8d03cd", + "bundler/json-schema-26487618a684/lib/json-schema/errors/uri_error.rb": "sha256:a05dfb8c2e978847036e2953266626c6ef7170508d2eabb71a36f8cda83c308c", + "bundler/json-schema-26487618a684/lib/json-schema/errors/validation_error.rb": "sha256:e289a46bba6173250d22032a5e08228068780eb1dabb1d508616b7d5060ef39a", + "bundler/json-schema-26487618a684/lib/json-schema/schema.rb": "sha256:aa91150afe855627571b96a5ab63a67c7ab3579b8245b7099223362be223a945", + "bundler/json-schema-26487618a684/lib/json-schema/schema/reader.rb": "sha256:05344c162f0dd173e6eb970aaa2913428a363e37c973a0052c898e3bfd492c8a", + "bundler/json-schema-26487618a684/lib/json-schema/schema/validator.rb": "sha256:9bf45f7195c271904532e3d745ffa2a0d6a961d71ca8e7913b1e6d61c81203e8", + "bundler/json-schema-26487618a684/lib/json-schema/util/array_set.rb": "sha256:c33152f831202a645394da8f4cdf6f1291c07d94f27a9c61ff9d600c746b47f1", + "bundler/json-schema-26487618a684/lib/json-schema/util/uri.rb": "sha256:e1150e4a8d1a51ebb2434267d3c7ba6f8f80c22c0d4e5be1a8e6546f56f5799e", + "bundler/json-schema-26487618a684/lib/json-schema/util/uuid.rb": "sha256:d34f8eed46c267471b034f071b500dcbb7250314e80254b73a64319e56cdbec7", + "bundler/json-schema-26487618a684/lib/json-schema/validator.rb": "sha256:4fab330a8b847949c49689dd066bd202feed80d4b81a1c3514046efbc926d18f", + "bundler/json-schema-26487618a684/lib/json-schema/validators/draft1.rb": "sha256:141281a8a8403194f8d6ab2349eef9ab291ec01fab24aa37b1bea58c7e7afde6", + "bundler/json-schema-26487618a684/lib/json-schema/validators/draft2.rb": "sha256:e33273d382c9e64cf8b060a14efbfaaea61d9063204eb5009e172ac43f2fbc4f", + "bundler/json-schema-26487618a684/lib/json-schema/validators/draft3.rb": "sha256:33ee441d819e41ea30566eee2e1dc5bbf70b986c57466aa310a43bad1fbca6c6", + "bundler/json-schema-26487618a684/lib/json-schema/validators/draft4.rb": "sha256:c9a572ed6afe73579bf05ca865d19e724551be7eabe4a86b1dff701177e50595", + "bundler/json-schema-26487618a684/lib/json-schema/validators/draft6.rb": "sha256:cfcc357d887602b4f9e6e88425cd2458d3744324b73eddd45689c7ed5cc11a3b", + "bundler/json-schema-26487618a684/lib/json-schema/validators/draft7.rb": "sha256:eae7830cf12c5c0a6bf5fab8bf5f43a59d040062b8bf421bcd4ec66f070a0ed2", + "bundler/json-schema-26487618a684/lib/json-schema/validators/hyper-draft1.rb": "sha256:e481b58b6ca3a73c4ae6d4f42d0be373b81f06bde66e99f69d8efbf6b4672466", + "bundler/json-schema-26487618a684/lib/json-schema/validators/hyper-draft2.rb": "sha256:d39fd6235e5ad6eafe69959821774207507ef3601c884225ec88988f6cb587e9", + "bundler/json-schema-26487618a684/lib/json-schema/validators/hyper-draft3.rb": "sha256:5fc98bf68f74ca665f885846f2245479b02d7a746d49ee1d93284837f7c8ddd2", + "bundler/json-schema-26487618a684/lib/json-schema/validators/hyper-draft4.rb": "sha256:ab871554a021489623e514c8a3fe09b2b021d1856baa6648cc02a9bb6581e472", + "bundler/json-schema-26487618a684/lib/json-schema/validators/hyper-draft6.rb": "sha256:2db7f85d527e6cb55a7e84e7f6d3c275a6c1949f24699f1f019a85b443c54323", + "bundler/json-schema-26487618a684/resources/draft-01.json": "sha256:ed6f5e4f7d3bc4104a2cb54dc299fa4262b5823df619f37f153cabf41ae74843", + "bundler/json-schema-26487618a684/resources/draft-02.json": "sha256:ff7733fb03b39f1cc756542af0ae2f74de3090544c59f953646670306164ae56", + "bundler/json-schema-26487618a684/resources/draft-03.json": "sha256:ccd758693334d5f0ab9c4926fc364b2d97fa070b6fe9c34d6e0f8fabe4ee27a9", + "bundler/json-schema-26487618a684/resources/draft-04.json": "sha256:7353ff13faa979027813b95c8b35f992057822696a70c43c79b3bfb7249e76b4", + "bundler/json-schema-26487618a684/resources/draft-06.json": "sha256:980e3c65d72c890e46e490fe66b8c71f5dd1c5e178e93ba949fe77ea370d4917", + "bundler/json-schema-26487618a684/resources/draft-07.json": "sha256:76d5c9c96d2abb36cc2942686720fbf85e792f5860337f7277a621f360a565c8", + "bundler/json-schema-26487618a684/test/all_of_ref_schema_test.rb": "sha256:dca942cc0a535e54b03d39c60ca4b33d50296e06bb61f3b93c33b4db8c072c90", + "bundler/json-schema-26487618a684/test/any_of_ref_schema_test.rb": "sha256:0d5d01d3e6e6ad4640d75c6cf0fb013461074475f075ffa673360f26c1a78201", + "bundler/json-schema-26487618a684/test/bad_schema_ref_test.rb": "sha256:5374c4d75de4889f1ca61dbcfb8d063a7ef5e98eca2cb796e3401a0d7825d849", + "bundler/json-schema-26487618a684/test/caching_test.rb": "sha256:92fbfd25ce3c2b832dbdddb6c6fea3ab6cb82d4753799bbe0f5d49046c6b177f", + "bundler/json-schema-26487618a684/test/common_test_suite_test.rb": "sha256:ded53c54d9498ff1db62128167a33e2161509035e920260940982c7f0f418f87", + "bundler/json-schema-26487618a684/test/custom_format_test.rb": "sha256:aef14289c8b64ceb4ec7a06f0986a65fb4f808ffdf704922fc7a623184741c2e", + "bundler/json-schema-26487618a684/test/data/all_of_ref_data.json": "sha256:c2afa049fa5dbdfcaba199333687d755c6da4b1fe59dd9fb2927040a8c081dc7", + "bundler/json-schema-26487618a684/test/data/any_of_ref_data.json": "sha256:4ce710b3f1cfb8606e488c447dcb25fb57fa81886c2975c81a5dd7bfac79b21f", + "bundler/json-schema-26487618a684/test/data/bad_data_1.json": "sha256:0b38e7cb4aa76a0c1f5baba21fc5b009bda2c963522694c7506f075f3aba951b", + "bundler/json-schema-26487618a684/test/data/good_data_1.json": "sha256:7078bc0208abc848de6ff9884d28f6db6281c6eb9e2e6e7b9854255a61583037", + "bundler/json-schema-26487618a684/test/data/one_of_ref_links_data.json": "sha256:4ec3a6721035aa7e13eb2899ccf838ea543da6c64f46587c47876726a994f915", + "bundler/json-schema-26487618a684/test/draft1_test.rb": "sha256:e3dd6ba0c0a364175da6527bf49c639a6d9baf4db13bffefd8a80ac1a6cf749b", + "bundler/json-schema-26487618a684/test/draft2_test.rb": "sha256:4cc702409e768796fd9546afb57c5537815582d7077e1363868f92cd08a685c5", + "bundler/json-schema-26487618a684/test/draft3_test.rb": "sha256:bcd422c2850917128fecb6efb511ae41aa6c979933eb9f17d1de8b2a2010e7dc", + "bundler/json-schema-26487618a684/test/draft4_test.rb": "sha256:fef5a5a7f0298736d0da3604e0c36eff504b39285cd724e568c3f880b2159aea", + "bundler/json-schema-26487618a684/test/draft7_test.rb": "sha256:fa18a5a3b8f7aa2246febb044f57242c8400e551e4a3ca43675f2c0a2cb4a2c8", + "bundler/json-schema-26487618a684/test/extended_schema_test.rb": "sha256:be0c1c2286cd2887cdf861da10b689dc63d55186c0bbfe619a1ec62d2b738e0d", + "bundler/json-schema-26487618a684/test/extends_nested_test.rb": "sha256:8ed0093fe3300e96d9c4d939fc6f70a7c5ecd9c4be7d0b2d409eb6dd9515d96b", + "bundler/json-schema-26487618a684/test/files_test.rb": "sha256:b73cdc1c4029a22961f0019adbe1648a9feb7b3a30ffe36d5da7e90e1ec1c578", + "bundler/json-schema-26487618a684/test/fragment_resolution_test.rb": "sha256:451a677e3066b260fbbade795f54c8494c16b28fa78cb828eab520c6f2b0aa5b", + "bundler/json-schema-26487618a684/test/fragment_validation_with_ref_test.rb": "sha256:daf2e882a6e988f3a55396f6b96dcbfe60ec19fbc6bb911c1b45209e8ff0c1b1", + "bundler/json-schema-26487618a684/test/full_validation_test.rb": "sha256:a7aa852ca54f6afe1950fab28059586f23b7603448b3b8b93d9425c57d0f73d3", + "bundler/json-schema-26487618a684/test/initialize_data_test.rb": "sha256:b6d78cb4029bea183697b32608815d833e93d292047e9b40d9afbe10852219c1", + "bundler/json-schema-26487618a684/test/list_option_test.rb": "sha256:3c719a8af19dcfad5350634c761f07a4fc66e4bd4adbc9aedf547de947ac4a51", + "bundler/json-schema-26487618a684/test/load_ref_schema_test.rb": "sha256:20bfc578ef929bf74a1c0498f7c210576485509234acd90cdea52a91d06aad87", + "bundler/json-schema-26487618a684/test/merge_missing_values_test.rb": "sha256:1a647d28c252dec2cebb448307a9a979379a16397aedef9766e647982c3d628a", + "bundler/json-schema-26487618a684/test/min_items_test.rb": "sha256:9676724dcb88c13a56b6b56ba8f5f6d25475e3704165c84b9cd9e6184fc7bd8d", + "bundler/json-schema-26487618a684/test/one_of_test.rb": "sha256:0c7c0c412e8531799f19e08a826abab5451b58c5b12b8d12e59e8f8be4ee5911", + "bundler/json-schema-26487618a684/test/relative_definition_test.rb": "sha256:78a025f3377f51b4094a7dc080b1bd3f2288419933fcdbbd666744913ceccba0", + "bundler/json-schema-26487618a684/test/ruby_schema_test.rb": "sha256:da1f693707bfa784514a7fce5e75a13755c73934173433938fab442b186386bc", + "bundler/json-schema-26487618a684/test/schema_reader_test.rb": "sha256:a2a2f1181e5524d54f9e62e22fef1f9795f89d44f633c908de033e5cfb2bf2dd", + "bundler/json-schema-26487618a684/test/schema_validation_test.rb": "sha256:08a1695b9a12157bb4c9d2b5ceea48371ddfce93d6ef707203edc00c50c7f96f", + "bundler/json-schema-26487618a684/test/schemas/address_microformat.json": "sha256:bc3cc657bcb8fa7bfc765e88edc57661083a1d200a92af7b432aacf8ff3f5495", + "bundler/json-schema-26487618a684/test/schemas/all_of_ref_base_schema.json": "sha256:a06b979f58c78b146993b2e58e98b772e383f142f77750eec22df596d1ab7571", + "bundler/json-schema-26487618a684/test/schemas/all_of_ref_schema.json": "sha256:539b82c97fadaad23c66833d41f8f6ec6f5d6b70c5217c0e002708bda893be56", + "bundler/json-schema-26487618a684/test/schemas/any_of_ref_jane_schema.json": "sha256:4463710cb55089299d5f777c0c6ca13ae120b65b38e85319500577dbe8902091", + "bundler/json-schema-26487618a684/test/schemas/any_of_ref_jimmy_schema.json": "sha256:18164fa0646b0f4660e7fefddf626b517e0dfcffadb0a9d976db339bf8780816", + "bundler/json-schema-26487618a684/test/schemas/any_of_ref_john_schema.json": "sha256:4a6a73ce1d2b4cb6ed6ad66e4b8a3856506bc8b610af06fea5703e17130dc255", + "bundler/json-schema-26487618a684/test/schemas/any_of_ref_schema.json": "sha256:8c849d2c386a5962c534df6b4987ee41ba14388fb2e10328d2639f2f67d08695", + "bundler/json-schema-26487618a684/test/schemas/definition_schema.json": "sha256:e228ace91c5d8f1931694df499732c62beea5415b8d7e59bfd40dd6ceb585961", + "bundler/json-schema-26487618a684/test/schemas/definition_schema_with_special_characters.json": "sha256:a6af5b336c9c19b51b04bda0fdb2bdffe608cc22285724b4c5081b8e3e036bac", + "bundler/json-schema-26487618a684/test/schemas/extends_and_additionalProperties_false_schema.json": "sha256:02f29f59290746e833e523496c294a464981dbd54ea4a8758c0af40f8a16cd29", + "bundler/json-schema-26487618a684/test/schemas/extends_and_patternProperties_schema.json": "sha256:cbdeccb56b6a4888bd91fc637d644a83e1f2e892c7f07c8505e45b44853212cf", + "bundler/json-schema-26487618a684/test/schemas/good_schema_1.json": "sha256:4a198d1ff172d97603a2a07bb74226dc764bce7bec501bfeef0fdb3090b88253", + "bundler/json-schema-26487618a684/test/schemas/good_schema_2.json": "sha256:419ede06bf933e6d6fd9abf906e72257d68e678a8a3be2f16b706144db1f6363", + "bundler/json-schema-26487618a684/test/schemas/good_schema_extends1.json": "sha256:ba353aee610cbdad9445cf72351134024620214e28badb10a4b5c744fd03ec7e", + "bundler/json-schema-26487618a684/test/schemas/good_schema_extends2.json": "sha256:beefabcd5f729545d31546c2c25b76b0ae386fb4674373aaba3338282f1a1ec5", + "bundler/json-schema-26487618a684/test/schemas/inner_schema.json": "sha256:4ee54936afc78ccc68808d8d485e4781329ae64a41c4d8895aa3f7defbdb5ced", + "bundler/json-schema-26487618a684/test/schemas/one_of_ref_links_schema.json": "sha256:054a9eff7b24c49a02e6be1227e745fc5992cf5bb5843d3b8f41f7afd07ba831", + "bundler/json-schema-26487618a684/test/schemas/ref john with spaces schema.json": "sha256:7788083243802282073ecec271348ebb74f8851b5381635754c5251c2983b5db", + "bundler/json-schema-26487618a684/test/schemas/relative_definition_schema.json": "sha256:ea885afd038c53a7185e52a3b487f63d27c259ba3d7a244d142f8d1c8a72786a", + "bundler/json-schema-26487618a684/test/schemas/self_link_schema.json": "sha256:e9514662ea58de25670584c6d40e2c741ead2bfa2b954c582b270e2abecc3ea3", + "bundler/json-schema-26487618a684/test/schemas/up_link_schema.json": "sha256:3a5d43cd9c99a12f9c5a815ba88251accb48a97f23dc5c3376673786b4440c50", + "bundler/json-schema-26487618a684/test/stringify_test.rb": "sha256:ccb2ed8efd82af9bc913fa57972f6c6fedb97234b5a58f7b50dfda0ab79fab1e", + "bundler/json-schema-26487618a684/test/support/array_validation.rb": "sha256:16ce2f118b4ce31b9ff17ca0eb355378299d16ade45b5d4d23aa620dbc10c170", + "bundler/json-schema-26487618a684/test/support/enum_validation.rb": "sha256:ec6fa3d78c9303d0645cdc497a5a61551a95e508dcf93d19c7fccc5c039813a1", + "bundler/json-schema-26487618a684/test/support/number_validation.rb": "sha256:aaa46999837bdec67550f2c328f5eca867efdc332a89519638f2f7ac629bb084", + "bundler/json-schema-26487618a684/test/support/object_validation.rb": "sha256:7590e08b38249409f3931d7d0419d1b6c82526392a9990e008b2d8c16a519f50", + "bundler/json-schema-26487618a684/test/support/strict_validation.rb": "sha256:a66498751f9ed00b8a1be57cd4d965a9e4bf1afa15ceaf0145660a164947f5a0", + "bundler/json-schema-26487618a684/test/support/string_validation.rb": "sha256:820fd288c8e82fe474677c3243fe32d340fa7651a5e4e7b33dcff59ae5b35c39", + "bundler/json-schema-26487618a684/test/support/test_helper.rb": "sha256:446cd89eb0ff3529bd3cf3a78811dfdf2cfe4e8f28d4469d2e16e18e59296ead", + "bundler/json-schema-26487618a684/test/support/test_suite_ignored_tests.yml": "sha256:34a13e1423bd46df27e385a5916c603b9dbacc01eabd322098cb86421add2d57", + "bundler/json-schema-26487618a684/test/support/type_validation.rb": "sha256:f36aa74bc0e887121e241bf3743cddb74c4a5ddcafcb364789f3179b95a60583", + "bundler/json-schema-26487618a684/test/type_attribute_test.rb": "sha256:50927465db28e53792652515a361750201e8cffab4bcf93fd88c28adc932a5ef", + "bundler/json-schema-26487618a684/test/uri_parsing_test.rb": "sha256:0f796d353f10c93bd0ddb1f9d57425183dcce3aca1e47e8f61109f0ccf0ad02c", + "bundler/json-schema-26487618a684/test/uri_util_test.rb": "sha256:ec24964a04b41399bfd4fab07193ed730827843d96d0ccf11dd4ba4e31baf3be", + "bundler/json-schema-26487618a684/test/validator_schema_reader_test.rb": "sha256:5fb1c790a2774d8bed28677e1d9d691b3e205422aa152d2d6699c4f87be08980", + "bundler/loofah-2.22.0.gem": "sha256:10d76e070c86b12fec74b6a9515fd1940f4459198b991342d0a7897d86c372fe", + "bundler/mail-2.8.1.gem": "sha256:ec3b9fadcf2b3755c78785cb17bc9a0ca9ee9857108a64b6f5cfc9c0b5bfc9ad", + "bundler/marcel-1.0.4.gem": "sha256:0d5649feb64b8f19f3d3468b96c680bae9746335d02194270287868a661516a4", + "bundler/method_source-1.1.0.gem": "sha256:181301c9c45b731b4769bc81e8860e72f9161ad7d66dd99103c9ab84f560f5c5", + "bundler/mini_mime-1.1.5.gem": "sha256:8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef", + "bundler/minitest-5.25.1.gem": "sha256:3db6795a80634def1cf86fda79d2d83b59b25ce5e186fa675f73c565589d2ad8", + "bundler/mygem-0.0.1.gem": "sha256:76acd744bb980a4b2b1f6747e5b96d2ca25e4f44b597dc337a00e3b4132258e5", + "bundler/net-imap-0.4.16.gem": "sha256:70e104926f042e30e2fd3b4c2632cc97661762d6e09679e5fc9be4a346d43243", + "bundler/net-pop-0.1.2.gem": "sha256:848b4e982013c15b2f0382792268763b748cce91c9e91e36b0f27ed26420dff3", + "bundler/net-protocol-0.2.2.gem": "sha256:aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8", + "bundler/net-smtp-0.5.0.gem": "sha256:5fc0415e6ea1cc0b3dfea7270438ec22b278ca8d524986a3ae4e5ae8d087b42a", + "bundler/nio4r-2.7.3.gem": "sha256:54b94cdd4b8f9dc39aaad5f699e97afae13efb44f2b180a6e724df76105ff604", + "bundler/nokogiri-1.16.7-aarch64-linux.gem": "sha256:78778d35f165b59513be31c0fe232c63a82cf97626ffba695b5f822e5da1d74b", + "bundler/nokogiri-1.16.7-arm-linux.gem": "sha256:c84cdb9e3aa44c35bbb981b20175838c4b2066c26c5cb118f31f177168a42fc3", + "bundler/nokogiri-1.16.7-arm64-darwin.gem": "sha256:276dcea1b988a5b22b5acc1ba901d24b8e908c40b71dccd5d54a2ae279480dad", + "bundler/nokogiri-1.16.7-x86-linux.gem": "sha256:dddbf1c1ef99ce9fab98302b14f8bacb703e6f16e89b99f05ecee8a1fca23664", + "bundler/nokogiri-1.16.7-x86_64-darwin.gem": "sha256:630732b80fc572690eab50c73a1f18988f3ac401ed0b67ca9956ba2b1e2c3faa", + "bundler/nokogiri-1.16.7-x86_64-linux.gem": "sha256:9e1e428641d5942af877c60b418c71163560e9feb4a5c4015f3230a8b86a40f6", + "bundler/public_suffix-6.0.1.gem": "sha256:61d44e1cab5cbbbe5b31068481cf16976dd0dc1b6b07bd95617ef8c5e3e00c6f", + "bundler/racc-1.8.1.gem": "sha256:4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f", + "bundler/rack-2.2.9.gem": "sha256:fd6301a97a1c1e955e68f85c861fcb1cde6145a32c532e1ea321a72ff8cc4042", + "bundler/rack-test-2.1.0.gem": "sha256:0c61fc61904049d691922ea4bb99e28004ed3f43aa5cfd495024cc345f125dfb", + "bundler/rails-6.1.7.gem": "sha256:6e3b9226fb9f82d916990b7da9a121191890ed20ac49f40e902d4e6952308006", + "bundler/rails-dom-testing-2.2.0.gem": "sha256:e515712e48df1f687a1d7c380fd7b07b8558faa26464474da64183a7426fa93b", + "bundler/rails-html-sanitizer-1.6.0.gem": "sha256:86e9f19d2e6748890dcc2633c8945ca45baa08a1df9d8c215ce17b3b0afaa4de", + "bundler/railties-6.1.7.gem": "sha256:5df0960e55db0edd305de26f7a3cf7da695c035cd6cd5bf8c8c79df9338e9fc7", + "bundler/rake-13.2.1.gem": "sha256:46cb38dae65d7d74b6020a4ac9d48afed8eb8149c040eccf0523bec91907059d", + "bundler/sprockets-4.2.1.gem": "sha256:951b13dd2f2fcae840a7184722689a803e0ff9d2702d902bd844b196da773f97", + "bundler/sprockets-rails-3.5.2.gem": "sha256:a9e88e6ce9f8c912d349aa5401509165ec42326baf9e942a85de4b76dbc4119e", + "bundler/thor-1.3.2.gem": "sha256:eef0293b9e24158ccad7ab383ae83534b7ad4ed99c09f96f1a6b036550abbeda", + "bundler/timeout-0.4.1.gem": "sha256:6f1f4edd4bca28cffa59501733a94215407c6960bd2107331f0280d4abdebb9a", + "bundler/tzinfo-2.0.6.gem": "sha256:8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b", + "bundler/websocket-driver-0.7.6.gem": "sha256:f69400be7bc197879726ad8e6f5869a61823147372fd8928836a53c2c741d0db", + "bundler/websocket-extensions-0.1.5.gem": "sha256:1c6ba63092cda343eb53fc657110c71c754c56484aad42578495227d717a8241", + "bundler/zeitwerk-2.6.18.gem": "sha256:bd2d213996ff7b3b364cd342a585fbee9797dbc1c0c6d868dc4150cc75739781" +} diff --git a/tests/integration/test_data/bundler_everything_present/vendor_sha256sums.json b/tests/integration/test_data/bundler_everything_present/vendor_sha256sums.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/tests/integration/test_data/bundler_everything_present/vendor_sha256sums.json @@ -0,0 +1 @@ +{} diff --git a/tests/integration/test_data/bundler_everything_present_except_gemspec/.build-config.yaml b/tests/integration/test_data/bundler_everything_present_except_gemspec/.build-config.yaml new file mode 100644 index 000000000..3052f08eb --- /dev/null +++ b/tests/integration/test_data/bundler_everything_present_except_gemspec/.build-config.yaml @@ -0,0 +1,11 @@ +environment_variables: +- name: BUNDLE_APP_CONFIG + value: ${output_dir}/bundler/config_override +project_files: +- abspath: ${test_case_tmpdir}/bundler_everything_present_except_gemspec-output/bundler/config_override/config + template: |2 + + BUNDLE_CACHE_PATH: "${output_dir}/deps/bundler" + BUNDLE_DEPLOYMENT: "true" + BUNDLE_NO_PRUNE: "true" + BUNDLE_VERSION: "system" diff --git a/tests/integration/test_data/bundler_everything_present_except_gemspec/bom.json b/tests/integration/test_data/bundler_everything_present_except_gemspec/bom.json new file mode 100644 index 000000000..ebbc2b864 --- /dev/null +++ b/tests/integration/test_data/bundler_everything_present_except_gemspec/bom.json @@ -0,0 +1,626 @@ +{ + "bomFormat": "CycloneDX", + "components": [ + { + "name": "actioncable", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/actioncable@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "actionmailbox", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/actionmailbox@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "actionmailer", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/actionmailer@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "actionpack", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/actionpack@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "actiontext", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/actiontext@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "actionview", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/actionview@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "activejob", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/activejob@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "activemodel", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/activemodel@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "activerecord", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/activerecord@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "activestorage", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/activestorage@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "activesupport", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/activesupport@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "addressable", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/addressable@2.8.7", + "type": "library", + "version": "2.8.7" + }, + { + "name": "builder", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/builder@3.3.0", + "type": "library", + "version": "3.3.0" + }, + { + "name": "cachi2-bundler", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/cachi2-bundler?vcs_url=git%2Bhttps://github.com/cachito-testing/cachi2-bundler.git%404930d38034ef437d6c6e54c344210aa14e5c40dd", + "type": "library" + }, + { + "name": "concurrent-ruby", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/concurrent-ruby@1.3.3", + "type": "library", + "version": "1.3.3" + }, + { + "name": "crass", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/crass@1.0.6", + "type": "library", + "version": "1.0.6" + }, + { + "name": "date", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/date@3.3.4", + "type": "library", + "version": "3.3.4" + }, + { + "name": "erubi", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/erubi@1.13.0", + "type": "library", + "version": "1.13.0" + }, + { + "name": "globalid", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/globalid@1.2.1", + "type": "library", + "version": "1.2.1" + }, + { + "name": "i18n", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/i18n@1.14.5", + "type": "library", + "version": "1.14.5" + }, + { + "name": "json-schema", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/json-schema@3.0.0?vcs_url=git%2Bhttps://github.com/3scale/json-schema%4026487618a68443e94d623bb585cb464b07d36702", + "type": "library", + "version": "3.0.0" + }, + { + "name": "loofah", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/loofah@2.22.0", + "type": "library", + "version": "2.22.0" + }, + { + "name": "mail", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/mail@2.8.1", + "type": "library", + "version": "2.8.1" + }, + { + "name": "marcel", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/marcel@1.0.4", + "type": "library", + "version": "1.0.4" + }, + { + "name": "method_source", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/method_source@1.1.0", + "type": "library", + "version": "1.1.0" + }, + { + "name": "mini_mime", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/mini_mime@1.1.5", + "type": "library", + "version": "1.1.5" + }, + { + "name": "minitest", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/minitest@5.24.1", + "type": "library", + "version": "5.24.1" + }, + { + "name": "mygem", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/mygem@0.0.1", + "type": "library", + "version": "0.0.1" + }, + { + "name": "net-imap", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/net-imap@0.4.14", + "type": "library", + "version": "0.4.14" + }, + { + "name": "net-pop", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/net-pop@0.1.2", + "type": "library", + "version": "0.1.2" + }, + { + "name": "net-protocol", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/net-protocol@0.2.2", + "type": "library", + "version": "0.2.2" + }, + { + "name": "net-smtp", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/net-smtp@0.5.0", + "type": "library", + "version": "0.5.0" + }, + { + "name": "nio4r", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/nio4r@2.7.3", + "type": "library", + "version": "2.7.3" + }, + { + "name": "nokogiri", + "properties": [ + { + "name": "cachi2:bundler:package:binary", + "value": "true" + } + ], + "purl": "pkg:gem/nokogiri@1.16.7", + "type": "library", + "version": "1.16.7" + }, + { + "name": "public_suffix", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/public_suffix@6.0.1", + "type": "library", + "version": "6.0.1" + }, + { + "name": "racc", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/racc@1.8.1", + "type": "library", + "version": "1.8.1" + }, + { + "name": "rack-test", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/rack-test@2.1.0", + "type": "library", + "version": "2.1.0" + }, + { + "name": "rack", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/rack@2.2.9", + "type": "library", + "version": "2.2.9" + }, + { + "name": "rails-dom-testing", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/rails-dom-testing@2.2.0", + "type": "library", + "version": "2.2.0" + }, + { + "name": "rails-html-sanitizer", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/rails-html-sanitizer@1.6.0", + "type": "library", + "version": "1.6.0" + }, + { + "name": "rails", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/rails@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "railties", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/railties@6.1.7", + "type": "library", + "version": "6.1.7" + }, + { + "name": "rake", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/rake@13.2.1", + "type": "library", + "version": "13.2.1" + }, + { + "name": "sprockets-rails", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/sprockets-rails@3.5.2", + "type": "library", + "version": "3.5.2" + }, + { + "name": "sprockets", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/sprockets@4.2.1", + "type": "library", + "version": "4.2.1" + }, + { + "name": "thor", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/thor@1.3.1", + "type": "library", + "version": "1.3.1" + }, + { + "name": "timeout", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/timeout@0.4.1", + "type": "library", + "version": "0.4.1" + }, + { + "name": "tzinfo", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/tzinfo@2.0.6", + "type": "library", + "version": "2.0.6" + }, + { + "name": "websocket-driver", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/websocket-driver@0.7.6", + "type": "library", + "version": "0.7.6" + }, + { + "name": "websocket-extensions", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/websocket-extensions@0.1.5", + "type": "library", + "version": "0.1.5" + }, + { + "name": "zeitwerk", + "properties": [ + { + "name": "cachi2:found_by", + "value": "cachi2" + } + ], + "purl": "pkg:gem/zeitwerk@2.6.17", + "type": "library", + "version": "2.6.17" + } + ], + "metadata": { + "tools": [ + { + "name": "cachi2", + "vendor": "red hat" + } + ] + }, + "specVersion": "1.4", + "version": 1 +} diff --git a/tests/integration/test_data/bundler_everything_present_except_gemspec/fetch_deps_sha256sums.json b/tests/integration/test_data/bundler_everything_present_except_gemspec/fetch_deps_sha256sums.json new file mode 100644 index 000000000..83b93a9fc --- /dev/null +++ b/tests/integration/test_data/bundler_everything_present_except_gemspec/fetch_deps_sha256sums.json @@ -0,0 +1,245 @@ +{ + "bundler/actioncable-6.1.7.gem": "sha256:ee5345e1ac0a9ec24af8d21d46d6e8d85dd76b28b14ab60929c2da3e7d5bfe64", + "bundler/actionmailbox-6.1.7.gem": "sha256:c4364381e724b39eee3381e6eb3fdc80f121ac9a53dea3fd9ef687a9040b8a08", + "bundler/actionmailer-6.1.7.gem": "sha256:5561c298a13e6d43eb71098be366f59be51470358e6e6e49ebaaf43502906fa4", + "bundler/actionpack-6.1.7.gem": "sha256:3a8580e3721757371328906f953b332d5c95bd56a1e4f344b3fee5d55dc1cf37", + "bundler/actiontext-6.1.7.gem": "sha256:c5d3af4168619923d0ff661207215face3e03f7a04c083b5d347f190f639798e", + "bundler/actionview-6.1.7.gem": "sha256:c166e890d2933ffbb6eb2a2eac1b54f03890e33b8b7269503af848db88afc8d4", + "bundler/activejob-6.1.7.gem": "sha256:e5d2ac525b6be5ccf242534af504ea2c7b406fb5f7880495ce3c1407e749c415", + "bundler/activemodel-6.1.7.gem": "sha256:7ec2b54676e30b523b2af16f027d74304a49d3cba83e2c400b3cf3dd153d6da0", + "bundler/activerecord-6.1.7.gem": "sha256:52e4a2601bb41b87db2be68c3f62add64c4614b580f9b540131d7a3e028a5db7", + "bundler/activestorage-6.1.7.gem": "sha256:e0af9a8fc6a2b92172c1061bc546f6c47b1f3b5d94b63f2aaaea68a1a6db75fb", + "bundler/activesupport-6.1.7.gem": "sha256:f9dee8a4cc315714e29228328428437c8779f58237749339afadbdcfb5c0b74c", + "bundler/addressable-2.8.7.gem": "sha256:462986537cf3735ab5f3c0f557f14155d778f4b43ea4f485a9deb9c8f7c58232", + "bundler/builder-3.3.0.gem": "sha256:497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f", + "bundler/concurrent-ruby-1.3.3.gem": "sha256:4f9cd28965c4dcf83ffd3ea7304f9323277be8525819cb18a3b61edcb56a7c6a", + "bundler/crass-1.0.6.gem": "sha256:dc516022a56e7b3b156099abc81b6d2b08ea1ed12676ac7a5657617f012bd45d", + "bundler/date-3.3.4.gem": "sha256:971f2cb66b945bcbea4ddd9c7908c9400b31a71bc316833cb42fa584b59d3291", + "bundler/erubi-1.13.0.gem": "sha256:fca61b47daefd865d0fb50d168634f27ad40181867445badf6427c459c33cd62", + "bundler/globalid-1.2.1.gem": "sha256:70bf76711871f843dbba72beb8613229a49429d1866828476f9c9d6ccc327ce9", + "bundler/i18n-1.14.5.gem": "sha256:26dcbc05e364b57e27ab430148b3377bc413987d34cc042336271d8f42e9d1b9", + "bundler/json-schema-26487618a684/.git/HEAD": "sha256:ff8a3ad4280249bd490f5c955e9fd770b14da6e5c9abc0e0b0d07572afe8c0ed", + "bundler/json-schema-26487618a684/.git/config": "sha256:d87f683f571d97aa65d8ae77aa6a6f7a57437747a468f91ef14afd5f46bfdc22", + "bundler/json-schema-26487618a684/.git/description": "sha256:85ab6c163d43a17ea9cf7788308bca1466f1b0a8d1cc92e26e9bf63da4062aee", + "bundler/json-schema-26487618a684/.git/hooks/applypatch-msg.sample": "sha256:8bf35846bc3d90db12f711dd961292eb1c617b6f62c2c4e702706b71f2a897b2", + "bundler/json-schema-26487618a684/.git/hooks/commit-msg.sample": "sha256:3aa1d8934de407e8dd617e2b73612d04d225d9adbea20626b10945d8ab4f4f4a", + "bundler/json-schema-26487618a684/.git/hooks/post-update.sample": "sha256:d0d00b057e31fbe8207f3a1496797050fcadad75df883842e979a965bd6a298f", + "bundler/json-schema-26487618a684/.git/hooks/pre-applypatch.sample": "sha256:0e01aa4a2a7387a2d06a058113c18faa58e8191b840b45529db82c8ab39521c2", + "bundler/json-schema-26487618a684/.git/hooks/pre-commit.sample": "sha256:4d44c83bc3c0271d2ecd328b1d08d9af89f928511c02dcd4a4e81b761b6df1f6", + "bundler/json-schema-26487618a684/.git/hooks/pre-merge-commit.sample": "sha256:6e9d4320214965de9ec5bf4a94cde33d9f0c32c8085926277664d0f494fef7cc", + "bundler/json-schema-26487618a684/.git/hooks/pre-push.sample": "sha256:329a5f4509a242b8d1916ec617f85a5383190b34ac35d414224091ed9ceb2dd6", + "bundler/json-schema-26487618a684/.git/hooks/pre-receive.sample": "sha256:f6db83ee6e0153ace9f9de7a0a15f4902e33ebd3051b5f4d4587c9a5c8a07659", + "bundler/json-schema-26487618a684/.git/hooks/push-to-checkout.sample": "sha256:e1acad23702af2ad4c58bd616d399ab8f0fe5a470f044f20ac497aded0f45ec5", + "bundler/json-schema-26487618a684/.git/hooks/sendemail-validate.sample": "sha256:23a33477f01ffe5246b46a9d1db7c39d73d193ce19ed4116e00cbb031ec5f2eb", + "bundler/json-schema-26487618a684/.git/hooks/update.sample": "sha256:1b21448c0c321a3004d8db76adc43d14b8b3c948dadc57795ffe8e5f0726aae1", + "bundler/json-schema-26487618a684/.git/index": "sha256:3c1137614d0cd2e51d3f703523a65868d61a4252874f50390f2762214edeab13", + "bundler/json-schema-26487618a684/.git/info/exclude": "sha256:6671fe83b7a07c8932ee89164d1f2793b2318058eb8b98dc5c06ee0a5a3b0ec1", + "bundler/json-schema-26487618a684/.git/logs/HEAD": "sha256:18c5d52f9cb8a9ee30fba568a994b6417f28ad05648a723974dc1889315d969a", + "bundler/json-schema-26487618a684/.git/logs/refs/heads/master": "sha256:9d6fefa02fcc17c65505f19234e6eefb8270f49c27e490a476b25b381ece521b", + "bundler/json-schema-26487618a684/.git/logs/refs/remotes/origin/HEAD": "sha256:9d6fefa02fcc17c65505f19234e6eefb8270f49c27e490a476b25b381ece521b", + "bundler/json-schema-26487618a684/.git/objects/pack/pack-d5b124bddc5450b1be76e7b5be4049dd9b7fb91d.idx": "sha256:4040c8df3e30bdb8755be252fd6887e12074db927091dccf10b077354b61e4fb", + "bundler/json-schema-26487618a684/.git/objects/pack/pack-d5b124bddc5450b1be76e7b5be4049dd9b7fb91d.pack": "sha256:f307e5a43031d93e12253b5340e342ee393caf8cc9513a2f9490f8124c15215d", + "bundler/json-schema-26487618a684/.git/objects/pack/pack-d5b124bddc5450b1be76e7b5be4049dd9b7fb91d.rev": "sha256:60fe9d43f53bd25fe99594a897d52cd6813bffa252edf4cc731103c434fa5bee", + "bundler/json-schema-26487618a684/.git/packed-refs": "sha256:1b28949f81f34c1db7d6fb91eee5e1bc5d0bc7cf8246ee7095d77a915b3f490e", + "bundler/json-schema-26487618a684/.git/refs/heads/master": "sha256:ff8a3ad4280249bd490f5c955e9fd770b14da6e5c9abc0e0b0d07572afe8c0ed", + "bundler/json-schema-26487618a684/.git/refs/remotes/origin/HEAD": "sha256:cdc65e67690c4c6475174e5ec662b70655246a2f3924354778835ab3be70aa76", + "bundler/json-schema-26487618a684/.gitignore": "sha256:21c10a60789a533e6f8e94b21995491f7aef67b1e3a0cacd46024381d16e4a0b", + "bundler/json-schema-26487618a684/.gitmodules": "sha256:eb7bc5360d086ba520b5b759fdb5a18114c9624f8c9137c385d878ac4978b011", + "bundler/json-schema-26487618a684/.travis.yml": "sha256:68c20440e3994aa63e589a1dd2e353f12780ee74c376db8a80fd3db4851aadce", + "bundler/json-schema-26487618a684/CHANGELOG.md": "sha256:a44b1ea3a9ce72afe962728897dab5ddfcd79e4c14d8bad56bef53e354087104", + "bundler/json-schema-26487618a684/CONTRIBUTING.md": "sha256:11c395c3d82b9c558b29be02cdcebb227b867fcc6d453ed16d5368292c2e0557", + "bundler/json-schema-26487618a684/CONTRIBUTORS.md": "sha256:1bcc7477eccf7cf07f453930f7a13a363dd42c6cc088d17f8e1998fa4b111a2d", + "bundler/json-schema-26487618a684/Gemfile": "sha256:dc883081b53a436b6df7589d669a1fc3c8bd91b7c8e0e89bd3d683dbe707bb8a", + "bundler/json-schema-26487618a684/LICENSE.md": "sha256:e145970d2f70a81d23f674bbf30ff26187ff86cd3f9ab8af2cc70bdc0c898cfa", + "bundler/json-schema-26487618a684/README.md": "sha256:14e4ff823f01a97f96ff3147986ce5a547d452e63bbe6633c0c86d5bf20efee2", + "bundler/json-schema-26487618a684/Rakefile": "sha256:b3c132d5c3e1ca42dcad0ca8b4e9c03519072cc107be4e81bca5e2ac6441d090", + "bundler/json-schema-26487618a684/VERSION.yml": "sha256:08f20d30b5d9d05d93d463915e927bbcdfc57a300b02b94cacf41dfb9902fa80", + "bundler/json-schema-26487618a684/gemfiles/Gemfile.multi_json.x": "sha256:4526d45bb21904022da72b778b4750573f81f4435e36434b3f7c2143f2947dc2", + "bundler/json-schema-26487618a684/gemfiles/Gemfile.ruby_19.x": "sha256:ebdd3c725abceec339b3483b729994df9e6541c53cc28fee85b29956b6954fec", + "bundler/json-schema-26487618a684/gemfiles/Gemfile.uuidtools.x": "sha256:2b6e8de1bcf775ba90391ae6be528dca7aa16b929a7d57fdb7c803f545ccc299", + "bundler/json-schema-26487618a684/gemfiles/Gemfile.yajl-ruby.x": "sha256:0e6a8f127d3da990bb6a7c095cbf52127deff829831bde12c259df1e21edae47", + "bundler/json-schema-26487618a684/json-schema.gemspec": "sha256:ab02198bb9bf8c864695a798137d0c448fbc8fb991814cf6ef8f6581ac2b9872", + "bundler/json-schema-26487618a684/lib/json-schema.rb": "sha256:e11052edd540fede22a6ca6bd8573c29a68ce17024441b1157faafe3589cb9f8", + "bundler/json-schema-26487618a684/lib/json-schema/attribute.rb": "sha256:7747380181ceafdec1ce68b9da819cce22d2683d14291546a93d7dfef8f799f7", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/additionalitems.rb": "sha256:7d3594e8c67a253da712884412f53385ae9c143f5d1c41c9786cb649eb332e91", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/additionalproperties.rb": "sha256:acc32fd467d583a8b30bb61b1dc7f6670d604c89210cb5c69e56e3757c1969be", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/allof.rb": "sha256:5fe47c91ded77cbaadda0e5bfa0a2c5fc2784b7bf50413b8a58e8d78999634fc", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/anyof.rb": "sha256:3d19935b90ed5a32d87486539fc8f832b45410cb7682d0f50241a96dfc8fef8c", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/dependencies.rb": "sha256:b7b11c0ba09a086b85342f135e4e948d3064e66d74ed901e0166afc613910beb", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/dependencies_v4.rb": "sha256:32ea73f3f62dd6c0fdafab69c8b930f1fa4e47ab8cd774478a633ca5331036f7", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/disallow.rb": "sha256:05328663ef6d98fdbcd40d089eca8ee674ca43f1df940f10ae71f4378c36e26e", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/divisibleby.rb": "sha256:0843f6d2eb584e9ff6d6aef7f7feb62836912aebca6ee0e873fdf4488d9fdf46", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/enum.rb": "sha256:1c5fe96d73af5c659f811cb0a91fa60479e5c409a906b9172aac2d4e8b5c0d56", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/extends.rb": "sha256:48cc21b2d2d8ccf6818184c811d753661861f7c43874ef6089b6d60ea2052a3d", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/format.rb": "sha256:8817386eda3019ede68ce9e69ecd263380be372114d21e8a250dcdf317abd769", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/formats/custom.rb": "sha256:d85fe15d48178ff8081c8679688eaf7b9316bd04e85a8d8b17d76164b7c56129", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/formats/date.rb": "sha256:0bee6d821746f0a031ba46785f3a4f6bff1b59aac1243f483c6caada84c2affb", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/formats/date_time.rb": "sha256:b9dbe0ba822317a83425290725ed9301e8257c2cf1f6c25b244fe5f7344b32ed", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/formats/date_time_v4.rb": "sha256:2ccb1aee044a68bd728fc4fbe4cd31863ae5f79dbe207fc702acfd730b7f2961", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/formats/ip.rb": "sha256:a10d0400acc6475193de9c4ff743563494f464cfb9ec725f9f3ee7baeedd97f7", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/formats/time.rb": "sha256:2b15b837d7ae11e03acbeb89b73343a2dc518e088c0dbe6eca994431df4e1da7", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/formats/uri.rb": "sha256:778e578d2e6748d8c874d4fd45f6e0e478add09e4f0ae4fdec76829af7bfec1f", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/items.rb": "sha256:2d1d266f18e3a8b248279494942a338bb061bc2a15855546ce79372aaf719d96", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limit.rb": "sha256:34d4672f4ceb106a8805eed68e8345a50a948e3730479b6b34ca4faa204cdee2", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/items.rb": "sha256:1ff4db5d3d9c1834c9bf90e393e590280fe439a39ac8b4518b4d9ac4f698ae15", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/length.rb": "sha256:eb2c227a44a820bbbc762fb674320579179e30f9fa3a521afbb69a95d338d476", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/max_items.rb": "sha256:2cf6f729f9342e1f269161a5a9b226391387d422f6f0a8cc1487b0494a04d3ab", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/max_length.rb": "sha256:5cd2977fc6c72f33aa88ac1968e6b50eab5ff5c60d7fc9f5fbb029f8536fdb9e", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/max_properties.rb": "sha256:3869ef051ff327da20a0ce4f8eeee6252f4715dbcd4fd239991c83e7b2878de9", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/maximum.rb": "sha256:68dc341fda545f1af2540e028909cf4de3724c583d10fbe0fbefe1494c5ef75b", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/maximum_inclusive.rb": "sha256:15cda2765e2847889c9e419bd62618aa6f2eedb1aee831f6dc92dbac4a176b87", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/min_items.rb": "sha256:ff10ab9ac5eab6564366703d65f12e85a4016a787006b932c44f6ff405c84e0d", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/min_length.rb": "sha256:b202235eb539cb3eb5fe775aef201efca57413d51d0fa01e1cea23e1bc2c1bba", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/min_properties.rb": "sha256:1f49e6dd3f64654aee7b76765e4d9bda74510155ce83b1966b4521e70c19fb58", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/minimum.rb": "sha256:3150d183d223630a8dbc174630b3463f38b5480ce02995747304228330065433", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/minimum_inclusive.rb": "sha256:badfc885a2112ccde861b4812119e93df50fae5be283af17b38be5070ab05cb4", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/numeric.rb": "sha256:e2dcddc1c17e23c775dde49664b3ab964c13b7519ce9e604bead9513e8eedc54", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/limits/properties.rb": "sha256:6a511440cc50d2ee87959e8d612ac5611ad92a53977aa8a1720061490e052e7d", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/maxdecimal.rb": "sha256:a43710fbba7150d7d6def0c88a2d7b2b2cbedae3a7ed82601fbb80bb706d7b88", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/multipleof.rb": "sha256:c85f23f3a4383f11061fc1bb1e519176d48e750df945bc29a518cf9a4598c485", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/not.rb": "sha256:08f8224e938471b0af77014c86c0efbb115f8f40176347f460a20a6940701e3d", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/oneof.rb": "sha256:dcd88343ee2ce5ccbef5c3bc116644fe57819de2fef7df4123296ac9f7d2ea17", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/pattern.rb": "sha256:e42c356b932abbe1bec57bf73ca96a5d9fdbd93bf50cd8f4ff4e47a25c8e6ea9", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/patternproperties.rb": "sha256:72dddf5b8e772dae2b744d3678aa20d29119af53abccf78bea87c96973c1a7fa", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/properties.rb": "sha256:beff325c5dd8d9b314288308f4ae08b501e99d4c4e7978acf1014f87cb525b86", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/properties_optional.rb": "sha256:b1385d640b0892abdbfc6ec72ba61442eae8dd7ecbdd69feb40faa200bb6ab57", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/properties_v4.rb": "sha256:affe83f30a31132d9732f3deb6d6aa177d7c692caa413a2333e80bf1f860c254", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/ref.rb": "sha256:31b564c3cbe7f856423c122b88be9fb97b5f97656746a955b9dee8981f58a62c", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/required.rb": "sha256:4c389e3b43033509380de5de847cc93cc78519818b664cb9fa67a1c19428a16e", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/type.rb": "sha256:cdfdac52186c4b154172e3bb8ac2f02b495c8a2c20044f306a52cf5b3fb80634", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/type_v4.rb": "sha256:5bb5488445ad94f35d6f0eda63e7b2478f9d3c9b8616adeb95aea4381bd9d7e2", + "bundler/json-schema-26487618a684/lib/json-schema/attributes/uniqueitems.rb": "sha256:dcadd9687b8faccc7312f708b58ad89d4a824df3cb3c588b37fc6dec7e740d61", + "bundler/json-schema-26487618a684/lib/json-schema/errors/custom_format_error.rb": "sha256:4dec4d53f3787bd840402e7f50f566e515f3e6cac6cbe70ffb9357cf8ec59d9a", + "bundler/json-schema-26487618a684/lib/json-schema/errors/json_load_error.rb": "sha256:866d3a0066d11cad52a331153253abfac590a2fdfe9446540cbbdf51e5e9d94e", + "bundler/json-schema-26487618a684/lib/json-schema/errors/json_parse_error.rb": "sha256:a04c1d193742b02361862e714675cc656703d14c6c1ae4a3b897bea56bd42b19", + "bundler/json-schema-26487618a684/lib/json-schema/errors/schema_error.rb": "sha256:d0ecfd25e639e968447db44e91e865f690072315ee1e299fd7e9e540e5de5639", + "bundler/json-schema-26487618a684/lib/json-schema/errors/schema_parse_error.rb": "sha256:edbfa9e620d8f5cbf5532ea98ac6e27b48a41902121d4b8c116ed1e89d8d03cd", + "bundler/json-schema-26487618a684/lib/json-schema/errors/uri_error.rb": "sha256:a05dfb8c2e978847036e2953266626c6ef7170508d2eabb71a36f8cda83c308c", + "bundler/json-schema-26487618a684/lib/json-schema/errors/validation_error.rb": "sha256:e289a46bba6173250d22032a5e08228068780eb1dabb1d508616b7d5060ef39a", + "bundler/json-schema-26487618a684/lib/json-schema/schema.rb": "sha256:aa91150afe855627571b96a5ab63a67c7ab3579b8245b7099223362be223a945", + "bundler/json-schema-26487618a684/lib/json-schema/schema/reader.rb": "sha256:05344c162f0dd173e6eb970aaa2913428a363e37c973a0052c898e3bfd492c8a", + "bundler/json-schema-26487618a684/lib/json-schema/schema/validator.rb": "sha256:9bf45f7195c271904532e3d745ffa2a0d6a961d71ca8e7913b1e6d61c81203e8", + "bundler/json-schema-26487618a684/lib/json-schema/util/array_set.rb": "sha256:c33152f831202a645394da8f4cdf6f1291c07d94f27a9c61ff9d600c746b47f1", + "bundler/json-schema-26487618a684/lib/json-schema/util/uri.rb": "sha256:e1150e4a8d1a51ebb2434267d3c7ba6f8f80c22c0d4e5be1a8e6546f56f5799e", + "bundler/json-schema-26487618a684/lib/json-schema/util/uuid.rb": "sha256:d34f8eed46c267471b034f071b500dcbb7250314e80254b73a64319e56cdbec7", + "bundler/json-schema-26487618a684/lib/json-schema/validator.rb": "sha256:4fab330a8b847949c49689dd066bd202feed80d4b81a1c3514046efbc926d18f", + "bundler/json-schema-26487618a684/lib/json-schema/validators/draft1.rb": "sha256:141281a8a8403194f8d6ab2349eef9ab291ec01fab24aa37b1bea58c7e7afde6", + "bundler/json-schema-26487618a684/lib/json-schema/validators/draft2.rb": "sha256:e33273d382c9e64cf8b060a14efbfaaea61d9063204eb5009e172ac43f2fbc4f", + "bundler/json-schema-26487618a684/lib/json-schema/validators/draft3.rb": "sha256:33ee441d819e41ea30566eee2e1dc5bbf70b986c57466aa310a43bad1fbca6c6", + "bundler/json-schema-26487618a684/lib/json-schema/validators/draft4.rb": "sha256:c9a572ed6afe73579bf05ca865d19e724551be7eabe4a86b1dff701177e50595", + "bundler/json-schema-26487618a684/lib/json-schema/validators/draft6.rb": "sha256:cfcc357d887602b4f9e6e88425cd2458d3744324b73eddd45689c7ed5cc11a3b", + "bundler/json-schema-26487618a684/lib/json-schema/validators/draft7.rb": "sha256:eae7830cf12c5c0a6bf5fab8bf5f43a59d040062b8bf421bcd4ec66f070a0ed2", + "bundler/json-schema-26487618a684/lib/json-schema/validators/hyper-draft1.rb": "sha256:e481b58b6ca3a73c4ae6d4f42d0be373b81f06bde66e99f69d8efbf6b4672466", + "bundler/json-schema-26487618a684/lib/json-schema/validators/hyper-draft2.rb": "sha256:d39fd6235e5ad6eafe69959821774207507ef3601c884225ec88988f6cb587e9", + "bundler/json-schema-26487618a684/lib/json-schema/validators/hyper-draft3.rb": "sha256:5fc98bf68f74ca665f885846f2245479b02d7a746d49ee1d93284837f7c8ddd2", + "bundler/json-schema-26487618a684/lib/json-schema/validators/hyper-draft4.rb": "sha256:ab871554a021489623e514c8a3fe09b2b021d1856baa6648cc02a9bb6581e472", + "bundler/json-schema-26487618a684/lib/json-schema/validators/hyper-draft6.rb": "sha256:2db7f85d527e6cb55a7e84e7f6d3c275a6c1949f24699f1f019a85b443c54323", + "bundler/json-schema-26487618a684/resources/draft-01.json": "sha256:ed6f5e4f7d3bc4104a2cb54dc299fa4262b5823df619f37f153cabf41ae74843", + "bundler/json-schema-26487618a684/resources/draft-02.json": "sha256:ff7733fb03b39f1cc756542af0ae2f74de3090544c59f953646670306164ae56", + "bundler/json-schema-26487618a684/resources/draft-03.json": "sha256:ccd758693334d5f0ab9c4926fc364b2d97fa070b6fe9c34d6e0f8fabe4ee27a9", + "bundler/json-schema-26487618a684/resources/draft-04.json": "sha256:7353ff13faa979027813b95c8b35f992057822696a70c43c79b3bfb7249e76b4", + "bundler/json-schema-26487618a684/resources/draft-06.json": "sha256:980e3c65d72c890e46e490fe66b8c71f5dd1c5e178e93ba949fe77ea370d4917", + "bundler/json-schema-26487618a684/resources/draft-07.json": "sha256:76d5c9c96d2abb36cc2942686720fbf85e792f5860337f7277a621f360a565c8", + "bundler/json-schema-26487618a684/test/all_of_ref_schema_test.rb": "sha256:dca942cc0a535e54b03d39c60ca4b33d50296e06bb61f3b93c33b4db8c072c90", + "bundler/json-schema-26487618a684/test/any_of_ref_schema_test.rb": "sha256:0d5d01d3e6e6ad4640d75c6cf0fb013461074475f075ffa673360f26c1a78201", + "bundler/json-schema-26487618a684/test/bad_schema_ref_test.rb": "sha256:5374c4d75de4889f1ca61dbcfb8d063a7ef5e98eca2cb796e3401a0d7825d849", + "bundler/json-schema-26487618a684/test/caching_test.rb": "sha256:92fbfd25ce3c2b832dbdddb6c6fea3ab6cb82d4753799bbe0f5d49046c6b177f", + "bundler/json-schema-26487618a684/test/common_test_suite_test.rb": "sha256:ded53c54d9498ff1db62128167a33e2161509035e920260940982c7f0f418f87", + "bundler/json-schema-26487618a684/test/custom_format_test.rb": "sha256:aef14289c8b64ceb4ec7a06f0986a65fb4f808ffdf704922fc7a623184741c2e", + "bundler/json-schema-26487618a684/test/data/all_of_ref_data.json": "sha256:c2afa049fa5dbdfcaba199333687d755c6da4b1fe59dd9fb2927040a8c081dc7", + "bundler/json-schema-26487618a684/test/data/any_of_ref_data.json": "sha256:4ce710b3f1cfb8606e488c447dcb25fb57fa81886c2975c81a5dd7bfac79b21f", + "bundler/json-schema-26487618a684/test/data/bad_data_1.json": "sha256:0b38e7cb4aa76a0c1f5baba21fc5b009bda2c963522694c7506f075f3aba951b", + "bundler/json-schema-26487618a684/test/data/good_data_1.json": "sha256:7078bc0208abc848de6ff9884d28f6db6281c6eb9e2e6e7b9854255a61583037", + "bundler/json-schema-26487618a684/test/data/one_of_ref_links_data.json": "sha256:4ec3a6721035aa7e13eb2899ccf838ea543da6c64f46587c47876726a994f915", + "bundler/json-schema-26487618a684/test/draft1_test.rb": "sha256:e3dd6ba0c0a364175da6527bf49c639a6d9baf4db13bffefd8a80ac1a6cf749b", + "bundler/json-schema-26487618a684/test/draft2_test.rb": "sha256:4cc702409e768796fd9546afb57c5537815582d7077e1363868f92cd08a685c5", + "bundler/json-schema-26487618a684/test/draft3_test.rb": "sha256:bcd422c2850917128fecb6efb511ae41aa6c979933eb9f17d1de8b2a2010e7dc", + "bundler/json-schema-26487618a684/test/draft4_test.rb": "sha256:fef5a5a7f0298736d0da3604e0c36eff504b39285cd724e568c3f880b2159aea", + "bundler/json-schema-26487618a684/test/draft7_test.rb": "sha256:fa18a5a3b8f7aa2246febb044f57242c8400e551e4a3ca43675f2c0a2cb4a2c8", + "bundler/json-schema-26487618a684/test/extended_schema_test.rb": "sha256:be0c1c2286cd2887cdf861da10b689dc63d55186c0bbfe619a1ec62d2b738e0d", + "bundler/json-schema-26487618a684/test/extends_nested_test.rb": "sha256:8ed0093fe3300e96d9c4d939fc6f70a7c5ecd9c4be7d0b2d409eb6dd9515d96b", + "bundler/json-schema-26487618a684/test/files_test.rb": "sha256:b73cdc1c4029a22961f0019adbe1648a9feb7b3a30ffe36d5da7e90e1ec1c578", + "bundler/json-schema-26487618a684/test/fragment_resolution_test.rb": "sha256:451a677e3066b260fbbade795f54c8494c16b28fa78cb828eab520c6f2b0aa5b", + "bundler/json-schema-26487618a684/test/fragment_validation_with_ref_test.rb": "sha256:daf2e882a6e988f3a55396f6b96dcbfe60ec19fbc6bb911c1b45209e8ff0c1b1", + "bundler/json-schema-26487618a684/test/full_validation_test.rb": "sha256:a7aa852ca54f6afe1950fab28059586f23b7603448b3b8b93d9425c57d0f73d3", + "bundler/json-schema-26487618a684/test/initialize_data_test.rb": "sha256:b6d78cb4029bea183697b32608815d833e93d292047e9b40d9afbe10852219c1", + "bundler/json-schema-26487618a684/test/list_option_test.rb": "sha256:3c719a8af19dcfad5350634c761f07a4fc66e4bd4adbc9aedf547de947ac4a51", + "bundler/json-schema-26487618a684/test/load_ref_schema_test.rb": "sha256:20bfc578ef929bf74a1c0498f7c210576485509234acd90cdea52a91d06aad87", + "bundler/json-schema-26487618a684/test/merge_missing_values_test.rb": "sha256:1a647d28c252dec2cebb448307a9a979379a16397aedef9766e647982c3d628a", + "bundler/json-schema-26487618a684/test/min_items_test.rb": "sha256:9676724dcb88c13a56b6b56ba8f5f6d25475e3704165c84b9cd9e6184fc7bd8d", + "bundler/json-schema-26487618a684/test/one_of_test.rb": "sha256:0c7c0c412e8531799f19e08a826abab5451b58c5b12b8d12e59e8f8be4ee5911", + "bundler/json-schema-26487618a684/test/relative_definition_test.rb": "sha256:78a025f3377f51b4094a7dc080b1bd3f2288419933fcdbbd666744913ceccba0", + "bundler/json-schema-26487618a684/test/ruby_schema_test.rb": "sha256:da1f693707bfa784514a7fce5e75a13755c73934173433938fab442b186386bc", + "bundler/json-schema-26487618a684/test/schema_reader_test.rb": "sha256:a2a2f1181e5524d54f9e62e22fef1f9795f89d44f633c908de033e5cfb2bf2dd", + "bundler/json-schema-26487618a684/test/schema_validation_test.rb": "sha256:08a1695b9a12157bb4c9d2b5ceea48371ddfce93d6ef707203edc00c50c7f96f", + "bundler/json-schema-26487618a684/test/schemas/address_microformat.json": "sha256:bc3cc657bcb8fa7bfc765e88edc57661083a1d200a92af7b432aacf8ff3f5495", + "bundler/json-schema-26487618a684/test/schemas/all_of_ref_base_schema.json": "sha256:a06b979f58c78b146993b2e58e98b772e383f142f77750eec22df596d1ab7571", + "bundler/json-schema-26487618a684/test/schemas/all_of_ref_schema.json": "sha256:539b82c97fadaad23c66833d41f8f6ec6f5d6b70c5217c0e002708bda893be56", + "bundler/json-schema-26487618a684/test/schemas/any_of_ref_jane_schema.json": "sha256:4463710cb55089299d5f777c0c6ca13ae120b65b38e85319500577dbe8902091", + "bundler/json-schema-26487618a684/test/schemas/any_of_ref_jimmy_schema.json": "sha256:18164fa0646b0f4660e7fefddf626b517e0dfcffadb0a9d976db339bf8780816", + "bundler/json-schema-26487618a684/test/schemas/any_of_ref_john_schema.json": "sha256:4a6a73ce1d2b4cb6ed6ad66e4b8a3856506bc8b610af06fea5703e17130dc255", + "bundler/json-schema-26487618a684/test/schemas/any_of_ref_schema.json": "sha256:8c849d2c386a5962c534df6b4987ee41ba14388fb2e10328d2639f2f67d08695", + "bundler/json-schema-26487618a684/test/schemas/definition_schema.json": "sha256:e228ace91c5d8f1931694df499732c62beea5415b8d7e59bfd40dd6ceb585961", + "bundler/json-schema-26487618a684/test/schemas/definition_schema_with_special_characters.json": "sha256:a6af5b336c9c19b51b04bda0fdb2bdffe608cc22285724b4c5081b8e3e036bac", + "bundler/json-schema-26487618a684/test/schemas/extends_and_additionalProperties_false_schema.json": "sha256:02f29f59290746e833e523496c294a464981dbd54ea4a8758c0af40f8a16cd29", + "bundler/json-schema-26487618a684/test/schemas/extends_and_patternProperties_schema.json": "sha256:cbdeccb56b6a4888bd91fc637d644a83e1f2e892c7f07c8505e45b44853212cf", + "bundler/json-schema-26487618a684/test/schemas/good_schema_1.json": "sha256:4a198d1ff172d97603a2a07bb74226dc764bce7bec501bfeef0fdb3090b88253", + "bundler/json-schema-26487618a684/test/schemas/good_schema_2.json": "sha256:419ede06bf933e6d6fd9abf906e72257d68e678a8a3be2f16b706144db1f6363", + "bundler/json-schema-26487618a684/test/schemas/good_schema_extends1.json": "sha256:ba353aee610cbdad9445cf72351134024620214e28badb10a4b5c744fd03ec7e", + "bundler/json-schema-26487618a684/test/schemas/good_schema_extends2.json": "sha256:beefabcd5f729545d31546c2c25b76b0ae386fb4674373aaba3338282f1a1ec5", + "bundler/json-schema-26487618a684/test/schemas/inner_schema.json": "sha256:4ee54936afc78ccc68808d8d485e4781329ae64a41c4d8895aa3f7defbdb5ced", + "bundler/json-schema-26487618a684/test/schemas/one_of_ref_links_schema.json": "sha256:054a9eff7b24c49a02e6be1227e745fc5992cf5bb5843d3b8f41f7afd07ba831", + "bundler/json-schema-26487618a684/test/schemas/ref john with spaces schema.json": "sha256:7788083243802282073ecec271348ebb74f8851b5381635754c5251c2983b5db", + "bundler/json-schema-26487618a684/test/schemas/relative_definition_schema.json": "sha256:ea885afd038c53a7185e52a3b487f63d27c259ba3d7a244d142f8d1c8a72786a", + "bundler/json-schema-26487618a684/test/schemas/self_link_schema.json": "sha256:e9514662ea58de25670584c6d40e2c741ead2bfa2b954c582b270e2abecc3ea3", + "bundler/json-schema-26487618a684/test/schemas/up_link_schema.json": "sha256:3a5d43cd9c99a12f9c5a815ba88251accb48a97f23dc5c3376673786b4440c50", + "bundler/json-schema-26487618a684/test/stringify_test.rb": "sha256:ccb2ed8efd82af9bc913fa57972f6c6fedb97234b5a58f7b50dfda0ab79fab1e", + "bundler/json-schema-26487618a684/test/support/array_validation.rb": "sha256:16ce2f118b4ce31b9ff17ca0eb355378299d16ade45b5d4d23aa620dbc10c170", + "bundler/json-schema-26487618a684/test/support/enum_validation.rb": "sha256:ec6fa3d78c9303d0645cdc497a5a61551a95e508dcf93d19c7fccc5c039813a1", + "bundler/json-schema-26487618a684/test/support/number_validation.rb": "sha256:aaa46999837bdec67550f2c328f5eca867efdc332a89519638f2f7ac629bb084", + "bundler/json-schema-26487618a684/test/support/object_validation.rb": "sha256:7590e08b38249409f3931d7d0419d1b6c82526392a9990e008b2d8c16a519f50", + "bundler/json-schema-26487618a684/test/support/strict_validation.rb": "sha256:a66498751f9ed00b8a1be57cd4d965a9e4bf1afa15ceaf0145660a164947f5a0", + "bundler/json-schema-26487618a684/test/support/string_validation.rb": "sha256:820fd288c8e82fe474677c3243fe32d340fa7651a5e4e7b33dcff59ae5b35c39", + "bundler/json-schema-26487618a684/test/support/test_helper.rb": "sha256:446cd89eb0ff3529bd3cf3a78811dfdf2cfe4e8f28d4469d2e16e18e59296ead", + "bundler/json-schema-26487618a684/test/support/test_suite_ignored_tests.yml": "sha256:34a13e1423bd46df27e385a5916c603b9dbacc01eabd322098cb86421add2d57", + "bundler/json-schema-26487618a684/test/support/type_validation.rb": "sha256:f36aa74bc0e887121e241bf3743cddb74c4a5ddcafcb364789f3179b95a60583", + "bundler/json-schema-26487618a684/test/type_attribute_test.rb": "sha256:50927465db28e53792652515a361750201e8cffab4bcf93fd88c28adc932a5ef", + "bundler/json-schema-26487618a684/test/uri_parsing_test.rb": "sha256:0f796d353f10c93bd0ddb1f9d57425183dcce3aca1e47e8f61109f0ccf0ad02c", + "bundler/json-schema-26487618a684/test/uri_util_test.rb": "sha256:ec24964a04b41399bfd4fab07193ed730827843d96d0ccf11dd4ba4e31baf3be", + "bundler/json-schema-26487618a684/test/validator_schema_reader_test.rb": "sha256:5fb1c790a2774d8bed28677e1d9d691b3e205422aa152d2d6699c4f87be08980", + "bundler/loofah-2.22.0.gem": "sha256:10d76e070c86b12fec74b6a9515fd1940f4459198b991342d0a7897d86c372fe", + "bundler/mail-2.8.1.gem": "sha256:ec3b9fadcf2b3755c78785cb17bc9a0ca9ee9857108a64b6f5cfc9c0b5bfc9ad", + "bundler/marcel-1.0.4.gem": "sha256:0d5649feb64b8f19f3d3468b96c680bae9746335d02194270287868a661516a4", + "bundler/method_source-1.1.0.gem": "sha256:181301c9c45b731b4769bc81e8860e72f9161ad7d66dd99103c9ab84f560f5c5", + "bundler/mini_mime-1.1.5.gem": "sha256:8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef", + "bundler/minitest-5.24.1.gem": "sha256:31ec31ac9088d9e21fcc5a5487912234de83966f24368241b2bef03d7012464a", + "bundler/mygem-0.0.1.gem": "sha256:76acd744bb980a4b2b1f6747e5b96d2ca25e4f44b597dc337a00e3b4132258e5", + "bundler/net-imap-0.4.14.gem": "sha256:a2184b3f09a4f7ca27998d113fd6df8cd0dd56b91e5bf0d6387b8350bb438065", + "bundler/net-pop-0.1.2.gem": "sha256:848b4e982013c15b2f0382792268763b748cce91c9e91e36b0f27ed26420dff3", + "bundler/net-protocol-0.2.2.gem": "sha256:aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8", + "bundler/net-smtp-0.5.0.gem": "sha256:5fc0415e6ea1cc0b3dfea7270438ec22b278ca8d524986a3ae4e5ae8d087b42a", + "bundler/nio4r-2.7.3.gem": "sha256:54b94cdd4b8f9dc39aaad5f699e97afae13efb44f2b180a6e724df76105ff604", + "bundler/nokogiri-1.16.7-aarch64-linux.gem": "sha256:78778d35f165b59513be31c0fe232c63a82cf97626ffba695b5f822e5da1d74b", + "bundler/nokogiri-1.16.7-arm-linux.gem": "sha256:c84cdb9e3aa44c35bbb981b20175838c4b2066c26c5cb118f31f177168a42fc3", + "bundler/nokogiri-1.16.7-arm64-darwin.gem": "sha256:276dcea1b988a5b22b5acc1ba901d24b8e908c40b71dccd5d54a2ae279480dad", + "bundler/nokogiri-1.16.7-x86-linux.gem": "sha256:dddbf1c1ef99ce9fab98302b14f8bacb703e6f16e89b99f05ecee8a1fca23664", + "bundler/nokogiri-1.16.7-x86_64-darwin.gem": "sha256:630732b80fc572690eab50c73a1f18988f3ac401ed0b67ca9956ba2b1e2c3faa", + "bundler/nokogiri-1.16.7-x86_64-linux.gem": "sha256:9e1e428641d5942af877c60b418c71163560e9feb4a5c4015f3230a8b86a40f6", + "bundler/public_suffix-6.0.1.gem": "sha256:61d44e1cab5cbbbe5b31068481cf16976dd0dc1b6b07bd95617ef8c5e3e00c6f", + "bundler/racc-1.8.1.gem": "sha256:4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f", + "bundler/rack-2.2.9.gem": "sha256:fd6301a97a1c1e955e68f85c861fcb1cde6145a32c532e1ea321a72ff8cc4042", + "bundler/rack-test-2.1.0.gem": "sha256:0c61fc61904049d691922ea4bb99e28004ed3f43aa5cfd495024cc345f125dfb", + "bundler/rails-6.1.7.gem": "sha256:6e3b9226fb9f82d916990b7da9a121191890ed20ac49f40e902d4e6952308006", + "bundler/rails-dom-testing-2.2.0.gem": "sha256:e515712e48df1f687a1d7c380fd7b07b8558faa26464474da64183a7426fa93b", + "bundler/rails-html-sanitizer-1.6.0.gem": "sha256:86e9f19d2e6748890dcc2633c8945ca45baa08a1df9d8c215ce17b3b0afaa4de", + "bundler/railties-6.1.7.gem": "sha256:5df0960e55db0edd305de26f7a3cf7da695c035cd6cd5bf8c8c79df9338e9fc7", + "bundler/rake-13.2.1.gem": "sha256:46cb38dae65d7d74b6020a4ac9d48afed8eb8149c040eccf0523bec91907059d", + "bundler/sprockets-4.2.1.gem": "sha256:951b13dd2f2fcae840a7184722689a803e0ff9d2702d902bd844b196da773f97", + "bundler/sprockets-rails-3.5.2.gem": "sha256:a9e88e6ce9f8c912d349aa5401509165ec42326baf9e942a85de4b76dbc4119e", + "bundler/thor-1.3.1.gem": "sha256:fa7e3471d4f6a27138e3d9c9b0d4daac9c3d7383927667ae83e9ab42ae7401ef", + "bundler/timeout-0.4.1.gem": "sha256:6f1f4edd4bca28cffa59501733a94215407c6960bd2107331f0280d4abdebb9a", + "bundler/tzinfo-2.0.6.gem": "sha256:8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b", + "bundler/websocket-driver-0.7.6.gem": "sha256:f69400be7bc197879726ad8e6f5869a61823147372fd8928836a53c2c741d0db", + "bundler/websocket-extensions-0.1.5.gem": "sha256:1c6ba63092cda343eb53fc657110c71c754c56484aad42578495227d717a8241", + "bundler/zeitwerk-2.6.17.gem": "sha256:0895160c92ea5ffc88c38556fbbca798b61164daca97461ab5f47b8a07fb2aac" +} diff --git a/tests/integration/test_data/bundler_everything_present_except_gemspec/vendor_sha256sums.json b/tests/integration/test_data/bundler_everything_present_except_gemspec/vendor_sha256sums.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/tests/integration/test_data/bundler_everything_present_except_gemspec/vendor_sha256sums.json @@ -0,0 +1 @@ +{}