Skip to content

Commit

Permalink
Throw errors on wrong feature and region names from Can I Use (#714)
Browse files Browse the repository at this point in the history
* Throw an error on wrong region name from Can I Use

* Throw an error on wrong feature name from Can I Use
  • Loading branch information
sashachabin committed Jul 27, 2022
1 parent eb83bb3 commit aea0b74
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 5 deletions.
15 changes: 12 additions & 3 deletions node.js
Expand Up @@ -243,7 +243,12 @@ module.exports = {
loadCountry: function loadCountry(usage, country, data) {
var code = country.replace(/[^\w-]/g, '')
if (!usage[code]) {
var compressed = require('caniuse-lite/data/regions/' + code + '.js')
var compressed
try {
compressed = require('caniuse-lite/data/regions/' + code + '.js')
} catch (e) {
throw new BrowserslistError("Unknown region name `" + code + "`.")
}
var usageData = region(compressed)
normalizeUsageData(usageData, data)
usage[country] = {}
Expand All @@ -258,8 +263,12 @@ module.exports = {
loadFeature: function loadFeature(features, name) {
name = name.replace(/[^\w-]/g, '')
if (features[name]) return

var compressed = require('caniuse-lite/data/features/' + name + '.js')
var compressed
try {
compressed = require('caniuse-lite/data/features/' + name + '.js')
} catch (e) {
throw new BrowserslistError("Unknown feature name `" + name + "`.")
}
var stats = feature(compressed).stats
features[name] = {}
for (var i in stats) {
Expand Down
10 changes: 9 additions & 1 deletion test/country.test.js
@@ -1,5 +1,5 @@
let { test } = require('uvu')
let { is, equal } = require('uvu/assert')
let { is, equal, throws } = require('uvu/assert')

delete require.cache[require.resolve('..')]
let browserslist = require('..')
Expand Down Expand Up @@ -71,10 +71,18 @@ test('loads country from Can I Use', () => {
is(browserslist('> 1% in RU').length > 0, true)
})

test('throw an error on wrong country name from Can I Use', () => {
throws(() => browserslist('> 1% in __'), /Unknown region name/)
})

test('loads continents from Can I Use', () => {
is(browserslist('> 1% in alt-AS').length > 0, true)
})

test('throw an error on wrong continent name from Can I Use', () => {
throws(() => browserslist('> 1% in alt-__'), /Unknown region name/)
})

test('allows omission of the space between the > and the percentage', () => {
is(browserslist('>10% in US').length > 0, true)
})
Expand Down
6 changes: 5 additions & 1 deletion test/feature.test.js
@@ -1,5 +1,5 @@
let { test } = require('uvu')
let { equal, is } = require('uvu/assert')
let { equal, is, throws } = require('uvu/assert')

delete require.cache[require.resolve('..')]
let browserslist = require('..')
Expand All @@ -24,6 +24,10 @@ test('load features from Can I Use', () => {
is(browserslist('supports objectrtc').length > 0, true)
})

test('throw an error on wrong feature name from Can I Use', () => {
throws(() => browserslist('supports wrong-feature-name'), /Unknown feature name/)
})

test('selects browsers by feature', () => {
browserslist.cache = {
rtcpeerconnection: {
Expand Down

0 comments on commit aea0b74

Please sign in to comment.