Skip to content

Commit 28f6f78

Browse files
committed
[GR-23349] Begin testing warnings module
PullRequest: graalpython/1147
2 parents 0da4104 + 976cdf1 commit 28f6f78

File tree

8 files changed

+218
-7
lines changed

8 files changed

+218
-7
lines changed

graalpython/com.oracle.graal.python.shell/src/com/oracle/graal/python/shell/GraalPythonMain.java

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ public static void main(String[] args) {
8888
private boolean wantsExperimental = false;
8989
private Map<String, String> enginePolyglotOptions;
9090
private boolean dontWriteBytecode = false;
91+
private String warnOptions = null;
9192

9293
@Override
9394
protected List<String> preprocessArguments(List<String> givenArgs, Map<String, String> polyglotOptions) {
@@ -153,6 +154,20 @@ protected List<String> preprocessArguments(List<String> givenArgs, Map<String, S
153154
case "-S":
154155
noSite = true;
155156
break;
157+
case "-W":
158+
i += 1;
159+
if (warnOptions == null) {
160+
warnOptions = "";
161+
} else {
162+
warnOptions += ",";
163+
}
164+
if (i < arguments.size()) {
165+
warnOptions += arguments.get(i);
166+
} else {
167+
print("Argument expected for the -W option");
168+
printShortHelp();
169+
}
170+
break;
156171
case "-X":
157172
i++;
158173
if (i < arguments.size()) {
@@ -230,6 +245,14 @@ protected List<String> preprocessArguments(List<String> givenArgs, Map<String, S
230245
inputFile = arg;
231246
programArgs.add(inputFile);
232247
break;
248+
} else if (arg.startsWith("-W")) {
249+
// alternate allowed form
250+
if (warnOptions == null) {
251+
warnOptions = "";
252+
} else {
253+
warnOptions += ",";
254+
}
255+
warnOptions += arg.substring(2);
233256
} else if (!arg.startsWith("--") && arg.length() > 2) {
234257
// short arguments can be given together
235258
String[] split = arg.substring(1).split("");
@@ -372,12 +395,23 @@ protected void launch(Builder contextBuilder) {
372395
verboseFlag = verboseFlag || System.getenv("PYTHONVERBOSE") != null;
373396
unbufferedIO = unbufferedIO || System.getenv("PYTHONUNBUFFERED") != null;
374397
dontWriteBytecode = dontWriteBytecode || System.getenv("PYTHONDONTWRITEBYTECODE") != null;
398+
399+
String envWarnOptions = System.getenv("PYTHONWARNINGS");
400+
if (envWarnOptions != null && !envWarnOptions.isEmpty()) {
401+
if (warnOptions == null) {
402+
warnOptions = envWarnOptions;
403+
} else {
404+
warnOptions = envWarnOptions + "," + warnOptions;
405+
}
406+
}
375407
String cachePrefix = System.getenv("PYTHONPYCACHEPREFIX");
376408
if (cachePrefix != null) {
377409
contextBuilder.option("python.PyCachePrefix", cachePrefix);
378410
}
379411
}
380-
412+
if (warnOptions == null || warnOptions.isEmpty()) {
413+
warnOptions = "default";
414+
}
381415
String executable = getContextOptionIfSetViaCommandLine("python.Executable");
382416
if (executable != null) {
383417
contextBuilder.option("python.ExecutableList", executable);
@@ -394,6 +428,7 @@ protected void launch(Builder contextBuilder) {
394428
contextBuilder.option("python.InspectFlag", Boolean.toString(inspectFlag));
395429
contextBuilder.option("python.VerboseFlag", Boolean.toString(verboseFlag));
396430
contextBuilder.option("python.IsolateFlag", Boolean.toString(isolateFlag));
431+
contextBuilder.option("python.WarnOptions", warnOptions);
397432
contextBuilder.option("python.DontWriteBytecodeFlag", Boolean.toString(dontWriteBytecode));
398433
if (verboseFlag) {
399434
contextBuilder.option("log.python.level", "FINE");
@@ -581,9 +616,8 @@ protected void printHelp(OptionCategory maxCategory) {
581616
"-V : print the Python version number and exit (also --version)\n" +
582617
" when given twice, print more information about the build\n" +
583618
"-X opt : CPython implementation-specific options. Ignored on GraalPython\n" +
584-
// "-W arg : warning control; arg is
585-
// action:message:category:module:lineno\n" +
586-
// " also PYTHONWARNINGS=arg\n" +
619+
"-W arg : warning control; arg is action:message:category:module:lineno\n" +
620+
" also PYTHONWARNINGS=arg\n" +
587621
// "-x : skip first line of source, allowing use of non-Unix forms of
588622
// #!cmd\n" +
589623
// "-3 : warn about Python 3.x incompatibilities that 2to3 cannot trivially

graalpython/com.oracle.graal.python.test/src/tests/test_tagged_unittests.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,10 @@ def fun(self):
9292
cmd.extend(["-k", testpattern])
9393
testmod = working_test[0].rpartition(".")[2]
9494
print("Running test:", working_test[0])
95-
cmd.append(os.path.join(os.path.dirname(test.__file__), "%s.py" % testmod))
95+
testfile = os.path.join(os.path.dirname(test.__file__), "%s.py" % testmod)
96+
if not os.path.isfile(testfile):
97+
testfile = os.path.join(os.path.dirname(test.__file__), "%s/__init__.py" % testmod)
98+
cmd.append(testfile)
9699
subprocess.check_call(cmd)
97100
print(working_test[0], "was finished.")
98101

@@ -156,6 +159,8 @@ def parse_unittest_output(output):
156159
timeout = p.stdout.strip()
157160

158161
testfiles = glob.glob(glob_pattern)
162+
testfiles += glob.glob(glob_pattern.replace(".py", "/__init__.py"))
163+
159164
for idx, testfile in enumerate(testfiles):
160165
for repeat in range(maxrepeats):
161166
# we always do this multiple times, because sometimes the tagging
@@ -164,7 +169,10 @@ def parse_unittest_output(output):
164169
# use the tags and if it fails in the last run, we assume something
165170
# sad is happening and delete the tags file to skip the tests
166171
# entirely
167-
testfile_stem = os.path.splitext(os.path.basename(testfile))[0]
172+
if testfile.endswith("__init__.py"):
173+
testfile_stem = os.path.basename(os.path.dirname(testfile))
174+
else:
175+
testfile_stem = os.path.splitext(os.path.basename(testfile))[0]
168176
testmod = "test." + testfile_stem
169177
cmd = [timeout, "-s", "9", "120"] + executable
170178
if repeat == 0:
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
*graalpython.lib-python.3.test.test_import.__init__.CircularImportTests.test_crossreference1
2+
*graalpython.lib-python.3.test.test_import.__init__.CircularImportTests.test_crossreference2
3+
*graalpython.lib-python.3.test.test_import.__init__.CircularImportTests.test_direct
4+
*graalpython.lib-python.3.test.test_import.__init__.CircularImportTests.test_indirect
5+
*graalpython.lib-python.3.test.test_import.__init__.CircularImportTests.test_rebinding
6+
*graalpython.lib-python.3.test.test_import.__init__.CircularImportTests.test_subpackage
7+
*graalpython.lib-python.3.test.test_import.__init__.FilePermissionTests.test_cached_mode_issue_2051
8+
*graalpython.lib-python.3.test.test_import.__init__.FilePermissionTests.test_cached_readonly
9+
*graalpython.lib-python.3.test.test_import.__init__.FilePermissionTests.test_pyc_always_writable
10+
*graalpython.lib-python.3.test.test_import.__init__.GetSourcefileTests.test_get_sourcefile
11+
*graalpython.lib-python.3.test.test_import.__init__.GetSourcefileTests.test_get_sourcefile_bad_ext
12+
*graalpython.lib-python.3.test.test_import.__init__.GetSourcefileTests.test_get_sourcefile_no_source
13+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_bogus_fromlist
14+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_case_sensitivity
15+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_concurrency
16+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_delete_builtins_import
17+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_dll_dependency_import
18+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_double_const
19+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_failing_import_sticks
20+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_file_to_source
21+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_from_import_message_for_existing_module
22+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_from_import_message_for_nonexistent_module
23+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_from_import_missing_attr_has_name
24+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_from_import_missing_attr_has_name_and_so_path
25+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_from_import_missing_attr_raises_ImportError
26+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_from_import_missing_module_raises_ModuleNotFoundError
27+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_import
28+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_import_by_filename
29+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_import_in_del_does_not_crash
30+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_import_name_binding
31+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_import_raises_ModuleNotFoundError
32+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_issue31286
33+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_issue31492
34+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_module_with_large_stack
35+
*graalpython.lib-python.3.test.test_import.__init__.ImportTests.test_timestamp_overflow
36+
*graalpython.lib-python.3.test.test_import.__init__.ImportTracebackTests.test_import_bug
37+
*graalpython.lib-python.3.test.test_import.__init__.ImportTracebackTests.test_unencodable_filename
38+
*graalpython.lib-python.3.test.test_import.__init__.ImportlibBootstrapTests.test_frozen_importlib
39+
*graalpython.lib-python.3.test.test_import.__init__.ImportlibBootstrapTests.test_frozen_importlib_external_is_bootstrap_external
40+
*graalpython.lib-python.3.test.test_import.__init__.ImportlibBootstrapTests.test_frozen_importlib_is_bootstrap
41+
*graalpython.lib-python.3.test.test_import.__init__.ImportlibBootstrapTests.test_there_can_be_only_one
42+
*graalpython.lib-python.3.test.test_import.__init__.PathsTests.test_UNC_path
43+
*graalpython.lib-python.3.test.test_import.__init__.PathsTests.test_trailing_slash
44+
*graalpython.lib-python.3.test.test_import.__init__.PycRewritingTests.test_basics
45+
*graalpython.lib-python.3.test.test_import.__init__.PycRewritingTests.test_module_without_source
46+
*graalpython.lib-python.3.test.test_import.__init__.PycacheTests.test___cached__
47+
*graalpython.lib-python.3.test.test_import.__init__.PycacheTests.test___cached___legacy_pyc
48+
*graalpython.lib-python.3.test.test_import.__init__.PycacheTests.test_import_pyc_path
49+
*graalpython.lib-python.3.test.test_import.__init__.PycacheTests.test_missing_source
50+
*graalpython.lib-python.3.test.test_import.__init__.PycacheTests.test_missing_source_legacy
51+
*graalpython.lib-python.3.test.test_import.__init__.PycacheTests.test_package___cached__
52+
*graalpython.lib-python.3.test.test_import.__init__.PycacheTests.test_package___cached___from_pyc
53+
*graalpython.lib-python.3.test.test_import.__init__.PycacheTests.test_recompute_pyc_same_second
54+
*graalpython.lib-python.3.test.test_import.__init__.RelativeImportTests.test_absolute_import_without_future
55+
*graalpython.lib-python.3.test.test_import.__init__.RelativeImportTests.test_import_from_non_package
56+
*graalpython.lib-python.3.test.test_import.__init__.RelativeImportTests.test_import_from_unloaded_package
57+
*graalpython.lib-python.3.test.test_import.__init__.RelativeImportTests.test_issue3221
58+
*graalpython.lib-python.3.test.test_import.__init__.RelativeImportTests.test_parentless_import_shadowed_by_global
59+
*graalpython.lib-python.3.test.test_import.__init__.RelativeImportTests.test_relimport_star
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
*graalpython.lib-python.3.test.test_warnings.__init__.CCatchWarningTests.test_catch_warnings_defaults
2+
*graalpython.lib-python.3.test.test_warnings.__init__.CCatchWarningTests.test_catch_warnings_recording
3+
*graalpython.lib-python.3.test.test_warnings.__init__.CCatchWarningTests.test_catch_warnings_reentry_guard
4+
*graalpython.lib-python.3.test.test_warnings.__init__.CCatchWarningTests.test_catch_warnings_restore
5+
*graalpython.lib-python.3.test.test_warnings.__init__.CCatchWarningTests.test_check_warnings
6+
*graalpython.lib-python.3.test.test_warnings.__init__.CCatchWarningTests.test_record_override_showwarning_before
7+
*graalpython.lib-python.3.test.test_warnings.__init__.CCatchWarningTests.test_record_override_showwarning_inside
8+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_always
9+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_always_after_default
10+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_append_duplicate
11+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_default
12+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_error
13+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_error_after_default
14+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_filterwarnings
15+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_filterwarnings_duplicate_filters
16+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_ignore
17+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_ignore_after_default
18+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_inheritance
19+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_message_matching
20+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_module
21+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_module_globals
22+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_mutate_filter_list
23+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_once
24+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_ordering
25+
*graalpython.lib-python.3.test.test_warnings.__init__.CFilterTests.test_simplefilter_duplicate_filters
26+
*graalpython.lib-python.3.test.test_warnings.__init__.CPublicAPITests.test_module_all_attribute
27+
*graalpython.lib-python.3.test.test_warnings.__init__.CWCmdLineTests.test_improper_input
28+
*graalpython.lib-python.3.test.test_warnings.__init__.CWarnTests.test_bad_str
29+
*graalpython.lib-python.3.test.test_warnings.__init__.CWarnTests.test_exec_filename
30+
*graalpython.lib-python.3.test.test_warnings.__init__.CWarnTests.test_filename
31+
*graalpython.lib-python.3.test.test_warnings.__init__.CWarnTests.test_message
32+
*graalpython.lib-python.3.test.test_warnings.__init__.CWarnTests.test_stacklevel
33+
*graalpython.lib-python.3.test.test_warnings.__init__.CWarnTests.test_stacklevel_import
34+
*graalpython.lib-python.3.test.test_warnings.__init__.CWarnTests.test_warn_explicit_non_ascii_filename
35+
*graalpython.lib-python.3.test.test_warnings.__init__.CWarnTests.test_warn_nonstandard_types
36+
*graalpython.lib-python.3.test.test_warnings.__init__.CWarnTests.test_warning_classes
37+
*graalpython.lib-python.3.test.test_warnings.__init__.CWarningsDisplayTests.test_formatwarning
38+
*graalpython.lib-python.3.test.test_warnings.__init__.CWarningsDisplayTests.test_formatwarning_override
39+
*graalpython.lib-python.3.test.test_warnings.__init__.CWarningsDisplayTests.test_showwarning
40+
*graalpython.lib-python.3.test.test_warnings.__init__.PyCatchWarningTests.test_catch_warnings_defaults
41+
*graalpython.lib-python.3.test.test_warnings.__init__.PyCatchWarningTests.test_catch_warnings_recording
42+
*graalpython.lib-python.3.test.test_warnings.__init__.PyCatchWarningTests.test_catch_warnings_reentry_guard
43+
*graalpython.lib-python.3.test.test_warnings.__init__.PyCatchWarningTests.test_catch_warnings_restore
44+
*graalpython.lib-python.3.test.test_warnings.__init__.PyCatchWarningTests.test_check_warnings
45+
*graalpython.lib-python.3.test.test_warnings.__init__.PyCatchWarningTests.test_record_override_showwarning_before
46+
*graalpython.lib-python.3.test.test_warnings.__init__.PyCatchWarningTests.test_record_override_showwarning_inside
47+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_always
48+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_always_after_default
49+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_append_duplicate
50+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_default
51+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_error
52+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_error_after_default
53+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_filterwarnings
54+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_filterwarnings_duplicate_filters
55+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_ignore
56+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_ignore_after_default
57+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_inheritance
58+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_message_matching
59+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_module
60+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_module_globals
61+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_mutate_filter_list
62+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_once
63+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_ordering
64+
*graalpython.lib-python.3.test.test_warnings.__init__.PyFilterTests.test_simplefilter_duplicate_filters
65+
*graalpython.lib-python.3.test.test_warnings.__init__.PyPublicAPITests.test_module_all_attribute
66+
*graalpython.lib-python.3.test.test_warnings.__init__.PyWCmdLineTests.test_improper_input
67+
*graalpython.lib-python.3.test.test_warnings.__init__.PyWarnTests.test_bad_str
68+
*graalpython.lib-python.3.test.test_warnings.__init__.PyWarnTests.test_exec_filename
69+
*graalpython.lib-python.3.test.test_warnings.__init__.PyWarnTests.test_filename
70+
*graalpython.lib-python.3.test.test_warnings.__init__.PyWarnTests.test_message
71+
*graalpython.lib-python.3.test.test_warnings.__init__.PyWarnTests.test_pure_python
72+
*graalpython.lib-python.3.test.test_warnings.__init__.PyWarnTests.test_stacklevel
73+
*graalpython.lib-python.3.test.test_warnings.__init__.PyWarnTests.test_stacklevel_import
74+
*graalpython.lib-python.3.test.test_warnings.__init__.PyWarnTests.test_warn_explicit_non_ascii_filename
75+
*graalpython.lib-python.3.test.test_warnings.__init__.PyWarnTests.test_warn_nonstandard_types
76+
*graalpython.lib-python.3.test.test_warnings.__init__.PyWarnTests.test_warning_classes
77+
*graalpython.lib-python.3.test.test_warnings.__init__.PyWarningsDisplayTests.test_formatwarning
78+
*graalpython.lib-python.3.test.test_warnings.__init__.PyWarningsDisplayTests.test_formatwarning_override
79+
*graalpython.lib-python.3.test.test_warnings.__init__.PyWarningsDisplayTests.test_showwarning
80+
*graalpython.lib-python.3.test.test_warnings.__init__._WarningsTests.test_issue31411
81+
*graalpython.lib-python.3.test.test_warnings.__init__._WarningsTests.test_issue31416
82+
*graalpython.lib-python.3.test.test_warnings.__init__._WarningsTests.test_issue31566
83+
*graalpython.lib-python.3.test.test_warnings.__init__._WarningsTests.test_show_warning_output
84+
*graalpython.lib-python.3.test.test_warnings.__init__._WarningsTests.test_showwarning_missing
85+
*graalpython.lib-python.3.test.test_warnings.__init__._WarningsTests.test_showwarning_not_callable
86+
*graalpython.lib-python.3.test.test_warnings.__init__._WarningsTests.test_stderr_none

0 commit comments

Comments
 (0)