Skip to content

Commit 17643bc

Browse files
authored
Fix existence check of posts in some cases (#7673)
#### What type of PR is this? /kind bug /area core /milestone 2.21.x #### What this PR does / why we need it: This PR fixes the internal check of selector converter `NotEquals`, which might lead to failing check of `metadata.name!=1`. #### Which issue(s) this PR fixes: Fixes #7666 #### Does this PR introduce a user-facing change? ```release-note 修复极端场景下无法检查文章别名是否存在的问题 ```
1 parent 576dda9 commit 17643bc

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

api/src/main/java/run/halo/app/extension/router/selector/Operator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public SelectorCriteria convert(String selector) {
4444
public SelectorCriteria convert(@Nullable String selector) {
4545
if (preFlightCheck(selector, 4)) {
4646
var i = selector.indexOf(getOperator());
47-
if (i > 0 && (i + getOperator().length()) < selector.length() - 1) {
47+
if (i > 0 && (i + getOperator().length()) < selector.length()) {
4848
String key = selector.substring(0, i);
4949
String value = selector.substring(i + getOperator().length());
5050
return new SelectorCriteria(key, this, Set.of(value));

api/src/test/java/run/halo/app/extension/router/selector/OperatorTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ record TestCase(String source, Operator converter, SelectorCriteria expected) {
2727
new TestCase("name=", Equals, null),
2828
new TestCase("name=value", Equals,
2929
new SelectorCriteria("name", Equals, Set.of("value"))),
30-
new TestCase("name=v", Equals,
30+
new TestCase("name=v", Equals,
3131
new SelectorCriteria("name", Equals, Set.of("v"))),
3232

3333
new TestCase("", NotEquals, null),
@@ -45,6 +45,10 @@ record TestCase(String source, Operator converter, SelectorCriteria expected) {
4545
new TestCase("name", NotExist, null),
4646
new TestCase("na!me", NotExist, null),
4747
new TestCase("name!", NotExist, null),
48+
new TestCase("name!=1", NotEquals,
49+
new SelectorCriteria("name", NotEquals, Set.of("1"))),
50+
new TestCase("name!=12", NotEquals,
51+
new SelectorCriteria("name", NotEquals, Set.of("12"))),
4852

4953
new TestCase("name", Exist, new SelectorCriteria("name", Exist, Set.of())),
5054
new TestCase("", Exist, null),
@@ -61,4 +65,5 @@ record TestCase(String source, Operator converter, SelectorCriteria expected) {
6165
assertEquals(testCase.expected(), testCase.converter().convert(testCase.source()));
6266
});
6367
}
68+
6469
}

0 commit comments

Comments
 (0)