예제 #1
0
    def __init__(self,
                 config_override=None,
                 consoles_override=None,
                 emulators_override=None):
        self.validated_base_environment = False
        self.validated_configuration = False
        self.logger = IceLogger()
        self.logger.debug("Initializing Ice")
        config_data_path = _path_with_override(config_override, "config.txt")
        consoles_data_path = _path_with_override(consoles_override,
                                                 "consoles.txt")
        emulators_data_path = _path_with_override(emulators_override,
                                                  "emulators.txt")
        self.config = Configuration(
            ConfigFileBackingStore(config_data_path),
            ConfigFileBackingStore(consoles_data_path),
            ConfigFileBackingStore(emulators_data_path),
        )
        self.steam = Steam()
        # TODO: Query the list of users some other way
        self.users = self.steam.local_users()

        filesystem = Filesystem()
        parser = ROMParser(self.logger)
        self.rom_finder = ROMFinder(self.config, filesystem, parser)
        archive_data_path = Configuration.path_for_data_file("archive.json")
        managed_rom_archive = ManagedROMArchive(archive_data_path)
        self.shortcut_synchronizer = SteamShortcutSynchronizer(
            managed_rom_archive, self.logger)

        provider = CombinedProvider(
            LocalProvider(self.logger),
            ConsoleGridProvider(self.logger),
        )
        self.grid_updater = SteamGridUpdater(provider, self.logger)
예제 #2
0
    def __init__(self, steam, filesystem, options):
        """Valid options for creating an IceEngine are as follows:

    * config    - The path to the config file to use. Searches the default paths
                  for 'config.txt' otherwise
    * consoles  - The path to the consoles file to use. Searches the default
                  paths for 'consoles.txt' if none is provided
    * emulators - The path to the emulators file to use. Searches the default
                  paths for 'emulators.txt' if none is provided
    """
        self.validated_base_environment = False
        self.validated_configuration = False
        self.filesystem = filesystem
        logger.debug("Initializing Ice")
        config_data_path = _path_with_override(filesystem, options.config,
                                               "config.txt")
        consoles_data_path = _path_with_override(filesystem, options.consoles,
                                                 "consoles.txt")
        emulators_data_path = _path_with_override(filesystem,
                                                  options.emulators,
                                                  "emulators.txt")
        self.config = Configuration(
            ConfigFileBackingStore(config_data_path),
            ConfigFileBackingStore(consoles_data_path),
            ConfigFileBackingStore(emulators_data_path),
            filesystem,
        )
        self.steam = steam

        parser = ROMParser()
        self.rom_finder = ROMFinder(self.config, filesystem, parser)
        archive_data_path = paths.highest_precedent_data_file(
            filesystem, "archive.json")
        managed_rom_archive = ManagedROMArchive(archive_data_path)
        self.shortcut_synchronizer = SteamShortcutSynchronizer(
            managed_rom_archive)

        provider = CombinedProvider(
            LocalProvider(),
            ConsoleGridProvider(),
        )
        self.grid_updater = SteamGridUpdater(provider)
예제 #3
0
    def __init__(self, options):
        """Valid options for creating an IceEngine are as follows:

    * config    - The path to the config file to use. Searches the default paths
                  for 'config.txt' otherwise
    * consoles  - The path to the consoles file to use. Searches the default
                  paths for 'consoles.txt' if none is provided
    * emulators - The path to the emulators file to use. Searches the default
                  paths for 'emulators.txt' if none is provided
    * verbose   - Turn on debug logging.
    """
        self.validated_base_environment = False
        self.validated_configuration = False
        self.logger = IceLogger(verbose=options.verbose)
        self.logger.debug("Initializing Ice")
        config_data_path = _path_with_override(options.config, "config.txt")
        consoles_data_path = _path_with_override(options.consoles,
                                                 "consoles.txt")
        emulators_data_path = _path_with_override(options.emulators,
                                                  "emulators.txt")
        self.config = Configuration(
            ConfigFileBackingStore(config_data_path),
            ConfigFileBackingStore(consoles_data_path),
            ConfigFileBackingStore(emulators_data_path),
        )
        self.steam = Steam()
        # TODO: Query the list of users some other way
        self.users = self.steam.local_users()

        filesystem = Filesystem()
        parser = ROMParser(self.logger)
        self.rom_finder = ROMFinder(self.config, filesystem, parser)
        archive_data_path = Configuration.path_for_data_file("archive.json")
        managed_rom_archive = ManagedROMArchive(archive_data_path)
        self.shortcut_synchronizer = SteamShortcutSynchronizer(
            managed_rom_archive, self.logger)

        provider = CombinedProvider(
            LocalProvider(self.logger),
            ConsoleGridProvider(self.logger),
        )
        self.grid_updater = SteamGridUpdater(provider, self.logger)
