forked from oppia/oppia
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup_test.py
More file actions
98 lines (81 loc) · 2.99 KB
/
setup_test.py
File metadata and controls
98 lines (81 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# Copyright 2022 The Oppia Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS-IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Unit tests for setup.py."""
from __future__ import annotations
import builtins
import os
import sys
from core import feconf
from core.tests import test_utils
from scripts import common
import setuptools
class SetupTests(test_utils.GenericTestBase):
"""Unit tests for setup.py."""
def test_setuptools_is_invoked_with_correct_parameters(self) -> None:
packages = '\n'.join(
[
'module1==2.1.2 \\',
' --hash=sha256:abcd1234',
'module2==3.2.3 \\',
' --hash=sha256:efgh5678',
'# This is a comment',
'module3==4.3.4',
'',
]
)
with open('dummy_requirements.txt', 'w', encoding='utf-8') as f:
f.write(packages)
dummy_file_object = open('dummy_requirements.txt', encoding='utf-8')
swap_open = self.swap_with_checks(
builtins,
'open',
lambda *unused_args, **unused_kwargs: dummy_file_object,
expected_args=(('requirements.txt',),),
)
# The expected packages should not include comments or hashes.
required_packages = [
'module1==2.1.2',
'module2==3.2.3',
'module3==4.3.4',
]
swap_setup = self.swap_with_checks(
setuptools,
'setup',
lambda **unused_kwargs: None,
expected_args=(),
expected_kwargs=[
{
'name': 'oppia-beam-job',
'version': feconf.OPPIA_VERSION,
'description': 'Oppia Apache Beam package',
'install_requires': required_packages,
'packages': setuptools.find_packages(),
'include_package_data': True,
}
],
)
dummy_path = [
path
for path in sys.path
if common.GOOGLE_CLOUD_SDK_HOME not in path
]
swap_path = self.swap(sys, 'path', dummy_path)
with swap_setup, swap_path, swap_open:
# Dirs defined in common.GOOGLE_CLOUD_SDK_HOME get added to
# sys.path when we run backend tests. We use a swap as we
# need to remove these dirs to import setup.
import setup
setup.main()
dummy_file_object.close()
os.remove('dummy_requirements.txt')