8000 [tests] Add tests for library recipe · kivy/python-for-android@65ac6bc · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 65ac6bc

Browse files
committed
[tests] Add tests for library recipe
1 parent 8b93b7b commit 65ac6bc

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

tests/test_recipe.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
from backports import tempfile
77
from pythonforandroid.build import Context
88
from pythonforandroid.recipe import Recipe, import_recipe
9+
from pythonforandroid.archs import ArchAarch_64
10+
from pythonforandroid.bootstrap import Bootstrap
11+
from test_bootstrap import BaseClassSetupBootstrap
912

1013

1114
def patch_logger(level):
@@ -122,3 +125,55 @@ def test_download(self):
122125
'Downloading test_recipe from '
123126
'https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz')]
124127
assert m_touch.call_count == 1
128+
129+
130+
class TestLibraryRecipe(BaseClassSetupBootstrap, unittest.TestCase):
131+
def setUp(self):
132+
"""
133+
Initialize a Context with a Bootstrap and a Distribution to properly
134+
test an library recipe, to do so we reuse `BaseClassSetupBootstrap`
135+
"""
136+
super(TestLibraryRecipe, self).setUp()
137+
self.ctx.bootstrap = Bootstrap().get_bootstrap('sdl2', self.ctx)
138+
self.setUp_distribution_with_bootstrap(self.ctx.bootstrap)
139+
140+
def test_built_libraries(self):
141+
"""The openssl recipe is a library recipe, so it should have set the
142+
attribute `built_libraries`, but not the case of `pyopenssl` recipe.
143+
"""
144+
recipe = Recipe.get_recipe('openssl', self.ctx)
145+
self.assertTrue(recipe.built_libraries)
146+
147+
recipe = Recipe.get_recipe('pyopenssl', self.ctx)
148+
self.assertFalse(recipe.built_libraries)
149+
150+
@mock.patch('pythonforandroid.recipe.exists')
151+
def test_should_build(self, mock_exists):
152+
arch = ArchAarch_64(self.ctx)
153+
recipe = Recipe.get_recipe('openssl', self.ctx)
154+
recipe.ctx = self.ctx
155+
self.assertFalse(recipe.should_build(arch))
156+
157+
mock_exists.return_value = False
158+
self.assertTrue(recipe.should_build(arch))
159+
160+
@mock.patch('pythonforandroid.recipe.Recipe.get_libraries')
161+
@mock.patch('pythonforandroid.recipe.Recipe.install_libs')
162+
def test_do_install_libs(self, mock_install_libs, mock_get_libraries):
163+
mock_get_libraries.return_value = {
164+
'/build_lib/libsample1.so',
165+
'/build_lib/libsample2.so',
166+
}
167+
self.ctx.recipe_build_order = [
168+
"hostpython3",
169+
"openssl",
170+
"python3",
171+
"sdl2",
172+
"kivy",
173+
]
174+
arch = ArchAarch_64(self.ctx)
175+
recipe = Recipe.get_recipe('openssl', self.ctx)
176+
recipe.do_install_libs(arch)
177+
mock_install_libs.assert_called_once_with(
178+
arch, *mock_get_libraries.return_value
179+
)

0 commit comments

Comments
 (0)
0