From dded97526da91434b197cd072f8b2d6bb5a85a5f Mon Sep 17 00:00:00 2001 From: Maxwell Elliott Date: Mon, 5 Jul 2021 20:23:38 -0700 Subject: [PATCH] Add test for stack overflow situation Adds a test for a recent fix added in #73 --- .../TargetHashingClientImplTests.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test/java/com/bazel_diff/TargetHashingClientImplTests.java b/test/java/com/bazel_diff/TargetHashingClientImplTests.java index 1c57a4e..02e9649 100644 --- a/test/java/com/bazel_diff/TargetHashingClientImplTests.java +++ b/test/java/com/bazel_diff/TargetHashingClientImplTests.java @@ -102,6 +102,26 @@ public void hashAllBazelTargets_ruleTargets_ruleInputs() throws IOException, NoS } } + @Test + public void hashAllBazelTargets_ruleTargets_ruleInputsWithSelfInput() throws IOException, NoSuchAlgorithmException { + List ruleInputs = new ArrayList<>(); + ruleInputs.add("rule1"); + ruleInputs.add("rule4"); + BazelTarget rule3 = createRuleTarget("rule3", ruleInputs, "digest"); + defaultTargets.add(rule3); + BazelTarget rule4 = createRuleTarget("rule4", ruleInputs, "digest2"); + defaultTargets.add(rule4); + when(bazelClientMock.queryAllTargets()).thenReturn(defaultTargets); + TargetHashingClientImpl client = new TargetHashingClientImpl(bazelClientMock, filesClientMock); + try { + Map hash = client.hashAllBazelTargetsAndSourcefiles(new HashSet<>()); + assertEquals(4, hash.size()); + assertEquals("bf15e616e870aaacb02493ea0b8e90c6c750c266fa26375e22b30b78954ee523", hash.get("rule4")); + } catch (IOException | NoSuchAlgorithmException e) { + fail(e.getMessage()); + } + } + private BazelTarget createRuleTarget(String ruleName, List ruleInputs, String ruleDigest) throws NoSuchAlgorithmException { BazelTarget target = mock(BazelTarget.class); BazelRule rule = mock(BazelRule.class);