var test = require('tape'); var parse = require('spdx-expression-parse'); var correct = require('./'); function valid(string) { try { parse(string); return true; } catch (e) { return false; } } var examples = { ' Apache License V2': 'Apache-2.0', ' BSD-3-Clause': 'BSD-3-Clause', ' GPL-3.0+': 'GPL-3.0', '"BD-2-Clause"': 'BSD-2-Clause', '"BSD-2-Clause"': 'BSD-2-Clause', '"MIT"': 'MIT', '(LGPL)': 'LGPL-3.0', '2 clause BSD': 'BSD-2-Clause', '2-clause-BSD': 'BSD-2-Clause', '3-Clause BSD': 'BSD-3-Clause', '3-Clause-BSD': 'BSD-3-Clause', '3-clause BSD': 'BSD-3-Clause', 'AGPL 3': 'AGPL-3.0', 'AGPL 3.0':'AGPL-3.0', 'AGPL v3': 'AGPL-3.0', 'AGPL': 'AGPL-3.0', 'AGPL, Copyright 2014 uh-sem-blee, Co.': 'AGPL-3.0', 'AGPL-3': 'AGPL-3.0', 'AGPL3': 'AGPL-3.0', 'AGPLV3': 'AGPL-3.0', 'AGPLv3': 'AGPL-3.0', 'AGPLv3+': 'AGPL-3.0', 'AOL/MIT': 'MIT', 'APACHE 2': 'Apache-2.0', 'APACHE 2.0': 'Apache-2.0', 'APACHE V2.0': 'Apache-2.0', 'APACHE': 'Apache-2.0', 'APACHE-2': 'Apache-2.0', 'APACHE-2.0': 'Apache-2.0', 'APACHE-V2': 'Apache-2.0', 'APACHE2': 'Apache-2.0', 'APACHE2.0': 'Apache-2.0', 'APACHE20': 'Apache-2.0', 'APACHE2_0': 'Apache-2.0', 'APGLv3': 'AGPL-3.0', 'APL 2.0': 'Apache-2.0', 'APL': 'Apache-2.0', 'APL2': 'Apache-2.0', 'APLv2': 'Apache-2.0', 'Affero GPL or Commercial': 'AGPL-3.0', 'Affero GPL v3': 'AGPL-3.0', 'Affero GPL3': 'AGPL-3.0', 'Affero General Public License v3': 'AGPL-3.0', 'Affero-GPL': 'AGPL-3.0', 'Apache ': 'Apache-2.0', 'Apache 2 License': 'Apache-2.0', 'Apache 2': 'Apache-2.0', 'Apache 2.0 License': 'Apache-2.0', 'Apache 2.0 http://www.apache.org/licenses/': 'Apache-2.0', 'Apache 2.0': 'Apache-2.0', 'Apache Licence 2.0': 'Apache-2.0', 'Apache Licence v2': 'Apache-2.0', 'Apache License 2': 'Apache-2.0', 'Apache License 2.': 'Apache-2.0', 'Apache License 2.0': 'Apache-2.0', 'Apache License V2': 'Apache-2.0', 'Apache License V2.0': 'Apache-2.0', 'Apache License Version 2.0': 'Apache-2.0', 'Apache License Version 2.0,': 'Apache-2.0', 'Apache License v2': 'Apache-2.0', 'Apache License v2.0': 'Apache-2.0', 'Apache License version 2.0': 'Apache-2.0', 'Apache License': 'Apache-2.0', 'Apache License, 2.0': 'Apache-2.0', 'Apache License, Version 2.0': 'Apache-2.0', 'Apache License, Version 2.0, http://www.apache.org/licenses/LICENSE-2.0': 'Apache-2.0', 'Apache License, v2.0': 'Apache-2.0', 'Apache License, version 2': 'Apache-2.0', 'Apache Public License v2': 'Apache-2.0', 'Apache Public License, Version 2': 'Apache-2.0', 'Apache Software License 2.0': 'Apache-2.0', 'Apache Software License Version 2': 'Apache-2.0', 'Apache V2': 'Apache-2.0', 'Apache V2.0': 'Apache-2.0', 'Apache Version 2': 'Apache-2.0', 'Apache Version 2.0': 'Apache-2.0', 'Apache lisence V2': 'Apache-2.0', 'Apache lisense 2.0': 'Apache-2.0', 'Apache v. 2': 'Apache-2.0', 'Apache v2 License': 'Apache-2.0', 'Apache v2': 'Apache-2.0', 'Apache v2.0': 'Apache-2.0', 'Apache version 2': 'Apache-2.0', 'Apache version 2.0': 'Apache-2.0', 'Apache': 'Apache-2.0', 'Apache, Version 2.0': 'Apache-2.0', 'Apache, v2.0': 'Apache-2.0', 'Apache-2': 'Apache-2.0', 'Apache-2.0': 'Apache-2.0', 'Apache-License-2.0': 'Apache-2.0', 'Apache-V2': 'Apache-2.0', 'Apache-v2': 'Apache-2.0', 'Apache-v2.0': 'Apache-2.0', 'Apache2': 'Apache-2.0', 'Apache2.0': 'Apache-2.0', 'Apache20': 'Apache-2.0', 'ApacheV2': 'Apache-2.0', 'Apache_2_0': 'Apache-2.0', 'Apachev2': 'Apache-2.0', 'Artistic 2.0': 'Artistic-2.0', 'Artistic License 2.0': 'Artistic-2.0', 'Artistic License': 'Artistic-2.0', 'Artistic': 'Artistic-2.0', 'Attribution-NonCommercial': 'CC-BY-NC-4.0', 'BEER': 'Beerware', 'BEERWARE': 'Beerware', 'BOOST': 'BSL-1.0', 'BS3 3-Clause': 'BSD-3-Clause', 'BSD 2-Clause license': 'BSD-2-Clause', 'BSD 2-Clause': 'BSD-2-Clause', 'BSD 2-clause': 'BSD-2-Clause', 'BSD 3 Clause': 'BSD-3-Clause', 'BSD 3': 'BSD-3-Clause', 'BSD 3-Clause': 'BSD-3-Clause', 'BSD 3-clause': 'BSD-3-Clause', 'BSD clause 3': 'BSD-3-Clause', 'BSD': 'BSD-2-Clause', 'BSD-2 Clause': 'BSD-2-Clause', 'BSD-2-Clauseno': 'BSD-2-Clause', 'BSD-2-clause': 'BSD-2-Clause', 'BSD-3 Clause': 'BSD-3-Clause', 'BSD-3': 'BSD-3-Clause', 'BSD-3-Claude': 'BSD-3-Clause', 'BSD2-License': 'BSD-2-Clause', 'BSD3': 'BSD-3-Clause', 'BSD3-Clause': 'BSD-3-Clause', 'Beer-Ware': 'Beerware', 'BeerWare': 'Beerware', 'Beerware': 'Beerware', 'Boost': 'BSL-1.0', 'CC BY 3.0': 'CC-BY-3.0', 'CC BY 4.0': 'CC-BY-4.0', 'CC-BY 3.0': 'CC-BY-3.0', 'CC-BY 4.0 International': 'CC-BY-4.0', 'Cc-by-3.0': 'CC-BY-3.0', 'DWTFYW License': 'WTFPL', 'DWTFYW': 'WTFPL', 'DWTFYWPL': 'WTFPL', 'Do what the fuck you want to public license': 'WTFPL', 'Eclipse Public License (EPL)': 'EPL-1.0', 'Eclipse Public License + Eclipse Distribution License': 'EPL-1.0', 'Eclipse Public License 1.0': 'EPL-1.0', 'Eclipse Public License': 'EPL-1.0', 'Eclipse Public License, Eclipse Distribution License': 'EPL-1.0', 'Eclipse': 'EPL-1.0', 'GLP': 'GPL-3.0', 'GLPv3': 'GPL-3.0', 'GNU Affero GPL 3.0': 'AGPL-3.0', 'GNU Affero GPLv3': 'AGPL-3.0', 'GNU GENERAL PUBLIC LICENSE Version 2': 'GPL-2.0', 'GNU GENERAL PUBLIC LICENSE': 'GPL-3.0', 'GNU GLP v3.0': 'GPL-3.0', 'GNU GPL 3': 'GPL-3.0', 'GNU GPL 3.0': 'GPL-3.0', 'GNU GPL V2': 'GPL-2.0', 'GNU GPL V3.0': 'GPL-3.0', 'GNU GPL v2': 'GPL-2.0', 'GNU GPL v2.0': 'GPL-2.0', 'GNU GPL v3': 'GPL-3.0', 'GNU GPL v3.0': 'GPL-3.0', 'GNU GPL ver 3': 'GPL-3.0', 'GNU GPL': 'GPL-3.0', 'GNU GPLv2': 'GPL-2.0', 'GNU GPLv3': 'GPL-3.0', 'GNU GPLv3+': 'GPL-3.0', 'GNU General Public License v2.0': 'GPL-2.0', 'GNU General Public License v3': 'GPL-3.0', 'GNU General Public License': 'GPL-3.0', 'GNU General Public License, version 2': 'GPL-2.0', 'GNU General Public': 'GPL-3.0', 'GNU LESSER GENERAL PUBLIC LICENSE': 'GPL-3.0', 'GNU LGPL v3.0': 'GPL-3.0', 'GNU License v3': 'GPL-3.0', 'GNU V3': 'GPL-3.0', 'GNU v2': 'GPL-2.0', 'GNU': 'GPL-3.0', 'GNU-GPL': 'GPL-3.0', 'GNU/GPL': 'GPL-3.0', 'GNU/GPLv2': 'GPL-2.0', 'GPL 2': 'GPL-2.0', 'GPL 2.0': 'GPL-2.0', 'GPL 3': 'GPL-3.0', 'GPL 3.0': 'GPL-3.0', 'GPL V2': 'GPL-2.0', 'GPL V3': 'GPL-3.0', 'GPL V3.0': 'GPL-3.0', 'GPL Version 3': 'GPL-3.0', 'GPL v.2': 'GPL-2.0', 'GPL v2': 'GPL-2.0', 'GPL v3': 'GPL-3.0', 'GPL v3+': 'GPL-3.0', 'GPL v3.0': 'GPL-3.0', 'GPL': 'GPL-3.0', 'GPL-2': 'GPL-2.0', 'GPL-2.0-': 'GPL-2.0', 'GPL-3': 'GPL-3.0', 'GPL-V3': 'GPL-3.0', 'GPL2': 'GPL-2.0', 'GPL2+': 'GPL-2.0', 'GPL3': 'GPL-3.0', 'GPL3.0': 'GPL-3.0', 'GPL3.0+': 'GPL-3.0', 'GPLV2': 'GPL-2.0', 'GPLV3': 'GPL-3.0', 'GPLv2': 'GPL-2.0', 'GPLv2+': 'GPL-2.0', 'GPLv3': 'GPL-3.0', 'GPLv3+': 'GPL-3.0', 'GPLv3.0': 'GPL-3.0', 'GUN': 'GPL-3.0', 'Gnu public license v2.0': 'GPL-2.0', 'Gpl v3': 'GPL-3.0', 'Gpl': 'GPL-3.0', 'Gpl-2.0': 'GPL-2.0', 'Gpl-3.0': 'GPL-3.0', 'Gpl2': 'GPL-2.0', 'Http://opensource.org/licenses/MIT': 'MIT', 'Http://unlicense.org': 'Unlicense', 'Http://wtfpl.org/': 'WTFPL', 'Http://www.apache.org/licenses/LICENSE-2.0': 'Apache-2.0', 'Http://www.mozilla.org/MPL/2.0/': 'MPL-2.0', 'Http://www.opensource.org/licenses/MIT': 'MIT', 'ISD': 'ISC', 'IST': 'ISC', 'Isc': 'ISC', 'LGLP3': 'LGPL-3.0', 'LGPL 2.1': 'LGPL-2.1', 'LGPL 3': 'LGPL-3.0', 'LGPL 3.0': 'LGPL-3.0', 'LGPL Version 3.0': 'LGPL-3.0', 'LGPL v2': 'LGPL-2.0', 'LGPL v3': 'LGPL-3.0', 'LGPL': 'LGPL-3.0', 'LGPL-2': 'LGPL-2.0', 'LGPL-3': 'LGPL-3.0', 'LGPL.v3': 'LGPL-3.0', 'LGPL2': 'LGPL-2.0', 'LGPL2.1': 'LGPL-2.1', 'LGPL3': 'LGPL-3.0', 'LGPL3+': 'LGPL-3.0', 'LGPL3.0': 'LGPL-3.0', 'LGPL:': 'LGPL-3.0', 'LGPLv2.1': 'LGPL-2.1', 'LGPLv3': 'LGPL-3.0', 'LGPLv3+': 'LGPL-3.0', 'LICENSE-MIT': 'MIT', 'Licenses/GPL-3.0': 'GPL-3.0', 'M.I.T': 'MIT', 'M.I.T.': 'MIT', 'MIT ': 'MIT', 'MIT (http://mootools.net/license.txt)': 'MIT', 'MIT (https://github.com/AlekseyLeshko/say-me/blob/master/LICENSE)': 'MIT', 'MIT (https://github.com/AlekseyLeshko/testimonial.js/blob/master/LICENSE)': 'MIT', 'MIT (https://github.com/brentertz/scapegoat/blob/master/LICENSE-MIT)': 'MIT', 'MIT / http://rem.mit-license.org': 'MIT', 'MIT / http://www.highcharts.com/license/': 'MIT', 'MIT 1.0': 'MIT', 'MIT ': 'MIT', 'MIT ': 'MIT', 'MIT ': 'MIT', 'MIT @chetandhembre': 'MIT', 'MIT Copyright (c) 2015 Austin Eldridge': 'MIT', 'MIT LICENSE': 'MIT', 'MIT Licence': 'MIT', 'MIT License (MIT)': 'MIT', 'MIT License (http://opensource.org/licenses/MIT)': 'MIT', 'MIT License - http://opensource.org/licenses/MIT': 'MIT', 'MIT License': 'MIT', 'MIT License, http://www.opensource.org/licenses/MIT': 'MIT', 'MIT License, see LICENSE.md for details': 'MIT', 'MIT License. Copyright First Rally. All rights reserved.': 'MIT', 'MIT License.': 'MIT', 'MIT Licensed. http://www.opensource.org/licenses/mit-license.php': 'MIT', 'MIT Lisence': 'MIT', 'MIT licence': 'MIT', 'MIT license (MIT)': 'MIT', 'MIT license': 'MIT', 'MIT, Copyright (c) 2013 Michael Schoonmaker': 'MIT', 'MIT, http://opensource.org/licenses/MIT': 'MIT', 'MIT-LICENSE': 'MIT', 'MIT-License': 'MIT', 'MIT-Style': 'MIT', 'MIT-like': 'MIT', 'MIT/X': 'MIT', 'MIT/X11': 'MIT', 'MIT2': 'MIT', 'MITISC': 'MIT', 'MIT]': 'MIT', 'MIT_License': 'MIT', 'MITt': 'MIT', 'MPL 2': 'MPL-2.0', 'MPL 2.0':'MPL-2.0', 'MPL V2': 'MPL-2.0', 'MPL v2': 'MPL-2.0', 'MPL v2.0': 'MPL-2.0', 'MPL': 'MPL-2.0', 'MPL-2': 'MPL-2.0', 'MPL/2.0': 'MPL-2.0', 'MPL2': 'MPL-2.0', 'MPL2.0': 'MPL-2.0', 'MPLV2': 'MPL-2.0', 'MPLv2': 'MPL-2.0', 'MPLv2.0': 'MPL-2.0', 'MTI': 'MIT', 'MiT': 'MIT', 'Mit': 'MIT', 'Mozilla Public License 1.1': 'MPL-1.1', 'Mozilla Public License 2.0': 'MPL-2.0', 'Mozilla Public License version 2': 'MPL-2.0', 'Mozilla Public License': 'MPL-2.0', 'Mozilla Public License, v. 2.0': 'MPL-2.0', 'Mozilla Public License, version 2.0': 'MPL-2.0', 'Public Domain (UNLISCENSE)': 'Unlicense', 'Public Domain (Unlicense)': 'Unlicense', 'Public Domain ': 'Unlicense', 'Public domain(unlicense)': 'Unlicense', 'Public-domain (Unlicense)': 'Unlicense', 'Standard 3-clause BSD': 'BSD-3-Clause', 'The Unlicense': 'Unlicense', 'UNLICENSE': 'Unlicense', 'UNLICENSED': 'Unlicense', 'UNLICNSE': 'Unlicense', 'Unlicence': 'Unlicense', 'Unlicense (http://unlicense.org/)': 'Unlicense', 'Unlicense (see http://unlicense.org/)': 'Unlicense', 'Unlicense': 'Unlicense', 'Unlicensed': 'Unlicense', 'WTF': 'WTFPL', 'WTFGPL': 'WTFPL', 'WTFPL 2': 'WTFPL', 'WTFPL ': 'WTFPL', 'WTFPLv2': 'WTFPL', 'WTHPL v1.0.0': 'WTFPL', 'Wtfpl (wtfpl.net)': 'WTFPL', 'Wtfpl': 'WTFPL', 'ZLIB': 'Zlib', 'Zlib': 'Zlib', 'Zlib/libpng': 'Zlib', 'mit':'MIT', '© 2014 WTFPL – Do What the Fuck You Want to Public License.': 'WTFPL' }; test('examples', function(test) { Object.keys(examples) .forEach(function(input) { var corrected = examples[input]; test.test(input, function(test) { test.equal( correct(input), corrected, 'corrects "' + input + '" to "' + corrected + '"' ); if (corrected !== null) { test.ok( valid(corrected), '"' + corrected + '" is a valid SPDX identifier' ); } test.end(); }); }); test.end(); });