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
|
# Copyright 2011 Google Inc. All Rights Reserved.
"""Utilities for operations on files."""
from __future__ import print_function
import errno
import os
import shutil
import command_executer
class FileUtils(object):
"""Utilities for operations on files."""
_instance = None
DRY_RUN = False
@classmethod
def Configure(cls, dry_run):
cls.DRY_RUN = dry_run
def __new__(cls, *args, **kwargs):
if not cls._instance:
if cls.DRY_RUN:
cls._instance = super(FileUtils, cls).__new__(MockFileUtils, *args,
**kwargs)
else:
cls._instance = super(FileUtils, cls).__new__(cls, *args, **kwargs)
return cls._instance
def Md5File(self, filename, log_level='verbose', _block_size=2**10):
command = 'md5sum %s' % filename
ce = command_executer.GetCommandExecuter(log_level=log_level)
ret, out, _ = ce.RunCommandWOutput(command)
if ret:
raise RuntimeError('Could not run md5sum on: %s' % filename)
return out.strip().split()[0]
def CanonicalizeChromeOSRoot(self, chromeos_root):
chromeos_root = os.path.expanduser(chromeos_root)
if os.path.isdir(os.path.join(chromeos_root, 'chromite')):
return chromeos_root
else:
return None
def ChromeOSRootFromImage(self, chromeos_image):
chromeos_root = os.path.join(
os.path.dirname(chromeos_image), '../../../../..')
return self.CanonicalizeChromeOSRoot(chromeos_root)
def MkDirP(self, path):
try:
os.makedirs(path)
except OSError as exc:
if exc.errno == errno.EEXIST:
pass
else:
raise
def RmDir(self, path):
shutil.rmtree(path, ignore_errors=True)
def WriteFile(self, path, contents):
with open(path, 'wb') as f:
f.write(contents)
class MockFileUtils(FileUtils):
"""Mock class for file utilities."""
def Md5File(self, filename, log_level='verbose', _block_size=2**10):
return 'd41d8cd98f00b204e9800998ecf8427e'
def CanonicalizeChromeOSRoot(self, chromeos_root):
return '/tmp/chromeos_root'
def ChromeOSRootFromImage(self, chromeos_image):
return '/tmp/chromeos_root'
def RmDir(self, path):
pass
def MkDirP(self, path):
pass
def WriteFile(self, path, contents):
pass
|