From 0092d4103db8702dd4c034004359fd8b46ebcd92 Mon Sep 17 00:00:00 2001 From: jgsogo Date: Thu, 25 Mar 2021 11:08:14 +0100 Subject: [PATCH] add unittesting --- conan/tools/cmake/cmake.py | 4 +- .../tools/cmake/test_cmake_cmd_line_args.py | 54 +++++++++++++++++++ conans/test/unittests/tools/gnu/__init__.py | 0 .../tools/gnu/test_make_jobs_cmd_line_arg.py | 53 ++++++++++++++++++ conans/test/unittests/tools/meson/__init__.py | 0 .../test/unittests/tools/meson/test_meson.py | 28 ++++++++++ .../meson/test_ninja_jobs_cmd_line_arg.py | 53 ++++++++++++++++++ .../unittests/tools/microsoft/__init__.py | 0 .../unittests/tools/microsoft/test_msbuild.py | 27 ++++++++++ ...test_msbuild_max_cpu_count_cmd_line_arg.py | 53 ++++++++++++++++++ 10 files changed, 270 insertions(+), 2 deletions(-) create mode 100644 conans/test/unittests/tools/cmake/test_cmake_cmd_line_args.py create mode 100644 conans/test/unittests/tools/gnu/__init__.py create mode 100644 conans/test/unittests/tools/gnu/test_make_jobs_cmd_line_arg.py create mode 100644 conans/test/unittests/tools/meson/__init__.py create mode 100644 conans/test/unittests/tools/meson/test_meson.py create mode 100644 conans/test/unittests/tools/meson/test_ninja_jobs_cmd_line_arg.py create mode 100644 conans/test/unittests/tools/microsoft/__init__.py create mode 100644 conans/test/unittests/tools/microsoft/test_msbuild.py create mode 100644 conans/test/unittests/tools/microsoft/test_msbuild_max_cpu_count_cmd_line_arg.py diff --git a/conan/tools/cmake/cmake.py b/conan/tools/cmake/cmake.py index 494ef8e0f59..43c216c91a3 100644 --- a/conan/tools/cmake/cmake.py +++ b/conan/tools/cmake/cmake.py @@ -29,12 +29,12 @@ def _cmake_cmd_line_args(conanfile, generator, parallel): return args # Arguments related to parallel - if "MakeFiles" in generator and "NMake" not in generator and parallel: + if "Makefiles" in generator and "NMake" not in generator and parallel: njobs = make_jobs_cmd_line_arg(conanfile) if njobs: args.append(njobs) - if "Ninja" in generator and "NMake" not in generator: + if "Ninja" in generator and "NMake" not in generator and parallel: njobs = ninja_jobs_cmd_line_arg(conanfile) if njobs: args.append(njobs) diff --git a/conans/test/unittests/tools/cmake/test_cmake_cmd_line_args.py b/conans/test/unittests/tools/cmake/test_cmake_cmd_line_args.py new file mode 100644 index 00000000000..ba40251dc7e --- /dev/null +++ b/conans/test/unittests/tools/cmake/test_cmake_cmd_line_args.py @@ -0,0 +1,54 @@ +import textwrap + +import pytest + +from conan.tools.cmake.cmake import _cmake_cmd_line_args +from conans.model.conf import ConfDefinition +from conans.test.utils.mocks import ConanFileMock + + +@pytest.fixture +def conanfile(): + c = ConfDefinition() + c.loads(textwrap.dedent("""\ + tools.gnu.make:jobs=40 + tools.ninja:jobs=30 + tools.microsoft.msbuild:max_cpu_count=20 + tools.build:processes=10 + """)) + + conanfile = ConanFileMock() + conanfile.conf = c.get_conanfile_conf(None) + return conanfile + + +def test_no_generator(conanfile): + args = _cmake_cmd_line_args(conanfile, None, parallel=True) + assert not len(args) + + +def test_makefiles(conanfile): + args = _cmake_cmd_line_args(conanfile, 'Unix Makefiles', parallel=True) + assert args == ['-j40'] + + args = _cmake_cmd_line_args(conanfile, 'Unix Makefiles', parallel=False) + assert not len(args) + + args = _cmake_cmd_line_args(conanfile, 'NMake Makefiles', parallel=True) + assert not len(args) + + +def test_ninja(conanfile): + args = _cmake_cmd_line_args(conanfile, 'Ninja', parallel=True) + assert ['-j30'] == args + + args = _cmake_cmd_line_args(conanfile, 'Ninja', parallel=False) + assert not len(args) + + +def test_visual_studio(conanfile): + args = _cmake_cmd_line_args(conanfile, 'Visual Studio 16 2019', parallel=True) + assert ['/m:20'] == args + + args = _cmake_cmd_line_args(conanfile, 'Ninja', parallel=False) + assert not len(args) diff --git a/conans/test/unittests/tools/gnu/__init__.py b/conans/test/unittests/tools/gnu/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/conans/test/unittests/tools/gnu/test_make_jobs_cmd_line_arg.py b/conans/test/unittests/tools/gnu/test_make_jobs_cmd_line_arg.py new file mode 100644 index 00000000000..b2a463641c3 --- /dev/null +++ b/conans/test/unittests/tools/gnu/test_make_jobs_cmd_line_arg.py @@ -0,0 +1,53 @@ +import textwrap + +from conan.tools.gnu.make import make_jobs_cmd_line_arg +from conans.model.conf import ConfDefinition +from conans.test.utils.mocks import ConanFileMock + + +def test_tools_build(): + c = ConfDefinition() + c.loads(textwrap.dedent("""\ + tools.build:processes=10 + """)) + + conanfile = ConanFileMock() + conanfile.conf = c.get_conanfile_conf(None) + njobs = make_jobs_cmd_line_arg(conanfile) + assert njobs == "-j10" + + +def test_tools_gnu_make(): + c = ConfDefinition() + c.loads(textwrap.dedent("""\ + tools.gnu.make:jobs=23 + """)) + + conanfile = ConanFileMock() + conanfile.conf = c.get_conanfile_conf(None) + njobs = make_jobs_cmd_line_arg(conanfile) + assert njobs == "-j23" + + +def test_both_values(): + c = ConfDefinition() + c.loads(textwrap.dedent("""\ + tools.gnu.make:jobs=23 + tools.build:processes=10 + """)) + + conanfile = ConanFileMock() + conanfile.conf = c.get_conanfile_conf(None) + njobs = make_jobs_cmd_line_arg(conanfile) + assert njobs == "-j23" + + +def test_none(): + c = ConfDefinition() + c.loads(textwrap.dedent("""\ + """)) + + conanfile = ConanFileMock() + conanfile.conf = c.get_conanfile_conf(None) + njobs = make_jobs_cmd_line_arg(conanfile) + assert njobs is None diff --git a/conans/test/unittests/tools/meson/__init__.py b/conans/test/unittests/tools/meson/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/conans/test/unittests/tools/meson/test_meson.py b/conans/test/unittests/tools/meson/test_meson.py new file mode 100644 index 00000000000..364157f479d --- /dev/null +++ b/conans/test/unittests/tools/meson/test_meson.py @@ -0,0 +1,28 @@ +import textwrap + +from conan.tools.meson import Meson +from conans.model.conf import ConfDefinition +from conans.test.utils.mocks import ConanFileMock, MockSettings + + +def test_meson_build(): + c = ConfDefinition() + c.loads(textwrap.dedent("""\ + tools.ninja:jobs=23 + tools.build:processes=10 + """)) + + settings = MockSettings({"build_type": "Release", + "compiler": "gcc", + "compiler.version": "7", + "os": "Linux", + "arch": "x86_64"}) + conanfile = ConanFileMock() + conanfile.settings = settings + conanfile.display_name = 'test' + conanfile.conf = c.get_conanfile_conf(None) + + meson = Meson(conanfile) + meson.build() + + assert '-j23' in str(conanfile.command) diff --git a/conans/test/unittests/tools/meson/test_ninja_jobs_cmd_line_arg.py b/conans/test/unittests/tools/meson/test_ninja_jobs_cmd_line_arg.py new file mode 100644 index 00000000000..278f50d8737 --- /dev/null +++ b/conans/test/unittests/tools/meson/test_ninja_jobs_cmd_line_arg.py @@ -0,0 +1,53 @@ +import textwrap + +from conan.tools.meson.meson import ninja_jobs_cmd_line_arg +from conans.model.conf import ConfDefinition +from conans.test.utils.mocks import ConanFileMock + + +def test_tools_build(): + c = ConfDefinition() + c.loads(textwrap.dedent("""\ + tools.build:processes=10 + """)) + + conanfile = ConanFileMock() + conanfile.conf = c.get_conanfile_conf(None) + njobs = ninja_jobs_cmd_line_arg(conanfile) + assert njobs == "-j10" + + +def test_tools_ning(): + c = ConfDefinition() + c.loads(textwrap.dedent("""\ + tools.ninja:jobs=23 + """)) + + conanfile = ConanFileMock() + conanfile.conf = c.get_conanfile_conf(None) + njobs = ninja_jobs_cmd_line_arg(conanfile) + assert njobs == "-j23" + + +def test_both_values(): + c = ConfDefinition() + c.loads(textwrap.dedent("""\ + tools.ninja:jobs=23 + tools.build:processes=10 + """)) + + conanfile = ConanFileMock() + conanfile.conf = c.get_conanfile_conf(None) + njobs = ninja_jobs_cmd_line_arg(conanfile) + assert njobs == "-j23" + + +def test_none(): + c = ConfDefinition() + c.loads(textwrap.dedent("""\ + """)) + + conanfile = ConanFileMock() + conanfile.conf = c.get_conanfile_conf(None) + njobs = ninja_jobs_cmd_line_arg(conanfile) + assert njobs is None diff --git a/conans/test/unittests/tools/microsoft/__init__.py b/conans/test/unittests/tools/microsoft/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/conans/test/unittests/tools/microsoft/test_msbuild.py b/conans/test/unittests/tools/microsoft/test_msbuild.py new file mode 100644 index 00000000000..28bbdcf94a2 --- /dev/null +++ b/conans/test/unittests/tools/microsoft/test_msbuild.py @@ -0,0 +1,27 @@ +import textwrap + +from conan.tools.microsoft import MSBuild +from conans.model.conf import ConfDefinition +from conans.test.utils.mocks import ConanFileMock, MockSettings + + +def test_meson_build(): + c = ConfDefinition() + c.loads(textwrap.dedent("""\ + tools.microsoft.msbuild:max_cpu_count=23 + tools.build:processes=10 + """)) + + settings = MockSettings({"build_type": "Release", + "compiler": "gcc", + "compiler.version": "7", + "os": "Linux", + "arch": "x86_64"}) + conanfile = ConanFileMock() + conanfile.settings = settings + conanfile.conf = c.get_conanfile_conf(None) + + msbuild = MSBuild(conanfile) + cmd = msbuild.command('project.sln') + + assert '/m:23' in cmd diff --git a/conans/test/unittests/tools/microsoft/test_msbuild_max_cpu_count_cmd_line_arg.py b/conans/test/unittests/tools/microsoft/test_msbuild_max_cpu_count_cmd_line_arg.py new file mode 100644 index 00000000000..95fd0452a5b --- /dev/null +++ b/conans/test/unittests/tools/microsoft/test_msbuild_max_cpu_count_cmd_line_arg.py @@ -0,0 +1,53 @@ +import textwrap + +from conan.tools.microsoft.msbuild import msbuild_max_cpu_count_cmd_line_arg +from conans.model.conf import ConfDefinition +from conans.test.utils.mocks import ConanFileMock + + +def test_tools_build(): + c = ConfDefinition() + c.loads(textwrap.dedent("""\ + tools.build:processes=10 + """)) + + conanfile = ConanFileMock() + conanfile.conf = c.get_conanfile_conf(None) + max_cpu_count = msbuild_max_cpu_count_cmd_line_arg(conanfile) + assert max_cpu_count == "/m:10" + + +def test_tools_ning(): + c = ConfDefinition() + c.loads(textwrap.dedent("""\ + tools.microsoft.msbuild:max_cpu_count=23 + """)) + + conanfile = ConanFileMock() + conanfile.conf = c.get_conanfile_conf(None) + max_cpu_count = msbuild_max_cpu_count_cmd_line_arg(conanfile) + assert max_cpu_count == "/m:23" + + +def test_both_values(): + c = ConfDefinition() + c.loads(textwrap.dedent("""\ + tools.microsoft.msbuild:max_cpu_count=23 + tools.build:processes=10 + """)) + + conanfile = ConanFileMock() + conanfile.conf = c.get_conanfile_conf(None) + max_cpu_count = msbuild_max_cpu_count_cmd_line_arg(conanfile) + assert max_cpu_count == "/m:23" + + +def test_none(): + c = ConfDefinition() + c.loads(textwrap.dedent("""\ + """)) + + conanfile = ConanFileMock() + conanfile.conf = c.get_conanfile_conf(None) + max_cpu_count = msbuild_max_cpu_count_cmd_line_arg(conanfile) + assert max_cpu_count is None