def saved_state(self): return isolate.isolatedfile_to_state(self.isolated)
def test_chromium_split(self): # Create an .isolate file and a tree of random stuff. isolate_file = os.path.join( ROOT_DIR, 'tests', 'isolate', 'split.isolate') options = self._get_option(isolate_file) options.variables = { 'OS': isolate.get_flavor(), 'DEPTH': '.', 'PRODUCT_DIR': os.path.join('files1'), } complete_state = isolate.load_complete_state( options, os.path.join(ROOT_DIR, 'tests', 'isolate'), None, False) # By saving the files, it forces splitting the data up. complete_state.save_files() actual_isolated_master = isolate.trace_inputs.read_json( os.path.join(self.directory, 'foo.isolated')) expected_isolated_master = { u'command': [u'python', u'split.py'], u'files': { u'split.py': { u'm': 488, u'h': unicode(_sha1('tests', 'isolate', 'split.py')), u's': _size('tests', 'isolate', 'split.py'), }, }, u'includes': [ unicode(_sha1(os.path.join(self.directory, 'foo.0.isolated'))), unicode(_sha1(os.path.join(self.directory, 'foo.1.isolated'))), ], u'os': unicode(isolate.get_flavor()), u'relative_cwd': u'.', } self._cleanup_isolated(expected_isolated_master) self.assertEqual(expected_isolated_master, actual_isolated_master) actual_isolated_0 = isolate.trace_inputs.read_json( os.path.join(self.directory, 'foo.0.isolated')) expected_isolated_0 = { u'files': { os.path.join(u'test', 'data', 'foo.txt'): { u'm': 416, u'h': unicode(_sha1('tests', 'isolate', 'test', 'data', 'foo.txt')), u's': _size('tests', 'isolate', 'test', 'data', 'foo.txt'), }, }, u'os': unicode(isolate.get_flavor()), } self._cleanup_isolated(expected_isolated_0) self.assertEqual(expected_isolated_0, actual_isolated_0) actual_isolated_1 = isolate.trace_inputs.read_json( os.path.join(self.directory, 'foo.1.isolated')) expected_isolated_1 = { u'files': { os.path.join(u'files1', 'subdir', '42.txt'): { u'm': 416, u'h': unicode( _sha1('tests', 'isolate', 'files1', 'subdir', '42.txt')), u's': _size('tests', 'isolate', 'files1', 'subdir', '42.txt'), }, }, u'os': unicode(isolate.get_flavor()), } self._cleanup_isolated(expected_isolated_1) self.assertEqual(expected_isolated_1, actual_isolated_1) actual_saved_state = isolate.trace_inputs.read_json( isolate.isolatedfile_to_state(options.isolated)) isolated_base = unicode(os.path.basename(options.isolated)) expected_saved_state = { u'child_isolated_files': [ isolated_base[:-len('.isolated')] + '.0.isolated', isolated_base[:-len('.isolated')] + '.1.isolated', ], u'command': [u'python', u'split.py'], u'files': { os.path.join(u'files1', 'subdir', '42.txt'): { u'm': 416, u'h': unicode( _sha1('tests', 'isolate', 'files1', 'subdir', '42.txt')), u's': _size('tests', 'isolate', 'files1', 'subdir', '42.txt'), }, u'split.py': { u'm': 488, u'h': unicode(_sha1('tests', 'isolate', 'split.py')), u's': _size('tests', 'isolate', 'split.py'), }, os.path.join(u'test', 'data', 'foo.txt'): { u'm': 416, u'h': unicode(_sha1('tests', 'isolate', 'test', 'data', 'foo.txt')), u's': _size('tests', 'isolate', 'test', 'data', 'foo.txt'), }, }, u'isolate_file': isolate.safe_relpath( isolate.trace_inputs.get_native_path_case(isolate_file), unicode(os.path.dirname(options.isolated))), u'relative_cwd': u'.', u'variables': { u'OS': unicode(isolate.get_flavor()), u'DEPTH': u'.', u'PRODUCT_DIR': u'files1', }, } self._cleanup_isolated(expected_saved_state) self._cleanup_saved_state(actual_saved_state) self.assertEqual(expected_saved_state, actual_saved_state) self.assertEqual( [ 'foo.0.isolated', 'foo.1.isolated', 'foo.isolated', 'foo.isolated.state', ], sorted(os.listdir(self.directory)))
def test_chromium_split(self): # Create an .isolate file and a tree of random stuff. isolate_file = os.path.join( ROOT_DIR, 'tests', 'isolate', 'split.isolate') options = self._get_option(isolate_file) options.path_variables = { 'DEPTH': '.', 'PRODUCT_DIR': os.path.join('files1'), } options.config_variables = { 'OS': 'linux', } complete_state = isolate.load_complete_state( options, os.path.join(ROOT_DIR, 'tests', 'isolate'), None, False) # By saving the files, it forces splitting the data up. complete_state.save_files() actual_isolated_master = tools.read_json( os.path.join(self.directory, 'foo.isolated')) expected_isolated_master = { u'algo': u'sha-1', u'command': [u'python', u'split.py'], u'files': { u'split.py': { u'm': 488, u'h': unicode(hash_file('tests', 'isolate', 'split.py')), u's': _size('tests', 'isolate', 'split.py'), }, }, u'includes': [ unicode(hash_file(os.path.join(self.directory, 'foo.0.isolated'))), unicode(hash_file(os.path.join(self.directory, 'foo.1.isolated'))), ], u'relative_cwd': u'.', u'version': unicode(isolate.isolateserver.ISOLATED_FILE_VERSION), } self._cleanup_isolated(expected_isolated_master) self.assertEqual(expected_isolated_master, actual_isolated_master) actual_isolated_0 = tools.read_json( os.path.join(self.directory, 'foo.0.isolated')) expected_isolated_0 = { u'algo': u'sha-1', u'files': { os.path.join(u'test', 'data', 'foo.txt'): { u'm': 416, u'h': unicode( hash_file('tests', 'isolate', 'test', 'data', 'foo.txt')), u's': _size('tests', 'isolate', 'test', 'data', 'foo.txt'), }, }, u'version': unicode(isolate.isolateserver.ISOLATED_FILE_VERSION), } self._cleanup_isolated(expected_isolated_0) self.assertEqual(expected_isolated_0, actual_isolated_0) actual_isolated_1 = tools.read_json( os.path.join(self.directory, 'foo.1.isolated')) expected_isolated_1 = { u'algo': u'sha-1', u'files': { os.path.join(u'files1', 'subdir', '42.txt'): { u'm': 416, u'h': unicode( hash_file('tests', 'isolate', 'files1', 'subdir', '42.txt')), u's': _size('tests', 'isolate', 'files1', 'subdir', '42.txt'), }, }, u'version': unicode(isolate.isolateserver.ISOLATED_FILE_VERSION), } self._cleanup_isolated(expected_isolated_1) self.assertEqual(expected_isolated_1, actual_isolated_1) actual_saved_state = tools.read_json( isolate.isolatedfile_to_state(options.isolated)) isolated_base = unicode(os.path.basename(options.isolated)) expected_saved_state = { u'OS': unicode(sys.platform), u'algo': u'sha-1', u'child_isolated_files': [ isolated_base[:-len('.isolated')] + '.0.isolated', isolated_base[:-len('.isolated')] + '.1.isolated', ], u'command': [u'python', u'split.py'], u'config_variables': { u'OS': u'linux', }, u'extra_variables': { u'foo': u'bar', }, u'files': { os.path.join(u'files1', 'subdir', '42.txt'): { u'm': 416, u'h': unicode( hash_file('tests', 'isolate', 'files1', 'subdir', '42.txt')), u's': _size('tests', 'isolate', 'files1', 'subdir', '42.txt'), }, u'split.py': { u'm': 488, u'h': unicode(hash_file('tests', 'isolate', 'split.py')), u's': _size('tests', 'isolate', 'split.py'), }, os.path.join(u'test', 'data', 'foo.txt'): { u'm': 416, u'h': unicode( hash_file('tests', 'isolate', 'test', 'data', 'foo.txt')), u's': _size('tests', 'isolate', 'test', 'data', 'foo.txt'), }, }, u'isolate_file': file_path.safe_relpath( file_path.get_native_path_case(isolate_file), unicode(os.path.dirname(options.isolated))), u'path_variables': { u'DEPTH': u'.', u'PRODUCT_DIR': u'files1', }, u'relative_cwd': u'.', u'root_dir': file_path.get_native_path_case( os.path.dirname(isolate_file)), u'version': unicode(isolate.SavedState.EXPECTED_VERSION), } self._cleanup_isolated(expected_saved_state) self._cleanup_saved_state(actual_saved_state) self.assertEqual(expected_saved_state, actual_saved_state) self.assertEqual( [ 'foo.0.isolated', 'foo.1.isolated', 'foo.isolated', 'foo.isolated.state', ], sorted(os.listdir(self.directory)))