Author: Ronan Lamy <ronan.l...@gmail.com>
Branch: py3.6
Changeset: r97128:5dc520fcc4f9
Date: 2019-08-09 17:31 +0100
http://bitbucket.org/pypy/pypy/changeset/5dc520fcc4f9/

Log:    hg merge default

diff --git a/pypy/module/_lsprof/test/test_cprofile.py 
b/pypy/module/_lsprof/test/test_cprofile.py
--- a/pypy/module/_lsprof/test/test_cprofile.py
+++ b/pypy/module/_lsprof/test/test_cprofile.py
@@ -4,7 +4,6 @@
     }
 
     def setup_class(cls):
-        cls.w_expected_output = cls.space.wrap(expected_output)
         cls.w_file = cls.space.wrap(__file__)
 
     def test_repr(self):
@@ -167,152 +166,3 @@
         prof.disable()
         stats = prof.getstats()
         assert len(stats) == 2
-
-    def test_use_cprofile(self):
-        import sys, os
-        # XXX this is evil trickery to walk around the fact that we don't
-        #     have __file__ at app-level here
-        sys.path.insert(0, os.path.dirname(self.file))
-        try:
-            import re
-            from cProfile import Profile
-            from profilee import testfunc, timer
-
-            methodnames = ['print_stats', 'print_callers', 'print_callees']
-
-            def do_profiling(cls):
-                results = []
-                prof = cls(timer, 0.001)
-                start_timer = timer()
-                prof.runctx("testfunc()", {'testfunc':testfunc}, locals())
-                results.append(timer() - start_timer)
-                for methodname in methodnames:
-                    import pstats
-                    from io import StringIO
-                    s = StringIO()
-                    stats = pstats.Stats(prof, stream=s)
-                    stats.strip_dirs().sort_stats("stdname")
-                    getattr(stats, methodname)()
-                    results.append(s.getvalue())
-                return results, prof
-
-            res, prof = do_profiling(Profile)
-            assert res[0] == 1000
-            for i, method in enumerate(methodnames):
-                got = res[i + 1]
-                expected = self.expected_output[method]
-                patterns = expected.splitlines()
-                lines = set(got.splitlines())
-                lines.remove('') # ignore blank lines
-                for pattern in patterns:
-                    if not pattern:
-                        continue # ignore blank lines
-                    pattern = pattern.replace('(', '\\(')
-                    pattern = pattern.replace(')', '\\)')
-                    pattern = pattern.replace('?', '\\?')
-                    pattern = pattern.replace(r'\\?', '?')
-                    pattern = pattern.replace(r'\\(', '(')
-                    pattern = pattern.replace(r'\\)', ')')
-                    repattern = re.compile('^' + pattern + '$')
-                    for line in lines:
-                        if repattern.match(line):
-                            lines.remove(line)
-                            break
-                    else:
-                        print('NOT FOUND: %s' % pattern.rstrip('\n'))
-                        print('--- GOT ---')
-                        print(got)
-                        print('')
-                        print('--- EXPECTED ---')
-                        print(expected)
-                        assert False
-                assert not lines
-        finally:
-            sys.path.pop(0)
-
-
-expected_output = {}
-expected_output['print_stats'] = """\
-         119 function calls (99 primitive calls) in 1.000 seconds
-
-   Ordered by: standard name
-
-   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
-        1    0.000    0.000    1.000    1.000 <string>:1(<module>)
-       28    0.028    0.001    0.028    0.001 profilee.py:110(__getattr__)
-        1    0.270    0.270    1.000    1.000 profilee.py:25(testfunc)
-     23/3    0.150    0.007    0.170    0.057 profilee.py:35(factorial)
-       20    0.020    0.001    0.020    0.001 profilee.py:48(mul)
-        2    0.040    0.020    0.600    0.300 profilee.py:55(helper)
-        4    0.116    0.029    0.120    0.030 profilee.py:73(helper1)
-        2    0.000    0.000    0.140    0.070 profilee.py:84(helper2_indirect)
-        8    0.312    0.039    0.400    0.050 profilee.py:88(helper2)
-        8    0.064    0.008    0.080    0.010 profilee.py:98(subhelper)
-        1    0.000    0.000    1.000    1.000 {built-in function exec}
-       12    0.000    0.000    0.012    0.001 {built-in function hasattr}
-        4    0.000    0.000    0.000    0.000 {built-in function sys.exc_info}
-        4    0.000    0.000    0.000    0.000 {method 'append' of 'list' 
objects}
-        1    0.000    0.000    0.000    0.000 {method 'disable' of 
'_lsprof.Profiler' objects}
-
-
-"""
-
-expected_output['print_callers'] = """\
-   Ordered by: standard name
-
-Function                                          was called by...
-                                                      ncalls  tottime  cumtime
-<string>:1(<module>)                              <-       1    0.000    1.000 
 {built-in function exec}
-profilee.py:110(__getattr__)                      <-      16    0.016    0.016 
 profilee.py:98(subhelper)
-                                                          12    0.012    0.012 
 {built-in function hasattr}
-profilee.py:25(testfunc)                          <-       1    0.270    1.000 
 <string>:1(<module>)
-profilee.py:35(factorial)                         <-       1    0.014    0.130 
 profilee.py:25(testfunc)
-                                                        20/3    0.130    0.147 
 profilee.py:35(factorial)
-                                                           2    0.006    0.040 
 profilee.py:84(helper2_indirect)
-profilee.py:48(mul)                               <-      20    0.020    0.020 
 profilee.py:35(factorial)
-profilee.py:55(helper)                            <-       2    0.040    0.600 
 profilee.py:25(testfunc)
-profilee.py:73(helper1)                           <-       4    0.116    0.120 
 profilee.py:55(helper)
-profilee.py:84(helper2_indirect)                  <-       2    0.000    0.140 
 profilee.py:55(helper)
-profilee.py:88(helper2)                           <-       6    0.234    0.300 
 profilee.py:55(helper)
-                                                           2    0.078    0.100 
 profilee.py:84(helper2_indirect)
-profilee.py:98(subhelper)                         <-       8    0.064    0.080 
 profilee.py:88(helper2)
-{built-in function exec}                          <- 
-{built-in function hasattr}                       <-       4    0.000    0.004 
 profilee.py:73(helper1)
-                                                           8    0.000    0.008 
 profilee.py:88(helper2)
-{method 'append' of 'list' objects}               <-       4    0.000    0.000 
 profilee.py:73(helper1)
-{method 'disable' of '_lsprof.Profiler' objects}  <- 
-{built-in function sys.exc_info}                  <-       4    0.000    0.000 
 profilee.py:73(helper1)
-
-
-"""
-expected_output['print_callees'] = """\
-   Ordered by: standard name
-
-Function                                          called...
-                                                      ncalls  tottime  cumtime
-<string>:1(<module>)                              ->       1    0.270    1.000 
 profilee.py:25(testfunc)
-profilee.py:110(__getattr__)                      -> 
-profilee.py:25(testfunc)                          ->       1    0.014    0.130 
 profilee.py:35(factorial)
-                                                           2    0.040    0.600 
 profilee.py:55(helper)
-profilee.py:35(factorial)                         ->    20/3    0.130    0.147 
 profilee.py:35(factorial)
-                                                          20    0.020    0.020 
 profilee.py:48(mul)
-profilee.py:48(mul)                               -> 
-profilee.py:55(helper)                            ->       4    0.116    0.120 
 profilee.py:73(helper1)
-                                                           2    0.000    0.140 
 profilee.py:84(helper2_indirect)
-                                                           6    0.234    0.300 
 profilee.py:88(helper2)
-profilee.py:73(helper1)                           ->       4    0.000    0.004 
 {built-in function hasattr}
-                                                           4    0.000    0.000 
 {method 'append' of 'list' objects}
-                                                           4    0.000    0.000 
 {built-in function sys.exc_info}
-profilee.py:84(helper2_indirect)                  ->       2    0.006    0.040 
 profilee.py:35(factorial)
-                                                           2    0.078    0.100 
 profilee.py:88(helper2)
-profilee.py:88(helper2)                           ->       8    0.064    0.080 
 profilee.py:98(subhelper)
-                                                           8    0.000    0.008 
 {built-in function hasattr}
-profilee.py:98(subhelper)                         ->      16    0.016    0.016 
 profilee.py:110(__getattr__)
-{built-in function exec}                          ->       1    0.000    1.000 
 <string>:1(<module>)
-{built-in function hasattr}                       ->      12    0.012    0.012 
 profilee.py:110(__getattr__)
-{method 'append' of 'list' objects}               -> 
-{method 'disable' of '_lsprof.Profiler' objects}  -> 
-{built-in function sys.exc_info}                  -> 
-
-
-"""
diff --git a/pypy/objspace/std/test/test_methodcache.py 
b/pypy/objspace/std/test/test_methodcache.py
--- a/pypy/objspace/std/test/test_methodcache.py
+++ b/pypy/objspace/std/test/test_methodcache.py
@@ -47,52 +47,6 @@
             assert cache_counter[1] >= 3 # should be (27, 3)
             assert sum(cache_counter) == 30
 
