diff --git a/src/dependency-graph.ts b/src/dependency-graph.ts index bc130d7..acacfce 100644 --- a/src/dependency-graph.ts +++ b/src/dependency-graph.ts @@ -171,5 +171,8 @@ function describeMatrix(matrixJson: string): string { } function sanitize(value: string): string { - return value.replace(/[^a-zA-Z0-9_-]/g, '').toLowerCase() + return value + .replace(/[^a-zA-Z0-9_-\s]/g, '') + .replace(/\s+/g, '_') + .toLowerCase() } diff --git a/test/jest/dependency-graph.test.ts b/test/jest/dependency-graph.test.ts index a119603..bf1a9a8 100644 --- a/test/jest/dependency-graph.test.ts +++ b/test/jest/dependency-graph.test.ts @@ -4,12 +4,16 @@ describe('dependency-graph', () => { describe('constructs job correlator', () => { it('removes commas from workflow name', () => { const id = dependencyGraph.constructJobCorrelator('Workflow, with,commas', 'jobid', '{}') - expect(id).toBe('workflowwithcommas-jobid') + expect(id).toBe('workflow_withcommas-jobid') }) it('removes non word characters', () => { const id = dependencyGraph.constructJobCorrelator('Workflow!_with()characters', 'job-*id', '{"foo": "bar!@#$%^&*("}') expect(id).toBe('workflow_withcharacters-job-id-bar') }) + it('replaces spaces', () => { + const id = dependencyGraph.constructJobCorrelator('Workflow !_ with () characters, and spaces', 'job-*id', '{"foo": "bar!@#$%^&*("}') + expect(id).toBe('workflow___with_characters_and_spaces-job-id-bar') + }) it('without matrix', () => { const id = dependencyGraph.constructJobCorrelator('workflow', 'jobid', 'null') expect(id).toBe('workflow-jobid') @@ -24,7 +28,7 @@ describe('dependency-graph', () => { }) it('with composite matrix value', () => { const id = dependencyGraph.constructJobCorrelator('workflow', 'jobid', '{"os": "windows", "java-version": "21.1", "other": "Value, with COMMA"}') - expect(id).toBe('workflow-jobid-windows-211-valuewithcomma') + expect(id).toBe('workflow-jobid-windows-211-value_with_comma') }) }) })