@@ -904,62 +904,33 @@ def prepare_reader(self, events, namespace):
904904 reader = ReadlineAlikeReader (console = console , config = config )
905905 return reader
906906
907- def test_import (self ):
908- cases = [
907+ def test_import_completions (self ):
908+ cases = (
909909 ("import path\t \n " , "import pathlib" ),
910910 ("import importlib.\t \t res\t \n " , "import importlib.resources" ),
911911 ("import importlib.resources.\t \t a\t \n " , "import importlib.resources.abc" ),
912912 ("import foo, impo\t \n " , "import foo, importlib" ),
913913 ("import foo as bar, impo\t \n " , "import foo as bar, importlib" ),
914- ]
915-
916- for code , expected in cases :
917- with self .subTest (code = code ):
918- events = code_to_events (code )
919- reader = self .prepare_reader (events , namespace = {})
920- output = reader .readline ()
921- self .assertEqual (output , expected )
922-
923- def test_from_import (self ):
924- cases = [
925914 ("from impo\t \n " , "from importlib" ),
926915 ("from importlib.res\t \n " , "from importlib.resources" ),
927916 ("from importlib.\t \t res\t \n " , "from importlib.resources" ),
928917 ("from importlib.resources.ab\t \n " , "from importlib.resources.abc" ),
929- ]
930-
931- for code , expected in cases :
932- with self .subTest (code = code ):
933- events = code_to_events (code )
934- reader = self .prepare_reader (events , namespace = {})
935- output = reader .readline ()
936- self .assertEqual (output , expected )
937-
938- def test_from_import_attributes (self ):
939- cases = [
940918 ("from importlib import mac\t \n " , "from importlib import machinery" ),
941919 ("from importlib import res\t \n " , "from importlib import resources" ),
942- ("from importlib import invalidate_\t \n " , "from importlib import invalidate_caches" ),
943- ("from importlib import (inval\t \n " , "from importlib import (invalidate_caches" ),
944- ("from importlib import foo, invalidate_\t \n " , "from importlib import foo, invalidate_caches" ),
945- ("from importlib import (foo, invalidate_\t \n " , "from importlib import (foo, invalidate_caches" ),
946- ("from importlib import foo as bar, invalidate_\t \n " , "from importlib import foo as bar, invalidate_caches" ),
947- ("from importlib import (foo as bar, invalidate_\t \n " , "from importlib import (foo as bar, invalidate_caches" ),
948- ]
949-
920+ ("from importlib.res\t import a\t \n " , "from importlib.resources import abc" ),
921+ )
950922 for code , expected in cases :
951923 with self .subTest (code = code ):
952924 events = code_to_events (code )
953925 reader = self .prepare_reader (events , namespace = {})
954926 output = reader .readline ()
955927 self .assertEqual (output , expected )
956928
957- def test_relative_from_import (self ):
958- cases = [
929+ def test_relative_import_completions (self ):
930+ cases = (
959931 ("from .readl\t \n " , "from .readline" ),
960- ("from .readline import Mod\t \n " , "from .readline import ModuleCompleter" ),
961- ]
962-
932+ ("from . import readl\t \n " , "from . import readline" ),
933+ )
963934 for code , expected in cases :
964935 with self .subTest (code = code ):
965936 events = code_to_events (code )
@@ -968,7 +939,7 @@ def test_relative_from_import(self):
968939 self .assertEqual (output , expected )
969940
970941 def test_get_path_and_prefix (self ):
971- cases = [
942+ cases = (
972943 ('' , ('' , '' )),
973944 ('.' , ('.' , '' )),
974945 ('..' , ('..' , '' )),
@@ -983,15 +954,14 @@ def test_get_path_and_prefix(self):
983954 ('foo.bar' , ('foo' , 'bar' )),
984955 ('foo.bar.' , ('foo.bar' , '' )),
985956 ('foo.bar.baz' , ('foo.bar' , 'baz' )),
986- ]
987-
957+ )
988958 completer = ModuleCompleter ()
989959 for name , expected in cases :
990960 with self .subTest (name = name ):
991961 self .assertEqual (completer .get_path_and_prefix (name ), expected )
992962
993963 def test_parse (self ):
994- cases = [
964+ cases = (
995965 ('import ' , (None , '' )),
996966 ('import foo' , (None , 'foo' )),
997967 ('import foo,' , (None , '' )),
@@ -1027,8 +997,7 @@ def test_parse(self):
1027997 ('from foo import (a, ' , ('foo' , '' )),
1028998 ('from foo import (a, c' , ('foo' , 'c' )),
1029999 ('from foo import (a as b, c' , ('foo' , 'c' )),
1030- ]
1031-
1000+ )
10321001 for code , parsed in cases :
10331002 parser = ImportParser (code )
10341003 actual = parser .parse ()
@@ -1039,9 +1008,12 @@ def test_parse(self):
10391008 code = f'import xyz\n { code } '
10401009 with self .subTest (code = code ):
10411010 self .assertEqual (actual , parsed )
1011+ code = f'import xyz;{ code } '
1012+ with self .subTest (code = code ):
1013+ self .assertEqual (actual , parsed )
10421014
10431015 def test_parse_error (self ):
1044- cases = [
1016+ cases = (
10451017 '' ,
10461018 'import foo ' ,
10471019 'from foo ' ,
@@ -1060,6 +1032,9 @@ def test_parse_error(self):
10601032 'import a.b.c as' ,
10611033 'import (foo' ,
10621034 'import (' ,
1035+ 'import .foo' ,
1036+ 'import ..foo' ,
1037+ 'import .foo.bar' ,
10631038 'import foo; x = 1' ,
10641039 'import a.; x = 1' ,
10651040 'import a.b; x = 1' ,
@@ -1080,8 +1055,7 @@ def test_parse_error(self):
10801055 'from foo import import' ,
10811056 'from foo import from' ,
10821057 'from foo import as' ,
1083- ]
1084-
1058+ )
10851059 for code in cases :
10861060 parser = ImportParser (code )
10871061 actual = parser .parse ()
0 commit comments