diff --git a/extensions/commands/art/cmd_build_info.py b/extensions/commands/art/cmd_build_info.py index ca54fe9..896672c 100644 --- a/extensions/commands/art/cmd_build_info.py +++ b/extensions/commands/art/cmd_build_info.py @@ -389,7 +389,9 @@ def build_info_create(conan_api: ConanAPI, parser, subparser, *args): data = load_json(args.json) # remove the 'conanfile' node - data["graph"]["nodes"].pop("0") + # remove only if package revision == null that means that the node has no binaries + if not data["graph"]["nodes"]["0"]["prev"]: + data["graph"]["nodes"].pop("0") bi = _BuildInfo(data, args.build_name, args.build_number, args.repository, build_url=args.build_url, with_dependencies=args.with_dependencies, diff --git a/tests/test_artifactory_commands.py b/tests/test_artifactory_commands.py index 2142856..a774f47 100644 --- a/tests/test_artifactory_commands.py +++ b/tests/test_artifactory_commands.py @@ -470,3 +470,22 @@ def test_add_server_token(): out_add = run(f'conan art:server add server1 {server_url} --user="{server_user}" --token="{token}"') assert f"Server 'server1' ({server_url}) added successfully" in out_add + + +@pytest.mark.requires_credentials +def test_build_info_create_exppkg(): + build_name = "mybuildinfo" + build_number = "1" + + # Configure Artifactory server and credentials + run(f'conan art:server add artifactory {os.getenv("ART_URL")} --user="{os.getenv("CONAN_LOGIN_USERNAME_EXTENSIONS_STG")}" --password="{os.getenv("CONAN_PASSWORD_EXTENSIONS_STG")}"') + + # Generate recipe to work with + run("conan new basic -d name=mypkg_ext -d version=1.0 --force") + + # Create release packages & build info and upload them + run("conan export-pkg . --format json -s build_type=Release > create_release.json") + run("conan upload mypkg_ext/1.0 -c -r extensions-stg") + out = run(f'conan art:build-info create create_release.json {build_name}_release {build_number} --server=artifactory extensions-stg') + build_info = json.loads(out) + assert len(build_info['modules']) == 2