Skip to content

Commit f9d8f3f

Browse files
authored
Add art:promote tests for timestamps (#173)
* Add timestamp tests for art:promote * Add timestamp tests for art:promote * Fix revision
1 parent 02b03e1 commit f9d8f3f

File tree

2 files changed

+50
-9
lines changed

2 files changed

+50
-9
lines changed

tests/conftest.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,13 @@
77
def pytest_collection_modifyitems(items):
88
for item in items:
99
if "requires_credentials" in item.keywords:
10-
if (
11-
not os.getenv("CONAN_LOGIN_USERNAME_EXTENSIONS_PROD")
12-
or not os.getenv("CONAN_PASSWORD_EXTENSIONS_PROD")
13-
or not os.getenv("CONAN_LOGIN_USERNAME_EXTENSIONS_STG")
14-
or not os.getenv("CONAN_PASSWORD_EXTENSIONS_STG")
15-
or not os.getenv("ART_URL")
16-
):
17-
item.add_marker(pytest.mark.skip(reason="Missing required credentials environment variables"))
18-
print(f"Skipping test {item.nodeid}. Missing required credentials environment variables.")
10+
for env in ["CONAN_LOGIN_USERNAME_EXTENSIONS_PROD", "CONAN_PASSWORD_EXTENSIONS_PROD",
11+
"CONAN_LOGIN_USERNAME_EXTENSIONS_STG", "CONAN_PASSWORD_EXTENSIONS_STG",
12+
"ART_URL"]:
13+
if not os.getenv(env):
14+
item.add_marker(pytest.mark.skip(reason=f"Missing required credentials environment variable {env}."))
15+
print(f"Skipping test {item.nodeid}. Missing required credentials environment variable {env}")
16+
break
1917

2018
ALL_OS = set("darwin linux win32".split())
2119

tests/test_artifactory_commands.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import os
22
import json
33
import tempfile
4+
import textwrap
45

56
from tools import run, save
67
from conan.tools.scm import Version
@@ -473,3 +474,45 @@ def test_add_server_token():
473474
out_add = run(f'conan art:server add server1 {server_url} --user="{server_user}" --token="{token}"')
474475

475476
assert f"Server 'server1' ({server_url}) added successfully" in out_add
477+
478+
479+
@pytest.mark.requires_credentials
480+
def test_art_promote_timestamps():
481+
conanfile = textwrap.dedent("""
482+
from conan import ConanFile
483+
484+
class Pkg(ConanFile):
485+
name = "mypkg"
486+
version = "1.0"
487+
""")
488+
save("./conanfile.py", conanfile)
489+
490+
run("conan create .")
491+
out = run("conan list mypkg/1.0:*#* -f=json")
492+
local_list_json_out = json.loads(out)
493+
local_recipe_timestamp = local_list_json_out["Local Cache"]["mypkg/1.0"]["revisions"]["9d6b6bdeb9bb50a31acc8f970f562b3c"]["timestamp"]
494+
local_package_timestamp = local_list_json_out["Local Cache"]["mypkg/1.0"]["revisions"]["9d6b6bdeb9bb50a31acc8f970f562b3c"]["packages"]["da39a3ee5e6b4b0d3255bfef95601890afd80709"]["revisions"]["0ba8627bd47edc3a501e8f0eb9a79e5e"]["timestamp"]
495+
run("conan upload mypkg/1.0 -c -r extensions-stg")
496+
497+
out = run("conan list mypkg/1.0:*#* -r=extensions-stg -f=json", stderr=None)
498+
remote_stg_list_json_out = json.loads(out)
499+
remote_stg_recipe_timestamp = remote_stg_list_json_out["extensions-stg"]["mypkg/1.0"]["revisions"]["9d6b6bdeb9bb50a31acc8f970f562b3c"]["timestamp"]
500+
remote_stg_package_timestamp = remote_stg_list_json_out["extensions-stg"]["mypkg/1.0"]["revisions"]["9d6b6bdeb9bb50a31acc8f970f562b3c"]["packages"]["da39a3ee5e6b4b0d3255bfef95601890afd80709"]["revisions"]["0ba8627bd47edc3a501e8f0eb9a79e5e"]["timestamp"]
501+
502+
assert local_recipe_timestamp != remote_stg_recipe_timestamp
503+
assert local_package_timestamp != remote_stg_package_timestamp
504+
505+
save("pkglist.json", out)
506+
507+
art_url = os.getenv("ART_URL")
508+
art_user = os.getenv("CONAN_LOGIN_USERNAME_EXTENSIONS_PROD")
509+
art_password = os.getenv("CONAN_PASSWORD_EXTENSIONS_PROD")
510+
run(f"conan art:promote pkglist.json --from=extensions-stg --to=extensions-prod --url={art_url} --user={art_user} --password={art_password}")
511+
512+
out = run("conan list mypkg/1.0:*#* -r=extensions-prod -f=json", stderr=None)
513+
remote_prod_list_json_out = json.loads(out)
514+
remote_prod_recipe_timestamp = remote_prod_list_json_out["extensions-prod"]["mypkg/1.0"]["revisions"]["9d6b6bdeb9bb50a31acc8f970f562b3c"]["timestamp"]
515+
remote_prod_package_timestamp = remote_prod_list_json_out["extensions-prod"]["mypkg/1.0"]["revisions"]["9d6b6bdeb9bb50a31acc8f970f562b3c"]["packages"]["da39a3ee5e6b4b0d3255bfef95601890afd80709"]["revisions"]["0ba8627bd47edc3a501e8f0eb9a79e5e"]["timestamp"]
516+
517+
assert remote_stg_recipe_timestamp == remote_prod_recipe_timestamp
518+
assert remote_stg_package_timestamp == remote_prod_package_timestamp

0 commit comments

Comments
 (0)