-    def test_change_methods(self):
-        # this test fails because of the following line in typeobject.py:427
-        #             if cached_name is name:
-
-        # in py3k, identifiers are stored in W_UnicodeObject and unwrapped by
-        # calling space.text_w, which .encode('ascii') the string, thus
-        # creating new strings all the time. The problem should be solved when
-        # we implement proper unicode identifiers in py3k
-        @self.retry
-        def run():
-            import __pypy__
-            class A(object):
-                def f(self):
-                    return 42
-            l = [A()] * 10
-            __pypy__.reset_method_cache_counter()
-            for i, a in enumerate(l):
-                assert a.f() == 42 + i
-                A.f = eval("lambda self: %s" % (42 + i + 1, ))
-            cache_counter = __pypy__.method_cache_counter("f")
-            #
-            # a bit of explanation about what's going on.  (1) is the line 
"a.f()"
-            # and (2) is "A.f = ...".
-            #
-            # at line (1) we do the lookup on type(a).f
-            #
-            # at line (2) we do a setattr on A. However, descr_setattr does 
also a
-            # lookup of type(A).f i.e. type.f, to check if by chance 'f' is a 
data
-            # descriptor.
-            #
-            # At the first iteration:
-            # (1) is a miss because it's the first lookup of A.f. The result 
is cached
-            #
-            # (2) is a miss because it is the first lookup of type.f. The
-            # (non-existant) result is cached. The version of A changes, and 
'f'
-            # is changed to be a cell object, so that subsequest assignments 
won't
-            # change the version of A
-            #
-            # At the second iteration:
-            # (1) is a miss because the version of A changed just before
-            # (2) is a hit, because type.f is cached. The version of A no 
longer changes
-            #
-            # At the third and subsequent iterations:
-            # (1) is a hit, because the version of A did not change
-            # (2) is a hit, see above
-            assert cache_counter == (17, 3)
 
     def test_subclasses(self):
         @self.retry
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to