Browse Source

practracker: Normalize filesystem paths across Windows and Posix.

This was causing issues because the exceptions file is written using Posix
paths, whereas practracker in Windows was trying to match Windows paths ("\"
instead of "/").
George Kadianakis 6 years ago
parent
commit
8c9835c6e5
2 changed files with 7 additions and 2 deletions
  1. 6 1
      scripts/maint/practracker/problem.py
  2. 1 1
      scripts/maint/practracker/util.py

+ 6 - 1
scripts/maint/practracker/problem.py

@@ -7,6 +7,8 @@ problem is worse than a registered exception so that it only warns when things
 get worse.
 get worse.
 """
 """
 
 
+import os.path
+
 class ProblemVault(object):
 class ProblemVault(object):
     """
     """
     Singleton where we store the various new problems we
     Singleton where we store the various new problems we
@@ -70,7 +72,10 @@ class Problem(object):
 
 
     def key(self):
     def key(self):
         """Generate a unique key that describes this problem that can be used as a dictionary key"""
         """Generate a unique key that describes this problem that can be used as a dictionary key"""
-        return "%s:%s" % (self.problem_location, self.problem_type)
+        # Problem location is a filesystem path, so we need to normalize this
+        # across platforms otherwise same paths are not gonna match.
+        canonical_location = os.path.normcase(self.problem_location)
+        return "%s:%s" % (canonical_location, self.problem_type)
 
 
     def __str__(self):
     def __str__(self):
         return "problem %s %s %s" % (self.problem_type, self.problem_location, self.metric_value)
         return "problem %s %s %s" % (self.problem_type, self.problem_location, self.metric_value)

+ 1 - 1
scripts/maint/practracker/util.py

@@ -18,7 +18,7 @@ def get_tor_c_files(tor_topdir):
 
 
             # Exclude the excluded paths
             # Exclude the excluded paths
             full_path = os.path.join(root,filename)
             full_path = os.path.join(root,filename)
-            if any(exclude_dir in full_path for exclude_dir in EXCLUDE_SOURCE_DIRS):
+            if any(os.path.normcase(exclude_dir) in full_path for exclude_dir in EXCLUDE_SOURCE_DIRS):
                 continue
                 continue
 
 
             files_list.append(full_path)
             files_list.append(full_path)