Skip to content

Commit ffc62c3

Browse files
authored
Merge pull request RustPython#4134 from coolreader18/fix-cron-ci-2
fix cron ci 2
2 parents 4ccdc19 + 10cfe27 commit ffc62c3

File tree

3 files changed

+32
-39
lines changed

3 files changed

+32
-39
lines changed

extra_tests/custom_text_test_runner.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -247,10 +247,11 @@ def startTest(self, test):
247247
name_override = None
248248
self.case = name_override if name_override else self.case
249249
if self.show_test_info:
250-
self.stream.writeln(self.separator2)
251-
self.stream.writeln("CASE: %s" %self.case)
252-
self.stream.writeln("Description: %s" %test.shortDescription())
253-
self.stream.writeln(self.separator2)
250+
# self.stream.writeln(self.separator2)
251+
self.stream.write("CASE: %s" %self.case)
252+
if desc := test.shortDescription(): self.stream.write(" (Description: %s)" % desc)
253+
self.stream.write("... ")
254+
# self.stream.writeln(self.separator2)
254255
self.stream.flush()
255256
self.current_case_number = self.case_number
256257
if self.suite not in self.suite_map:
@@ -332,7 +333,7 @@ def addScreenshots(self, test):
332333
def addSuccess(self, test):
333334
super(CustomTextTestResult, self).addSuccess(test)
334335
if self.show_test_info:
335-
self.stream.writeln(self.separator_pre_result)
336+
# self.stream.writeln(self.separator_pre_result)
336337
self.stream.writeln("PASS")
337338
self.stream.flush()
338339
self.results['suites'][self.suite_map[self.suite]]['cases'][self.current_case_number]['result'] = 'passed'
@@ -343,7 +344,7 @@ def addError(self, test, err):
343344
error_string = self.print_error_string(err)
344345
super(CustomTextTestResult, self).addError(test, err)
345346
if self.show_test_info:
346-
self.stream.writeln(self.separator_pre_result)
347+
# self.stream.writeln(self.separator_pre_result)
347348
self.stream.writeln("ERROR")
348349
self.stream.flush()
349350
self.results['suites'][self.suite_map[self.suite]]['cases'][self.current_case_number]['result'] = 'error'
@@ -355,7 +356,7 @@ def addFailure(self, test, err):
355356
error_string = self.print_error_string(err)
356357
super(CustomTextTestResult, self).addFailure(test, err)
357358
if self.show_test_info:
358-
self.stream.writeln(self.separator_pre_result)
359+
# self.stream.writeln(self.separator_pre_result)
359360
self.stream.writeln("FAIL")
360361
self.stream.flush()
361362
self.results['suites'][self.suite_map[self.suite]]['cases'][self.current_case_number]['result'] = 'failed'
@@ -366,7 +367,7 @@ def addFailure(self, test, err):
366367
def addSkip(self, test, reason):
367368
super(CustomTextTestResult, self).addSkip(test, reason)
368369
if self.show_test_info:
369-
self.stream.writeln(self.separator_pre_result)
370+
# self.stream.writeln(self.separator_pre_result)
370371
self.stream.writeln("SKIPPED {0!r}".format(reason))
371372
self.stream.flush()
372373
self.results['suites'][self.suite_map[self.suite]]['cases'][self.current_case_number]['result'] = 'skipped'
@@ -376,7 +377,7 @@ def addSkip(self, test, reason):
376377
def addExpectedFailure(self, test, err):
377378
super(CustomTextTestResult, self).addExpectedFailure(test, err)
378379
if self.show_test_info:
379-
self.stream.writeln(self.separator_pre_result)
380+
# self.stream.writeln(self.separator_pre_result)
380381
self.stream.writeln("EXPECTED FAILURE")
381382
self.stream.flush()
382383
self.results['suites'][self.suite_map[self.suite]]['cases'][self.current_case_number]['result'] = 'expected_failure'
@@ -386,7 +387,7 @@ def addExpectedFailure(self, test, err):
386387
def addUnexpectedSuccess(self, test):
387388
super(CustomTextTestResult, self).addUnexpectedSuccess(test)
388389
if self.show_test_info:
389-
self.stream.writeln(self.separator_pre_result)
390+
# self.stream.writeln(self.separator_pre_result)
390391
self.stream.writeln("UNEXPECTED SUCCESS")
391392
self.stream.flush()
392393
self.num_failed += 1

extra_tests/jsontests.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
import os
55

