diff options
Diffstat (limited to 'bitbake/lib/bb/tests/fetch.py')
-rw-r--r-- | bitbake/lib/bb/tests/fetch.py | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/bitbake/lib/bb/tests/fetch.py b/bitbake/lib/bb/tests/fetch.py index fa0c5c5ae3..5eeb64c512 100644 --- a/bitbake/lib/bb/tests/fetch.py +++ b/bitbake/lib/bb/tests/fetch.py | |||
@@ -2037,3 +2037,186 @@ class GitLfsTest(FetcherTest): | |||
2037 | ud.method._find_git_lfs = lambda d: False | 2037 | ud.method._find_git_lfs = lambda d: False |
2038 | shutil.rmtree(self.gitdir, ignore_errors=True) | 2038 | shutil.rmtree(self.gitdir, ignore_errors=True) |
2039 | fetcher.unpack(self.d.getVar('WORKDIR')) | 2039 | fetcher.unpack(self.d.getVar('WORKDIR')) |
2040 | |||
2041 | class NPMTest(FetcherTest): | ||
2042 | def skipIfNoNpm(): | ||
2043 | import shutil | ||
2044 | if not shutil.which('npm'): | ||
2045 | return unittest.skip('npm not installed, tests being skipped') | ||
2046 | return lambda f: f | ||
2047 | |||
2048 | @skipIfNoNpm() | ||
2049 | @skipIfNoNetwork() | ||
2050 | def test_npm(self): | ||
2051 | url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0' | ||
2052 | fetcher = bb.fetch.Fetch([url], self.d) | ||
2053 | ud = fetcher.ud[fetcher.urls[0]] | ||
2054 | fetcher.download() | ||
2055 | self.assertTrue(os.path.exists(ud.localpath)) | ||
2056 | self.assertTrue(os.path.exists(ud.localpath + '.done')) | ||
2057 | self.assertTrue(os.path.exists(ud.resolvefile)) | ||
2058 | fetcher.unpack(self.unpackdir) | ||
2059 | unpackdir = os.path.join(self.unpackdir, 'npm') | ||
2060 | self.assertTrue(os.path.exists(os.path.join(unpackdir, 'package.json'))) | ||
2061 | |||
2062 | @skipIfNoNpm() | ||
2063 | @skipIfNoNetwork() | ||
2064 | def test_npm_bad_checksum(self): | ||
2065 | url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0' | ||
2066 | # Fetch once to get a tarball | ||
2067 | fetcher = bb.fetch.Fetch([url], self.d) | ||
2068 | ud = fetcher.ud[fetcher.urls[0]] | ||
2069 | fetcher.download() | ||
2070 | self.assertTrue(os.path.exists(ud.localpath)) | ||
2071 | # Modify the tarball | ||
2072 | bad = b'bad checksum' | ||
2073 | with open(ud.localpath, 'wb') as f: | ||
2074 | f.write(bad) | ||
2075 | # Verify that the tarball is fetched again | ||
2076 | fetcher.download() | ||
2077 | badsum = hashlib.sha512(bad).hexdigest() | ||
2078 | self.assertTrue(os.path.exists(ud.localpath + '_bad-checksum_' + badsum)) | ||
2079 | self.assertTrue(os.path.exists(ud.localpath)) | ||
2080 | |||
2081 | @skipIfNoNpm() | ||
2082 | @skipIfNoNetwork() | ||
2083 | def test_npm_premirrors(self): | ||
2084 | url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0' | ||
2085 | # Fetch once to get a tarball | ||
2086 | fetcher = bb.fetch.Fetch([url], self.d) | ||
2087 | ud = fetcher.ud[fetcher.urls[0]] | ||
2088 | fetcher.download() | ||
2089 | self.assertTrue(os.path.exists(ud.localpath)) | ||
2090 | # Setup the mirror | ||
2091 | mirrordir = os.path.join(self.tempdir, 'mirror') | ||
2092 | bb.utils.mkdirhier(mirrordir) | ||
2093 | os.replace(ud.localpath, os.path.join(mirrordir, os.path.basename(ud.localpath))) | ||
2094 | self.d.setVar('PREMIRRORS', 'https?$://.*/.* file://%s/\n' % mirrordir) | ||
2095 | self.d.setVar('BB_FETCH_PREMIRRORONLY', '1') | ||
2096 | # Fetch again | ||
2097 | self.assertFalse(os.path.exists(ud.localpath)) | ||
2098 | fetcher.download() | ||
2099 | self.assertTrue(os.path.exists(ud.localpath)) | ||
2100 | |||
2101 | @skipIfNoNpm() | ||
2102 | @skipIfNoNetwork() | ||
2103 | def test_npm_mirrors(self): | ||
2104 | # Fetch once to get a tarball | ||
2105 | url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0' | ||
2106 | fetcher = bb.fetch.Fetch([url], self.d) | ||
2107 | ud = fetcher.ud[fetcher.urls[0]] | ||
2108 | fetcher.download() | ||
2109 | self.assertTrue(os.path.exists(ud.localpath)) | ||
2110 | # Setup the mirror | ||
2111 | mirrordir = os.path.join(self.tempdir, 'mirror') | ||
2112 | bb.utils.mkdirhier(mirrordir) | ||
2113 | os.replace(ud.localpath, os.path.join(mirrordir, os.path.basename(ud.localpath))) | ||
2114 | self.d.setVar('MIRRORS', 'https?$://.*/.* file://%s/\n' % mirrordir) | ||
2115 | # Update the resolved url to an invalid url | ||
2116 | with open(ud.resolvefile, 'r') as f: | ||
2117 | url = f.read() | ||
2118 | uri = URI(url) | ||
2119 | uri.path = '/invalid' | ||
2120 | with open(ud.resolvefile, 'w') as f: | ||
2121 | f.write(str(uri)) | ||
2122 | # Fetch again | ||
2123 | self.assertFalse(os.path.exists(ud.localpath)) | ||
2124 | fetcher.download() | ||
2125 | self.assertTrue(os.path.exists(ud.localpath)) | ||
2126 | |||
2127 | @skipIfNoNpm() | ||
2128 | @skipIfNoNetwork() | ||
2129 | def test_npm_destsuffix_downloadfilename(self): | ||
2130 | url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0;destsuffix=foo/bar;downloadfilename=foo-bar.tgz' | ||
2131 | fetcher = bb.fetch.Fetch([url], self.d) | ||
2132 | fetcher.download() | ||
2133 | self.assertTrue(os.path.exists(os.path.join(self.dldir, 'foo-bar.tgz'))) | ||
2134 | fetcher.unpack(self.unpackdir) | ||
2135 | unpackdir = os.path.join(self.unpackdir, 'foo', 'bar') | ||
2136 | self.assertTrue(os.path.exists(os.path.join(unpackdir, 'package.json'))) | ||
2137 | |||
2138 | def test_npm_no_network_no_tarball(self): | ||
2139 | url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0' | ||
2140 | self.d.setVar('BB_NO_NETWORK', '1') | ||
2141 | fetcher = bb.fetch.Fetch([url], self.d) | ||
2142 | with self.assertRaises(bb.fetch2.NetworkAccess): | ||
2143 | fetcher.download() | ||
2144 | |||
2145 | @skipIfNoNpm() | ||
2146 | @skipIfNoNetwork() | ||
2147 | def test_npm_no_network_with_tarball(self): | ||
2148 | url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0' | ||
2149 | # Fetch once to get a tarball | ||
2150 | fetcher = bb.fetch.Fetch([url], self.d) | ||
2151 | fetcher.download() | ||
2152 | # Disable network access | ||
2153 | self.d.setVar('BB_NO_NETWORK', '1') | ||
2154 | # Fetch again | ||
2155 | fetcher.download() | ||
2156 | fetcher.unpack(self.unpackdir) | ||
2157 | unpackdir = os.path.join(self.unpackdir, 'npm') | ||
2158 | self.assertTrue(os.path.exists(os.path.join(unpackdir, 'package.json'))) | ||
2159 | |||
2160 | @skipIfNoNpm() | ||
2161 | @skipIfNoNetwork() | ||
2162 | def test_npm_registry_alternate(self): | ||
2163 | url = 'npm://registry.freajs.org;package=@savoirfairelinux/node-server-example;version=1.0.0' | ||
2164 | fetcher = bb.fetch.Fetch([url], self.d) | ||
2165 | fetcher.download() | ||
2166 | fetcher.unpack(self.unpackdir) | ||
2167 | unpackdir = os.path.join(self.unpackdir, 'npm') | ||
2168 | self.assertTrue(os.path.exists(os.path.join(unpackdir, 'package.json'))) | ||
2169 | |||
2170 | @skipIfNoNpm() | ||
2171 | @skipIfNoNetwork() | ||
2172 | def test_npm_version_latest(self): | ||
2173 | url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=latest' | ||
2174 | fetcher = bb.fetch.Fetch([url], self.d) | ||
2175 | fetcher.download() | ||
2176 | fetcher.unpack(self.unpackdir) | ||
2177 | unpackdir = os.path.join(self.unpackdir, 'npm') | ||
2178 | self.assertTrue(os.path.exists(os.path.join(unpackdir, 'package.json'))) | ||
2179 | |||
2180 | @skipIfNoNpm() | ||
2181 | @skipIfNoNetwork() | ||
2182 | def test_npm_registry_invalid(self): | ||
2183 | url = 'npm://registry.invalid.org;package=@savoirfairelinux/node-server-example;version=1.0.0' | ||
2184 | fetcher = bb.fetch.Fetch([url], self.d) | ||
2185 | with self.assertRaises(bb.fetch2.FetchError): | ||
2186 | fetcher.download() | ||
2187 | |||
2188 | @skipIfNoNpm() | ||
2189 | @skipIfNoNetwork() | ||
2190 | def test_npm_package_invalid(self): | ||
2191 | url = 'npm://registry.npmjs.org;package=@savoirfairelinux/invalid;version=1.0.0' | ||
2192 | fetcher = bb.fetch.Fetch([url], self.d) | ||
2193 | with self.assertRaises(bb.fetch2.FetchError): | ||
2194 | fetcher.download() | ||
2195 | |||
2196 | @skipIfNoNpm() | ||
2197 | @skipIfNoNetwork() | ||
2198 | def test_npm_version_invalid(self): | ||
2199 | url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=invalid' | ||
2200 | with self.assertRaises(bb.fetch2.ParameterError): | ||
2201 | fetcher = bb.fetch.Fetch([url], self.d) | ||
2202 | |||
2203 | @skipIfNoNpm() | ||
2204 | @skipIfNoNetwork() | ||
2205 | def test_npm_registry_none(self): | ||
2206 | url = 'npm://;package=@savoirfairelinux/node-server-example;version=1.0.0' | ||
2207 | with self.assertRaises(bb.fetch2.MalformedUrl): | ||
2208 | fetcher = bb.fetch.Fetch([url], self.d) | ||
2209 | |||
2210 | @skipIfNoNpm() | ||
2211 | @skipIfNoNetwork() | ||
2212 | def test_npm_package_none(self): | ||
2213 | url = 'npm://registry.npmjs.org;version=1.0.0' | ||
2214 | with self.assertRaises(bb.fetch2.MissingParameterError): | ||
2215 | fetcher = bb.fetch.Fetch([url], self.d) | ||
2216 | |||
2217 | @skipIfNoNpm() | ||
2218 | @skipIfNoNetwork() | ||
2219 | def test_npm_version_none(self): | ||
2220 | url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example' | ||
2221 | with self.assertRaises(bb.fetch2.MissingParameterError): | ||
2222 | fetcher = bb.fetch.Fetch([url], self.d) | ||