예제 #1
0
 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)
예제 #2
0
 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)
예제 #3
0
 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
예제 #4
0
 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()
예제 #5
0
 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)
예제 #6
0
 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)
예제 #7
0
    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())
예제 #8
0
 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
예제 #9
0
 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
예제 #10
0
    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())
예제 #11
0
    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())
예제 #12
0
 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
예제 #13
0
 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)
예제 #14
0
 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()
예제 #15
0
 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)
예제 #16
0
 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()
예제 #17
0
 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()
예제 #18
0
 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)
예제 #19
0
 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
예제 #20
0
 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)
예제 #21
0
 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)
예제 #22
0
 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)
예제 #23
0
 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)
예제 #24
0
 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)
예제 #25
0
 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)
예제 #26
0
 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)
예제 #27
0
 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)
예제 #28
0
 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)
예제 #29
0
 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)
예제 #30
0
 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)
예제 #31
0
 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)
예제 #32
0
 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)
예제 #33
0
 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)
예제 #34
0
 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)
예제 #35
0
 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)
예제 #36
0
 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)
예제 #37
0
 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)
예제 #38
0
 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)
예제 #39
0
 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()