- def test_invert_map(self):
- value = {
- ('amiga',): {
- 'command': ['echo', 'You should get an Atari'],
- KEY_TOUCHED: ['touched', 'touched_e'],
- KEY_TRACKED: ['a', 'e', 'g', 'x'],
- KEY_UNTRACKED: ['b', 'f', 'h'],
- 'read_only': 0,
- },
- ('atari',): {
- 'command': ['echo', 'Hello World'],
- KEY_TOUCHED: ['touched', 'touched_a'],
- KEY_TRACKED: ['a', 'c', 'x'],
- KEY_UNTRACKED: ['b', 'd', 'h'],
- 'read_only': 1,
- },
- ('coleco',): {
- 'command': ['echo', 'You should get an Atari'],
- KEY_TOUCHED: ['touched', 'touched_e'],
- KEY_TRACKED: ['a', 'e', 'x'],
- KEY_UNTRACKED: ['b', 'f'],
- },
- ('dendy',): {
- 'command': ['echo', 'You should get an Atari'],
- KEY_TOUCHED: ['touched', 'touched_e'],
- KEY_TRACKED: ['a', 'e', 'x'],
- KEY_UNTRACKED: ['b', 'f', 'h'],
- },
- }
- amiga, atari, coleco, dendy = (
- set([(os,)]) for os in ('amiga', 'atari', 'coleco', 'dendy'))
- expected_values = {
- 'command': {
- ('echo', 'Hello World'): atari,
- ('echo', 'You should get an Atari'): amiga | coleco | dendy,
- },
- KEY_TRACKED: {
- 'a': amiga | atari | coleco | dendy,
- 'c': atari,
- 'e': amiga | coleco | dendy,
- 'g': amiga,
- 'x': amiga | atari | coleco | dendy,
- },
- KEY_UNTRACKED: {
- 'b': amiga | atari | coleco | dendy,
- 'd': atari,
- 'f': amiga | coleco | dendy,
- 'h': amiga | atari | dendy,
- },
- KEY_TOUCHED: {
- 'touched': amiga | atari | coleco | dendy,
- 'touched_a': atari,
- 'touched_e': amiga | coleco | dendy,
- },
- 'read_only': {
- 0: amiga,
- 1: atari,
- },
- }
- actual_values = isolate_format.invert_map(value)
- self.assertEqual(expected_values, actual_values)
-
- def test_reduce_inputs(self):
- amiga, atari, coleco, dendy = (
- set([(os,)]) for os in ('amiga', 'atari', 'coleco', 'dendy'))
- values = {
- 'command': {
- ('echo', 'Hello World'): atari,
- ('echo', 'You should get an Atari'): amiga | coleco | dendy,
- },
- KEY_TRACKED: {
- 'a': amiga | atari | coleco | dendy,
- 'c': atari,
- 'e': amiga | coleco | dendy,
- 'g': amiga,
- 'x': amiga | atari | coleco | dendy,
- },
- KEY_UNTRACKED: {
- 'b': amiga | atari | coleco | dendy,
- 'd': atari,
- 'f': amiga | coleco | dendy,
- 'h': amiga | atari | dendy,
- },
- KEY_TOUCHED: {
- 'touched': amiga | atari | coleco | dendy,
- 'touched_a': atari,
- 'touched_e': amiga | coleco | dendy,
- },
- 'read_only': {
- 0: amiga,
- 1: atari,
- },
- }
- expected_values = {
- 'command': {
- ('echo', 'Hello World'): atari,
- ('echo', 'You should get an Atari'): amiga | coleco | dendy,
- },
- KEY_TRACKED: {
- 'a': amiga | atari | coleco | dendy,
- 'c': atari,
- 'e': amiga | coleco | dendy,
- 'g': amiga,
- 'x': amiga | atari | coleco | dendy,
- },
- KEY_UNTRACKED: {
- 'b': amiga | atari | coleco | dendy,
- 'd': atari,
- 'f': amiga | coleco | dendy,
- 'h': amiga | atari | dendy,
- },
- KEY_TOUCHED: {
- 'touched': amiga | atari | coleco | dendy,
- 'touched_a': atari,
- 'touched_e': amiga | coleco | dendy,
- },
- 'read_only': {
- 0: amiga,
- 1: atari,
- },
- }
- actual_values = isolate_format.reduce_inputs(values)
- self.assertEqual(expected_values, actual_values)
-
- def test_reduce_inputs_merge_subfolders_and_files(self):
- linux, mac, win = (set([(os,)]) for os in ('linux', 'mac', 'win'))
- values = {
- KEY_TRACKED: {
- 'folder/tracked_file': win,
- 'folder_helper/tracked_file': win,
- },
- KEY_UNTRACKED: {
- 'folder/': linux | mac | win,
- 'folder/subfolder/': win,
- 'folder/untracked_file': linux | mac | win,
- 'folder_helper/': linux,
- },
- KEY_TOUCHED: {
- 'folder/touched_file': win,
- 'folder/helper_folder/deep_file': win,
- 'folder_helper/touched_file1': mac | win,
- 'folder_helper/touched_file2': linux,
- },
- }
- expected_values = {
- 'command': {},
- KEY_TRACKED: {
- 'folder_helper/tracked_file': win,
- },
- KEY_UNTRACKED: {
- 'folder/': linux | mac | win,
- 'folder_helper/': linux,
- },
- KEY_TOUCHED: {
- 'folder_helper/touched_file1': mac | win,
- },
- 'read_only': {},
- }
- actual_values = isolate_format.reduce_inputs(values)
- self.assertEqual(expected_values, actual_values)
-
- def test_reduce_inputs_take_strongest_dependency(self):
- amiga, atari, coleco, dendy = (
- set([(os,)]) for os in ('amiga', 'atari', 'coleco', 'dendy'))
- values = {
- 'command': {
- ('echo', 'Hello World'): atari,
- ('echo', 'You should get an Atari'): amiga | coleco | dendy,
- },
- KEY_TRACKED: {
- 'a': amiga | atari | coleco | dendy,
- 'b': amiga | atari | coleco,
- },
- KEY_UNTRACKED: {
- 'c': amiga | atari | coleco | dendy,
- 'd': amiga | coleco | dendy,
- },
- KEY_TOUCHED: {
- 'a': amiga | atari | coleco | dendy,
- 'b': atari | coleco | dendy,
- 'c': amiga | atari | coleco | dendy,
- 'd': atari | coleco | dendy,
- },
- }
- expected_values = {
- 'command': {
- ('echo', 'Hello World'): atari,
- ('echo', 'You should get an Atari'): amiga | coleco | dendy,
- },
- KEY_TRACKED: {
- 'a': amiga | atari | coleco | dendy,
- 'b': amiga | atari | coleco,
- },
- KEY_UNTRACKED: {
- 'c': amiga | atari | coleco | dendy,
- 'd': amiga | coleco | dendy,
- },
- KEY_TOUCHED: {
- 'b': dendy,
- 'd': atari,
- },
- 'read_only': {},
- }
- actual_values = isolate_format.reduce_inputs(values)
- self.assertEqual(expected_values, actual_values)
-
- def test_convert_map_to_isolate_dict(self):
- amiga = ('amiga',)
- atari = ('atari',)
- coleco = ('coleco',)
- dendy = ('dendy',)
- values = {
- 'command': {
- ('echo', 'Hello World'): (atari,),
- ('echo', 'You should get an Atari'): (amiga, coleco, dendy),
- },
- KEY_TRACKED: {
- 'a': (amiga, atari, coleco, dendy),
- 'c': (atari,),
- 'e': (amiga, coleco, dendy),
- 'g': (amiga,),
- 'x': (amiga, atari, coleco, dendy),
- },
- KEY_UNTRACKED: {
- 'b': (amiga, atari, coleco, dendy),
- 'd': (atari,),
- 'f': (amiga, coleco, dendy),
- 'h': (amiga, atari, dendy),
- },
- KEY_TOUCHED: {
- 'touched': (amiga, atari, coleco, dendy),
- 'touched_a': (atari,),
- 'touched_e': (amiga, coleco, dendy),
- },
- 'read_only': {
- 0: (amiga,),
- 1: (atari,),
- },
- }
- expected_conditions = [
- ['OS=="amiga"', {
- 'variables': {
- KEY_TRACKED: ['g'],
- 'read_only': 0,
- },
- }],
- ['OS=="amiga" or OS=="atari" or OS=="coleco" or OS=="dendy"', {
- 'variables': {
- KEY_TRACKED: ['a', 'x'],
- KEY_UNTRACKED: ['b'],
- KEY_TOUCHED: ['touched'],
- },
- }],
- ['OS=="amiga" or OS=="atari" or OS=="dendy"', {
- 'variables': {
- KEY_UNTRACKED: ['h'],
- },
- }],
- ['OS=="amiga" or OS=="coleco" or OS=="dendy"', {
- 'variables': {
- 'command': ['echo', 'You should get an Atari'],
- KEY_TRACKED: ['e'],
- KEY_UNTRACKED: ['f'],
- KEY_TOUCHED: ['touched_e'],
- },
- }],
- ['OS=="atari"', {
- 'variables': {
- 'command': ['echo', 'Hello World'],
- KEY_TRACKED: ['c'],
- KEY_UNTRACKED: ['d'],
- KEY_TOUCHED: ['touched_a'],
- 'read_only': 1,
- },
- }],
- ]
- actual = isolate_format.convert_map_to_isolate_dict(values, ('OS',))
- self.assertEqual(expected_conditions, sorted(actual.pop('conditions')))
- self.assertFalse(actual)
-