mirror of
https://github.com/primer/css.git
synced 2024-11-22 10:49:41 +03:00
73 lines
2.9 KiB
JavaScript
73 lines
2.9 KiB
JavaScript
const {
|
|
getCurrentVersion,
|
|
getDeprecatedSelectors,
|
|
getDeprecatedVariables,
|
|
getPackageStats,
|
|
getSelectorDiff,
|
|
getVariableDiff
|
|
} = require('./utils/css')
|
|
const semver = require('semver')
|
|
|
|
let selectorsDiff, variablesDiff, version
|
|
|
|
// Because of a change in analyzer this was incorrectly in the list
|
|
const variableAllowList = ['$marketing-all-spacers']
|
|
|
|
beforeAll(async () => {
|
|
selectorsDiff = getSelectorDiff()
|
|
variablesDiff = getVariableDiff()
|
|
version = getCurrentVersion()
|
|
})
|
|
|
|
describe('css', () => {
|
|
it('The support.css file contains no compiled css', () => {
|
|
const supportStats = getPackageStats('support')
|
|
expect(supportStats.size).toEqual(0)
|
|
})
|
|
})
|
|
|
|
describe('deprecations', () => {
|
|
it('A selector was marked as deprecated but not removed from the codebase', () => {
|
|
const removed = selectorsDiff['removed']
|
|
const deprecations = getDeprecatedSelectors(version.raw)
|
|
if (deprecations.length) {
|
|
// Selectors were marked to be deprecated in this version,
|
|
// but were not removed from the codebase. Please remove these selectors.
|
|
expect(deprecations.sort()).toEqual(removed.sort()) // eslint-disable-line jest/no-conditional-expect
|
|
}
|
|
})
|
|
|
|
it('A selector was removed from the codebase but not added to upcoming major release deprecations file.', () => {
|
|
const removedSelectors = selectorsDiff['removed']
|
|
|
|
if (version.minor !== 0 && version.patch !== 0) {
|
|
const nextMajor = semver.inc(version.raw, 'major')
|
|
const deprecations = getDeprecatedSelectors(nextMajor)
|
|
// Some classes were removed from the codebase, but not found
|
|
// in the next upcoming major release deprecation.js
|
|
expect(deprecations.sort()).toEqual(expect.arrayContaining(removedSelectors.sort())) // eslint-disable-line jest/no-conditional-expect
|
|
}
|
|
})
|
|
|
|
it('A variable was marked as deprecated but not removed from the codebase', () => {
|
|
const removed = variablesDiff.removed
|
|
const deprecations = getDeprecatedVariables(version.raw)
|
|
if (deprecations.length) {
|
|
// Variables were marked to be deprecated in this version,
|
|
// but were not removed from the codebase. Please remove these variables.
|
|
expect(deprecations.sort()).toEqual(removed.sort()) // eslint-disable-line jest/no-conditional-expect
|
|
}
|
|
})
|
|
|
|
it('A variable was removed from the codebase and added to upcoming major release deprecations file.', () => {
|
|
const removed = variablesDiff.removed.filter(v => !variableAllowList.includes(v))
|
|
if (version.minor !== 0 && version.patch !== 0) {
|
|
const nextMajor = semver.inc(version.raw, 'major')
|
|
const deprecations = getDeprecatedVariables(nextMajor)
|
|
// Some variables were removed from the codebase, but not found
|
|
// in the next upcoming major release deprecation.json
|
|
expect(deprecations).toEqual(expect.arrayContaining(removed)) // eslint-disable-line jest/no-conditional-expect
|
|
}
|
|
})
|
|
})
|