Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-06-18 15:44:40 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-06-18 16:03:46 +0400
commit0eb060c7b4fb3a85b14c9efca85a7a361640a95e (patch)
tree87e50d4913eb210f7d8aa6ab2f62136e42aa6c11 /tests/check_deprecated.py
parent7259ac821ea73bdde3add0390dfc1137f619bc9a (diff)
Move tests into tests/ top-level dir
Diffstat (limited to 'tests/check_deprecated.py')
-rw-r--r--tests/check_deprecated.py149
1 files changed, 149 insertions, 0 deletions
diff --git a/tests/check_deprecated.py b/tests/check_deprecated.py
new file mode 100644
index 00000000000..d7193155b1c
--- /dev/null
+++ b/tests/check_deprecated.py
@@ -0,0 +1,149 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8 compliant>
+
+import os
+from os.path import splitext
+
+DEPRECATE_DAYS = 120
+
+SKIP_DIRS = ("extern",
+ "scons",
+ "tests", # not this dir
+ )
+
+
+def is_c_header(filename):
+ ext = splitext(filename)[1]
+ return (ext in {".h", ".hpp", ".hxx", ".hh"})
+
+
+def is_c(filename):
+ ext = splitext(filename)[1]
+ return (ext in {".c", ".cpp", ".cxx", ".m", ".mm", ".rc", ".cc", ".inl"})
+
+
+def is_c_any(filename):
+ return is_c(filename) or is_c_header(filename)
+
+
+def is_py(filename):
+ ext = splitext(filename)[1]
+ return (ext == ".py")
+
+
+def is_source_any(filename):
+ return is_c_any(filename) or is_py(filename)
+
+
+def source_list(path, filename_check=None):
+ for dirpath, dirnames, filenames in os.walk(path):
+
+ # skip '.svn'
+ if dirpath.startswith("."):
+ continue
+
+ for filename in filenames:
+ if filename_check is None or filename_check(filename):
+ yield os.path.join(dirpath, filename)
+
+
+def deprecations():
+ """
+ Searches out source code for lines like
+
+ /* *DEPRECATED* 2011/7/17 bgl.Buffer.list info text */
+
+ Or...
+
+ # *DEPRECATED* 2010/12/22 some.py.func more info */
+
+ """
+ import datetime
+ SOURCE_DIR = os.path.normpath(os.path.abspath(os.path.normpath(os.path.join(os.path.dirname(__file__), ".."))))
+
+ SKIP_DIRS_ABS = [os.path.join(SOURCE_DIR, p) for p in SKIP_DIRS]
+
+ deprecations_ls = []
+
+ scan_tot = 0
+
+ print("scanning in %r for '*DEPRECATED* YYYY/MM/DD info'" % SOURCE_DIR)
+
+ for fn in source_list(SOURCE_DIR, is_source_any):
+ # print(fn)
+ skip = False
+ for p in SKIP_DIRS_ABS:
+ if fn.startswith(p):
+ skip = True
+ break
+ if skip:
+ continue
+
+ file = open(fn, 'r', encoding="utf8")
+ for i, l in enumerate(file):
+ # logic for deprecation warnings
+ if '*DEPRECATED*' in l:
+ try:
+ l = l.strip()
+ data = l.split('*DEPRECATED*', 1)[-1].strip().strip()
+ data = [w.strip() for w in data.split('/', 2)]
+ data[-1], info = data[-1].split(' ', 1)
+ info = info.split("*/", 1)[0]
+ if len(data) != 3:
+ print(" poorly formatting line:\n"
+ " %r:%d\n"
+ " %s" %
+ (fn, i + 1, l)
+ )
+ else:
+ data = datetime.datetime(*tuple([int(w) for w in data]))
+
+ deprecations_ls.append((data, (fn, i + 1), info))
+ except:
+ print("Error file - %r:%d" % (fn, i + 1))
+ import traceback
+ traceback.print_exc()
+
+ scan_tot += 1
+
+ print(" scanned %d files" % scan_tot)
+
+ return deprecations_ls
+
+
+def main():
+ import datetime
+ now = datetime.datetime.now()
+
+ deps = deprecations()
+
+ print("\nAll deprecations...")
+ for data, fileinfo, info in deps:
+ days_old = (now - data).days
+ if days_old > DEPRECATE_DAYS:
+ info = "*** REMOVE! *** " + info
+ print(" %r, days-old(%.2d), %s:%d - %s" % (data, days_old, fileinfo[0], fileinfo[1], info))
+ if deps:
+ print("\ndone!")
+ else:
+ print("\nnone found!")
+
+if __name__ == '__main__':
+ main()