def mutable_database(database): """For tests that need to modify the database instance.""" yield database with database.write_transaction(): for spec in spack.store.db.query(): PackageBase.uninstall_by_spec(spec, force=True) _populate(database)
def database(tmpdir_factory, mock_packages, config): """Creates a mock database with some packages installed note that the ref count for dyninst here will be 3, as it's recycled across each install. """ # save the real store real_store = spack.store.store # Make a fake install directory install_path = tmpdir_factory.mktemp('install_for_database') # Make fake store (database and install layout) tmp_store = spack.store.Store(str(install_path)) spack.store.store = tmp_store _populate(tmp_store.db) yield tmp_store.db with tmp_store.db.write_transaction(): for spec in tmp_store.db.query(): if spec.package.installed: PackageBase.uninstall_by_spec(spec, force=True) else: tmp_store.db.remove(spec) install_path.remove(rec=1) spack.store.store = real_store
def mutable_database(database): """For tests that need to modify the database instance.""" yield database with database.write_transaction(): for spec in spack.store.db.query(): PackageBase.uninstall_by_spec(spec, force=True) _populate(database)
def database(tmpdir_factory, mock_packages, config): """Creates a mock database with some packages installed note that the ref count for dyninst here will be 3, as it's recycled across each install. """ # save the real store real_store = spack.store.store # Make a fake install directory install_path = tmpdir_factory.mktemp('install_for_database') # Make fake store (database and install layout) tmp_store = spack.store.Store(str(install_path)) spack.store.store = tmp_store _populate(tmp_store.db) yield tmp_store.db with tmp_store.db.write_transaction(): for spec in tmp_store.db.query(): if spec.package.installed: PackageBase.uninstall_by_spec(spec, force=True) else: tmp_store.db.remove(spec) install_path.remove(rec=1) spack.store.store = real_store
def test_uninstall_by_spec_errors(mutable_database): """Test exceptional cases with the uninstall command.""" # Try to uninstall a spec that has not been installed spec = Spec('dependent-install') spec.concretize() with pytest.raises(InstallError, match="is not installed"): PackageBase.uninstall_by_spec(spec) # Try an unforced uninstall of a spec with dependencies rec = mutable_database.get_record('mpich') with pytest.raises(PackageStillNeededError, match="Cannot uninstall"): PackageBase.uninstall_by_spec(rec.spec)