@@ -648,6 +648,143 @@ from demo.test import a
648
648
[file demo/test.py]
649
649
a: int
650
650
651
+ [case testUnusedTypeIgnorePreservedOnRerun]
652
+ -- Regression test for https://github.com/python/mypy/issues/9655
653
+ $ dmypy start -- --warn-unused-ignores --no-error-summary --hide-error-codes
654
+ Daemon started
655
+ $ dmypy check -- bar.py
656
+ bar.py:2: error: Unused "type: ignore" comment
657
+ == Return code: 1
658
+ $ dmypy check -- bar.py
659
+ bar.py:2: error: Unused "type: ignore" comment
660
+ == Return code: 1
661
+
662
+ [file foo/__init__.py]
663
+ [file foo/empty.py]
664
+ [file bar.py]
665
+ from foo.empty import *
666
+ a = 1 # type: ignore
667
+
668
+ [case testTypeIgnoreWithoutCodePreservedOnRerun]
669
+ -- Regression test for https://github.com/python/mypy/issues/9655
670
+ $ dmypy start -- --enable-error-code ignore-without-code --no-error-summary
671
+ Daemon started
672
+ $ dmypy check -- bar.py
673
+ bar.py:2: error: "type: ignore" comment without error code [ignore-without-code]
674
+ == Return code: 1
675
+ $ dmypy check -- bar.py
676
+ bar.py:2: error: "type: ignore" comment without error code [ignore-without-code]
677
+ == Return code: 1
678
+
679
+ [file foo/__init__.py]
680
+ [file foo/empty.py]
681
+ [file bar.py]
682
+ from foo.empty import *
683
+ a = 1 # type: ignore
684
+
685
+ [case testPossiblyUndefinedVarsPreservedAfterRerun]
686
+ -- Regression test for https://github.com/python/mypy/issues/9655
687
+ $ dmypy start -- --enable-error-code possibly-undefined --no-error-summary
688
+ Daemon started
689
+ $ dmypy check -- bar.py
690
+ bar.py:4: error: Name "a" may be undefined [possibly-undefined]
691
+ == Return code: 1
692
+ $ dmypy check -- bar.py
693
+ bar.py:4: error: Name "a" may be undefined [possibly-undefined]
694
+ == Return code: 1
695
+
696
+ [file foo/__init__.py]
697
+ [file foo/empty.py]
698
+ [file bar.py]
699
+ from foo.empty import *
700
+ if False:
701
+ a = 1
702
+ a
703
+
704
+ [case testUnusedTypeIgnorePreservedOnRerunWithIgnoredMissingImports]
705
+ $ dmypy start -- --no-error-summary --ignore-missing-imports --warn-unused-ignores
706
+ Daemon started
707
+ $ dmypy check foo
708
+ foo/main.py:3: error: Unused "type: ignore" comment [unused-ignore]
709
+ == Return code: 1
710
+ $ dmypy check foo
711
+ foo/main.py:3: error: Unused "type: ignore" comment [unused-ignore]
712
+ == Return code: 1
713
+
714
+ [file unused/__init__.py]
715
+ [file unused/submodule.py]
716
+ [file foo/empty.py]
717
+ [file foo/__init__.py]
718
+ from foo.main import *
719
+ from unused.submodule import *
720
+ [file foo/main.py]
721
+ from foo import empty
722
+ from foo.does_not_exist import *
723
+ a = 1 # type: ignore
724
+
725
+ [case testModuleDoesNotExistPreservedOnRerun]
726
+ $ dmypy start -- --no-error-summary --ignore-missing-imports
727
+ Daemon started
728
+ $ dmypy check foo
729
+ foo/main.py:1: error: Module "foo" has no attribute "does_not_exist" [attr-defined]
730
+ == Return code: 1
731
+ $ dmypy check foo
732
+ foo/main.py:1: error: Module "foo" has no attribute "does_not_exist" [attr-defined]
733
+ == Return code: 1
734
+
735
+ [file unused/__init__.py]
736
+ [file unused/submodule.py]
737
+ [file foo/__init__.py]
738
+ from foo.main import *
739
+ [file foo/main.py]
740
+ from foo import does_not_exist
741
+ from unused.submodule import *
742
+
743
+ [case testReturnTypeIgnoreAfterUnknownImport]
744
+ -- Return type ignores after unknown imports and unused modules are respected on the second pass.
745
+ $ dmypy start -- --warn-unused-ignores --no-error-summary
746
+ Daemon started
747
+ $ dmypy check -- foo.py
748
+ foo.py:2: error: Cannot find implementation or library stub for module named "a_module_which_does_not_exist" [import-not-found]
749
+ foo.py:2: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
750
+ == Return code: 1
751
+ $ dmypy check -- foo.py
752
+ foo.py:2: error: Cannot find implementation or library stub for module named "a_module_which_does_not_exist" [import-not-found]
753
+ foo.py:2: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
754
+ == Return code: 1
755
+
756
+ [file unused/__init__.py]
757
+ [file unused/empty.py]
758
+ [file foo.py]
759
+ from unused.empty import *
760
+ import a_module_which_does_not_exist
761
+ def is_foo() -> str:
762
+ return True # type: ignore
763
+
764
+ [case testAttrsTypeIgnoreAfterUnknownImport]
765
+ $ dmypy start -- --warn-unused-ignores --no-error-summary
766
+ Daemon started
767
+ $ dmypy check -- foo.py
768
+ foo.py:3: error: Cannot find implementation or library stub for module named "a_module_which_does_not_exist" [import-not-found]
769
+ foo.py:3: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
770
+ == Return code: 1
771
+ $ dmypy check -- foo.py
772
+ foo.py:3: error: Cannot find implementation or library stub for module named "a_module_which_does_not_exist" [import-not-found]
773
+ foo.py:3: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
774
+ == Return code: 1
775
+
776
+ [file unused/__init__.py]
777
+ [file unused/empty.py]
778
+ [file foo.py]
779
+ import attr
780
+ from unused.empty import *
781
+ import a_module_which_does_not_exist
782
+
783
+ @attr.frozen
784
+ class A:
785
+ def __init__(self) -> None:
786
+ self.__attrs_init__() # type: ignore[attr-defined]
787
+
651
788
[case testDaemonImportAncestors]
652
789
$ dmypy run test.py
653
790
Daemon started
0 commit comments