def test_parse_invalid_json(self): test_file = self.get_test_loc('npm/invalid/package.json') try: npm.parse(test_file) except ValueError as e: if py2: assert 'No JSON object could be decoded' in str(e) if py3: assert 'Expecting value: line 60 column 3' in str(e)
def test_parse_authors_list_strings(self): # See: https://github.com/chenglou/react-motion/blob/master/package.json test_file = self.get_test_loc('npm/authors_list_strings/package.json') expected_loc = self.get_test_loc( 'npm/authors_list_strings/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False)
def test_parse_basic(self): test_file = self.get_test_loc('npm/basic/package.json') package = npm.parse(test_file) result = self.relative_locations(package.get_info()) expected = OrderedDict([ ('type', 'npm'), ('packaging', None), ('primary_language', 'JavaScript'), ('metafile_location', 'package.json'), ('id', u'cookie-signature'), ('name', u'cookie-signature'), ('qualified_name', u'npm cookie-signature'), ('version', u'1.0.3'), ('summary', u'Sign and unsign cookies'), ('asserted_licenses', []), ('author', u'TJ Holowaychuk'), ('author_email', u'*****@*****.**'), ('author_url', None), ('homepage_url', None), ('download_url', u'https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.3.tgz' ), ('vcs_tool', u'git'), ('vcs_repository', u'https://github.com/visionmedia/node-cookie-signature.git'), ]) assert expected == result
def test_parse_package_json_from_tarball_with_deps(self): test_file = self.get_test_loc('npm/from_tarball/package.json') expected_loc = self.get_test_loc( 'npm/from_tarball/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc) package.validate()
def test_parse_authors_list_dicts(self): # See: https://github.com/csscomb/grunt-csscomb/blob/master/package.json test_file = self.get_test_loc('npm/authors_list_dicts/package.json') expected_loc = self.get_test_loc( 'npm/authors_list_dicts/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False)
def test_parse_authors_list_strings2(self): # See: https://github.com/gomfunkel/node-exif/blob/master/package.json test_file = self.get_test_loc('npm/authors_list_strings2/package.json') expected_loc = self.get_test_loc( 'npm/authors_list_strings2/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False)
def test_parse_from_tarball(self): test_file = self.get_test_loc('npm/from_tarball/package.json') package = npm.parse(test_file) expected = OrderedDict([ ('type', 'npm'), ('packaging', None), ('primary_language', 'JavaScript'), ('metafile_location', 'package.json'), ('id', u'npm'), ('name', u'npm'), ('qualified_name', u'npm npm'), ('version', u'2.13.5'), ('summary', u'a package manager for JavaScript'), ('asserted_licenses', [OrderedDict([('license', u'Artistic-2.0'), ('text', None), ('notice', None), ('url', None)])]), ('author', u'Isaac Z. Schlueter'), ('author_email', u'*****@*****.**'), ('author_url', u'http://blog.izs.me'), ('homepage_url', u'https://docs.npmjs.com/'), ('download_url', u'https://registry.npmjs.org/npm/-/npm-2.13.5.tgz'), ('vcs_tool', u'git'), ('vcs_repository', u'https://github.com/npm/npm') ]) assert expected == self.relative_locations(package.get_info())
def test_parse_as_installed(self): test_file = self.get_test_loc('npm/as_installed/package.json') package = npm.parse(test_file) result = self.relative_locations(package.get_info()) expected = OrderedDict([ ('type', 'npm'), ('packaging', None), ('primary_language', 'JavaScript'), ('metafile_location', 'package.json'), ('id', u'npm'), ('name', u'npm'), ('qualified_name', u'npm npm'), ('version', u'2.13.5'), ('summary', u'a package manager for JavaScript'), ('asserted_licenses', [ OrderedDict([('license', u'Artistic-2.0'), ('text', None), ('notice', None), ('url', None)]) ]), ('author', u'Isaac Z. Schlueter'), ('author_email', u'*****@*****.**'), ('author_url', u'http://blog.izs.me'), ('homepage_url', u'https://docs.npmjs.com/'), ('download_url', u'http://registry.npmjs.org/npm/-/npm-2.13.5.tgz'), ('vcs_tool', u'git'), ('vcs_repository', u'git+https://github.com/npm/npm.git'), ]) assert expected == result
def test_parse_as_installed(self): test_file = self.get_test_loc('npm/as_installed/package.json') expected_loc = self.get_test_loc('npm/as_installed/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False, fix_locations=False) try: package.validate() except schematics.models.ModelValidationError: pass
def check_package(self, test_loc, expected_loc, regen=False): test_loc = self.get_test_loc(test_loc) expected_loc = self.get_test_loc(expected_loc) results = npm.parse(location=test_loc) if regen: regened_exp_loc = self.get_temp_file() with open(regened_exp_loc, 'wb') as ex: json.dump(results, ex, indent=2) expected_dir = os.path.dirname(expected_loc) if not os.path.exists(expected_dir): os.makedirs(expected_dir) shutil.copy(regened_exp_loc, expected_loc) with open(expected_loc) as ex: expected = json.load(ex) assert sorted(expected.items()) == sorted(results.items())
def test_parse_basic(self): test_file = self.get_test_loc('npm/basic/package.json') package = npm.parse(test_file) result = self.relative_locations(package.get_info()) expected = OrderedDict([ ('type', 'npm'), ('packaging', None), ('primary_language', 'JavaScript'), ('metafile_location', 'package.json'), ('id', u'cookie-signature'), ('name', u'cookie-signature'), ('qualified_name', u'npm cookie-signature'), ('version', u'1.0.3'), ('summary', u'Sign and unsign cookies'), ('asserted_licenses', []), ('author', u'TJ Holowaychuk'), ('author_email', u'*****@*****.**'), ('author_url', None), ('homepage_url', None), ('download_url', u'https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.3.tgz'), ('vcs_tool', u'git'), ('vcs_repository', u'https://github.com/visionmedia/node-cookie-signature.git'), ]) assert expected == result
def test_parse_bundleddeps(self): test_file = self.get_test_loc('npm/bundledDeps/package.json') expected_loc = self.get_test_loc( 'npm/bundledDeps/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False)
def test_parse_package_json_from_tarball_with_deps(self): test_file = self.get_test_loc('npm/from_tarball/package.json') expected_loc = self.get_test_loc('npm/from_tarball/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False, fix_locations=False) package.validate()
def test_parse_yarn_lock(self): test_file = self.get_test_loc('npm/yarn-lock/yarn.lock') expected_loc = self.get_test_loc('npm/yarn-lock/yarn.lock-expected') packages = npm.parse(test_file) self.check_packages(packages, expected_loc, regen=False)
def test_parse_does_not_crash_if_partial_repo_url(self): test_file = self.get_test_loc('npm/repo_url/package.json') expected_loc = self.get_test_loc('npm/repo_url/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False, fix_locations=False) package.validate()
def test_parse_basic(self): test_file = self.get_test_loc('npm/basic/package.json') expected_loc = self.get_test_loc('npm/basic/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False, fix_locations=False) package.validate()
def test_parse_with_invalid_dep(self): test_file = self.get_test_loc('npm/invalid-dep/package.json') expected_loc = self.get_test_loc( 'npm/invalid-dep/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False)
def test_parse_subset(self): test_file = self.get_test_loc('npm/invalid/package.json') try: npm.parse(test_file) except ValueError, e: assert 'No JSON object could be decoded' == e.message
def test_parse_from_urls_dict_legacy_is_ignored(self): test_file = self.get_test_loc('npm/urls_dict/package.json') expected_loc = self.get_test_loc('npm/urls_dict/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False)
def test_parse_scoped_package_2(self): test_file = self.get_test_loc('npm/scoped2/package.json') expected_loc = self.get_test_loc('npm/scoped2/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False)
def test_parse_legacy_licenses_as_dict(self): test_file = self.get_test_loc('npm/legacy_license_dict/package.json') expected_loc = self.get_test_loc( 'npm/legacy_license_dict/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False)
def test_parse_package_json_from_tarball_with_deps(self): test_file = self.get_test_loc('npm/from_tarball/package.json') expected_loc = self.get_test_loc( 'npm/from_tarball/package.json.expected') packages = npm.parse(test_file) self.check_packages(packages, expected_loc, regen=False)
def test_parse_invalid_json(self): test_file = self.get_test_loc('npm/invalid/package.json') try: npm.parse(test_file) except ValueError, e: assert 'No JSON object could be decoded' in str(e)
def test_parse_faulty_npm(self): test_file = self.get_test_loc('npm/casepath/package.json') expected_loc = self.get_test_loc('npm/casepath/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False)
def test_parse_registry_old_format(self): test_file = self.get_test_loc('npm/old_registry/package.json') expected_loc = self.get_test_loc( 'npm/old_registry/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False)
def test_parse_does_not_crash_if_partial_repo_url(self): test_file = self.get_test_loc('npm/repo_url/package.json') expected_loc = self.get_test_loc('npm/repo_url/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False)
def test_parse_nodep(self): test_file = self.get_test_loc('npm/nodep/package.json') expected_loc = self.get_test_loc('npm/nodep/package.json.expected') packages = npm.parse(test_file) self.check_packages(packages, expected_loc, regen=False)
def test_parse_from_npm_authors_with_email_list(self): # See: sequelize test_file = self.get_test_loc('npm/sequelize/package.json') expected_loc = self.get_test_loc('npm/sequelize/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False)
def test_parse_utils_merge_1_0_0(self): test_file = self.get_test_loc('npm/utils-merge-1.0.0/package.json') expected_loc = self.get_test_loc( 'npm/utils-merge-1.0.0/package.json.expected') packages = npm.parse(test_file) self.check_packages(packages, expected_loc, regen=False)
def test_parse_from_uri_vcs(self): test_file = self.get_test_loc('npm/uri_vcs/package.json') expected_loc = self.get_test_loc('npm/uri_vcs/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False)
def test_parse_mime_1_3_4(self): test_file = self.get_test_loc('npm/mime-1.3.4/package.json') expected_loc = self.get_test_loc( 'npm/mime-1.3.4/package.json.expected') packages = npm.parse(test_file) self.check_packages(packages, expected_loc, regen=False)
def test_parse_with_homepage_as_list(self): test_file = self.get_test_loc('npm/homepage-as-list/package.json') expected_loc = self.get_test_loc( 'npm/homepage-as-list/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False)
def test_parse_package_lock(self): test_file = self.get_test_loc('npm/package-lock/package-lock.json') expected_loc = self.get_test_loc( 'npm/package-lock/package-lock.json-expected') packages = npm.parse(test_file) self.check_packages(packages, expected_loc, regen=False)
def test_parse_as_installed(self): test_file = self.get_test_loc('npm/as_installed/package.json') expected_loc = self.get_test_loc( 'npm/as_installed/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False)
def test_parse_npm_shrinkwrap(self): test_file = self.get_test_loc('npm/npm-shrinkwrap/npm-shrinkwrap.json') expected_loc = self.get_test_loc( 'npm/npm-shrinkwrap/npm-shrinkwrap.json-expected') packages = npm.parse(test_file) self.check_packages(packages, expected_loc, regen=False)
def test_parse_express_jwt_3_4_0(self): test_file = self.get_test_loc('npm/express-jwt-3.4.0/package.json') expected_loc = self.get_test_loc( 'npm/express-jwt-3.4.0/package.json.expected') packages = npm.parse(test_file) self.check_packages(packages, expected_loc, regen=False)
def test_parse_from_urls_dict_legacy_is_ignored(self): test_file = self.get_test_loc('npm/urls_dict/package.json') expected_loc = self.get_test_loc('npm/urls_dict/package.json.expected') package = npm.parse(test_file) self.check_package(package, expected_loc, regen=False, fix_locations=False) package.validate()