|
1 | 1 | import os |
2 | 2 | import json |
3 | 3 | import tempfile |
| 4 | +import textwrap |
4 | 5 |
|
5 | 6 | from tools import run, save |
6 | 7 | from conan.tools.scm import Version |
@@ -473,3 +474,45 @@ def test_add_server_token(): |
473 | 474 | out_add = run(f'conan art:server add server1 {server_url} --user="{server_user}" --token="{token}"') |
474 | 475 |
|
475 | 476 | 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