66

7+
testnames = findtests()
8+
# idk why this fixes the hanging, if it does
9+
testnames.remove('test_importlib')
10+
testnames.insert(0, 'test_importlib')
11+
712
def loadTestsOrSkip(loader, name):
813
try:
914
return loader.loadTestsFromName(name)
@@ -17,13 +22,13 @@ def testSkipped(self):
1722
return loader.suiteClass((TestClass(name),))
1823

1924
loader = unittest.defaultTestLoader
20-
suite = loader.suiteClass([loadTestsOrSkip(loader, 'test.' + name) for name in findtests()])
25+
suite = loader.suiteClass([loadTestsOrSkip(loader, 'test.' + name) for name in testnames])
2126

2227
resultsfile = os.path.join(os.path.dirname(__file__), "cpython_tests_results.json")
2328
if os.path.exists(resultsfile):
2429
os.remove(resultsfile)
2530

26-
runner = Runner(results_file_path=resultsfile)
31+
runner = Runner(results_file_path=resultsfile, verbosity=2)
2732
runner.run(suite)
2833

2934
print("Done! results are available in", resultsfile)

vm/src/dictdatatype.rs

Lines changed: 14 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,14 @@ impl<T> DictInner<T> {
215215
None
216216
}
217217
}
218+
219+
#[inline]
220+
fn get_entry_checked(&self, idx: EntryIndex, index_index: IndexIndex) -> Option<&DictEntry<T>> {
221+
match self.entries.get(idx) {
222+
Some(Some(entry)) if entry.index == index_index => Some(entry),
223+
_ => None,
224+
}
225+
}
218226
}
219227

220228
type PopInnerResult<T> = ControlFlow<Option<DictEntry<T>>>;
@@ -284,13 +292,8 @@ impl<T: Clone> Dict<T> {
284292
let (entry, index_index) = self.lookup(vm, key, hash, None)?;
285293
if let Some(index) = entry.index() {
286294
let inner = self.read();
287-
if let Some(entry) = inner.entries.get(index) {
288-
let entry = extract_dict_entry(entry);
289-
if entry.index == index_index {
290-
break Some(entry.value.clone());
291-
} else {
292-
// stuff shifted around, let's try again
293-
}
295+
if let Some(entry) = inner.get_entry_checked(index, index_index) {
296+
break Some(entry.value.clone());
294297
} else {
295298
// The dict was changed since we did lookup. Let's try again.
296299
continue;
@@ -395,13 +398,8 @@ impl<T: Clone> Dict<T> {
395398
let (index_entry, index_index) = lookup;
396399
if let Some(index) = index_entry.index() {
397400
let inner = self.read();
398-
if let Some(entry) = inner.entries.get(index) {
399-
let entry = extract_dict_entry(entry);
400-
if entry.index == index_index {
401-
break entry.value.clone();
402-
} else {
403-
// stuff shifted around, let's try again
404-
}
401+
if let Some(entry) = inner.get_entry_checked(index, index_index) {
402+
break entry.value.clone();
405403
} else {
406404
// The dict was changed since we did lookup, let's try again.
407405
continue;
@@ -439,13 +437,8 @@ impl<T: Clone> Dict<T> {
439437
let (index_entry, index_index) = lookup;
440438
if let Some(index) = index_entry.index() {
441439
let inner = self.read();
442-
if let Some(entry) = inner.entries.get(index) {
443-
let entry = extract_dict_entry(entry);
444-
if entry.index == index_index {
445-
break (entry.key.clone(), entry.value.clone());
446-
} else {
447-
// stuff shifted around, let's try again
448-
}
440+
if let Some(entry) = inner.get_entry_checked(index, index_index) {
441+
break (entry.key.clone(), entry.value.clone());
449442
} else {
450443
// The dict was changed since we did lookup, let's try again.
451444
continue;
@@ -886,12 +879,6 @@ fn str_exact<'a>(obj: &'a PyObject, vm: &VirtualMachine) -> Option<&'a PyStr> {
886879
}
887880
}
888881

889-
fn extract_dict_entry<T>(option_entry: &Option<DictEntry<T>>) -> &DictEntry<T> {
890-
option_entry
891-
.as_ref()
892-
.expect("The dict was changed since we did lookup.")
893-
}
894-
895882
#[cfg(test)]
896883
mod tests {
897884
use super::{Dict, DictKey};

0 commit comments

Comments
 (0)