[PATCH] D127099: [Dexter] Use PurePath to compare paths in Dexter commands
Stephen Tozer via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 6 04:02:03 PDT 2022
StephenTozer created this revision.
StephenTozer added reviewers: jmorse, Orlando.
StephenTozer added a project: debug-info.
Herald added a project: All.
StephenTozer requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Prior to this patch, when comparing the paths of source files in Dexter commands, we would use os.samefile. This function performs actual file operations and requires the files to exist on the current system; this is suitable when running the test for the first time, but renders the DextIR output files non-portable, and unusable if the source files no longer exist in their original location.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D127099
Files:
cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexDeclareAddress.py
cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexExpectWatchBase.py
cross-project-tests/debuginfo-tests/dexter/dex/dextIR/ProgramState.py
Index: cross-project-tests/debuginfo-tests/dexter/dex/dextIR/ProgramState.py
===================================================================
--- cross-project-tests/debuginfo-tests/dexter/dex/dextIR/ProgramState.py
+++ cross-project-tests/debuginfo-tests/dexter/dex/dextIR/ProgramState.py
@@ -11,6 +11,7 @@
import os
from collections import OrderedDict
+from pathlib import PurePath
from typing import List
class SourceLocation:
@@ -31,7 +32,7 @@
if not other or not isinstance(other, SourceLocation):
return False
- if self.path and (self.path != other.path):
+ if self.path and (other.path is None or (PurePath(self.path) != PurePath(other.path))):
return False
if self.lineno and (self.lineno != other.lineno):
Index: cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexExpectWatchBase.py
===================================================================
--- cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexExpectWatchBase.py
+++ cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexExpectWatchBase.py
@@ -14,6 +14,7 @@
import os
import math
from collections import namedtuple
+from pathlib import PurePath
from dex.command.CommandBase import CommandBase, StepExpectInfo
from dex.command.StepValueInfo import StepValueInfo
@@ -208,12 +209,11 @@
return differences
def eval(self, step_collection):
- assert os.path.exists(self.path)
for step in step_collection.steps:
loc = step.current_location
- if (loc.path and os.path.exists(loc.path) and
- os.path.samefile(loc.path, self.path) and
+ if (loc.path and self.path and
+ PurePath(loc.path) == PurePath(self.path) and
loc.lineno in self.line_range):
try:
watch = step.program_state.frames[0].watches[self.expression]
Index: cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexDeclareAddress.py
===================================================================
--- cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexDeclareAddress.py
+++ cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexDeclareAddress.py
@@ -8,6 +8,7 @@
"""
import os
+from pathlib import PurePath
from dex.command.CommandBase import CommandBase, StepExpectInfo
@@ -37,13 +38,12 @@
return self.addr_name
def eval(self, step_collection):
- assert os.path.exists(self.path)
self.address_resolutions[self.get_address_name()] = None
for step in step_collection.steps:
loc = step.current_location
- if (loc.path and os.path.exists(loc.path) and
- os.path.samefile(loc.path, self.path) and
+ if (loc.path and self.path and
+ PurePath(loc.path) == PurePath(self.path) and
loc.lineno == self.on_line):
if self.hit_count > 0:
self.hit_count -= 1
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D127099.434422.patch
Type: text/x-patch
Size: 3122 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220606/357ac63f/attachment.bin>
More information about the llvm-commits
mailing list