summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDoug Jacobsen <dwjacobsen@google.com>2022-03-20 02:13:00 -0600
committerGitHub <noreply@github.com>2022-03-20 01:13:00 -0700
commit9b0d5cbabf5f96aada9f1b22f73dcbc08e19d250 (patch)
tree7423405db6983c11deddbee950cd7378138c6d5b /lib
parent26552533be04e83e66be2c28e0eb5011cb54e8fa (diff)
downloadspack-9b0d5cbabf5f96aada9f1b22f73dcbc08e19d250.tar.gz
spack-9b0d5cbabf5f96aada9f1b22f73dcbc08e19d250.tar.bz2
spack-9b0d5cbabf5f96aada9f1b22f73dcbc08e19d250.tar.xz
spack-9b0d5cbabf5f96aada9f1b22f73dcbc08e19d250.zip
Enable GCS urls as valid (#29592)
* Add tests to ensure google cloud storage urls work as mirrors This commit adds two tests to track that GCS buckets can work as mirrors, and can be parsed as valid URLs. Currently, gs:// format URLs are not correctly parsed. * Fix URL parsing for GCS buckets This commit adds GCS bucket URLs as valid URLs.
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/test/cmd/mirror.py7
-rw-r--r--lib/spack/spack/test/util/util_url.py5
-rw-r--r--lib/spack/spack/util/url.py2
3 files changed, 13 insertions, 1 deletions
diff --git a/lib/spack/spack/test/cmd/mirror.py b/lib/spack/spack/test/cmd/mirror.py
index 0027b4ae2b..e2d936c0a3 100644
--- a/lib/spack/spack/test/cmd/mirror.py
+++ b/lib/spack/spack/test/cmd/mirror.py
@@ -210,6 +210,13 @@ def test_mirror_crud(tmp_scope, capsys):
output = mirror('list', '--scope', tmp_scope)
assert 'No mirrors configured' in output
+ # Test GCS Mirror
+ mirror('add', '--scope', tmp_scope,
+ 'mirror', 'gs://spack-test')
+
+ output = mirror('remove', '--scope', tmp_scope, 'mirror')
+ assert 'Removed mirror' in output
+
def test_mirror_nonexisting(tmp_scope):
with pytest.raises(SpackCommandError):
diff --git a/lib/spack/spack/test/util/util_url.py b/lib/spack/spack/test/util/util_url.py
index 8e22c99164..971375d9cc 100644
--- a/lib/spack/spack/test/util/util_url.py
+++ b/lib/spack/spack/test/util/util_url.py
@@ -59,6 +59,11 @@ def test_url_parse():
assert(parsed.netloc == 'path')
assert(parsed.path == '/to/resource')
+ parsed = url_util.parse('gs://path/to/resource')
+ assert(parsed.scheme == 'gs')
+ assert(parsed.netloc == 'path')
+ assert(parsed.path == '/to/resource')
+
spack_root = spack.paths.spack_root
parsed = url_util.parse('file://$spack')
assert(parsed.scheme == 'file')
diff --git a/lib/spack/spack/util/url.py b/lib/spack/spack/util/url.py
index d63498674b..4d511c29d2 100644
--- a/lib/spack/spack/util/url.py
+++ b/lib/spack/spack/util/url.py
@@ -343,7 +343,7 @@ def parse_git_url(url):
def require_url_format(url):
- ut = re.search(r'^(file://|http://|https://|ftp://|s3://|/)', url)
+ ut = re.search(r'^(file://|http://|https://|ftp://|s3://|gs://|/)', url)
assert ut is not None