From 8b405faa5790304f39e9a1d3455f25ce6c9b6ddf Mon Sep 17 00:00:00 2001 From: TL <43626236+OnlyTL@users.noreply.github.com> Date: Thu, 7 Dec 2023 16:52:07 +0800 Subject: [PATCH] fix: ineffective single-character queries in labelSelector (#5007) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **What this PR does / why we need it:** This PR resolves the reported bug in issue #5001, **Which issue(s) this PR fixes:** Fixes [#5001](https://github.com/halo-dev/halo/issues/5001) ```release-note 修复 labelSelector 单字符值查询无效的问题 ``` --- .../java/run/halo/app/extension/router/selector/Operator.java | 2 +- .../run/halo/app/extension/router/selector/OperatorTest.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/run/halo/app/extension/router/selector/Operator.java b/api/src/main/java/run/halo/app/extension/router/selector/Operator.java index 04f748094..cab3dc127 100644 --- a/api/src/main/java/run/halo/app/extension/router/selector/Operator.java +++ b/api/src/main/java/run/halo/app/extension/router/selector/Operator.java @@ -12,7 +12,7 @@ public enum Operator implements Converter { public SelectorCriteria convert(@Nullable String selector) { if (preFlightCheck(selector, 3)) { var i = selector.indexOf(getOperator()); - if (i > 0 && (i + getOperator().length()) < selector.length() - 1) { + if (i > 0 && (i + getOperator().length()) <= selector.length() - 1) { String key = selector.substring(0, i); String value = selector.substring(i + getOperator().length()); return new SelectorCriteria(key, this, Set.of(value)); diff --git a/api/src/test/java/run/halo/app/extension/router/selector/OperatorTest.java b/api/src/test/java/run/halo/app/extension/router/selector/OperatorTest.java index ee349b4d1..ae426277c 100644 --- a/api/src/test/java/run/halo/app/extension/router/selector/OperatorTest.java +++ b/api/src/test/java/run/halo/app/extension/router/selector/OperatorTest.java @@ -27,6 +27,8 @@ class OperatorTest { new TestCase("name=", Equals, null), new TestCase("name=value", Equals, new SelectorCriteria("name", Equals, Set.of("value"))), + new TestCase("name=v", Equals, + new SelectorCriteria("name", Equals, Set.of("v"))), new TestCase("", NotEquals, null), new TestCase("=", NotEquals, null), @@ -59,4 +61,4 @@ class OperatorTest { assertEquals(testCase.expected(), testCase.converter().convert(testCase.source())); }); } -} \ No newline at end of file +}