Tempo: Fix validation of float durations (#41400)

* Fix parsing of float numbers in validation

* Adjust test

* Update packages/grafana-data/src/datetime/durationutil.test.ts

* Update packages/grafana-data/src/datetime/durationutil.test.ts

* Remove us from placeholder
This commit is contained in:
Ivana Huckova
2021-11-10 13:48:38 +01:00
committed by GitHub
parent a3f6982476
commit 7bc27a3cfc
3 changed files with 12 additions and 2 deletions

View File

@@ -45,9 +45,19 @@ describe('Duration util', () => {
expect(isValidGoDuration(durationString)).toEqual(true);
});
it('valid float number duration string returns true', () => {
const durationString = '3.1h 4.0m 0.1s 2.11ms 0.03us 5.3333ns';
expect(isValidGoDuration(durationString)).toEqual(true);
});
it('invalid duration string returns false', () => {
const durationString = '3M 6v 5b 4m';
expect(isValidGoDuration(durationString)).toEqual(false);
});
it('invalid float number duration string returns false', () => {
const durationString = '3.h -4.0m 0.s 2.ms -0.us 5.ns';
expect(isValidGoDuration(durationString)).toEqual(false);
});
});
});

View File

@@ -124,7 +124,7 @@ export function isValidDuration(durationString: string): boolean {
export function isValidGoDuration(durationString: string): boolean {
const timeUnits = ['h', 'm', 's', 'ms', 'us', 'µs', 'ns'];
for (const value of durationString.trim().split(' ')) {
const match = value.match(/(\d+)(.+)/);
const match = value.match(/([0-9]*[.]?[0-9]+)(.+)/);
if (match === null || match.length !== 3) {
return false;
}

View File

@@ -33,7 +33,7 @@ interface Props {
}
const PRISM_LANGUAGE = 'tempo';
const durationPlaceholder = 'e.g. 1.2s, 100ms, 500us';
const durationPlaceholder = 'e.g. 1.2s, 100ms';
const plugins = [
BracesPlugin(),
SlatePrism({