63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
import unittest
|
|
from unittest import mock
|
|
from tests.recipes.recipe_lib_test import BaseTestForMakeRecipe
|
|
|
|
|
|
class TestOpensslRecipe(BaseTestForMakeRecipe, unittest.TestCase):
|
|
"""
|
|
An unittest for recipe :mod:`~pythonforandroid.recipes.openssl`
|
|
"""
|
|
|
|
recipe_name = "openssl"
|
|
sh_command_calls = ["perl"]
|
|
|
|
@mock.patch("pythonforandroid.recipes.openssl.sh.patch")
|
|
@mock.patch("pythonforandroid.util.chdir")
|
|
@mock.patch("pythonforandroid.build.ensure_dir")
|
|
@mock.patch("pythonforandroid.archs.find_executable")
|
|
def test_build_arch(
|
|
self,
|
|
mock_find_executable,
|
|
mock_ensure_dir,
|
|
mock_current_directory,
|
|
mock_sh_patch,
|
|
):
|
|
# We overwrite the base test method because we need to mock a little
|
|
# more with this recipe (`sh.cp` and `sh.rm`)
|
|
super().test_build_arch()
|
|
# make sure that the mocked methods are actually called
|
|
mock_sh_patch.assert_called()
|
|
|
|
def test_versioned_url(self):
|
|
self.assertEqual(
|
|
self.recipe.url.format(url_version=self.recipe.url_version),
|
|
self.recipe.versioned_url,
|
|
)
|
|
|
|
def test_include_flags(self):
|
|
inc = self.recipe.include_flags(self.arch)
|
|
build_dir = self.recipe.get_build_dir(self.arch)
|
|
for i in {"include/internal", "include/openssl"}:
|
|
self.assertIn(f"-I{build_dir}/{i}", inc)
|
|
|
|
def test_link_flags(self):
|
|
build_dir = self.recipe.get_build_dir(self.arch)
|
|
openssl_version = self.recipe.version
|
|
self.assertEqual(
|
|
f" -L{build_dir} -lcrypto{openssl_version} -lssl{openssl_version}",
|
|
self.recipe.link_flags(self.arch),
|
|
)
|
|
|
|
def test_select_build_arch(self):
|
|
expected_build_archs = {
|
|
"armeabi": "android",
|
|
"armeabi-v7a": "android-arm",
|
|
"arm64-v8a": "android-arm64",
|
|
"x86": "android-x86",
|
|
"x86_64": "android-x86_64",
|
|
}
|
|
for arch in self.ctx.archs:
|
|
self.assertEqual(
|
|
expected_build_archs[arch.arch],
|
|
self.recipe.select_build_arch(arch),
|
|
)
|