The Inline Method refactoring removed an import

Abierto
#826 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 7 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
Medio día
Aptitud para principiantes
55/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
python
Área
tooling

Línea de trabajo

Start with the reproduction: apply Inline Method to StringlikeMixin.find in mixins.py, then compare the test_mixins.py imports before and after. The bug is that from nose.tools import * disappears, so the inlined assert_equal call breaks. Find where rope's inline refactoring rewrites imports in the edited module, and check whether it drops names that the rewritten code still uses. Done means test_mixins.py keeps the nose import after inlining and the test runs.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug

The Inline Method refactoring removed an import from the test file, causing an error when the test file is run.

Steps to reproduce the behavior:

  1. Code before refactoring:
-- mixins.py
from __future__ import unicode_literals

class StringlikeMixin(object):
    def __init__(self, text):
        self._text = text

    def _strkey(self):
        return self._text

    def find(self, sub, start=0, end=None):
        if end is None:
            end = len(self._strkey())
        return self._strkey().find(sub, start, end)

-- test_mixins.py
from __future__ import unicode_literals, absolute_import
from nose.tools import *
from mixins import StringlikeMixin


def test_find():
    text = 'Beautiful is better than ugly.'
    blob = StringlikeMixin(text)

    assert_equal(
        blob.find('better', 5, len(blob._strkey())),
        text.find('better', 5, len(text))
    )
  1. Apply the inline method to StringlikeMixin.find

  2. Code after refactoring:

-- mixins.py
from __future__ import unicode_literals

class StringlikeMixin(object):
    def __init__(self, text):
        self._text = text

    def _strkey(self):
        return self._text


-- test_mixins.py
from __future__ import unicode_literals, absolute_import

from mixins import StringlikeMixin

def test_find():
    text = 'Beautiful is better than ugly.'
    blob = StringlikeMixin(text)

    assert_equal(
        blob._strkey().find('better', 5, len(blob._strkey())),
        text.find('better', 5, len(text))
    )

Lenguaje dominante
Python
Estrellas
2.2k
Forks
197
Merge medio
2 d 13 h
PR fusionados (30 d)
5

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de python-rope/rope

Todos los issues de python-rope/rope

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.