mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Prometheus: Add backslash escaping for template variables (#26205)
* Run query on splitOpen action
* Escape \ in prometheusRegularEscape
* Revert "Run query on splitOpen action"
This reverts commit 3559b6c573
.
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
This commit is contained in:
parent
bf5d52c5c7
commit
bf835af74b
@ -415,9 +415,17 @@ describe('PrometheusDatasource', () => {
|
|||||||
expect(prometheusRegularEscape("looking'glass")).toEqual("looking\\\\'glass");
|
expect(prometheusRegularEscape("looking'glass")).toEqual("looking\\\\'glass");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should escape \\', () => {
|
||||||
|
expect(prometheusRegularEscape('looking\\glass')).toEqual('looking\\\\glass');
|
||||||
|
});
|
||||||
|
|
||||||
it('should escape multiple characters', () => {
|
it('should escape multiple characters', () => {
|
||||||
expect(prometheusRegularEscape("'looking'glass'")).toEqual("\\\\'looking\\\\'glass\\\\'");
|
expect(prometheusRegularEscape("'looking'glass'")).toEqual("\\\\'looking\\\\'glass\\\\'");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should escape multiple different characters', () => {
|
||||||
|
expect(prometheusRegularEscape("'loo\\king'glass'")).toEqual("\\\\'loo\\\\king\\\\'glass\\\\'");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Prometheus regexes escaping', () => {
|
describe('Prometheus regexes escaping', () => {
|
||||||
|
@ -764,11 +764,9 @@ export function extractRuleMappingFromGroups(groups: any[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function prometheusRegularEscape(value: any) {
|
export function prometheusRegularEscape(value: any) {
|
||||||
return typeof value === 'string' ? value.replace(/'/g, "\\\\'") : value;
|
return typeof value === 'string' ? value.replace(/\\/g, '\\\\').replace(/'/g, "\\\\'") : value;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function prometheusSpecialRegexEscape(value: any) {
|
export function prometheusSpecialRegexEscape(value: any) {
|
||||||
return typeof value === 'string'
|
return typeof value === 'string' ? value.replace(/\\/g, '\\\\\\\\').replace(/[$^*{}\[\]\'+?.()|]/g, '\\\\$&') : value;
|
||||||
? prometheusRegularEscape(value.replace(/\\/g, '\\\\\\\\').replace(/[$^*{}\[\]+?.()|]/g, '\\\\$&'))
|
|
||||||
: value;
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user