Skip to content

Commit

Permalink
Merge pull request #877 from standard/semver-tests
Browse files Browse the repository at this point in the history
refactor(tests): use semver to assert on ranges
  • Loading branch information
mightyiam committed Jun 27, 2022
2 parents 1f233d7 + 3177424 commit c8baf6d
Showing 1 changed file with 23 additions and 5 deletions.
28 changes: 23 additions & 5 deletions src/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -176,22 +176,40 @@ test('export', (t): void => {
t.deepEqual(exported, expected)
})

const isSingleCaretRange = (rangeStr: string): boolean => {
const range = new semver.Range(rangeStr)
return range.set.length === 1 &&
range.set[0].length === 2 &&
range.set[0][0].operator === '>=' &&
range.set[0][1].operator === '<'
}
const isPinnedRange = (rangeStr: string): boolean => {
const range = new semver.Range(rangeStr)
return range.set.length === 1 &&
range.set[0].length === 1 &&
range.set[0][0].operator === ''
}

test('Dependencies range types', async (t) => {
const { ourDeps, ourPeerDeps, ourDevDeps } = await getPkgDetails()
for (const [name, range] of Object.entries(ourDeps)) {
const specifier = '^'
t.true(range.startsWith(specifier), `Regular dependency ${name} starts with \`${specifier}\`.`)
t.true(
isSingleCaretRange(range),
`Regular dependency \`${name}: ${range}\` is a single \`^\` range.`
)
}
for (const [name, range] of Object.entries(ourPeerDeps)) {
if (name === 'typescript') {
t.is(range, '*', 'Peer dependency typescript is `*`')
} else {
const specifier = '^'
t.true(range.startsWith(specifier), `Peer dependency ${name} starts with \`${specifier}\`.`)
t.true(
isSingleCaretRange(range),
`Peer dependency \`${name}: ${range}\` is a single \`^\` range.`
)
}
}
for (const [name, range] of Object.entries(ourDevDeps)) {
t.regex(range, /^\d/, `Dev dependency ${name} is exact`)
t.true(isPinnedRange(range), `Dev dependency \`${name}: ${range}\` is pinned`)
}
})

Expand Down

0 comments on commit c8baf6d

Please sign in to comment.