feat: add _CS suffix to keep value case-sensitive

This commit is contained in:
rlespinasse
2021-03-01 23:05:36 +01:00
committed by Romain Lespinasse
parent 38c43d3f60
commit 6c93fcbf53
11 changed files with 17339 additions and 114 deletions

View File

@@ -1,36 +1,48 @@
import {slug} from '../src/slug'
import {slug, slug_cs} from '../src/slug'
function test_slug(input: string, expected: string) {
let actual = slug(input)
expect(actual).toEqual(expected)
}
function test_slug_cs(input: string, expected: string) {
let actual = slug_cs(input)
expect(actual).toEqual(expected)
}
test('slug: a word', () => {
test_slug('word', 'word')
test_slug_cs('word', 'word')
})
test('slug: a string', () => {
test_slug('basic-string', 'basic-string')
test_slug_cs('basic-string', 'basic-string')
})
test('slug: a string in camel case', () => {
test_slug('camelCase', 'camelcase')
test_slug_cs('camelCase', 'camelCase')
})
test('slug: a path', () => {
test_slug('path/to/something', 'path-to-something')
test_slug_cs('path/to/something', 'path-to-something')
})
test('slug: a number', () => {
test_slug('4.2', '4.2')
test_slug_cs('4.2', '4.2')
})
test('slug: special caracter', () => {
test_slug('feat-(!è§-caracter', 'feat------caracter')
test('slug: special character', () => {
test_slug('feat-(!è§-character', 'feat------character')
test_slug_cs('feat-(!è§-character', 'feat------character')
})
test('slug: trailing', () => {
test_slug('-feat-trailing-', 'feat-trailing')
test_slug_cs('-feat-trailing-', 'feat-trailing')
})
test('slug: a very long string', () => {
@@ -38,6 +50,10 @@ test('slug: a very long string', () => {
'an-awesome-Feature-Very-Very-Very-Very-Very-Very-Very-Long-moreThan63Characters',
'an-awesome-feature-very-very-very-very-very-very-very-long-more'
)
test_slug_cs(
'an-awesome-Feature-Very-Very-Very-Very-Very-Very-Very-Long-moreThan63Characters',
'an-awesome-Feature-Very-Very-Very-Very-Very-Very-Very-Long-more'
)
})
test('slug: short string after trailing', () => {
@@ -45,4 +61,8 @@ test('slug: short string after trailing', () => {
'-an-awesome-Feature-Very-Very-Very-Very-Very-Very-Very-Long-moreThan63Characters-',
'an-awesome-feature-very-very-very-very-very-very-very-long-more'
)
test_slug_cs(
'-an-awesome-Feature-Very-Very-Very-Very-Very-Very-Very-Long-moreThan63Characters-',
'an-awesome-Feature-Very-Very-Very-Very-Very-Very-Very-Long-more'
)
})

View File

@@ -1,49 +1,67 @@
import {slugref} from '../src/slug'
import {slugref, slugref_cs} from '../src/slug'
function test_slug_ref(input: string, expected: string) {
function test_slugref(input: string, expected: string) {
let actual = slugref(input)
expect(actual).toEqual(expected)
}
function test_slugref_cs(input: string, expected: string) {
let actual = slugref_cs(input)
expect(actual).toEqual(expected)
}
test('slug_ref:: master branch', () => {
test_slug_ref('refs/heads/master', 'master')
test_slugref('refs/heads/master', 'master')
test_slugref_cs('refs/heads/master', 'master')
})
test('slug_ref: a feature branch', () => {
test_slug_ref('refs/heads/feat/new_feature', 'feat-new-feature')
test_slugref('refs/heads/feat/new_feature', 'feat-new-feature')
test_slugref_cs('refs/heads/feat/new_feature', 'feat-new-feature')
})
test('slug_ref: a fix branch', () => {
test_slug_ref('refs/heads/fix/issue_number', 'fix-issue-number')
test_slugref('refs/heads/fix/issue_number', 'fix-issue-number')
test_slugref_cs('refs/heads/fix/issue_number', 'fix-issue-number')
})
test('slug_ref: a simple tag', () => {
test_slug_ref('refs/tags/v1.0.0', 'v1.0.0')
test_slugref('refs/tags/v1.0.0', 'v1.0.0')
test_slugref_cs('refs/tags/v1.0.0', 'v1.0.0')
})
test('slug_ref: a complex tag', () => {
test_slug_ref('refs/tags/product@1.0.0-rc.2', 'product-1.0.0-rc.2')
test_slugref('refs/tags/product@1.0.0-rc.2', 'product-1.0.0-rc.2')
test_slugref_cs('refs/tags/product@1.0.0-rc.2', 'product-1.0.0-rc.2')
})
test('slug_ref: a reference with upper case letters', () => {
test_slug_ref('refs/heads/New_Awesome_Product', 'new-awesome-product')
test_slugref('refs/heads/New_Awesome_Product', 'new-awesome-product')
test_slugref_cs('refs/heads/New_Awesome_Product', 'New-Awesome-Product')
})
test('slug_ref: test trailing', () => {
test_slug_ref('refs/heads/-trailing-feat-', 'trailing-feat')
test_slugref('refs/heads/-trailing-feat-', 'trailing-feat')
test_slugref_cs('refs/heads/-trailing-feat-', 'trailing-feat')
})
test('slug_ref: test refs inside string', () => {
test_slug_ref('refs/heads/-refs/tags/feature/-', 'refs-tags-feature')
test_slugref('refs/heads/-refs/tags/feature/-', 'refs-tags-feature')
test_slugref_cs('refs/heads/-refs/tags/feature/-', 'refs-tags-feature')
})
test('slug_ref: a very long name', () => {
test_slug_ref(
test_slugref(
'refs/heads/an-awesome-Feature-Very-Very-Very-Very-Very-Very-Very-Long-moreThan63Characters',
'an-awesome-feature-very-very-very-very-very-very-very-long-more'
)
test_slugref_cs(
'refs/heads/an-awesome-Feature-Very-Very-Very-Very-Very-Very-Very-Long-moreThan63Characters',
'an-awesome-Feature-Very-Very-Very-Very-Very-Very-Very-Long-more'
)
})
test('slug_ref: on pull-request ref', () => {
test_slug_ref('refs/pull/branch', 'branch')
test_slugref('refs/pull/branch', 'branch')
test_slugref_cs('refs/pull/branch', 'branch')
})

View File

@@ -1,37 +1,52 @@
import {slugurl} from '../src/slug'
import {slugurl, slugurl_cs} from '../src/slug'
function test_slug_url(input: string, expected: string) {
function test_slugurl(input: string, expected: string) {
let actual = slugurl(input)
expect(actual).toEqual(expected)
}
function test_slugurl_cs(input: string, expected: string) {
let actual = slugurl_cs(input)
expect(actual).toEqual(expected)
}
test('slug_url: a word', () => {
test_slug_url('word', 'word')
test_slugurl('word', 'word')
test_slugurl_cs('word', 'word')
})
test('slug_url: a string', () => {
test_slug_url('basic-string', 'basic-string')
test_slugurl('basic-string', 'basic-string')
test_slugurl_cs('basic-string', 'basic-string')
})
test('slug_url: a string in camel case', () => {
test_slug_url('camelCase', 'camelcase')
test_slugurl('camelCase', 'camelcase')
test_slugurl_cs('camelCase', 'camelCase')
})
test('slug_url: a path', () => {
test_slug_url('path/to/something', 'path-to-something')
test_slugurl('path/to/something', 'path-to-something')
test_slugurl_cs('path/to/something', 'path-to-something')
})
test('slug_url: a number', () => {
test_slug_url('4.2', '4-2')
test_slugurl('4.2', '4-2')
test_slugurl_cs('4.2', '4-2')
})
test('slug_url: trailing', () => {
test_slug_url('.path.to.', 'path-to')
test_slugurl('.path.to.', 'path-to')
test_slugurl_cs('.path.to.', 'path-to')
})
test('slug_url: a very long string', () => {
test_slug_url(
test_slugurl(
'an-awesome-Feature-Very-Very-Very-Very-Very-Very-Very-Long-moreThan63Characters',
'an-awesome-feature-very-very-very-very-very-very-very-long-more'
)
test_slugurl_cs(
'an-awesome-Feature-Very-Very-Very-Very-Very-Very-Very-Long-moreThan63Characters',
'an-awesome-Feature-Very-Very-Very-Very-Very-Very-Very-Long-more'
)
})

View File

@@ -1,49 +1,67 @@
import {slugurlref} from '../src/slug'
import {slugurlref, slugurlref_cs} from '../src/slug'
function test_slug_url_ref(input: string, expected: string) {
function test_slugurlref(input: string, expected: string) {
let actual = slugurlref(input)
expect(actual).toEqual(expected)
}
function test_slugurlref_cs(input: string, expected: string) {
let actual = slugurlref_cs(input)
expect(actual).toEqual(expected)
}
test('slug_url_ref: master branch', () => {
test_slug_url_ref('refs/heads/master', 'master')
test_slugurlref('refs/heads/master', 'master')
test_slugurlref_cs('refs/heads/master', 'master')
})
test('slug_url_ref: a feature branch', () => {
test_slug_url_ref('refs/heads/feat/new_feature', 'feat-new-feature')
test_slugurlref('refs/heads/feat/new_feature', 'feat-new-feature')
test_slugurlref_cs('refs/heads/feat/new_feature', 'feat-new-feature')
})
test('slug_url_ref: a fix branch', () => {
test_slug_url_ref('refs/heads/fix/issue_number', 'fix-issue-number')
test_slugurlref('refs/heads/fix/issue_number', 'fix-issue-number')
test_slugurlref_cs('refs/heads/fix/issue_number', 'fix-issue-number')
})
test('slug_url_ref: a simple tag', () => {
test_slug_url_ref('refs/tags/v1.0.0', 'v1-0-0')
test_slugurlref('refs/tags/v1.0.0', 'v1-0-0')
test_slugurlref_cs('refs/tags/v1.0.0', 'v1-0-0')
})
test('slug_url_ref: a complex tag', () => {
test_slug_url_ref('refs/tags/product@1.0.0-rc.2', 'product-1-0-0-rc-2')
test_slugurlref('refs/tags/product@1.0.0-rc.2', 'product-1-0-0-rc-2')
test_slugurlref_cs('refs/tags/product@1.0.0-rc.2', 'product-1-0-0-rc-2')
})
test('slug_url_ref: a reference with upper case letters', () => {
test_slug_url_ref('refs/heads/New_Awesome_Product', 'new-awesome-product')
test_slugurlref('refs/heads/New_Awesome_Product', 'new-awesome-product')
test_slugurlref_cs('refs/heads/New_Awesome_Product', 'New-Awesome-Product')
})
test('slug_url_ref: a very long name', () => {
test_slug_url_ref(
test_slugurlref(
'refs/heads/an-awesome-Feature-Very-Very-Very-Very-Very-Very-Very-Long-moreThan63Characters',
'an-awesome-feature-very-very-very-very-very-very-very-long-more'
)
test_slugurlref_cs(
'refs/heads/an-awesome-Feature-Very-Very-Very-Very-Very-Very-Very-Long-moreThan63Characters',
'an-awesome-Feature-Very-Very-Very-Very-Very-Very-Very-Long-more'
)
})
test('slug_url_ref: test trailing', () => {
test_slug_url_ref('refs/heads/-an-awesome-Feature-', 'an-awesome-feature')
test_slugurlref('refs/heads/-an-awesome-Feature-', 'an-awesome-feature')
test_slugurlref_cs('refs/heads/-an-awesome-Feature-', 'an-awesome-Feature')
})
test('slug_url_ref: test trailing with dot', () => {
test_slug_url_ref('refs/heads/.an-awesome-Feature.', 'an-awesome-feature')
test_slugurlref('refs/heads/.an-awesome-Feature.', 'an-awesome-feature')
test_slugurlref_cs('refs/heads/.an-awesome-Feature.', 'an-awesome-Feature')
})
test('slug_url_ref: on pull-request ref', () => {
test_slug_url_ref('refs/pull/branch', 'branch')
test_slugurlref('refs/pull/branch', 'branch')
test_slugurlref_cs('refs/pull/branch', 'branch')
})