import indy_node.utils.migration_tool as migration_tool import pytest from timeout_decorator import TimeoutError TEST_MIGRATION_SCRIPTS = [ '0_3_100_to_0_3_104', '10_2_1_to_10_0_2', '0_9_2_to_0_9_10', '0_3_100_to_0_3_101', '0_1_10_to_0_9_10', '0_3_4_invalid'] TEST_VERSION = '0.3.100' TEST_NEW_VERSION = '0.10.105' TEST_TIMEOUT = 1 def testGetRelevantMigrations(): relevantMigrations = migration_tool._get_relevant_migrations( TEST_MIGRATION_SCRIPTS, TEST_VERSION, TEST_NEW_VERSION) assert len(relevantMigrations) == 3 assert relevantMigrations == [ '0_3_100_to_0_3_101', '0_3_100_to_0_3_104', '0_9_2_to_0_9_10'] def testMigrate(monkeypatch): testList = [] monkeypatch.setattr(migration_tool, '_call_migration_script', lambda *x: testList.append(x[0])) monkeypatch.setattr(migration_tool, '_get_migration_scripts', lambda *x: TEST_MIGRATION_SCRIPTS) assert migration_tool.migrate( TEST_VERSION, TEST_NEW_VERSION, TEST_TIMEOUT) == 3 assert len(testList) == 3 def testMigrateTimesOut(monkeypatch): monkeypatch.setattr(migration_tool, '_call_migration_script', lambda *x: exec('raise(TimeoutError())')) monkeypatch.setattr(migration_tool, '_get_migration_scripts', lambda *x: TEST_MIGRATION_SCRIPTS) with pytest.raises(TimeoutError): migration_tool.migrate(TEST_VERSION, TEST_NEW_VERSION, TEST_TIMEOUT) def testGetMigrationScripts(): try: res = migration_tool._get_migration_scripts(migration_tool._get_current_platform()) except Exception as e: pytest.fail("Unexpected error: {}".format(e)) else: assert type(res) is list assert res