예제 #4
0
 def setUp(self):
     self.provider = LocalProvider()
     self.temp_directory = tempfile.mkdtemp()
예제 #5
0
class LocalProviderTests(unittest.TestCase):
    def setUp(self):
        self.provider = LocalProvider()
        self.temp_directory = tempfile.mkdtemp()

    def tearDown(self):
        shutil.rmtree(self.temp_directory)

    def create_mock_rom(self, rom_name="Test ROM", console_shortname="Test"):
        mock_console = mock()
        mock_console.shortname = console_shortname
        mock_console.images_directory = self.temp_directory
        mock_rom = mock()
        mock_rom.name = rom_name
        mock_rom.console = mock_console
        return mock_rom

    def make_temp_image(self, filename):
        path = os.path.join(self.temp_directory, filename)
        f = open(path, "w")
        f.write("Data")
        f.close()

    def test_is_enabled_returns_true(self):
        self.assertTrue(self.provider.is_enabled())

    def test_returns_none_when_no_images(self):
        rom = self.create_mock_rom("Megaman")
        self.assertIsNone(self.provider.image_for_rom(rom))

    def test_returns_image_with_png_extension(self):
        rom = self.create_mock_rom("Megaman")
        self.make_temp_image("Megaman.png")
        self.assertIsNotNone(self.provider.image_for_rom(rom))

    def test_returns_image_with_jpg_extension(self):
        rom = self.create_mock_rom("Megaman")
        self.make_temp_image("Megaman.jpg")
        self.assertIsNotNone(self.provider.image_for_rom(rom))

    def test_returns_image_with_jpeg_extension(self):
        rom = self.create_mock_rom("Megaman")
        self.make_temp_image("Megaman.jpeg")
        self.assertIsNotNone(self.provider.image_for_rom(rom))

    def test_returns_image_with_tiff_extension(self):
        rom = self.create_mock_rom("Megaman")
        self.make_temp_image("Megaman.tiff")
        self.assertIsNotNone(self.provider.image_for_rom(rom))

    def test_ignores_image_with_invalid_extension(self):
        rom = self.create_mock_rom("Megaman")
        self.make_temp_image("Megaman.gif")
        self.assertIsNone(self.provider.image_for_rom(rom))

    def test_ignores_directories_with_names_like_files(self):
        rom = self.create_mock_rom("Megaman")
        os.mkdir(os.path.join(self.temp_directory, "Megaman.png"))
        self.assertIsNone(self.provider.image_for_rom(rom))

    def test_returns_none_when_no_image_directory(self):
        rom = self.create_mock_rom("Megaman")
        rom.console.images_directory = ""
        self.assertIsNone(self.provider.image_for_rom(rom))
예제 #6
0
 def setUp(self):
   self.mock_logger = mock()
   self.provider = LocalProvider(self.mock_logger)
   self.temp_directory = tempfile.mkdtemp()
예제 #7
0
 def setUp(self):
     self.mock_logger = mock()
     self.provider = LocalProvider(self.mock_logger)
     self.temp_directory = tempfile.mkdtemp()