13
13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
14
# See the License for the specific language governing permissions and
15
15
# limitations under the License.
16
-
16
+ import git
17
17
import mock
18
18
import json
19
19
import os
29
29
from .config import Config , merge_dict
30
30
from .tile_metadata import TileMetadata
31
31
from . import template
32
+ from types import SimpleNamespace
33
+
34
+
35
+ class MockRepo :
36
+ argument = []
37
+
38
+ def __init__ (self , x ):
39
+ self .argument .append (x )
40
+ self .
remotes = [
SimpleNamespace (
urls = [
"[email protected] :org/repo.git" ],
name = "origin" )]
41
+ self .head = SimpleNamespace (commit = SimpleNamespace (hexsha = "some-sha" ))
32
42
33
43
@contextmanager
34
44
def capture_output ():
@@ -61,28 +71,37 @@ def tearDown(self):
61
71
self .pre_start_file .close ()
62
72
63
73
64
- @mock .patch ('tile_generator.config.Config.read_history' )
74
+ def side_effects (* args , ** kwargs ):
75
+ side_effects .captured_args = args
76
+ side_effects .captured_kwargs = kwargs
77
+
78
+ @mock .patch ('git.Repo' , MockRepo )
79
+ @mock .patch ('tile_generator.config._find_git_root' )
65
80
@mock .patch ('tile_generator.config._base64_img' )
81
+ @mock .patch ('tile_generator.config.Config.read_history' )
66
82
class TestUltimateForm (BaseTest ):
67
- def test_diff_final_config_obj (self , mock_read_history , mock_base64_img ):
83
+ def test_diff_final_config_obj (self , mock_read_history , mock_base64_img , mock__find_git_root ):
68
84
test_path = os .path .dirname (__file__ )
69
85
cfg_file_path = os .path .join (test_path , '../sample/tile.yml' )
86
+ mock__find_git_root .return_value = "/fake/git/root"
70
87
71
88
with mock .patch ('tile_generator.config.CONFIG_FILE' , cfg_file_path ):
72
89
cfg = self .config .read ()
73
90
cfg .set_version (None )
91
+ cfg .set_git_remotes (True )
74
92
cfg .set_verbose (False )
75
93
cfg .set_sha1 (False )
76
94
cfg .set_cache (None )
77
-
95
+ cfg .set_git_sha (True )
96
+
78
97
with open (test_path + '/test_config_generated_output.json' , 'w' ) as f :
79
98
generated_json = json .dumps (cfg , sort_keys = True , indent = 2 )
80
99
f .write (generated_json )
81
100
generated_output = json .loads (generated_json )
82
101
83
102
with open (test_path + '/test_config_expected_output.json' , 'r' ) as f :
84
103
expected_output = json .load (f )
85
-
104
+
86
105
# Change the paths to files to be consistent
87
106
self .fix_path (generated_output )
88
107
self .fix_path (expected_output )
@@ -97,10 +116,14 @@ def test_diff_final_config_obj(self, mock_read_history, mock_base64_img):
97
116
expected = json .dumps (expected_output , indent = 2 ).split ('\n ' )
98
117
generated = json .dumps (generated_output , indent = 2 ).split ('\n ' )
99
118
119
+ self .assertGreater (len (MockRepo .argument ), 0 )
120
+ self .assertEqual (MockRepo .argument [- 1 ], '/fake/git/root' )
121
+
100
122
self .assertEqual (len (expected ), len (generated ))
101
123
for line in expected :
102
124
self .assertIn (line , generated )
103
125
126
+
104
127
def fix_path (self , obj ):
105
128
for release in obj ['releases' ].values ():
106
129
for package in release .get ('packages' , []):
@@ -169,7 +192,7 @@ def deep_comparer(self, expected, given, path):
169
192
'Expected to have the value:\n %s\n However, instead got:\n %s' % (expected , given )))
170
193
171
194
# mock_read_history, mock_base64_img are not used in this method
172
- def test_metadata_diff (self , mock_read_history , mock_base64_img ):
195
+ def test_metadata_diff (self , mock_read_history , mock_base64_img , mock__find_git_root ):
173
196
test_path = os .path .dirname (__file__ )
174
197
cfg_file_path = os .path .join (test_path , '../sample/tile.yml' )
175
198
0 commit comments