From 1c9ccacbee2ae5ded2b3551b9f2e1ad8d124693d Mon Sep 17 00:00:00 2001 From: memsharded Date: Wed, 3 Apr 2024 22:43:00 +0200 Subject: [PATCH 1/2] new test_package_folder attribute --- conan/cli/commands/create.py | 3 +- .../layout/test_layout_generate.py | 30 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/conan/cli/commands/create.py b/conan/cli/commands/create.py index 36b96788264..d8afa8d95a5 100644 --- a/conan/cli/commands/create.py +++ b/conan/cli/commands/create.py @@ -40,7 +40,6 @@ def create(conan_api, parser, *args): cwd = os.getcwd() path = conan_api.local.get_conanfile_path(args.path, cwd, py=True) - test_conanfile_path = _get_test_conanfile_path(args.test_folder, path) overrides = eval(args.lockfile_overrides) if args.lockfile_overrides else None lockfile = conan_api.lockfile.get_lockfile(lockfile=args.lockfile, conanfile_path=path, @@ -98,6 +97,8 @@ def create(conan_api, parser, *args): lockfile = conan_api.lockfile.update_lockfile(lockfile, deps_graph, args.lockfile_packages, clean=args.lockfile_clean) + test_package_folder = getattr(conanfile, "test_package_folder", None) + test_conanfile_path = _get_test_conanfile_path(args.test_folder or test_package_folder, path) # If the user provide --test-missing and the binary was not built from source, skip test_package if args.test_missing and deps_graph.root.dependencies\ and deps_graph.root.dependencies[0].dst.binary != BINARY_BUILD: diff --git a/conans/test/integration/layout/test_layout_generate.py b/conans/test/integration/layout/test_layout_generate.py index 7548f078882..0fdbbe8ef46 100644 --- a/conans/test/integration/layout/test_layout_generate.py +++ b/conans/test/integration/layout/test_layout_generate.py @@ -125,3 +125,33 @@ def test(self): "test_package/conanfile.py": conanfile}) c.run("create .") assert f"build_folder in test_package: True" in c.out + + +class TestCustomTestPackage: + def test_custom_test_package(self): + c = TestClient(light=True) + conanfile = GenConanfile("pkg", "0.1").with_class_attribute('test_package_folder="mytest"') + c.save({"conanfile.py": conanfile, + "mytest/conanfile.py": GenConanfile().with_test("self.output.info('MYTEST!')"), + "mytest2/conanfile.py": GenConanfile().with_test("self.output.info('MYTEST2!')")}) + c.run("create .") + assert "MYTEST!" in c.out + c.run("create . -tf=mytest2") + assert "MYTEST2!" in c.out + + def test_custom_test_package_subfolder(self): + c = TestClient(light=True) + conanfile = GenConanfile("pkg", "0.1").with_class_attribute('test_package_folder="my/test"') + c.save({"pkg/conanfile.py": conanfile, + "pkg/my/test/conanfile.py": GenConanfile().with_test("self.output.info('MYTEST!')")}) + c.run("create pkg") + assert "MYTEST!" in c.out + + def test_custom_test_package_sibling(self): + c = TestClient(light=True) + conanfile = GenConanfile("pkg", "0.1").with_class_attribute( + 'test_package_folder="../my/test"') + c.save({"pkg/conan/conanfile.py": conanfile, + "pkg/my/test/conanfile.py": GenConanfile().with_test("self.output.info('MYTEST!')")}) + c.run("create pkg/conan") + assert "MYTEST!" in c.out From 50cbb1dde966c348d9525ceb14f870a51c844d07 Mon Sep 17 00:00:00 2001 From: memsharded Date: Thu, 4 Apr 2024 19:29:32 +0200 Subject: [PATCH 2/2] fix --- conan/cli/commands/create.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/conan/cli/commands/create.py b/conan/cli/commands/create.py index d8afa8d95a5..d5b2e186eea 100644 --- a/conan/cli/commands/create.py +++ b/conan/cli/commands/create.py @@ -97,8 +97,9 @@ def create(conan_api, parser, *args): lockfile = conan_api.lockfile.update_lockfile(lockfile, deps_graph, args.lockfile_packages, clean=args.lockfile_clean) - test_package_folder = getattr(conanfile, "test_package_folder", None) - test_conanfile_path = _get_test_conanfile_path(args.test_folder or test_package_folder, path) + test_package_folder = getattr(conanfile, "test_package_folder", None) \ + if args.test_folder is None else args.test_folder + test_conanfile_path = _get_test_conanfile_path(test_package_folder, path) # If the user provide --test-missing and the binary was not built from source, skip test_package if args.test_missing and deps_graph.root.dependencies\ and deps_graph.root.dependencies[0].dst.binary != BINARY_BUILD: