Massive test suite cleanup to stop everyone from manually having to compute "mydir" inside each test case. 

This has led to many test suite failures because of copy and paste where new test cases were based off of other test cases and the "mydir" variable wasn't updated.

Now you can call your superclasses "compute_mydir()" function with "__file__" as the sole argument and the relative path will be computed for you. 

llvm-svn: 196985
diff --git a/lldb/test/api/check_public_api_headers/TestPublicAPIHeaders.py b/lldb/test/api/check_public_api_headers/TestPublicAPIHeaders.py
index 63618e0..269e056 100644
--- a/lldb/test/api/check_public_api_headers/TestPublicAPIHeaders.py
+++ b/lldb/test/api/check_public_api_headers/TestPublicAPIHeaders.py
@@ -10,7 +10,7 @@
 
 class SBDirCheckerCase(TestBase):
 
-    mydir = os.path.join("api", "check_public_api_headers")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         TestBase.setUp(self)
diff --git a/lldb/test/api/multithreaded/TestMultithreaded.py b/lldb/test/api/multithreaded/TestMultithreaded.py
index 0842e14..a9f45bf 100644
--- a/lldb/test/api/multithreaded/TestMultithreaded.py
+++ b/lldb/test/api/multithreaded/TestMultithreaded.py
@@ -8,7 +8,7 @@
 
 class SBBreakpointCallbackCase(TestBase):
 
-    mydir = os.path.join("api", "multithreaded")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         TestBase.setUp(self)
diff --git a/lldb/test/arm_emulation/TestEmulations.py b/lldb/test/arm_emulation/TestEmulations.py
index c0a78a3..baf791c 100644
--- a/lldb/test/arm_emulation/TestEmulations.py
+++ b/lldb/test/arm_emulation/TestEmulations.py
@@ -9,7 +9,7 @@
 
 class ARMEmulationTestCase(TestBase):
     
-    mydir = "arm_emulation"
+    mydir = TestBase.compute_mydir(__file__)
 
     def test_thumb_emulations (self):
         current_dir = os.getcwd();
diff --git a/lldb/test/benchmarks/disassembly/TestDisassembly.py b/lldb/test/benchmarks/disassembly/TestDisassembly.py
index cff68b7..a2a54bd 100644
--- a/lldb/test/benchmarks/disassembly/TestDisassembly.py
+++ b/lldb/test/benchmarks/disassembly/TestDisassembly.py
@@ -12,7 +12,7 @@
 
 class DisassembleDriverMainLoop(BenchBase):
 
-    mydir = os.path.join("benchmarks", "disassembly")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         """
diff --git a/lldb/test/benchmarks/disassembly/TestDoAttachThenDisassembly.py b/lldb/test/benchmarks/disassembly/TestDoAttachThenDisassembly.py
index 0085a14..b31c244 100644
--- a/lldb/test/benchmarks/disassembly/TestDoAttachThenDisassembly.py
+++ b/lldb/test/benchmarks/disassembly/TestDoAttachThenDisassembly.py
@@ -10,7 +10,7 @@
 
 class AttachThenDisassemblyBench(BenchBase):
 
-    mydir = os.path.join("benchmarks", "disassembly")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         BenchBase.setUp(self)
diff --git a/lldb/test/benchmarks/disassembly/TestXcode41Vs42GDBDisassembly.py b/lldb/test/benchmarks/disassembly/TestXcode41Vs42GDBDisassembly.py
index 6e6875c..6c6dd98 100644
--- a/lldb/test/benchmarks/disassembly/TestXcode41Vs42GDBDisassembly.py
+++ b/lldb/test/benchmarks/disassembly/TestXcode41Vs42GDBDisassembly.py
@@ -8,7 +8,7 @@
 
 class XCode41Vs42GDBDisassembly(BenchBase):
 
-    mydir = os.path.join("benchmarks", "disassembly")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         BenchBase.setUp(self)
diff --git a/lldb/test/benchmarks/expression/TestExpressionCmd.py b/lldb/test/benchmarks/expression/TestExpressionCmd.py
index ca24739..5f71004 100644
--- a/lldb/test/benchmarks/expression/TestExpressionCmd.py
+++ b/lldb/test/benchmarks/expression/TestExpressionCmd.py
@@ -8,7 +8,7 @@
 
 class ExpressionEvaluationCase(BenchBase):
 
-    mydir = os.path.join("benchmarks", "expression")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         BenchBase.setUp(self)
diff --git a/lldb/test/benchmarks/expression/TestRepeatedExprs.py b/lldb/test/benchmarks/expression/TestRepeatedExprs.py
index 91a3335..1e7338f 100644
--- a/lldb/test/benchmarks/expression/TestRepeatedExprs.py
+++ b/lldb/test/benchmarks/expression/TestRepeatedExprs.py
@@ -8,7 +8,7 @@
 
 class RepeatedExprsCase(BenchBase):
 
-    mydir = os.path.join("benchmarks", "expression")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         BenchBase.setUp(self)
diff --git a/lldb/test/benchmarks/frame_variable/TestFrameVariableResponse.py b/lldb/test/benchmarks/frame_variable/TestFrameVariableResponse.py
index 03cc09d..e3acedd 100644
--- a/lldb/test/benchmarks/frame_variable/TestFrameVariableResponse.py
+++ b/lldb/test/benchmarks/frame_variable/TestFrameVariableResponse.py
@@ -8,7 +8,7 @@
 
 class FrameVariableResponseBench(BenchBase):
 
-    mydir = os.path.join("benchmarks", "frame_variable")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         BenchBase.setUp(self)
diff --git a/lldb/test/benchmarks/startup/TestStartupDelays.py b/lldb/test/benchmarks/startup/TestStartupDelays.py
index 2c3cad5..b9bf90b 100644
--- a/lldb/test/benchmarks/startup/TestStartupDelays.py
+++ b/lldb/test/benchmarks/startup/TestStartupDelays.py
@@ -8,7 +8,7 @@
 
 class StartupDelaysBench(BenchBase):
 
-    mydir = os.path.join("benchmarks", "startup")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         BenchBase.setUp(self)
diff --git a/lldb/test/benchmarks/stepping/TestRunHooksThenSteppings.py b/lldb/test/benchmarks/stepping/TestRunHooksThenSteppings.py
index dca6e95..da3ff22 100644
--- a/lldb/test/benchmarks/stepping/TestRunHooksThenSteppings.py
+++ b/lldb/test/benchmarks/stepping/TestRunHooksThenSteppings.py
@@ -8,7 +8,7 @@
 
 class RunHooksThenSteppingsBench(BenchBase):
 
-    mydir = os.path.join("benchmarks", "stepping")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         BenchBase.setUp(self)
diff --git a/lldb/test/benchmarks/stepping/TestSteppingSpeed.py b/lldb/test/benchmarks/stepping/TestSteppingSpeed.py
index 780e253..a62491c 100644
--- a/lldb/test/benchmarks/stepping/TestSteppingSpeed.py
+++ b/lldb/test/benchmarks/stepping/TestSteppingSpeed.py
@@ -8,7 +8,7 @@
 
 class SteppingSpeedBench(BenchBase):
 
-    mydir = os.path.join("benchmarks", "stepping")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         BenchBase.setUp(self)
diff --git a/lldb/test/benchmarks/turnaround/TestCompileRunToBreakpointTurnaround.py b/lldb/test/benchmarks/turnaround/TestCompileRunToBreakpointTurnaround.py
index d923f13..d9d3f42 100644
--- a/lldb/test/benchmarks/turnaround/TestCompileRunToBreakpointTurnaround.py
+++ b/lldb/test/benchmarks/turnaround/TestCompileRunToBreakpointTurnaround.py
@@ -8,7 +8,7 @@
 
 class CompileRunToBreakpointBench(BenchBase):
 
-    mydir = os.path.join("benchmarks", "turnaround")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         BenchBase.setUp(self)
diff --git a/lldb/test/expression_command/call-function/TestCallStdStringFunction.py b/lldb/test/expression_command/call-function/TestCallStdStringFunction.py
index 96ad361..e3cea82 100644
--- a/lldb/test/expression_command/call-function/TestCallStdStringFunction.py
+++ b/lldb/test/expression_command/call-function/TestCallStdStringFunction.py
@@ -9,7 +9,7 @@
 
 class ExprCommandCallFunctionTestCase(TestBase):
 
-    mydir = os.path.join("expression_command", "call-function")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/expression_command/call-restarts/TestCallThatRestarts.py b/lldb/test/expression_command/call-restarts/TestCallThatRestarts.py
index e48f8eb..def31a1 100644
--- a/lldb/test/expression_command/call-restarts/TestCallThatRestarts.py
+++ b/lldb/test/expression_command/call-restarts/TestCallThatRestarts.py
@@ -9,7 +9,7 @@
 
 class ExprCommandWithTimeoutsTestCase(TestBase):
 
-    mydir = os.path.join("expression_command", "call-restarts")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/expression_command/call-throws/TestCallThatThrows.py b/lldb/test/expression_command/call-throws/TestCallThatThrows.py
index 5902857..d2ccb07 100644
--- a/lldb/test/expression_command/call-throws/TestCallThatThrows.py
+++ b/lldb/test/expression_command/call-throws/TestCallThatThrows.py
@@ -9,7 +9,7 @@
 
 class ExprCommandWithThrowTestCase(TestBase):
 
-    mydir = os.path.join("expression_command", "call-throws")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/expression_command/formatters/TestFormatters.py b/lldb/test/expression_command/formatters/TestFormatters.py
index 8f312f6..b83b63c 100644
--- a/lldb/test/expression_command/formatters/TestFormatters.py
+++ b/lldb/test/expression_command/formatters/TestFormatters.py
@@ -9,7 +9,7 @@
 
 class ExprFormattersTestCase(TestBase):
 
-    mydir = os.path.join("expression_command", "formatters")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/expression_command/issue_11588/Test11588.py b/lldb/test/expression_command/issue_11588/Test11588.py
index c67afd4..81967d9 100644
--- a/lldb/test/expression_command/issue_11588/Test11588.py
+++ b/lldb/test/expression_command/issue_11588/Test11588.py
@@ -12,7 +12,7 @@
 
 class Issue11581TestCase(TestBase):
 
-    mydir = os.path.join("expression_command", "issue_11588")
+    mydir = TestBase.compute_mydir(__file__)
 
     def test_11581_commands(self):
         # This is the function to remove the custom commands in order to have a
diff --git a/lldb/test/expression_command/persistent_types/TestPersistentTypes.py b/lldb/test/expression_command/persistent_types/TestPersistentTypes.py
index bf24e9e..51b7b06 100644
--- a/lldb/test/expression_command/persistent_types/TestPersistentTypes.py
+++ b/lldb/test/expression_command/persistent_types/TestPersistentTypes.py
@@ -9,7 +9,7 @@
 
 class PersistenttypesTestCase(TestBase):
 
-    mydir = os.path.join("expression_command", "persistent_types")
+    mydir = TestBase.compute_mydir(__file__)
 
     def test_persistent_types(self):
         """Test that lldb persistent types works correctly."""
diff --git a/lldb/test/expression_command/persistent_variables/TestPersistentVariables.py b/lldb/test/expression_command/persistent_variables/TestPersistentVariables.py
index 2a10108..8e7af00 100644
--- a/lldb/test/expression_command/persistent_variables/TestPersistentVariables.py
+++ b/lldb/test/expression_command/persistent_variables/TestPersistentVariables.py
@@ -9,7 +9,7 @@
 
 class PersistentVariablesTestCase(TestBase):
 
-    mydir = os.path.join("expression_command", "persistent_variables")
+    mydir = TestBase.compute_mydir(__file__)
 
     def test_persistent_variables(self):
         """Test that lldb persistent variables works correctly."""
diff --git a/lldb/test/expression_command/po_verbosity/TestPoVerbosity.py b/lldb/test/expression_command/po_verbosity/TestPoVerbosity.py
index d815217..da61acb 100644
--- a/lldb/test/expression_command/po_verbosity/TestPoVerbosity.py
+++ b/lldb/test/expression_command/po_verbosity/TestPoVerbosity.py
@@ -9,7 +9,7 @@
 
 class PoVerbosityTestCase(TestBase):
 
-    mydir = os.path.join("expression_command", "po_verbosity")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/expression_command/radar_8638051/Test8638051.py b/lldb/test/expression_command/radar_8638051/Test8638051.py
index 89c8b9e..823c8e1 100644
--- a/lldb/test/expression_command/radar_8638051/Test8638051.py
+++ b/lldb/test/expression_command/radar_8638051/Test8638051.py
@@ -9,7 +9,7 @@
 
 class Radar8638051TestCase(TestBase):
 
-    mydir = os.path.join("expression_command", "radar_8638051")
+    mydir = TestBase.compute_mydir(__file__)
 
     def test_expr_commands(self):
         """The following expression commands should not crash."""
diff --git a/lldb/test/expression_command/radar_9531204/TestPrintfAfterUp.py b/lldb/test/expression_command/radar_9531204/TestPrintfAfterUp.py
index 9d63e8f..1c96ce1 100644
--- a/lldb/test/expression_command/radar_9531204/TestPrintfAfterUp.py
+++ b/lldb/test/expression_command/radar_9531204/TestPrintfAfterUp.py
@@ -10,7 +10,7 @@
 
 class Radar9531204TestCase(TestBase):
 
-    mydir = os.path.join("expression_command", "radar_9531204")
+    mydir = TestBase.compute_mydir(__file__)
 
     # rdar://problem/9531204
     @expectedFailureFreeBSD('llvm.org/pr17183')
diff --git a/lldb/test/expression_command/radar_9673664/TestExprHelpExamples.py b/lldb/test/expression_command/radar_9673664/TestExprHelpExamples.py
index 3ae2227..ea15e86 100644
--- a/lldb/test/expression_command/radar_9673664/TestExprHelpExamples.py
+++ b/lldb/test/expression_command/radar_9673664/TestExprHelpExamples.py
@@ -10,7 +10,7 @@
 
 class Radar9673644TestCase(TestBase):
 
-    mydir = os.path.join("expression_command", "radar_9673664")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/expression_command/test/TestExprs.py b/lldb/test/expression_command/test/TestExprs.py
index 91492c1..01fec1e 100644
--- a/lldb/test/expression_command/test/TestExprs.py
+++ b/lldb/test/expression_command/test/TestExprs.py
@@ -19,7 +19,7 @@
 
 class BasicExprCommandsTestCase(TestBase):
 
-    mydir = os.path.join("expression_command", "test")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/expression_command/test/TestExprs2.py b/lldb/test/expression_command/test/TestExprs2.py
index c3de5c0..1fdb787 100644
--- a/lldb/test/expression_command/test/TestExprs2.py
+++ b/lldb/test/expression_command/test/TestExprs2.py
@@ -10,7 +10,7 @@
 
 class ExprCommands2TestCase(TestBase):
 
-    mydir = os.path.join("expression_command", "test")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/expression_command/timeout/TestCallWithTimeout.py b/lldb/test/expression_command/timeout/TestCallWithTimeout.py
index 8a4be8f..4bb55c0 100644
--- a/lldb/test/expression_command/timeout/TestCallWithTimeout.py
+++ b/lldb/test/expression_command/timeout/TestCallWithTimeout.py
@@ -9,7 +9,7 @@
 
 class ExprCommandWithTimeoutsTestCase(TestBase):
 
-    mydir = os.path.join("expression_command", "timeout")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/expression_command/two-files/TestObjCTypeQueryFromOtherCompileUnit.py b/lldb/test/expression_command/two-files/TestObjCTypeQueryFromOtherCompileUnit.py
index 4e7ac41..2314ad8 100644
--- a/lldb/test/expression_command/two-files/TestObjCTypeQueryFromOtherCompileUnit.py
+++ b/lldb/test/expression_command/two-files/TestObjCTypeQueryFromOtherCompileUnit.py
@@ -11,7 +11,7 @@
 
 class ObjCTypeQueryTestCase(TestBase):
 
-    mydir = os.path.join("expression_command", "two-files")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/functionalities/abbreviation/TestAbbreviations.py b/lldb/test/functionalities/abbreviation/TestAbbreviations.py
index 38b9005..c864150 100644
--- a/lldb/test/functionalities/abbreviation/TestAbbreviations.py
+++ b/lldb/test/functionalities/abbreviation/TestAbbreviations.py
@@ -10,7 +10,7 @@
 
 class AbbreviationsTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "abbreviation")
+    mydir = TestBase.compute_mydir(__file__)
 
     def test_nonrunning_command_abbreviations (self):
         self.expect("ap script",
diff --git a/lldb/test/functionalities/abbreviation/TestCommonShortSpellings.py b/lldb/test/functionalities/abbreviation/TestCommonShortSpellings.py
index 6782f70..ec322db 100644
--- a/lldb/test/functionalities/abbreviation/TestCommonShortSpellings.py
+++ b/lldb/test/functionalities/abbreviation/TestCommonShortSpellings.py
@@ -11,7 +11,7 @@
 
 class CommonShortSpellingsTestCase(TestBase):
     
-    mydir = os.path.join("functionalities", "abbreviation")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/alias/TestAliases.py b/lldb/test/functionalities/alias/TestAliases.py
index 590e0ac..3713209 100644
--- a/lldb/test/functionalities/alias/TestAliases.py
+++ b/lldb/test/functionalities/alias/TestAliases.py
@@ -10,7 +10,7 @@
 
 class AliasTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "alias")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/archives/TestBSDArchives.py b/lldb/test/functionalities/archives/TestBSDArchives.py
index 4687175..632b981 100644
--- a/lldb/test/functionalities/archives/TestBSDArchives.py
+++ b/lldb/test/functionalities/archives/TestBSDArchives.py
@@ -8,7 +8,7 @@
 
 class BSDArchivesTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "archives")
+    mydir = TestBase.compute_mydir(__file__)
 
     def test_with_dwarf(self):
         """Break inside a() and b() defined within libfoo.a."""
diff --git a/lldb/test/functionalities/backticks/TestBackticksWithoutATarget.py b/lldb/test/functionalities/backticks/TestBackticksWithoutATarget.py
index d42fbe7..7c8cf86 100644
--- a/lldb/test/functionalities/backticks/TestBackticksWithoutATarget.py
+++ b/lldb/test/functionalities/backticks/TestBackticksWithoutATarget.py
@@ -9,7 +9,7 @@
 
 class BackticksWithNoTargetTestCase(TestBase):
 
-    mydir = "functionalities/backticks"
+    mydir = TestBase.compute_mydir(__file__)
 
     def test_backticks_no_target(self):
         """A simple test of backticks without a target."""
diff --git a/lldb/test/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py b/lldb/test/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py
index a5e66b3..4b5e983 100644
--- a/lldb/test/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py
+++ b/lldb/test/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py
@@ -10,7 +10,7 @@
 
 class BreakpointCommandTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "breakpoint", "breakpoint_command")
+    mydir = TestBase.compute_mydir(__file__)
 
     @classmethod
     def classCleanup(cls):
diff --git a/lldb/test/functionalities/breakpoint/breakpoint_command/TestRegexpBreakCommand.py b/lldb/test/functionalities/breakpoint/breakpoint_command/TestRegexpBreakCommand.py
index aa27369..26764fa 100644
--- a/lldb/test/functionalities/breakpoint/breakpoint_command/TestRegexpBreakCommand.py
+++ b/lldb/test/functionalities/breakpoint/breakpoint_command/TestRegexpBreakCommand.py
@@ -10,7 +10,7 @@
 
 class RegexpBreakCommandTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "breakpoint", "breakpoint_command")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/breakpoint/breakpoint_conditions/TestBreakpointConditions.py b/lldb/test/functionalities/breakpoint/breakpoint_conditions/TestBreakpointConditions.py
index 25a9ed1..95a515e 100644
--- a/lldb/test/functionalities/breakpoint/breakpoint_conditions/TestBreakpointConditions.py
+++ b/lldb/test/functionalities/breakpoint/breakpoint_conditions/TestBreakpointConditions.py
@@ -10,7 +10,7 @@
 
 class BreakpointConditionsTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "breakpoint", "breakpoint_conditions")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/breakpoint/breakpoint_ids/TestBreakpointIDs.py b/lldb/test/functionalities/breakpoint/breakpoint_ids/TestBreakpointIDs.py
index 15e79c2..89d9036 100644
--- a/lldb/test/functionalities/breakpoint/breakpoint_ids/TestBreakpointIDs.py
+++ b/lldb/test/functionalities/breakpoint/breakpoint_ids/TestBreakpointIDs.py
@@ -10,7 +10,7 @@
 
 class BreakpointIDTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "breakpoint", "breakpoint_ids")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/breakpoint/breakpoint_ignore_count/TestBreakpointIgnoreCount.py b/lldb/test/functionalities/breakpoint/breakpoint_ignore_count/TestBreakpointIgnoreCount.py
index c256562..c673a3b 100644
--- a/lldb/test/functionalities/breakpoint/breakpoint_ignore_count/TestBreakpointIgnoreCount.py
+++ b/lldb/test/functionalities/breakpoint/breakpoint_ignore_count/TestBreakpointIgnoreCount.py
@@ -10,7 +10,7 @@
 
 class BreakpointIgnoreCountTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "breakpoint", "breakpoint_ignore_count")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/breakpoint/breakpoint_locations/TestBreakpointLocations.py b/lldb/test/functionalities/breakpoint/breakpoint_locations/TestBreakpointLocations.py
index e6896c3..79c6a4c 100644
--- a/lldb/test/functionalities/breakpoint/breakpoint_locations/TestBreakpointLocations.py
+++ b/lldb/test/functionalities/breakpoint/breakpoint_locations/TestBreakpointLocations.py
@@ -10,7 +10,7 @@
 
 class BreakpointLocationsTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "breakpoint", "breakpoint_locations")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/breakpoint/inlined_breakpoints/TestInlinedBreakpoints.py b/lldb/test/functionalities/breakpoint/inlined_breakpoints/TestInlinedBreakpoints.py
index fc40841..d3dc055 100644
--- a/lldb/test/functionalities/breakpoint/inlined_breakpoints/TestInlinedBreakpoints.py
+++ b/lldb/test/functionalities/breakpoint/inlined_breakpoints/TestInlinedBreakpoints.py
@@ -12,7 +12,7 @@
 class InlinedBreakpointsTestCase(TestBase):
     """Bug fixed: rdar://problem/8464339"""
 
-    mydir = os.path.join("functionalities", "breakpoint", "inlined_breakpoints")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/command_history/TestCommandHistory.py b/lldb/test/functionalities/command_history/TestCommandHistory.py
index 4ed7c57..ac88e33 100644
--- a/lldb/test/functionalities/command_history/TestCommandHistory.py
+++ b/lldb/test/functionalities/command_history/TestCommandHistory.py
@@ -10,7 +10,7 @@
 
 class CommandHistoryTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "command_history")
+    mydir = TestBase.compute_mydir(__file__)
 
     def test_history(self):
         self.runCmd('command history --clear', inHistory=False)
diff --git a/lldb/test/functionalities/command_regex/TestCommandRegex.py b/lldb/test/functionalities/command_regex/TestCommandRegex.py
index c2fe66b..6052b0f 100644
--- a/lldb/test/functionalities/command_regex/TestCommandRegex.py
+++ b/lldb/test/functionalities/command_regex/TestCommandRegex.py
@@ -10,7 +10,7 @@
 
 class CommandRegexTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "command_regex")
+    mydir = TestBase.compute_mydir(__file__)
 
     def test_command_regex(self):
         """Test a simple scenario of 'command regexp' invocation and subsequent use."""
diff --git a/lldb/test/functionalities/command_script/TestCommandScript.py b/lldb/test/functionalities/command_script/TestCommandScript.py
index bbc9e78..63f67b2 100644
--- a/lldb/test/functionalities/command_script/TestCommandScript.py
+++ b/lldb/test/functionalities/command_script/TestCommandScript.py
@@ -9,7 +9,7 @@
 
 class CmdPythonTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "command_script")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/command_script/import/TestImport.py b/lldb/test/functionalities/command_script/import/TestImport.py
index 07b0b07..393285b 100644
--- a/lldb/test/functionalities/command_script/import/TestImport.py
+++ b/lldb/test/functionalities/command_script/import/TestImport.py
@@ -7,7 +7,7 @@
 
 class ImportTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "command_script", "import")
+    mydir = TestBase.compute_mydir(__file__)
 
     @python_api_test
     def test_import_command(self):
diff --git a/lldb/test/functionalities/command_script/import/rdar-12586188/TestRdar12586188.py b/lldb/test/functionalities/command_script/import/rdar-12586188/TestRdar12586188.py
index dc47906..e940261 100644
--- a/lldb/test/functionalities/command_script/import/rdar-12586188/TestRdar12586188.py
+++ b/lldb/test/functionalities/command_script/import/rdar-12586188/TestRdar12586188.py
@@ -7,7 +7,7 @@
 
 class Rdar12586188TestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "command_script", "import", "rdar-12586188")
+    mydir = TestBase.compute_mydir(__file__)
 
     @python_api_test
     def test_rdar12586188_command(self):
diff --git a/lldb/test/functionalities/command_source/TestCommandSource.py b/lldb/test/functionalities/command_source/TestCommandSource.py
index 26138bb..c3eeee6 100644
--- a/lldb/test/functionalities/command_source/TestCommandSource.py
+++ b/lldb/test/functionalities/command_source/TestCommandSource.py
@@ -11,7 +11,7 @@
 
 class CommandSourceTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "command_source")
+    mydir = TestBase.compute_mydir(__file__)
 
     def test_command_source(self):
         """Test that lldb command "command source" works correctly."""
diff --git a/lldb/test/functionalities/completion/TestCompletion.py b/lldb/test/functionalities/completion/TestCompletion.py
index 2017a30..7d99448 100644
--- a/lldb/test/functionalities/completion/TestCompletion.py
+++ b/lldb/test/functionalities/completion/TestCompletion.py
@@ -10,7 +10,7 @@
 
 class CommandLineCompletionTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "completion")
+    mydir = TestBase.compute_mydir(__file__)
 
     @classmethod
     def classCleanup(cls):
diff --git a/lldb/test/functionalities/conditional_break/TestConditionalBreak.py b/lldb/test/functionalities/conditional_break/TestConditionalBreak.py
index ed0a804..d664432 100644
--- a/lldb/test/functionalities/conditional_break/TestConditionalBreak.py
+++ b/lldb/test/functionalities/conditional_break/TestConditionalBreak.py
@@ -15,7 +15,7 @@
 
 class ConditionalBreakTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "conditional_break")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/functionalities/connect_remote/TestConnectRemote.py b/lldb/test/functionalities/connect_remote/TestConnectRemote.py
index fa32db4..3168285 100644
--- a/lldb/test/functionalities/connect_remote/TestConnectRemote.py
+++ b/lldb/test/functionalities/connect_remote/TestConnectRemote.py
@@ -10,7 +10,7 @@
 
 class ConnectRemoteTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "connect_remote")
+    mydir = TestBase.compute_mydir(__file__)
 
     def test_connect_remote(self):
         """Test "process connect connect:://localhost:12345"."""
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-advanced/TestDataFormatterAdv.py b/lldb/test/functionalities/data-formatter/data-formatter-advanced/TestDataFormatterAdv.py
index 30a7692..694ced9 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-advanced/TestDataFormatterAdv.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-advanced/TestDataFormatterAdv.py
@@ -10,7 +10,7 @@
 
 class AdvDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-advanced")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-categories/TestDataFormatterCategories.py b/lldb/test/functionalities/data-formatter/data-formatter-categories/TestDataFormatterCategories.py
index 389a5e0..18b9837 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-categories/TestDataFormatterCategories.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-categories/TestDataFormatterCategories.py
@@ -10,7 +10,7 @@
 
 class CategoriesDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-categories")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py b/lldb/test/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py
index 78dc410..2d6f888 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py
@@ -10,7 +10,7 @@
 
 class CppDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-cpp")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-disabling/TestDataFormatterDisabling.py b/lldb/test/functionalities/data-formatter/data-formatter-disabling/TestDataFormatterDisabling.py
index cde9a4e..d5a911a 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-disabling/TestDataFormatterDisabling.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-disabling/TestDataFormatterDisabling.py
@@ -10,7 +10,7 @@
 
 class DataFormatterDisablingTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-disabling")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-globals/TestDataFormatterGlobals.py b/lldb/test/functionalities/data-formatter/data-formatter-globals/TestDataFormatterGlobals.py
index 47e7f71..b8feee7 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-globals/TestDataFormatterGlobals.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-globals/TestDataFormatterGlobals.py
@@ -10,7 +10,7 @@
 
 class GlobalsDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-globals")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-named-summaries/TestDataFormatterNamedSummaries.py b/lldb/test/functionalities/data-formatter/data-formatter-named-summaries/TestDataFormatterNamedSummaries.py
index 6ab7f93..3564f6b 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-named-summaries/TestDataFormatterNamedSummaries.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-named-summaries/TestDataFormatterNamedSummaries.py
@@ -10,7 +10,7 @@
 
 class NamedSummariesDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-named-summaries")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py b/lldb/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py
index 5359066..de5c3f2 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py
@@ -12,7 +12,7 @@
 
 class ObjCDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-objc")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-python-synth/TestDataFormatterPythonSynth.py b/lldb/test/functionalities/data-formatter/data-formatter-python-synth/TestDataFormatterPythonSynth.py
index 8bd276e..a44784a 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-python-synth/TestDataFormatterPythonSynth.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-python-synth/TestDataFormatterPythonSynth.py
@@ -10,7 +10,7 @@
 
 class PythonSynthDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-python-synth")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-script/TestDataFormatterScript.py b/lldb/test/functionalities/data-formatter/data-formatter-script/TestDataFormatterScript.py
index 2d167ac..2139513 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-script/TestDataFormatterScript.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-script/TestDataFormatterScript.py
@@ -10,7 +10,7 @@
 
 class ScriptDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-script")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-skip-summary/TestDataFormatterSkipSummary.py b/lldb/test/functionalities/data-formatter/data-formatter-skip-summary/TestDataFormatterSkipSummary.py
index 2c203f6..b59f9f0 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-skip-summary/TestDataFormatterSkipSummary.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-skip-summary/TestDataFormatterSkipSummary.py
@@ -10,7 +10,7 @@
 
 class SkipSummaryDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-skip-summary")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-smart-array/TestDataFormatterSmartArray.py b/lldb/test/functionalities/data-formatter/data-formatter-smart-array/TestDataFormatterSmartArray.py
index 27ca2e1..9bebfa5 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-smart-array/TestDataFormatterSmartArray.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-smart-array/TestDataFormatterSmartArray.py
@@ -10,7 +10,7 @@
 
 class SmartArrayDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-smart-array")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/TestDataFormatterLibccIterator.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/TestDataFormatterLibccIterator.py
index 8015749..3a5fde1 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/TestDataFormatterLibccIterator.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/TestDataFormatterLibccIterator.py
@@ -10,7 +10,7 @@
 
 class LibcxxIteratorDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libcxx", "iterator")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py
index 6939d79..9b3dd02 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py
@@ -10,7 +10,7 @@
 
 class LibcxxListDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libcxx", "list")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/TestDataFormatterLibccMap.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/TestDataFormatterLibccMap.py
index a4668b5..17ac44f 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/TestDataFormatterLibccMap.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/TestDataFormatterLibccMap.py
@@ -10,7 +10,7 @@
 
 class LibcxxMapDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libcxx", "map")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/TestDataFormatterLibccMultiMap.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/TestDataFormatterLibccMultiMap.py
index 8eddf1c..bd4e7ce 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/TestDataFormatterLibccMultiMap.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/TestDataFormatterLibccMultiMap.py
@@ -10,7 +10,7 @@
 
 class LibcxxMultiMapDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libcxx", "multimap")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/TestDataFormatterLibcxxMultiSet.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/TestDataFormatterLibcxxMultiSet.py
index 67db560..84f1eb8 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/TestDataFormatterLibcxxMultiSet.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/TestDataFormatterLibcxxMultiSet.py
@@ -10,7 +10,7 @@
 
 class LibcxxMultiSetDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libcxx", "multiset")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/TestDataFormatterLibcxxSet.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/TestDataFormatterLibcxxSet.py
index a60f7d1..7c2b77e 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/TestDataFormatterLibcxxSet.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/TestDataFormatterLibcxxSet.py
@@ -10,7 +10,7 @@
 
 class LibcxxSetDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libcxx", "set")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py
index 7b032f9..e906ead 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py
@@ -11,7 +11,7 @@
 
 class LibcxxStringDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libcxx", "string")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/TestDataFormatterUnordered.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/TestDataFormatterUnordered.py
index a566553..ac03705 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/TestDataFormatterUnordered.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/TestDataFormatterUnordered.py
@@ -10,7 +10,7 @@
 
 class LibcxxMultiMapDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libcxx", "unordered")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/TestDataFormatterLibcxxVBool.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/TestDataFormatterLibcxxVBool.py
index a1bc5d0..799fb16 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/TestDataFormatterLibcxxVBool.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/TestDataFormatterLibcxxVBool.py
@@ -10,7 +10,7 @@
 
 class LibcxxVBoolDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libcxx", "vbool")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
index 56ab139..527bc26 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
@@ -10,7 +10,7 @@
 
 class LibcxxVectorDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libcxx", "vector")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/TestDataFormatterStdIterator.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/TestDataFormatterStdIterator.py
index bf1a1af..4d072e6 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/TestDataFormatterStdIterator.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/TestDataFormatterStdIterator.py
@@ -10,7 +10,7 @@
 
 class StdIteratorDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libstdcpp", "iterator")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/list/TestDataFormatterStdList.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/list/TestDataFormatterStdList.py
index 39b94f0..dea3871 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/list/TestDataFormatterStdList.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/list/TestDataFormatterStdList.py
@@ -10,7 +10,7 @@
 
 class StdListDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libstdcpp", "list")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/map/TestDataFormatterStdMap.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/map/TestDataFormatterStdMap.py
index 1b0cc81..414b5a0 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/map/TestDataFormatterStdMap.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/map/TestDataFormatterStdMap.py
@@ -10,7 +10,7 @@
 
 class StdMapDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libstdcpp", "map")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/TestDataFormatterStdString.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/TestDataFormatterStdString.py
index 52526d0..56855a2 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/TestDataFormatterStdString.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/TestDataFormatterStdString.py
@@ -11,7 +11,7 @@
 
 class StdStringDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libstdcpp", "string")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool/TestDataFormatterStdVBool.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool/TestDataFormatterStdVBool.py
index 293c5d6..eb831eb 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool/TestDataFormatterStdVBool.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool/TestDataFormatterStdVBool.py
@@ -10,7 +10,7 @@
 
 class StdVBoolDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libstdcpp", "vbool")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vector/TestDataFormatterStdVector.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vector/TestDataFormatterStdVector.py
index 773ce6e..161cb2f 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vector/TestDataFormatterStdVector.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vector/TestDataFormatterStdVector.py
@@ -10,7 +10,7 @@
 
 class StdVectorDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-stl", "libstdcpp", "vector")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/data-formatter-synth/TestDataFormatterSynth.py b/lldb/test/functionalities/data-formatter/data-formatter-synth/TestDataFormatterSynth.py
index bd96049..9c3bed1 100644
--- a/lldb/test/functionalities/data-formatter/data-formatter-synth/TestDataFormatterSynth.py
+++ b/lldb/test/functionalities/data-formatter/data-formatter-synth/TestDataFormatterSynth.py
@@ -10,7 +10,7 @@
 
 class SynthDataFormatterTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-synth")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/format-propagation/TestFormatPropagation.py b/lldb/test/functionalities/data-formatter/format-propagation/TestFormatPropagation.py
index 3c24512..b8a7ba3 100644
--- a/lldb/test/functionalities/data-formatter/format-propagation/TestFormatPropagation.py
+++ b/lldb/test/functionalities/data-formatter/format-propagation/TestFormatPropagation.py
@@ -10,7 +10,7 @@
 
 class FormatPropagationTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "format-propagation")
+    mydir = TestBase.compute_mydir(__file__)
 
     # rdar://problem/14035604
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
diff --git a/lldb/test/functionalities/data-formatter/rdar-10449092/Test-rdar-10449092.py b/lldb/test/functionalities/data-formatter/rdar-10449092/Test-rdar-10449092.py
index 15e1f7c..cb463c9 100644
--- a/lldb/test/functionalities/data-formatter/rdar-10449092/Test-rdar-10449092.py
+++ b/lldb/test/functionalities/data-formatter/rdar-10449092/Test-rdar-10449092.py
@@ -11,7 +11,7 @@
 class Radar10449092DataFormatterTestCase(TestBase):
 
     # test for rdar://problem/10449092 ()
-    mydir = os.path.join("functionalities", "data-formatter", "rdar-10449092")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/rdar-10642615/Test-rdar-10642615.py b/lldb/test/functionalities/data-formatter/rdar-10642615/Test-rdar-10642615.py
index 02dd447..5af70a8 100644
--- a/lldb/test/functionalities/data-formatter/rdar-10642615/Test-rdar-10642615.py
+++ b/lldb/test/functionalities/data-formatter/rdar-10642615/Test-rdar-10642615.py
@@ -11,7 +11,7 @@
 class Radar10642615DataFormatterTestCase(TestBase):
 
     # test for rdar://problem/10642615 ()
-    mydir = os.path.join("functionalities", "data-formatter", "rdar-10642615")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/rdar-10887661/TestRdar10887661.py b/lldb/test/functionalities/data-formatter/rdar-10887661/TestRdar10887661.py
index 16db113..a662f14 100644
--- a/lldb/test/functionalities/data-formatter/rdar-10887661/TestRdar10887661.py
+++ b/lldb/test/functionalities/data-formatter/rdar-10887661/TestRdar10887661.py
@@ -10,7 +10,7 @@
 
 class Rdar10887661TestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "rdar-10887661")
+    mydir = TestBase.compute_mydir(__file__)
 
     # rdar://problem/10887661
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
diff --git a/lldb/test/functionalities/data-formatter/rdar-11086338/TestRdar11086338.py b/lldb/test/functionalities/data-formatter/rdar-11086338/TestRdar11086338.py
index e315728..3f6dc27 100644
--- a/lldb/test/functionalities/data-formatter/rdar-11086338/TestRdar11086338.py
+++ b/lldb/test/functionalities/data-formatter/rdar-11086338/TestRdar11086338.py
@@ -11,7 +11,7 @@
 
 class DataFormatterRdar11086338TestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "rdar-11086338")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/rdar-11628688/TestFormattersBoolRefPtr.py b/lldb/test/functionalities/data-formatter/rdar-11628688/TestFormattersBoolRefPtr.py
index 0d417a2..a3b9082 100644
--- a/lldb/test/functionalities/data-formatter/rdar-11628688/TestFormattersBoolRefPtr.py
+++ b/lldb/test/functionalities/data-formatter/rdar-11628688/TestFormattersBoolRefPtr.py
@@ -11,7 +11,7 @@
 
 class DataFormatterOSTypeTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "rdar-11628688")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/rdar-11773899/TestFormattersBoolRefPtr.py b/lldb/test/functionalities/data-formatter/rdar-11773899/TestFormattersBoolRefPtr.py
index f2a76f8..99e6953 100644
--- a/lldb/test/functionalities/data-formatter/rdar-11773899/TestFormattersBoolRefPtr.py
+++ b/lldb/test/functionalities/data-formatter/rdar-11773899/TestFormattersBoolRefPtr.py
@@ -11,7 +11,7 @@
 
 class DataFormatterBoolRefPtr(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "rdar-11773899")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/rdar-11988289/TestRdar 11988289.py b/lldb/test/functionalities/data-formatter/rdar-11988289/TestRdar 11988289.py
index 38226ca..4a8829f 100644
--- a/lldb/test/functionalities/data-formatter/rdar-11988289/TestRdar 11988289.py
+++ b/lldb/test/functionalities/data-formatter/rdar-11988289/TestRdar 11988289.py
@@ -11,7 +11,7 @@
 
 class DataFormatterRdar11988289TestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "rdar-11988289")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/rdar-12437442/TestRdar12437442.py b/lldb/test/functionalities/data-formatter/rdar-12437442/TestRdar12437442.py
index 2205dfd..86d88ab 100644
--- a/lldb/test/functionalities/data-formatter/rdar-12437442/TestRdar12437442.py
+++ b/lldb/test/functionalities/data-formatter/rdar-12437442/TestRdar12437442.py
@@ -11,7 +11,7 @@
 
 class DataFormatterRdar12437442TestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "rdar-12437442")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/rdar-12529957/TestRdar12529957.py b/lldb/test/functionalities/data-formatter/rdar-12529957/TestRdar12529957.py
index dc3cfb4..326c5d6 100644
--- a/lldb/test/functionalities/data-formatter/rdar-12529957/TestRdar12529957.py
+++ b/lldb/test/functionalities/data-formatter/rdar-12529957/TestRdar12529957.py
@@ -11,7 +11,7 @@
 
 class DataFormatterRdar12529957TestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "rdar-12529957")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/rdar-13338477/Test-rdar-13338477.py b/lldb/test/functionalities/data-formatter/rdar-13338477/Test-rdar-13338477.py
index e65cb8b..cc936ba 100644
--- a/lldb/test/functionalities/data-formatter/rdar-13338477/Test-rdar-13338477.py
+++ b/lldb/test/functionalities/data-formatter/rdar-13338477/Test-rdar-13338477.py
@@ -11,7 +11,7 @@
 class Radar13338477DataFormatterTestCase(TestBase):
 
     # test for rdar://problem/13338477 ()
-    mydir = os.path.join("functionalities", "data-formatter", "rdar-13338477")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/rdar-3534688/TestFormattersOneIsSingular.py b/lldb/test/functionalities/data-formatter/rdar-3534688/TestFormattersOneIsSingular.py
index de27433..42026ef 100644
--- a/lldb/test/functionalities/data-formatter/rdar-3534688/TestFormattersOneIsSingular.py
+++ b/lldb/test/functionalities/data-formatter/rdar-3534688/TestFormattersOneIsSingular.py
@@ -11,7 +11,7 @@
 
 class DataFormatterOneIsSingularTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "data-formatter", "rdar-3534688")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/rdar-9973865/Test-rdar-9973865.py b/lldb/test/functionalities/data-formatter/rdar-9973865/Test-rdar-9973865.py
index 0aa619b..aa9772b 100644
--- a/lldb/test/functionalities/data-formatter/rdar-9973865/Test-rdar-9973865.py
+++ b/lldb/test/functionalities/data-formatter/rdar-9973865/Test-rdar-9973865.py
@@ -11,7 +11,7 @@
 class Radar9973865DataFormatterTestCase(TestBase):
 
     # test for rdar://problem/9973865 (If you use "${var}" in the summary string for an aggregate type, the summary doesn't print for a pointer to that type)
-    mydir = os.path.join("functionalities", "data-formatter", "rdar-9973865")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/rdar-9973992/Test-rdar-9973992.py b/lldb/test/functionalities/data-formatter/rdar-9973992/Test-rdar-9973992.py
index e4142b6..81bc93c 100644
--- a/lldb/test/functionalities/data-formatter/rdar-9973992/Test-rdar-9973992.py
+++ b/lldb/test/functionalities/data-formatter/rdar-9973992/Test-rdar-9973992.py
@@ -11,7 +11,7 @@
 class Radar9973992DataFormatterTestCase(TestBase):
 
     # test for rdar://problem/9973992 (What should we do for "${var}" in summaries of aggregate types?)
-    mydir = os.path.join("functionalities", "data-formatter", "rdar-9973992")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/data-formatter/rdar-9974002/Test-rdar-9974002.py b/lldb/test/functionalities/data-formatter/rdar-9974002/Test-rdar-9974002.py
index 8aa2d11..a03a07a 100644
--- a/lldb/test/functionalities/data-formatter/rdar-9974002/Test-rdar-9974002.py
+++ b/lldb/test/functionalities/data-formatter/rdar-9974002/Test-rdar-9974002.py
@@ -11,7 +11,7 @@
 class Radar9974002DataFormatterTestCase(TestBase):
 
     # test for rdar://problem/9974002 ()
-    mydir = os.path.join("functionalities", "data-formatter", "rdar-9974002")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/dead-strip/TestDeadStrip.py b/lldb/test/functionalities/dead-strip/TestDeadStrip.py
index 6da02fb..1371953 100644
--- a/lldb/test/functionalities/dead-strip/TestDeadStrip.py
+++ b/lldb/test/functionalities/dead-strip/TestDeadStrip.py
@@ -10,7 +10,7 @@
 
 class DeadStripTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "dead-strip")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/embedded_interpreter/TestConvenienceVariables.py b/lldb/test/functionalities/embedded_interpreter/TestConvenienceVariables.py
index 5ab7ada..71870e3 100644
--- a/lldb/test/functionalities/embedded_interpreter/TestConvenienceVariables.py
+++ b/lldb/test/functionalities/embedded_interpreter/TestConvenienceVariables.py
@@ -8,7 +8,7 @@
 
 class ConvenienceVariablesCase(TestBase):
 
-    mydir = os.path.join("functionalities", "embedded_interpreter")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/exec/TestExec.py b/lldb/test/functionalities/exec/TestExec.py
index e9a0dca..9d5ad1b 100644
--- a/lldb/test/functionalities/exec/TestExec.py
+++ b/lldb/test/functionalities/exec/TestExec.py
@@ -19,7 +19,7 @@
 
 class ExecTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "exec")
+    mydir = TestBase.compute_mydir(__file__)
 
         
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
diff --git a/lldb/test/functionalities/expr-doesnt-deadlock/TestExprDoesntBlock.py b/lldb/test/functionalities/expr-doesnt-deadlock/TestExprDoesntBlock.py
index 4af70bb..5862a34 100644
--- a/lldb/test/functionalities/expr-doesnt-deadlock/TestExprDoesntBlock.py
+++ b/lldb/test/functionalities/expr-doesnt-deadlock/TestExprDoesntBlock.py
@@ -13,7 +13,7 @@
     def getCategories(self):
         return ['basic_process']
 
-    mydir = os.path.join("functionalities", "expr-doesnt-deadlock")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/fat_archives/TestFatArchives.py b/lldb/test/functionalities/fat_archives/TestFatArchives.py
index 13146ed..a878cc4 100644
--- a/lldb/test/functionalities/fat_archives/TestFatArchives.py
+++ b/lldb/test/functionalities/fat_archives/TestFatArchives.py
@@ -19,7 +19,7 @@
 
 class FatArchiveTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "fat_archives")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dwarf_test
diff --git a/lldb/test/functionalities/inferior-assert/TestInferiorAssert.py b/lldb/test/functionalities/inferior-assert/TestInferiorAssert.py
index 1dc5aad..9c6dd6f2 100644
--- a/lldb/test/functionalities/inferior-assert/TestInferiorAssert.py
+++ b/lldb/test/functionalities/inferior-assert/TestInferiorAssert.py
@@ -7,7 +7,7 @@
 
 class AssertingInferiorTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "inferior-assert")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @unittest2.expectedFailure("rdar://15367233")
diff --git a/lldb/test/functionalities/inferior-changed/TestInferiorChanged.py b/lldb/test/functionalities/inferior-changed/TestInferiorChanged.py
index fb01e9a..883be93 100644
--- a/lldb/test/functionalities/inferior-changed/TestInferiorChanged.py
+++ b/lldb/test/functionalities/inferior-changed/TestInferiorChanged.py
@@ -8,7 +8,7 @@
 
 class ChangedInferiorTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "inferior-changed")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     def test_inferior_crashing_dsym(self):
diff --git a/lldb/test/functionalities/inferior-crashing/TestInferiorCrashing.py b/lldb/test/functionalities/inferior-crashing/TestInferiorCrashing.py
index e807224..af0abae 100644
--- a/lldb/test/functionalities/inferior-crashing/TestInferiorCrashing.py
+++ b/lldb/test/functionalities/inferior-crashing/TestInferiorCrashing.py
@@ -7,7 +7,7 @@
 
 class CrashingInferiorTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "inferior-crashing")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     def test_inferior_crashing_dsym(self):
diff --git a/lldb/test/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferior.py b/lldb/test/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferior.py
index ac44528..f79e99d 100644
--- a/lldb/test/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferior.py
+++ b/lldb/test/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferior.py
@@ -7,7 +7,7 @@
 
 class CrashingRecursiveInferiorTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "inferior-crashing", "recursive-inferior")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     def test_recursive_inferior_crashing_dsym(self):
diff --git a/lldb/test/functionalities/inline-stepping/TestInlineStepping.py b/lldb/test/functionalities/inline-stepping/TestInlineStepping.py
index 6726090..a13331b 100644
--- a/lldb/test/functionalities/inline-stepping/TestInlineStepping.py
+++ b/lldb/test/functionalities/inline-stepping/TestInlineStepping.py
@@ -8,7 +8,7 @@
 
 class TestInlineStepping(TestBase):
 
-    mydir = os.path.join("functionalities", "inline-stepping")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/functionalities/load_unload/TestLoadUnload.py b/lldb/test/functionalities/load_unload/TestLoadUnload.py
index b54c2da..96e0e16 100644
--- a/lldb/test/functionalities/load_unload/TestLoadUnload.py
+++ b/lldb/test/functionalities/load_unload/TestLoadUnload.py
@@ -14,7 +14,7 @@
     def getCategories (self):
         return ['basic_process']
 
-    mydir = os.path.join("functionalities", "load_unload")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/functionalities/longjmp/TestLongjmp.py b/lldb/test/functionalities/longjmp/TestLongjmp.py
index 48b17cb..c7f3bf0a 100644
--- a/lldb/test/functionalities/longjmp/TestLongjmp.py
+++ b/lldb/test/functionalities/longjmp/TestLongjmp.py
@@ -10,7 +10,7 @@
 
 class LongjmpTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "longjmp")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         TestBase.setUp(self)
diff --git a/lldb/test/functionalities/memory/read/TestMemoryRead.py b/lldb/test/functionalities/memory/read/TestMemoryRead.py
index dbbc9b8..a9fe6c2 100644
--- a/lldb/test/functionalities/memory/read/TestMemoryRead.py
+++ b/lldb/test/functionalities/memory/read/TestMemoryRead.py
@@ -11,7 +11,7 @@
 
 class MemoryReadTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "memory", "read")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/non-overlapping-index-variable-i/TestIndexVariable.py b/lldb/test/functionalities/non-overlapping-index-variable-i/TestIndexVariable.py
index 55c6184..d2a127e 100644
--- a/lldb/test/functionalities/non-overlapping-index-variable-i/TestIndexVariable.py
+++ b/lldb/test/functionalities/non-overlapping-index-variable-i/TestIndexVariable.py
@@ -8,7 +8,7 @@
 
 class NonOverlappingIndexVariableCase(TestBase):
 
-    mydir = os.path.join("functionalities", "non-overlapping-index-variable-i")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         TestBase.setUp(self)
diff --git a/lldb/test/functionalities/platform/TestPlatformCommand.py b/lldb/test/functionalities/platform/TestPlatformCommand.py
index 3fe776e..e1ea937 100644
--- a/lldb/test/functionalities/platform/TestPlatformCommand.py
+++ b/lldb/test/functionalities/platform/TestPlatformCommand.py
@@ -9,7 +9,7 @@
 
 class PlatformCommandTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "platform")
+    mydir = TestBase.compute_mydir(__file__)
 
     def test_help_platform(self):
         self.runCmd("help platform")
diff --git a/lldb/test/functionalities/plugins/commands/TestPluginCommands.py b/lldb/test/functionalities/plugins/commands/TestPluginCommands.py
index e306ebb..a73f00c 100644
--- a/lldb/test/functionalities/plugins/commands/TestPluginCommands.py
+++ b/lldb/test/functionalities/plugins/commands/TestPluginCommands.py
@@ -11,7 +11,7 @@
 
 class PluginCommandTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "plugins", "commands")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/functionalities/process_attach/TestProcessAttach.py b/lldb/test/functionalities/process_attach/TestProcessAttach.py
index 6e33eaa..b7e7604 100644
--- a/lldb/test/functionalities/process_attach/TestProcessAttach.py
+++ b/lldb/test/functionalities/process_attach/TestProcessAttach.py
@@ -10,7 +10,7 @@
 
 class ProcessAttachTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "process_attach")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/process_launch/TestProcessLaunch.py b/lldb/test/functionalities/process_launch/TestProcessLaunch.py
index e7f83d1..a648978 100644
--- a/lldb/test/functionalities/process_launch/TestProcessLaunch.py
+++ b/lldb/test/functionalities/process_launch/TestProcessLaunch.py
@@ -9,7 +9,7 @@
 
 class ProcessLaunchTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "process_launch")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/functionalities/recursion/TestValueObjectRecursion.py b/lldb/test/functionalities/recursion/TestValueObjectRecursion.py
index 1bca999..e20ee9b 100644
--- a/lldb/test/functionalities/recursion/TestValueObjectRecursion.py
+++ b/lldb/test/functionalities/recursion/TestValueObjectRecursion.py
@@ -10,7 +10,7 @@
 
 class ValueObjectRecursionTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "recursion")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/register/TestRegisters.py b/lldb/test/functionalities/register/TestRegisters.py
index 01e0990..34530ab 100644
--- a/lldb/test/functionalities/register/TestRegisters.py
+++ b/lldb/test/functionalities/register/TestRegisters.py
@@ -11,7 +11,7 @@
 
 class RegisterCommandsTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "register")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         TestBase.setUp(self)
diff --git a/lldb/test/functionalities/return-value/TestReturnValue.py b/lldb/test/functionalities/return-value/TestReturnValue.py
index c520c50..ff138f2 100644
--- a/lldb/test/functionalities/return-value/TestReturnValue.py
+++ b/lldb/test/functionalities/return-value/TestReturnValue.py
@@ -10,7 +10,7 @@
 
 class ReturnValueTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "return-value")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @expectedFailurei386
diff --git a/lldb/test/functionalities/set-data/TestSetData.py b/lldb/test/functionalities/set-data/TestSetData.py
index 166ef67..d94d3e8 100644
--- a/lldb/test/functionalities/set-data/TestSetData.py
+++ b/lldb/test/functionalities/set-data/TestSetData.py
@@ -11,7 +11,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class SetDataTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "set-data")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     def test_set_data_dsym(self):
diff --git a/lldb/test/functionalities/signal/TestSendSignal.py b/lldb/test/functionalities/signal/TestSendSignal.py
index 0c51224..f586829 100644
--- a/lldb/test/functionalities/signal/TestSendSignal.py
+++ b/lldb/test/functionalities/signal/TestSendSignal.py
@@ -8,7 +8,7 @@
 
 class SendSignalTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "signal")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/single-quote-in-filename-to-lldb/TestSingleQuoteInFilename.py b/lldb/test/functionalities/single-quote-in-filename-to-lldb/TestSingleQuoteInFilename.py
index eb7abc2..ba696ad 100644
--- a/lldb/test/functionalities/single-quote-in-filename-to-lldb/TestSingleQuoteInFilename.py
+++ b/lldb/test/functionalities/single-quote-in-filename-to-lldb/TestSingleQuoteInFilename.py
@@ -10,7 +10,7 @@
 
 class SingleQuoteInCommandLineTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "single-quote-in-filename-to-lldb")
+    mydir = TestBase.compute_mydir(__file__)
     myexe = "path with '09/a.out"
 
     @classmethod
diff --git a/lldb/test/functionalities/stop-hook/TestStopHookCmd.py b/lldb/test/functionalities/stop-hook/TestStopHookCmd.py
index 8ef3bf5..0605dee 100644
--- a/lldb/test/functionalities/stop-hook/TestStopHookCmd.py
+++ b/lldb/test/functionalities/stop-hook/TestStopHookCmd.py
@@ -11,7 +11,7 @@
 
 class StopHookCmdTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "stop-hook")
+    mydir = TestBase.compute_mydir(__file__)
 
     # Regression test.
     def test_not_crashing_if_no_target(self):
diff --git a/lldb/test/functionalities/stop-hook/TestStopHookMechanism.py b/lldb/test/functionalities/stop-hook/TestStopHookMechanism.py
index 2957304..fd2ef83 100644
--- a/lldb/test/functionalities/stop-hook/TestStopHookMechanism.py
+++ b/lldb/test/functionalities/stop-hook/TestStopHookMechanism.py
@@ -10,7 +10,7 @@
 
 class StopHookMechanismTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "stop-hook")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/stop-hook/multiple_threads/TestStopHookMultipleThreads.py b/lldb/test/functionalities/stop-hook/multiple_threads/TestStopHookMultipleThreads.py
index b7f2b53..f2a90e0 100644
--- a/lldb/test/functionalities/stop-hook/multiple_threads/TestStopHookMultipleThreads.py
+++ b/lldb/test/functionalities/stop-hook/multiple_threads/TestStopHookMultipleThreads.py
@@ -10,7 +10,7 @@
 
 class StopHookForMultipleThreadsTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "stop-hook", "multiple_threads")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/target_command/TestTargetCommand.py b/lldb/test/functionalities/target_command/TestTargetCommand.py
index 5b656f7..694f7e15 100644
--- a/lldb/test/functionalities/target_command/TestTargetCommand.py
+++ b/lldb/test/functionalities/target_command/TestTargetCommand.py
@@ -10,7 +10,7 @@
 
 class targetCommandTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "target_command")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/functionalities/thread/TestNumThreads.py b/lldb/test/functionalities/thread/TestNumThreads.py
index 011e20a..c6d7bb5 100644
--- a/lldb/test/functionalities/thread/TestNumThreads.py
+++ b/lldb/test/functionalities/thread/TestNumThreads.py
@@ -10,7 +10,7 @@
 
 class NumberOfThreadsTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "thread")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/thread/break_after_join/TestBreakAfterJoin.py b/lldb/test/functionalities/thread/break_after_join/TestBreakAfterJoin.py
index 0cc3424..24db482 100644
--- a/lldb/test/functionalities/thread/break_after_join/TestBreakAfterJoin.py
+++ b/lldb/test/functionalities/thread/break_after_join/TestBreakAfterJoin.py
@@ -10,7 +10,7 @@
 
 class BreakpointAfterJoinTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "thread", "break_after_join")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @expectedFailureDarwin("llvm.org/pr15824") # thread states not properly maintained
diff --git a/lldb/test/functionalities/thread/concurrent_events/TestConcurrentEvents.py b/lldb/test/functionalities/thread/concurrent_events/TestConcurrentEvents.py
index b565d0a..a217e4a 100644
--- a/lldb/test/functionalities/thread/concurrent_events/TestConcurrentEvents.py
+++ b/lldb/test/functionalities/thread/concurrent_events/TestConcurrentEvents.py
@@ -25,7 +25,7 @@
 
 class ConcurrentEventsTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "thread", "concurrent_events")
+    mydir = TestBase.compute_mydir(__file__)
 
     #
     ## Tests for multiple threads that generate a single event.
diff --git a/lldb/test/functionalities/thread/create_after_attach/TestCreateAfterAttach.py b/lldb/test/functionalities/thread/create_after_attach/TestCreateAfterAttach.py
index fc5d01c..530efaf 100644
--- a/lldb/test/functionalities/thread/create_after_attach/TestCreateAfterAttach.py
+++ b/lldb/test/functionalities/thread/create_after_attach/TestCreateAfterAttach.py
@@ -10,7 +10,7 @@
 
 class CreateAfterAttachTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "thread", "create_after_attach")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/thread/create_during_step/TestCreateDuringStep.py b/lldb/test/functionalities/thread/create_during_step/TestCreateDuringStep.py
index fd7fe0c..e98c19b 100644
--- a/lldb/test/functionalities/thread/create_during_step/TestCreateDuringStep.py
+++ b/lldb/test/functionalities/thread/create_during_step/TestCreateDuringStep.py
@@ -10,7 +10,7 @@
 
 class CreateDuringStepTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "thread", "create_during_step")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @expectedFailureDarwin("llvm.org/pr15824") # thread states not properly maintained
diff --git a/lldb/test/functionalities/thread/exit_during_break/TestExitDuringBreak.py b/lldb/test/functionalities/thread/exit_during_break/TestExitDuringBreak.py
index 9aec8b0..1726f2f 100644
--- a/lldb/test/functionalities/thread/exit_during_break/TestExitDuringBreak.py
+++ b/lldb/test/functionalities/thread/exit_during_break/TestExitDuringBreak.py
@@ -10,7 +10,7 @@
 
 class ExitDuringBreakpointTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "thread", "exit_during_break")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @expectedFailureDarwin("llvm.org/pr15824") # thread states not properly maintained
diff --git a/lldb/test/functionalities/thread/exit_during_step/TestExitDuringStep.py b/lldb/test/functionalities/thread/exit_during_step/TestExitDuringStep.py
index db23bee..4a4718a5 100644
--- a/lldb/test/functionalities/thread/exit_during_step/TestExitDuringStep.py
+++ b/lldb/test/functionalities/thread/exit_during_step/TestExitDuringStep.py
@@ -10,7 +10,7 @@
 
 class ExitDuringStepTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "thread", "exit_during_step")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @expectedFailureDarwin("llvm.org/pr15824") # thread states not properly maintained
diff --git a/lldb/test/functionalities/thread/jump/TestThreadJump.py b/lldb/test/functionalities/thread/jump/TestThreadJump.py
index 47e48fd..f2122be 100644
--- a/lldb/test/functionalities/thread/jump/TestThreadJump.py
+++ b/lldb/test/functionalities/thread/jump/TestThreadJump.py
@@ -10,7 +10,7 @@
 
 class ThreadJumpTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "thread", "jump")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/thread/multi_break/TestMultipleBreakpoints.py b/lldb/test/functionalities/thread/multi_break/TestMultipleBreakpoints.py
index ca76f05..d3a627b 100644
--- a/lldb/test/functionalities/thread/multi_break/TestMultipleBreakpoints.py
+++ b/lldb/test/functionalities/thread/multi_break/TestMultipleBreakpoints.py
@@ -10,7 +10,7 @@
 
 class MultipleBreakpointTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "thread", "multi_break")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @expectedFailureDarwin("llvm.org/pr15824") # thread states not properly maintained
diff --git a/lldb/test/functionalities/thread/state/TestThreadStates.py b/lldb/test/functionalities/thread/state/TestThreadStates.py
index 7bdb91b9..4209893 100644
--- a/lldb/test/functionalities/thread/state/TestThreadStates.py
+++ b/lldb/test/functionalities/thread/state/TestThreadStates.py
@@ -10,7 +10,7 @@
 
 class ThreadStateTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "thread", "state")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/thread/step_out/TestThreadStepOut.py b/lldb/test/functionalities/thread/step_out/TestThreadStepOut.py
index 9e47282..40c0afd 100644
--- a/lldb/test/functionalities/thread/step_out/TestThreadStepOut.py
+++ b/lldb/test/functionalities/thread/step_out/TestThreadStepOut.py
@@ -10,7 +10,7 @@
 
 class ThreadStepOutTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "thread", "step_out")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     def test_step_single_thread_with_dsym(self):
diff --git a/lldb/test/functionalities/thread/thread_exit/TestThreadExit.py b/lldb/test/functionalities/thread/thread_exit/TestThreadExit.py
index e6d0273..1e30185 100644
--- a/lldb/test/functionalities/thread/thread_exit/TestThreadExit.py
+++ b/lldb/test/functionalities/thread/thread_exit/TestThreadExit.py
@@ -10,7 +10,7 @@
 
 class ThreadExitTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "thread", "thread_exit")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @expectedFailureDarwin("llvm.org/pr15824") # thread states not properly maintained
diff --git a/lldb/test/functionalities/type_completion/TestTypeCompletion.py b/lldb/test/functionalities/type_completion/TestTypeCompletion.py
index 57ee91d..cdc637e 100644
--- a/lldb/test/functionalities/type_completion/TestTypeCompletion.py
+++ b/lldb/test/functionalities/type_completion/TestTypeCompletion.py
@@ -10,7 +10,7 @@
 
 class TypeCompletionTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "type_completion")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py b/lldb/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py
index 61541dc..2245d85 100644
--- a/lldb/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py
+++ b/lldb/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py
@@ -11,7 +11,7 @@
 
 class HelloWatchLocationTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "watchpoint", "hello_watchlocation")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py b/lldb/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py
index 4b4bdad..e66cd0a 100644
--- a/lldb/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py
+++ b/lldb/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py
@@ -13,7 +13,7 @@
     def getCategories (self):
         return ['basic_process']
 
-    mydir = os.path.join("functionalities", "watchpoint", "hello_watchpoint")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     def test_hello_watchpoint_with_dsym_using_watchpoint_set(self):
diff --git a/lldb/test/functionalities/watchpoint/multiple_threads/TestWatchpointMultipleThreads.py b/lldb/test/functionalities/watchpoint/multiple_threads/TestWatchpointMultipleThreads.py
index 597a308..bc36d47 100644
--- a/lldb/test/functionalities/watchpoint/multiple_threads/TestWatchpointMultipleThreads.py
+++ b/lldb/test/functionalities/watchpoint/multiple_threads/TestWatchpointMultipleThreads.py
@@ -11,7 +11,7 @@
 
 class WatchpointForMultipleThreadsTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "watchpoint", "multiple_threads")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/watchpoint/variable_out_of_scope/TestWatchedVarHitWhenInScope.py b/lldb/test/functionalities/watchpoint/variable_out_of_scope/TestWatchedVarHitWhenInScope.py
index ab50971..c35220d 100644
--- a/lldb/test/functionalities/watchpoint/variable_out_of_scope/TestWatchedVarHitWhenInScope.py
+++ b/lldb/test/functionalities/watchpoint/variable_out_of_scope/TestWatchedVarHitWhenInScope.py
@@ -10,7 +10,7 @@
 
 class WatchedVariableHitWhenInScopeTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "watchpoint", "variable_out_of_scope")
+    mydir = TestBase.compute_mydir(__file__)
 
     #
     # This test depends on not tracking watchpoint expression hits if we have
diff --git a/lldb/test/functionalities/watchpoint/watchpoint_commands/TestWatchpointCommands.py b/lldb/test/functionalities/watchpoint/watchpoint_commands/TestWatchpointCommands.py
index 460cf86..f0ec916 100644
--- a/lldb/test/functionalities/watchpoint/watchpoint_commands/TestWatchpointCommands.py
+++ b/lldb/test/functionalities/watchpoint/watchpoint_commands/TestWatchpointCommands.py
@@ -10,7 +10,7 @@
 
 class WatchpointCommandsTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "watchpoint", "watchpoint_commands")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandLLDB.py b/lldb/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandLLDB.py
index d39f9d4..b00a338 100644
--- a/lldb/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandLLDB.py
+++ b/lldb/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandLLDB.py
@@ -10,7 +10,7 @@
 
 class WatchpointLLDBCommandTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "watchpoint", "watchpoint_commands", "command")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandPython.py b/lldb/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandPython.py
index e56d060..cfd9581 100644
--- a/lldb/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandPython.py
+++ b/lldb/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandPython.py
@@ -10,7 +10,7 @@
 
 class WatchpointPythonCommandTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "watchpoint", "watchpoint_commands", "command")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py b/lldb/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py
index 959b417..b3f6fcf 100644
--- a/lldb/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py
+++ b/lldb/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py
@@ -10,7 +10,7 @@
 
 class WatchpointConditionCmdTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "watchpoint", "watchpoint_commands", "condition")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/functionalities/watchpoint/watchpoint_events/TestWatchpointEvents.py b/lldb/test/functionalities/watchpoint/watchpoint_events/TestWatchpointEvents.py
index ccc3553..094aa5e 100644
--- a/lldb/test/functionalities/watchpoint/watchpoint_events/TestWatchpointEvents.py
+++ b/lldb/test/functionalities/watchpoint/watchpoint_events/TestWatchpointEvents.py
@@ -8,7 +8,7 @@
 
 class TestWatchpointEvents (TestBase):
 
-    mydir = os.path.join("functionalities", "watchpoint", "watchpoint_events")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/functionalities/watchpoint/watchpoint_set_command/TestWatchLocationWithWatchSet.py b/lldb/test/functionalities/watchpoint/watchpoint_set_command/TestWatchLocationWithWatchSet.py
index 5f9199f..02178c7 100644
--- a/lldb/test/functionalities/watchpoint/watchpoint_set_command/TestWatchLocationWithWatchSet.py
+++ b/lldb/test/functionalities/watchpoint/watchpoint_set_command/TestWatchLocationWithWatchSet.py
@@ -10,7 +10,7 @@
 
 class WatchLocationUsingWatchpointSetTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "watchpoint", "watchpoint_set_command")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/functionalities/watchpoint/watchpoint_set_command/TestWatchpointSetErrorCases.py b/lldb/test/functionalities/watchpoint/watchpoint_set_command/TestWatchpointSetErrorCases.py
index 6a24589..cf385ae 100644
--- a/lldb/test/functionalities/watchpoint/watchpoint_set_command/TestWatchpointSetErrorCases.py
+++ b/lldb/test/functionalities/watchpoint/watchpoint_set_command/TestWatchpointSetErrorCases.py
@@ -10,7 +10,7 @@
 
 class WatchpointSetErrorTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "watchpoint", "watchpoint_set_command")
+    mydir = TestBase.compute_mydir(__file__)
 
     @expectedFailureFreeBSD('llvm.org/pr16706') # Watchpoints not yet on FreeBSD
     def test_error_cases_with_watchpoint_set(self):
diff --git a/lldb/test/help/TestHelp.py b/lldb/test/help/TestHelp.py
index 54d10ba..cf4ea12 100644
--- a/lldb/test/help/TestHelp.py
+++ b/lldb/test/help/TestHelp.py
@@ -11,7 +11,7 @@
 
 class HelpCommandTestCase(TestBase):
 
-    mydir = "help"
+    mydir = TestBase.compute_mydir(__file__)
 
     def test_simplehelp(self):
         """A simple test of 'help' command and its output."""
diff --git a/lldb/test/lang/c/anonymous/TestAnonymous.py b/lldb/test/lang/c/anonymous/TestAnonymous.py
index 23246e8..7cfb364 100644
--- a/lldb/test/lang/c/anonymous/TestAnonymous.py
+++ b/lldb/test/lang/c/anonymous/TestAnonymous.py
@@ -8,7 +8,7 @@
 
 class AnonymousTestCase(TestBase):
 
-    mydir = os.path.join("lang", "c", "anonymous")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     def test_expr_nest_with_dsym(self):
diff --git a/lldb/test/lang/c/array_types/TestArrayTypes.py b/lldb/test/lang/c/array_types/TestArrayTypes.py
index ea638db..8bb95cb 100644
--- a/lldb/test/lang/c/array_types/TestArrayTypes.py
+++ b/lldb/test/lang/c/array_types/TestArrayTypes.py
@@ -8,7 +8,7 @@
 
 class ArrayTypesTestCase(TestBase):
 
-    mydir = os.path.join("lang", "c", "array_types")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/c/bitfields/TestBitfields.py b/lldb/test/lang/c/bitfields/TestBitfields.py
index a88291e..c016252 100644
--- a/lldb/test/lang/c/bitfields/TestBitfields.py
+++ b/lldb/test/lang/c/bitfields/TestBitfields.py
@@ -8,7 +8,7 @@
 
 class BitfieldsTestCase(TestBase):
 
-    mydir = os.path.join("lang", "c", "bitfields")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/c/blocks/TestBlocks.py b/lldb/test/lang/c/blocks/TestBlocks.py
index 124f5f2..85f3e64 100644
--- a/lldb/test/lang/c/blocks/TestBlocks.py
+++ b/lldb/test/lang/c/blocks/TestBlocks.py
@@ -8,7 +8,7 @@
 
 class BlocksTestCase(TestBase):
 
-    mydir = os.path.join("lang", "c", "blocks")
+    mydir = TestBase.compute_mydir(__file__)
     lines = []
 
     @unittest2.expectedFailure
diff --git a/lldb/test/lang/c/const_variables/TestConstVariables.py b/lldb/test/lang/c/const_variables/TestConstVariables.py
index 187ed9a..ce6a8c1 100644
--- a/lldb/test/lang/c/const_variables/TestConstVariables.py
+++ b/lldb/test/lang/c/const_variables/TestConstVariables.py
@@ -8,7 +8,7 @@
 
 class ConstVariableTestCase(TestBase):
 
-    mydir = os.path.join("lang", "c", "const_variables")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     @unittest2.expectedFailure(13314878)
diff --git a/lldb/test/lang/c/enum_types/TestEnumTypes.py b/lldb/test/lang/c/enum_types/TestEnumTypes.py
index e0ec933..a0f8217 100644
--- a/lldb/test/lang/c/enum_types/TestEnumTypes.py
+++ b/lldb/test/lang/c/enum_types/TestEnumTypes.py
@@ -8,7 +8,7 @@
 
 class EnumTypesTestCase(TestBase):
 
-    mydir = os.path.join("lang", "c", "enum_types")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/c/forward/TestForwardDeclaration.py b/lldb/test/lang/c/forward/TestForwardDeclaration.py
index 7ded56c..db088ab 100644
--- a/lldb/test/lang/c/forward/TestForwardDeclaration.py
+++ b/lldb/test/lang/c/forward/TestForwardDeclaration.py
@@ -8,7 +8,7 @@
 
 class ForwardDeclarationTestCase(TestBase):
 
-    mydir = os.path.join("lang", "c", "forward")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/c/function_types/TestFunctionTypes.py b/lldb/test/lang/c/function_types/TestFunctionTypes.py
index a9acced..9b4241c 100644
--- a/lldb/test/lang/c/function_types/TestFunctionTypes.py
+++ b/lldb/test/lang/c/function_types/TestFunctionTypes.py
@@ -8,7 +8,7 @@
 
 class FunctionTypesTestCase(TestBase):
 
-    mydir = os.path.join("lang", "c", "function_types")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/c/global_variables/TestGlobalVariables.py b/lldb/test/lang/c/global_variables/TestGlobalVariables.py
index 84f1e7c..710782c 100644
--- a/lldb/test/lang/c/global_variables/TestGlobalVariables.py
+++ b/lldb/test/lang/c/global_variables/TestGlobalVariables.py
@@ -8,7 +8,7 @@
 
 class GlobalVariablesTestCase(TestBase):
 
-    mydir = os.path.join("lang", "c", "global_variables")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/c/set_values/TestSetValues.py b/lldb/test/lang/c/set_values/TestSetValues.py
index 5705a04..70a65d7 100644
--- a/lldb/test/lang/c/set_values/TestSetValues.py
+++ b/lldb/test/lang/c/set_values/TestSetValues.py
@@ -8,7 +8,7 @@
 
 class SetValuesTestCase(TestBase):
 
-    mydir = os.path.join("lang", "c", "set_values")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/c/shared_lib/TestSharedLib.py b/lldb/test/lang/c/shared_lib/TestSharedLib.py
index cd612e9..c5af5bd 100644
--- a/lldb/test/lang/c/shared_lib/TestSharedLib.py
+++ b/lldb/test/lang/c/shared_lib/TestSharedLib.py
@@ -8,7 +8,7 @@
 
 class SharedLibTestCase(TestBase):
 
-    mydir = os.path.join("lang", "c", "shared_lib")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     def test_expr_with_dsym(self):
diff --git a/lldb/test/lang/c/shared_lib_stripped_symbols/TestSharedLibStrippedSymbols.py b/lldb/test/lang/c/shared_lib_stripped_symbols/TestSharedLibStrippedSymbols.py
index a3f7922d..f8f9b4a 100644
--- a/lldb/test/lang/c/shared_lib_stripped_symbols/TestSharedLibStrippedSymbols.py
+++ b/lldb/test/lang/c/shared_lib_stripped_symbols/TestSharedLibStrippedSymbols.py
@@ -8,7 +8,7 @@
 
 class SharedLibTestCase(TestBase):
 
-    mydir = os.path.join("lang", "c", "shared_lib")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     def test_expr_with_dsym(self):
diff --git a/lldb/test/lang/c/stepping/TestStepAndBreakpoints.py b/lldb/test/lang/c/stepping/TestStepAndBreakpoints.py
index 41c16e9..81a937a 100644
--- a/lldb/test/lang/c/stepping/TestStepAndBreakpoints.py
+++ b/lldb/test/lang/c/stepping/TestStepAndBreakpoints.py
@@ -8,7 +8,7 @@
 
 class TestCStepping(TestBase):
 
-    mydir = os.path.join("lang", "c", "stepping")
+    mydir = TestBase.compute_mydir(__file__)
 
     def getCategories(self):
         return ['basic_process']
diff --git a/lldb/test/lang/c/stepping/TestThreadStepping.py b/lldb/test/lang/c/stepping/TestThreadStepping.py
index 8e7952a..747ef4a 100644
--- a/lldb/test/lang/c/stepping/TestThreadStepping.py
+++ b/lldb/test/lang/c/stepping/TestThreadStepping.py
@@ -11,7 +11,7 @@
 
 class ThreadSteppingTestCase(TestBase):
 
-    mydir = os.path.join("lang", "c", "stepping")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/c/strings/TestCStrings.py b/lldb/test/lang/c/strings/TestCStrings.py
index 5870451..636777e 100644
--- a/lldb/test/lang/c/strings/TestCStrings.py
+++ b/lldb/test/lang/c/strings/TestCStrings.py
@@ -7,7 +7,7 @@
 
 class CStringsTestCase(TestBase):
     
-    mydir = os.path.join("lang", "c", "strings")
+    mydir = TestBase.compute_mydir(__file__)
     
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/c/struct_types/TestStructTypes.py b/lldb/test/lang/c/struct_types/TestStructTypes.py
index b983513..1ec0ec7 100644
--- a/lldb/test/lang/c/struct_types/TestStructTypes.py
+++ b/lldb/test/lang/c/struct_types/TestStructTypes.py
@@ -12,7 +12,7 @@
 
 class StructTypesTestCase(TestBase):
 
-    mydir = os.path.join("lang", "c", "struct_types")
+    mydir = TestBase.compute_mydir(__file__)
 
     # rdar://problem/12566646
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
diff --git a/lldb/test/lang/c/tls_globals/TestTlsGlobals.py b/lldb/test/lang/c/tls_globals/TestTlsGlobals.py
index f1d56d6..1141962 100644
--- a/lldb/test/lang/c/tls_globals/TestTlsGlobals.py
+++ b/lldb/test/lang/c/tls_globals/TestTlsGlobals.py
@@ -8,7 +8,7 @@
 
 class TlsGlobalTestCase(TestBase):
 
-    mydir = os.path.join("lang", "c", "tls_globals")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/cpp/bool/TestCPPBool.py b/lldb/test/lang/cpp/bool/TestCPPBool.py
index 0337cca..a8ee86e 100644
--- a/lldb/test/lang/cpp/bool/TestCPPBool.py
+++ b/lldb/test/lang/cpp/bool/TestCPPBool.py
@@ -7,7 +7,7 @@
 
 class CPPBoolTestCase(TestBase):
     
-    mydir = os.path.join("lang", "cpp", "bool")
+    mydir = TestBase.compute_mydir(__file__)
     
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/cpp/breakpoints/TestCPPBreakpoints.py b/lldb/test/lang/cpp/breakpoints/TestCPPBreakpoints.py
index 367d75d..675e5b4 100644
--- a/lldb/test/lang/cpp/breakpoints/TestCPPBreakpoints.py
+++ b/lldb/test/lang/cpp/breakpoints/TestCPPBreakpoints.py
@@ -9,7 +9,7 @@
 
 class CPPBreakpointTestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "breakpoints")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/cpp/call-function/TestCallCPPFunction.py b/lldb/test/lang/cpp/call-function/TestCallCPPFunction.py
index c573770..a026f14 100644
--- a/lldb/test/lang/cpp/call-function/TestCallCPPFunction.py
+++ b/lldb/test/lang/cpp/call-function/TestCallCPPFunction.py
@@ -8,7 +8,7 @@
 
 class CallCPPFunctionTestCase(TestBase):
     
-    mydir = os.path.join("lang", "cpp", "call-function")
+    mydir = TestBase.compute_mydir(__file__)
     
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/cpp/char1632_t/TestChar1632T.py b/lldb/test/lang/cpp/char1632_t/TestChar1632T.py
index 9747794..445c1dd 100644
--- a/lldb/test/lang/cpp/char1632_t/TestChar1632T.py
+++ b/lldb/test/lang/cpp/char1632_t/TestChar1632T.py
@@ -11,7 +11,7 @@
 
 class Char1632TestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "char1632_t")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/cpp/class_static/TestStaticVariables.py b/lldb/test/lang/cpp/class_static/TestStaticVariables.py
index 248763e..6ecefd3 100644
--- a/lldb/test/lang/cpp/class_static/TestStaticVariables.py
+++ b/lldb/test/lang/cpp/class_static/TestStaticVariables.py
@@ -10,7 +10,7 @@
 
 class StaticVariableTestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "class_static")
+    mydir = TestBase.compute_mydir(__file__)
     failing_compilers = ['clang', 'gcc']
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
diff --git a/lldb/test/lang/cpp/class_types/TestClassTypes.py b/lldb/test/lang/cpp/class_types/TestClassTypes.py
index 76e8ace..b41ca39 100644
--- a/lldb/test/lang/cpp/class_types/TestClassTypes.py
+++ b/lldb/test/lang/cpp/class_types/TestClassTypes.py
@@ -9,7 +9,7 @@
 
 class ClassTypesTestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "class_types")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/cpp/class_types/TestClassTypesDisassembly.py b/lldb/test/lang/cpp/class_types/TestClassTypesDisassembly.py
index d11dba1..2e79abc 100644
--- a/lldb/test/lang/cpp/class_types/TestClassTypesDisassembly.py
+++ b/lldb/test/lang/cpp/class_types/TestClassTypesDisassembly.py
@@ -10,7 +10,7 @@
 
 class IterateFrameAndDisassembleTestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "class_types")
+    mydir = TestBase.compute_mydir(__file__)
     failing_compilers = ['clang', 'gcc']
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
diff --git a/lldb/test/lang/cpp/dynamic-value/TestCppValueCast.py b/lldb/test/lang/cpp/dynamic-value/TestCppValueCast.py
index c11a351..b2afaa5 100644
--- a/lldb/test/lang/cpp/dynamic-value/TestCppValueCast.py
+++ b/lldb/test/lang/cpp/dynamic-value/TestCppValueCast.py
@@ -10,7 +10,7 @@
 
 class CppValueCastTestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "dynamic-value")
+    mydir = TestBase.compute_mydir(__file__)
 
     # rdar://problem/10808472 SBValue::Cast test case is failing (virtual inheritance)
     @unittest2.expectedFailure
diff --git a/lldb/test/lang/cpp/dynamic-value/TestDynamicValue.py b/lldb/test/lang/cpp/dynamic-value/TestDynamicValue.py
index 34ecbd3..b0698d8 100644
--- a/lldb/test/lang/cpp/dynamic-value/TestDynamicValue.py
+++ b/lldb/test/lang/cpp/dynamic-value/TestDynamicValue.py
@@ -10,7 +10,7 @@
 
 class DynamicValueTestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "dynamic-value")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/lang/cpp/enum_types/TestCPP11EnumTypes.py b/lldb/test/lang/cpp/enum_types/TestCPP11EnumTypes.py
index 3899674..77dbaea 100644
--- a/lldb/test/lang/cpp/enum_types/TestCPP11EnumTypes.py
+++ b/lldb/test/lang/cpp/enum_types/TestCPP11EnumTypes.py
@@ -8,7 +8,7 @@
 
 class CPP11EnumTypesTestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "enum_types")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/cpp/exceptions/TestCPPExceptionBreakpoints.py b/lldb/test/lang/cpp/exceptions/TestCPPExceptionBreakpoints.py
index c294b54..122ff94 100644
--- a/lldb/test/lang/cpp/exceptions/TestCPPExceptionBreakpoints.py
+++ b/lldb/test/lang/cpp/exceptions/TestCPPExceptionBreakpoints.py
@@ -10,7 +10,7 @@
 
 class CPPBreakpointTestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "exceptions")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/cpp/namespace/TestNamespace.py b/lldb/test/lang/cpp/namespace/TestNamespace.py
index ecfa330..e9f78e0 100644
--- a/lldb/test/lang/cpp/namespace/TestNamespace.py
+++ b/lldb/test/lang/cpp/namespace/TestNamespace.py
@@ -10,7 +10,7 @@
 
 class NamespaceTestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "namespace")
+    mydir = TestBase.compute_mydir(__file__)
 
     # rdar://problem/8668674
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
diff --git a/lldb/test/lang/cpp/overloaded-functions/TestOverloadedFunctions.py b/lldb/test/lang/cpp/overloaded-functions/TestOverloadedFunctions.py
index 634c28c0..987b15f 100644
--- a/lldb/test/lang/cpp/overloaded-functions/TestOverloadedFunctions.py
+++ b/lldb/test/lang/cpp/overloaded-functions/TestOverloadedFunctions.py
@@ -8,7 +8,7 @@
 
 class CPPStaticMethodsTestCase(TestBase):
     
-    mydir = os.path.join("lang", "cpp", "overloaded-functions")
+    mydir = TestBase.compute_mydir(__file__)
     
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/cpp/rdar12991846/TestRdar12991846.py b/lldb/test/lang/cpp/rdar12991846/TestRdar12991846.py
index 601c8e9..faa0488 100644
--- a/lldb/test/lang/cpp/rdar12991846/TestRdar12991846.py
+++ b/lldb/test/lang/cpp/rdar12991846/TestRdar12991846.py
@@ -24,7 +24,7 @@
 
 class Rdar12991846TestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "rdar12991846")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.expectedFailure
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
diff --git a/lldb/test/lang/cpp/rvalue-references/TestRvalueReferences.py b/lldb/test/lang/cpp/rvalue-references/TestRvalueReferences.py
index 9c9f08f..803f7be 100644
--- a/lldb/test/lang/cpp/rvalue-references/TestRvalueReferences.py
+++ b/lldb/test/lang/cpp/rvalue-references/TestRvalueReferences.py
@@ -8,7 +8,7 @@
 
 class RvalueReferencesTestCase(TestBase):
     
-    mydir = os.path.join("lang", "cpp", "rvalue-references")
+    mydir = TestBase.compute_mydir(__file__)
     
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     #rdar://problem/11479676
diff --git a/lldb/test/lang/cpp/signed_types/TestSignedTypes.py b/lldb/test/lang/cpp/signed_types/TestSignedTypes.py
index e9de2d9..6effad0 100644
--- a/lldb/test/lang/cpp/signed_types/TestSignedTypes.py
+++ b/lldb/test/lang/cpp/signed_types/TestSignedTypes.py
@@ -11,7 +11,7 @@
 
 class UnsignedTypesTestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "signed_types")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/cpp/static_members/TestCPPStaticMembers.py b/lldb/test/lang/cpp/static_members/TestCPPStaticMembers.py
index a553ff4..d49b86a 100644
--- a/lldb/test/lang/cpp/static_members/TestCPPStaticMembers.py
+++ b/lldb/test/lang/cpp/static_members/TestCPPStaticMembers.py
@@ -7,7 +7,7 @@
 
 class CPPStaticMembersTestCase(TestBase):
     
-    mydir = os.path.join("lang", "cpp", "static_members")
+    mydir = TestBase.compute_mydir(__file__)
     
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @unittest2.expectedFailure # llvm.org/pr15401
diff --git a/lldb/test/lang/cpp/static_methods/TestCPPStaticMethods.py b/lldb/test/lang/cpp/static_methods/TestCPPStaticMethods.py
index 357b050..25dec6f 100644
--- a/lldb/test/lang/cpp/static_methods/TestCPPStaticMethods.py
+++ b/lldb/test/lang/cpp/static_methods/TestCPPStaticMethods.py
@@ -8,7 +8,7 @@
 
 class CPPStaticMethodsTestCase(TestBase):
     
-    mydir = os.path.join("lang", "cpp", "static_methods")
+    mydir = TestBase.compute_mydir(__file__)
     
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/cpp/stl/TestSTL.py b/lldb/test/lang/cpp/stl/TestSTL.py
index 2c09d6b..ffb02e2 100644
--- a/lldb/test/lang/cpp/stl/TestSTL.py
+++ b/lldb/test/lang/cpp/stl/TestSTL.py
@@ -10,7 +10,7 @@
 
 class STLTestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "stl")
+    mydir = TestBase.compute_mydir(__file__)
 
     # rdar://problem/10400981
     @unittest2.expectedFailure
diff --git a/lldb/test/lang/cpp/stl/TestStdCXXDisassembly.py b/lldb/test/lang/cpp/stl/TestStdCXXDisassembly.py
index 8914e2a..c05c2fc 100644
--- a/lldb/test/lang/cpp/stl/TestStdCXXDisassembly.py
+++ b/lldb/test/lang/cpp/stl/TestStdCXXDisassembly.py
@@ -10,7 +10,7 @@
 
 class StdCXXDisassembleTestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "stl")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/lang/cpp/this/TestCPPThis.py b/lldb/test/lang/cpp/this/TestCPPThis.py
index 0cb7404..62bed20 100644
--- a/lldb/test/lang/cpp/this/TestCPPThis.py
+++ b/lldb/test/lang/cpp/this/TestCPPThis.py
@@ -7,7 +7,7 @@
 
 class CPPThisTestCase(TestBase):
     
-    mydir = os.path.join("lang", "cpp", "this")
+    mydir = TestBase.compute_mydir(__file__)
     
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     #rdar://problem/9962849
diff --git a/lldb/test/lang/cpp/unique-types/TestUniqueTypes.py b/lldb/test/lang/cpp/unique-types/TestUniqueTypes.py
index 3579f7a..e07c02e 100644
--- a/lldb/test/lang/cpp/unique-types/TestUniqueTypes.py
+++ b/lldb/test/lang/cpp/unique-types/TestUniqueTypes.py
@@ -9,7 +9,7 @@
 
 class UniqueTypesTestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "unique-types")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/cpp/unsigned_types/TestUnsignedTypes.py b/lldb/test/lang/cpp/unsigned_types/TestUnsignedTypes.py
index ddf768e..66b4a54 100644
--- a/lldb/test/lang/cpp/unsigned_types/TestUnsignedTypes.py
+++ b/lldb/test/lang/cpp/unsigned_types/TestUnsignedTypes.py
@@ -11,7 +11,7 @@
 
 class UnsignedTypesTestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "unsigned_types")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/cpp/virtual/TestVirtual.py b/lldb/test/lang/cpp/virtual/TestVirtual.py
index 2d811ab..4c1fff1 100644
--- a/lldb/test/lang/cpp/virtual/TestVirtual.py
+++ b/lldb/test/lang/cpp/virtual/TestVirtual.py
@@ -13,7 +13,7 @@
 
 class CppVirtualMadness(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "virtual")
+    mydir = TestBase.compute_mydir(__file__)
 
     # This is the pattern by design to match the "my_expr = 'value'" output from
     # printf() stmts (see main.cpp).
diff --git a/lldb/test/lang/cpp/wchar_t/TestCxxWCharT.py b/lldb/test/lang/cpp/wchar_t/TestCxxWCharT.py
index 52fab1f9..3d286d8 100644
--- a/lldb/test/lang/cpp/wchar_t/TestCxxWCharT.py
+++ b/lldb/test/lang/cpp/wchar_t/TestCxxWCharT.py
@@ -11,7 +11,7 @@
 
 class CxxWCharTTestCase(TestBase):
 
-    mydir = os.path.join("lang", "cpp", "wchar_t")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/objc/blocks/TestObjCIvarsInBlocks.py b/lldb/test/lang/objc/blocks/TestObjCIvarsInBlocks.py
index 0213c46..40d7bfc 100644
--- a/lldb/test/lang/objc/blocks/TestObjCIvarsInBlocks.py
+++ b/lldb/test/lang/objc/blocks/TestObjCIvarsInBlocks.py
@@ -8,7 +8,7 @@
 
 class TestObjCIvarsInBlocks(TestBase):
 
-    mydir = os.path.join("lang", "objc", "blocks")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     # This test requires the 2.0 runtime, so it will fail on i386.
diff --git a/lldb/test/lang/objc/forward-decl/TestForwardDecl.py b/lldb/test/lang/objc/forward-decl/TestForwardDecl.py
index 24ede4c..abcddae 100644
--- a/lldb/test/lang/objc/forward-decl/TestForwardDecl.py
+++ b/lldb/test/lang/objc/forward-decl/TestForwardDecl.py
@@ -8,7 +8,7 @@
 
 class ForwardDeclTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "forward-decl")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/objc/foundation/TestConstStrings.py b/lldb/test/lang/objc/foundation/TestConstStrings.py
index e19d09e..cafea53 100644
--- a/lldb/test/lang/objc/foundation/TestConstStrings.py
+++ b/lldb/test/lang/objc/foundation/TestConstStrings.py
@@ -12,7 +12,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class ConstStringTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "foundation")
+    mydir = TestBase.compute_mydir(__file__)
     d = {'OBJC_SOURCES': 'const-strings.m'}
 
     @dsym_test
diff --git a/lldb/test/lang/objc/foundation/TestFoundationDisassembly.py b/lldb/test/lang/objc/foundation/TestFoundationDisassembly.py
index 11dda65..b067640 100644
--- a/lldb/test/lang/objc/foundation/TestFoundationDisassembly.py
+++ b/lldb/test/lang/objc/foundation/TestFoundationDisassembly.py
@@ -11,7 +11,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class FoundationDisassembleTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "foundation")
+    mydir = TestBase.compute_mydir(__file__)
 
     # rdar://problem/8504895
     # Crash while doing 'disassemble -n "-[NSNumber descriptionWithLocale:]"
diff --git a/lldb/test/lang/objc/foundation/TestObjCMethods.py b/lldb/test/lang/objc/foundation/TestObjCMethods.py
index 380c448..67c96c1 100644
--- a/lldb/test/lang/objc/foundation/TestObjCMethods.py
+++ b/lldb/test/lang/objc/foundation/TestObjCMethods.py
@@ -12,7 +12,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class FoundationTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "foundation")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     def test_break_with_dsym(self):
diff --git a/lldb/test/lang/objc/foundation/TestObjCMethods2.py b/lldb/test/lang/objc/foundation/TestObjCMethods2.py
index 37e3f1e..3385a0f 100644
--- a/lldb/test/lang/objc/foundation/TestObjCMethods2.py
+++ b/lldb/test/lang/objc/foundation/TestObjCMethods2.py
@@ -11,7 +11,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class FoundationTestCase2(TestBase):
 
-    mydir = os.path.join("lang", "objc", "foundation")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     def test_more_expr_commands_with_dsym(self):
diff --git a/lldb/test/lang/objc/foundation/TestObjectDescriptionAPI.py b/lldb/test/lang/objc/foundation/TestObjectDescriptionAPI.py
index 1c42553..09a03d4 100644
--- a/lldb/test/lang/objc/foundation/TestObjectDescriptionAPI.py
+++ b/lldb/test/lang/objc/foundation/TestObjectDescriptionAPI.py
@@ -10,7 +10,7 @@
 
 class ObjectDescriptionAPITestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "foundation")
+    mydir = TestBase.compute_mydir(__file__)
 
     # rdar://problem/10857337
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
diff --git a/lldb/test/lang/objc/foundation/TestRuntimeTypes.py b/lldb/test/lang/objc/foundation/TestRuntimeTypes.py
index dbdd82f..0cfa89b 100644
--- a/lldb/test/lang/objc/foundation/TestRuntimeTypes.py
+++ b/lldb/test/lang/objc/foundation/TestRuntimeTypes.py
@@ -11,7 +11,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class RuntimeTypesTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "foundation")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     def test_break_with_dsym(self):
diff --git a/lldb/test/lang/objc/foundation/TestSymbolTable.py b/lldb/test/lang/objc/foundation/TestSymbolTable.py
index c41874a..28b5f73 100644
--- a/lldb/test/lang/objc/foundation/TestSymbolTable.py
+++ b/lldb/test/lang/objc/foundation/TestSymbolTable.py
@@ -10,7 +10,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class FoundationSymtabTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "foundation")
+    mydir = TestBase.compute_mydir(__file__)
 
     symbols_list = ['-[MyString initWithNSString:]',
                     '-[MyString dealloc]',
diff --git a/lldb/test/lang/objc/hidden-ivars/TestHiddenIvars.py b/lldb/test/lang/objc/hidden-ivars/TestHiddenIvars.py
index 1f50de9..f8a768c 100644
--- a/lldb/test/lang/objc/hidden-ivars/TestHiddenIvars.py
+++ b/lldb/test/lang/objc/hidden-ivars/TestHiddenIvars.py
@@ -8,7 +8,7 @@
 
 class HiddenIvarsTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "hidden-ivars")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/objc/objc++/TestObjCXX.py b/lldb/test/lang/objc/objc++/TestObjCXX.py
index 484d729..0658b84 100644
--- a/lldb/test/lang/objc/objc++/TestObjCXX.py
+++ b/lldb/test/lang/objc/objc++/TestObjCXX.py
@@ -10,7 +10,7 @@
 
 class ObjCXXTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc++")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     def test_break_with_dsym(self):
diff --git a/lldb/test/lang/objc/objc-baseclass-sbtype/TestObjCBaseClassSBType.py b/lldb/test/lang/objc/objc-baseclass-sbtype/TestObjCBaseClassSBType.py
index 0a98469..6aca65b 100644
--- a/lldb/test/lang/objc/objc-baseclass-sbtype/TestObjCBaseClassSBType.py
+++ b/lldb/test/lang/objc/objc-baseclass-sbtype/TestObjCBaseClassSBType.py
@@ -10,7 +10,7 @@
 
 class ObjCDynamicValueTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc-baseclass-sbtype")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/lang/objc/objc-builtin-types/TestObjCBuiltinTypes.py b/lldb/test/lang/objc/objc-builtin-types/TestObjCBuiltinTypes.py
index e0ebee67..b43ad7a 100644
--- a/lldb/test/lang/objc/objc-builtin-types/TestObjCBuiltinTypes.py
+++ b/lldb/test/lang/objc/objc-builtin-types/TestObjCBuiltinTypes.py
@@ -8,7 +8,7 @@
 
 class TestObjCBuiltinTypes(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc-builtin-types")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/lang/objc/objc-checker/TestObjCCheckers.py b/lldb/test/lang/objc/objc-checker/TestObjCCheckers.py
index fd3d76c..28659ff 100644
--- a/lldb/test/lang/objc/objc-checker/TestObjCCheckers.py
+++ b/lldb/test/lang/objc/objc-checker/TestObjCCheckers.py
@@ -10,7 +10,7 @@
 
 class ObjCCheckerTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc-checker")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/lang/objc/objc-class-method/TestObjCClassMethod.py b/lldb/test/lang/objc/objc-class-method/TestObjCClassMethod.py
index c158385..9fc2721 100644
--- a/lldb/test/lang/objc/objc-class-method/TestObjCClassMethod.py
+++ b/lldb/test/lang/objc/objc-class-method/TestObjCClassMethod.py
@@ -8,7 +8,7 @@
 
 class TestObjCClassMethod(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc-class-method")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/lang/objc/objc-dyn-sbtype/TestObjCDynamicSBType.py b/lldb/test/lang/objc/objc-dyn-sbtype/TestObjCDynamicSBType.py
index 3d14339..335aab3 100644
--- a/lldb/test/lang/objc/objc-dyn-sbtype/TestObjCDynamicSBType.py
+++ b/lldb/test/lang/objc/objc-dyn-sbtype/TestObjCDynamicSBType.py
@@ -11,7 +11,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class ObjCDynamicSBTypeTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc-dyn-sbtype")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     @skipIfi386
diff --git a/lldb/test/lang/objc/objc-dynamic-value/TestObjCDynamicValue.py b/lldb/test/lang/objc/objc-dynamic-value/TestObjCDynamicValue.py
index bd77aa3..e679ca2 100644
--- a/lldb/test/lang/objc/objc-dynamic-value/TestObjCDynamicValue.py
+++ b/lldb/test/lang/objc/objc-dynamic-value/TestObjCDynamicValue.py
@@ -10,7 +10,7 @@
 
 class ObjCDynamicValueTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc-dynamic-value")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/lang/objc/objc-ivar-offsets/TestObjCIvarOffsets.py b/lldb/test/lang/objc/objc-ivar-offsets/TestObjCIvarOffsets.py
index b4d7137..1df069f 100644
--- a/lldb/test/lang/objc/objc-ivar-offsets/TestObjCIvarOffsets.py
+++ b/lldb/test/lang/objc/objc-ivar-offsets/TestObjCIvarOffsets.py
@@ -8,7 +8,7 @@
 
 class TestObjCIvarOffsets(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc-ivar-offsets")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/lang/objc/objc-ivar-stripped/TestObjCIvarStripped.py b/lldb/test/lang/objc/objc-ivar-stripped/TestObjCIvarStripped.py
index fef0921..3a116bb 100644
--- a/lldb/test/lang/objc/objc-ivar-stripped/TestObjCIvarStripped.py
+++ b/lldb/test/lang/objc/objc-ivar-stripped/TestObjCIvarStripped.py
@@ -8,7 +8,7 @@
 
 class TestObjCIvarStripped(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc-ivar-stripped")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/lang/objc/objc-new-syntax/TestObjCNewSyntax.py b/lldb/test/lang/objc/objc-new-syntax/TestObjCNewSyntax.py
index 2f1f5b0..b3dcafc 100644
--- a/lldb/test/lang/objc/objc-new-syntax/TestObjCNewSyntax.py
+++ b/lldb/test/lang/objc/objc-new-syntax/TestObjCNewSyntax.py
@@ -12,7 +12,7 @@
 
 class ObjCNewSyntaxTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc-new-syntax")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.expectedFailure
     @dsym_test
diff --git a/lldb/test/lang/objc/objc-optimized/TestObjcOptimized.py b/lldb/test/lang/objc/objc-optimized/TestObjcOptimized.py
index a7a9d23..55127c3 100644
--- a/lldb/test/lang/objc/objc-optimized/TestObjcOptimized.py
+++ b/lldb/test/lang/objc/objc-optimized/TestObjcOptimized.py
@@ -19,7 +19,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class ObjcOptimizedTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc-optimized")
+    mydir = TestBase.compute_mydir(__file__)
     myclass = "MyClass"
     mymethod = "description"
     method_spec = "-[%s %s]" % (myclass, mymethod)
diff --git a/lldb/test/lang/objc/objc-property/TestObjCProperty.py b/lldb/test/lang/objc/objc-property/TestObjCProperty.py
index dadb7fa..2a2bd01 100644
--- a/lldb/test/lang/objc/objc-property/TestObjCProperty.py
+++ b/lldb/test/lang/objc/objc-property/TestObjCProperty.py
@@ -10,7 +10,7 @@
 
 class ObjCPropertyTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc-property")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/lang/objc/objc-static-method-stripped/TestObjCStaticMethodStripped.py b/lldb/test/lang/objc/objc-static-method-stripped/TestObjCStaticMethodStripped.py
index bf7e059..c14432c 100644
--- a/lldb/test/lang/objc/objc-static-method-stripped/TestObjCStaticMethodStripped.py
+++ b/lldb/test/lang/objc/objc-static-method-stripped/TestObjCStaticMethodStripped.py
@@ -8,7 +8,7 @@
 
 class TestObjCStaticMethodStripped(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc-static-method-stripped")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/lang/objc/objc-static-method/TestObjCStaticMethod.py b/lldb/test/lang/objc/objc-static-method/TestObjCStaticMethod.py
index 3196830..a898631 100644
--- a/lldb/test/lang/objc/objc-static-method/TestObjCStaticMethod.py
+++ b/lldb/test/lang/objc/objc-static-method/TestObjCStaticMethod.py
@@ -8,7 +8,7 @@
 
 class TestObjCStaticMethod(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc-static-method")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/lang/objc/objc-stepping/TestObjCStepping.py b/lldb/test/lang/objc/objc-stepping/TestObjCStepping.py
index 48900d2..8bee8c0 100644
--- a/lldb/test/lang/objc/objc-stepping/TestObjCStepping.py
+++ b/lldb/test/lang/objc/objc-stepping/TestObjCStepping.py
@@ -11,7 +11,7 @@
     def getCategories (self):
         return ['basic_process']
 
-    mydir = os.path.join("lang", "objc", "objc-stepping")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/lang/objc/objc-struct-return/TestObjCStructReturn.py b/lldb/test/lang/objc/objc-struct-return/TestObjCStructReturn.py
index 788310b..8490d1c 100644
--- a/lldb/test/lang/objc/objc-struct-return/TestObjCStructReturn.py
+++ b/lldb/test/lang/objc/objc-struct-return/TestObjCStructReturn.py
@@ -8,7 +8,7 @@
 
 class TestObjCClassMethod(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc-class-method")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
@@ -30,7 +30,7 @@
         # Call super's setUp().
         TestBase.setUp(self)
         # Find the line numbers to break inside main().
-        self.main_source = "class.m"
+        self.main_source = "test.m"
         self.break_line = line_number(self.main_source, '// Set breakpoint here.')
 
     def objc_class_method(self):
diff --git a/lldb/test/lang/objc/objc-super/TestObjCSuper.py b/lldb/test/lang/objc/objc-super/TestObjCSuper.py
index 746e29c..15b5218 100644
--- a/lldb/test/lang/objc/objc-super/TestObjCSuper.py
+++ b/lldb/test/lang/objc/objc-super/TestObjCSuper.py
@@ -8,7 +8,7 @@
 
 class TestObjCSuperMethod(TestBase):
 
-    mydir = os.path.join("lang", "objc", "objc-super")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @expectedFailurei386
diff --git a/lldb/test/lang/objc/print-obj/TestPrintObj.py b/lldb/test/lang/objc/print-obj/TestPrintObj.py
index 66b5958..acd4f7d 100644
--- a/lldb/test/lang/objc/print-obj/TestPrintObj.py
+++ b/lldb/test/lang/objc/print-obj/TestPrintObj.py
@@ -10,7 +10,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class PrintObjTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "print-obj")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     def test_print_obj_with_dsym(self):
diff --git a/lldb/test/lang/objc/radar-9691614/TestObjCMethodReturningBOOL.py b/lldb/test/lang/objc/radar-9691614/TestObjCMethodReturningBOOL.py
index 8f48196..20aecde 100644
--- a/lldb/test/lang/objc/radar-9691614/TestObjCMethodReturningBOOL.py
+++ b/lldb/test/lang/objc/radar-9691614/TestObjCMethodReturningBOOL.py
@@ -11,7 +11,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class MethodReturningBOOLTestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "radar-9691614")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     def test_method_ret_BOOL_with_dsym(self):
diff --git a/lldb/test/lang/objc/rdar-10967107/TestRdar10967107.py b/lldb/test/lang/objc/rdar-10967107/TestRdar10967107.py
index 15e843b..ecc80eb 100644
--- a/lldb/test/lang/objc/rdar-10967107/TestRdar10967107.py
+++ b/lldb/test/lang/objc/rdar-10967107/TestRdar10967107.py
@@ -11,7 +11,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class Rdar10967107TestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "rdar-10967107")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     def test_cfrange_diff_cfgregoriandate_with_dsym(self):
diff --git a/lldb/test/lang/objc/rdar-11355592/TestRdar11355592.py b/lldb/test/lang/objc/rdar-11355592/TestRdar11355592.py
index 1dbf680..165948d 100644
--- a/lldb/test/lang/objc/rdar-11355592/TestRdar11355592.py
+++ b/lldb/test/lang/objc/rdar-11355592/TestRdar11355592.py
@@ -11,7 +11,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class Rdar10967107TestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "rdar-11355592")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     def test_charstar_dyntype_with_dsym(self):
diff --git a/lldb/test/lang/objc/rdar-12408181/TestRdar12408181.py b/lldb/test/lang/objc/rdar-12408181/TestRdar12408181.py
index 7f88424..caae896 100644
--- a/lldb/test/lang/objc/rdar-12408181/TestRdar12408181.py
+++ b/lldb/test/lang/objc/rdar-12408181/TestRdar12408181.py
@@ -11,7 +11,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class Rdar12408181TestCase(TestBase):
 
-    mydir = os.path.join("lang", "objc", "rdar-12408181")
+    mydir = TestBase.compute_mydir(__file__)
 
     @dsym_test
     def test_nswindow_count_with_dsym(self):
diff --git a/lldb/test/lang/objc/real-definition/TestRealDefinition.py b/lldb/test/lang/objc/real-definition/TestRealDefinition.py
index 8530f35..dd476fc 100644
--- a/lldb/test/lang/objc/real-definition/TestRealDefinition.py
+++ b/lldb/test/lang/objc/real-definition/TestRealDefinition.py
@@ -8,7 +8,7 @@
 
 class TestRealDefinition(TestBase):
 
-    mydir = os.path.join("lang", "objc", "real-definition")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lang/objc/self/TestObjCSelf.py b/lldb/test/lang/objc/self/TestObjCSelf.py
index e7733ab..cc58bf2 100644
--- a/lldb/test/lang/objc/self/TestObjCSelf.py
+++ b/lldb/test/lang/objc/self/TestObjCSelf.py
@@ -7,7 +7,7 @@
 
 class ObjCSelfTestCase(TestBase):
     
-    mydir = os.path.join("lang", "objc", "self")
+    mydir = TestBase.compute_mydir(__file__)
     
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/linux/builtin_trap/TestBuiltinTrap.py b/lldb/test/linux/builtin_trap/TestBuiltinTrap.py
index ef4e370..85c934d 100644
--- a/lldb/test/linux/builtin_trap/TestBuiltinTrap.py
+++ b/lldb/test/linux/builtin_trap/TestBuiltinTrap.py
@@ -11,7 +11,7 @@
 
 class BuiltinTrapTestCase(TestBase):
 
-    mydir = os.path.join("linux", "builtin_trap")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/lldbtest.py b/lldb/test/lldbtest.py
index be34f70..1cf528d 100644
--- a/lldb/test/lldbtest.py
+++ b/lldb/test/lldbtest.py
@@ -829,11 +829,19 @@
 
     # Keep track of the old current working directory.
     oldcwd = None
-
+    
+    @staticmethod
+    def compute_mydir(test_file):
+        '''Subclasses should call this function to correctly calculate the required "mydir" attribute as follows: 
+            
+            mydir = TestBase.compute_mydir(__file__)'''
+        test_dir = os.path.dirname(test_file)
+        return test_dir[len(os.environ["LLDB_TEST"])+1:]
+    
     def TraceOn(self):
         """Returns True if we are in trace mode (tracing detailed test execution)."""
         return traceAlways
-
+    
     @classmethod
     def setUpClass(cls):
         """
diff --git a/lldb/test/logging/TestLogging.py b/lldb/test/logging/TestLogging.py
index 368708f..60aaeed 100644
--- a/lldb/test/logging/TestLogging.py
+++ b/lldb/test/logging/TestLogging.py
@@ -9,7 +9,7 @@
 
 class LogTestCase(TestBase):
 
-    mydir = "logging"
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/macosx/add-dsym/TestAddDsymMidExecutionCommand.py b/lldb/test/macosx/add-dsym/TestAddDsymMidExecutionCommand.py
index ce84b2f..23affe3 100644
--- a/lldb/test/macosx/add-dsym/TestAddDsymMidExecutionCommand.py
+++ b/lldb/test/macosx/add-dsym/TestAddDsymMidExecutionCommand.py
@@ -9,7 +9,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class AddDsymMidExecutionCommandCase(TestBase):
 
-    mydir = os.path.join ("macosx", "add-dsym")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/macosx/debug-info/apple_types/TestAppleTypesIsProduced.py b/lldb/test/macosx/debug-info/apple_types/TestAppleTypesIsProduced.py
index fd5f1c2..34556a7 100644
--- a/lldb/test/macosx/debug-info/apple_types/TestAppleTypesIsProduced.py
+++ b/lldb/test/macosx/debug-info/apple_types/TestAppleTypesIsProduced.py
@@ -10,7 +10,7 @@
 
 class AppleTypesTestCase(TestBase):
 
-    mydir = os.path.join("macosx", "debug-info", "apple_types")
+    mydir = TestBase.compute_mydir(__file__)
 
     #rdar://problem/11166975
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
diff --git a/lldb/test/macosx/order/TestOrderFile.py b/lldb/test/macosx/order/TestOrderFile.py
index 393dbb4..5ee9242 100644
--- a/lldb/test/macosx/order/TestOrderFile.py
+++ b/lldb/test/macosx/order/TestOrderFile.py
@@ -10,7 +10,7 @@
 
 class OrderFileTestCase(TestBase):
 
-    mydir = os.path.join("macosx", "order")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/macosx/universal/TestUniversal.py b/lldb/test/macosx/universal/TestUniversal.py
index 59c21e1..fd16830 100644
--- a/lldb/test/macosx/universal/TestUniversal.py
+++ b/lldb/test/macosx/universal/TestUniversal.py
@@ -8,7 +8,7 @@
 
 class UniversalTestCase(TestBase):
 
-    mydir = os.path.join("macosx", "universal")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/python_api/debugger/TestDebuggerAPI.py b/lldb/test/python_api/debugger/TestDebuggerAPI.py
index a560cbe..42dcc24 100644
--- a/lldb/test/python_api/debugger/TestDebuggerAPI.py
+++ b/lldb/test/python_api/debugger/TestDebuggerAPI.py
@@ -9,7 +9,7 @@
 
 class DebuggerAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "debugger")
+    mydir = TestBase.compute_mydir(__file__)
 
     @python_api_test
     def test_debugger_api_boundary_condition(self):
diff --git a/lldb/test/python_api/default-constructor/TestDefaultConstructorForAPIObjects.py b/lldb/test/python_api/default-constructor/TestDefaultConstructorForAPIObjects.py
index 6ec0350..81b853a 100644
--- a/lldb/test/python_api/default-constructor/TestDefaultConstructorForAPIObjects.py
+++ b/lldb/test/python_api/default-constructor/TestDefaultConstructorForAPIObjects.py
@@ -19,7 +19,7 @@
 
 class APIDefaultConstructorTestCase(TestBase):
 
-    mydir = os.path.join("python_api", "default-constructor")
+    mydir = TestBase.compute_mydir(__file__)
 
     @python_api_test
     def test_SBAddress(self):
diff --git a/lldb/test/python_api/disassemble-raw-data/TestDisassembleRawData.py b/lldb/test/python_api/disassemble-raw-data/TestDisassembleRawData.py
index e716545..d6d2dc6 100644
--- a/lldb/test/python_api/disassemble-raw-data/TestDisassembleRawData.py
+++ b/lldb/test/python_api/disassemble-raw-data/TestDisassembleRawData.py
@@ -10,7 +10,7 @@
 
 class DisassembleRawDataTestCase(TestBase):
 
-    mydir = os.path.join("python_api", "disassemble-raw-data")
+    mydir = TestBase.compute_mydir(__file__)
 
     @python_api_test
     def test_disassemble_raw_data(self):
diff --git a/lldb/test/python_api/disassemble-raw-data/TestDisassemble_VST1_64.py b/lldb/test/python_api/disassemble-raw-data/TestDisassemble_VST1_64.py
index d2e985a..4555345 100644
--- a/lldb/test/python_api/disassemble-raw-data/TestDisassemble_VST1_64.py
+++ b/lldb/test/python_api/disassemble-raw-data/TestDisassemble_VST1_64.py
@@ -10,7 +10,7 @@
 
 class Disassemble_VST1_64(TestBase):
 
-    mydir = os.path.join("python_api", "disassemble-raw-data")
+    mydir = TestBase.compute_mydir(__file__)
 
     @python_api_test
     def test_disassemble_invalid_vst_1_64_raw_data(self):
diff --git a/lldb/test/python_api/event/TestEvents.py b/lldb/test/python_api/event/TestEvents.py
index a9a7edc..64e95ea 100644
--- a/lldb/test/python_api/event/TestEvents.py
+++ b/lldb/test/python_api/event/TestEvents.py
@@ -10,7 +10,7 @@
 
 class EventAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "event")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/formatters/TestFormattersSBAPI.py b/lldb/test/python_api/formatters/TestFormattersSBAPI.py
index d304a17..67aa639 100644
--- a/lldb/test/python_api/formatters/TestFormattersSBAPI.py
+++ b/lldb/test/python_api/formatters/TestFormattersSBAPI.py
@@ -8,7 +8,7 @@
 
 class SBFormattersAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "formatters")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/frame/TestFrames.py b/lldb/test/python_api/frame/TestFrames.py
index 6e1ba08..050c51a 100644
--- a/lldb/test/python_api/frame/TestFrames.py
+++ b/lldb/test/python_api/frame/TestFrames.py
@@ -11,7 +11,7 @@
 
 class FrameAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "frame")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/frame/inlines/TestInlinedFrame.py b/lldb/test/python_api/frame/inlines/TestInlinedFrame.py
index 998c3a6..f7d1517 100644
--- a/lldb/test/python_api/frame/inlines/TestInlinedFrame.py
+++ b/lldb/test/python_api/frame/inlines/TestInlinedFrame.py
@@ -10,7 +10,7 @@
 
 class InlinedFrameAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "frame", "inlines")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/function_symbol/TestDisasmAPI.py b/lldb/test/python_api/function_symbol/TestDisasmAPI.py
index 11e6816..14ff005 100644
--- a/lldb/test/python_api/function_symbol/TestDisasmAPI.py
+++ b/lldb/test/python_api/function_symbol/TestDisasmAPI.py
@@ -10,7 +10,7 @@
 
 class DisasmAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "function_symbol")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/function_symbol/TestSymbolAPI.py b/lldb/test/python_api/function_symbol/TestSymbolAPI.py
index 60d4ffb..564a60f 100644
--- a/lldb/test/python_api/function_symbol/TestSymbolAPI.py
+++ b/lldb/test/python_api/function_symbol/TestSymbolAPI.py
@@ -10,7 +10,7 @@
 
 class SymbolAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "function_symbol")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/hello_world/TestHelloWorld.py b/lldb/test/python_api/hello_world/TestHelloWorld.py
index bfaeade..088477b 100644
--- a/lldb/test/python_api/hello_world/TestHelloWorld.py
+++ b/lldb/test/python_api/hello_world/TestHelloWorld.py
@@ -8,7 +8,7 @@
 
 class HelloWorldTestCase(TestBase):
 
-    mydir = os.path.join("python_api", "hello_world")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/input_reader/TestInputReaderCallback.py b/lldb/test/python_api/input_reader/TestInputReaderCallback.py
index 6a37f8b..8fea844 100644
--- a/lldb/test/python_api/input_reader/TestInputReaderCallback.py
+++ b/lldb/test/python_api/input_reader/TestInputReaderCallback.py
@@ -8,7 +8,7 @@
 
 class InputReaderCallbackCase(TestBase):
 
-    mydir = os.path.join("python_api", "input_reader")
+    mydir = TestBase.compute_mydir(__file__)
 
     @python_api_test
     @dwarf_test
diff --git a/lldb/test/python_api/interpreter/TestCommandInterpreterAPI.py b/lldb/test/python_api/interpreter/TestCommandInterpreterAPI.py
index c08d038..b23c497 100644
--- a/lldb/test/python_api/interpreter/TestCommandInterpreterAPI.py
+++ b/lldb/test/python_api/interpreter/TestCommandInterpreterAPI.py
@@ -8,7 +8,7 @@
 
 class CommandInterpreterAPICase(TestBase):
 
-    mydir = os.path.join("python_api", "interpreter")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/lldbutil/frame/TestFrameUtils.py b/lldb/test/python_api/lldbutil/frame/TestFrameUtils.py
index 070fe79..2b7f341 100644
--- a/lldb/test/python_api/lldbutil/frame/TestFrameUtils.py
+++ b/lldb/test/python_api/lldbutil/frame/TestFrameUtils.py
@@ -9,7 +9,7 @@
 
 class FrameUtilsTestCase(TestBase):
 
-    mydir = os.path.join("python_api", "lldbutil", "frame")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/python_api/lldbutil/iter/TestLLDBIterator.py b/lldb/test/python_api/lldbutil/iter/TestLLDBIterator.py
index 47fe165..8983252 100644
--- a/lldb/test/python_api/lldbutil/iter/TestLLDBIterator.py
+++ b/lldb/test/python_api/lldbutil/iter/TestLLDBIterator.py
@@ -10,7 +10,7 @@
 
 class LLDBIteratorTestCase(TestBase):
 
-    mydir = os.path.join("python_api", "lldbutil", "iter")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/python_api/lldbutil/iter/TestRegistersIterator.py b/lldb/test/python_api/lldbutil/iter/TestRegistersIterator.py
index 9b07625..2f6de65 100644
--- a/lldb/test/python_api/lldbutil/iter/TestRegistersIterator.py
+++ b/lldb/test/python_api/lldbutil/iter/TestRegistersIterator.py
@@ -10,7 +10,7 @@
 
 class RegistersIteratorTestCase(TestBase):
 
-    mydir = os.path.join("python_api", "lldbutil", "iter")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/python_api/lldbutil/process/TestPrintStackTraces.py b/lldb/test/python_api/lldbutil/process/TestPrintStackTraces.py
index bb1d303..d845c790 100644
--- a/lldb/test/python_api/lldbutil/process/TestPrintStackTraces.py
+++ b/lldb/test/python_api/lldbutil/process/TestPrintStackTraces.py
@@ -10,7 +10,7 @@
 
 class ThreadsStackTracesTestCase(TestBase):
 
-    mydir = "python_api/lldbutil/process"
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/python_api/module_section/TestModuleAndSection.py b/lldb/test/python_api/module_section/TestModuleAndSection.py
index 7038d6e..44a242d 100644
--- a/lldb/test/python_api/module_section/TestModuleAndSection.py
+++ b/lldb/test/python_api/module_section/TestModuleAndSection.py
@@ -11,7 +11,7 @@
 
 class ModuleAndSectionAPIsTestCase(TestBase):
 
-    mydir = os.path.join("python_api", "module_section")
+    mydir = TestBase.compute_mydir(__file__)
 
     @python_api_test
     def test_module_and_section(self):
diff --git a/lldb/test/python_api/objc_type/TestObjCType.py b/lldb/test/python_api/objc_type/TestObjCType.py
index 35f83c4..ce31076 100644
--- a/lldb/test/python_api/objc_type/TestObjCType.py
+++ b/lldb/test/python_api/objc_type/TestObjCType.py
@@ -10,7 +10,7 @@
 
 class ObjCSBTypeTestCase(TestBase):
 
-    mydir = os.path.join("python_api", "objc_type")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/process/TestProcessAPI.py b/lldb/test/python_api/process/TestProcessAPI.py
index 016fc12..245c735 100644
--- a/lldb/test/python_api/process/TestProcessAPI.py
+++ b/lldb/test/python_api/process/TestProcessAPI.py
@@ -10,7 +10,7 @@
 
 class ProcessAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "process")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/process/io/TestProcessIO.py b/lldb/test/python_api/process/io/TestProcessIO.py
index 1096bce..7352a8e 100644
--- a/lldb/test/python_api/process/io/TestProcessIO.py
+++ b/lldb/test/python_api/process/io/TestProcessIO.py
@@ -7,7 +7,7 @@
 
 class ProcessIOTestCase(TestBase):
 
-    mydir = os.path.join("python_api", "process", "io")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/rdar-12481949/Test-rdar-12481949.py b/lldb/test/python_api/rdar-12481949/Test-rdar-12481949.py
index 614a7ed..808e64b 100644
--- a/lldb/test/python_api/rdar-12481949/Test-rdar-12481949.py
+++ b/lldb/test/python_api/rdar-12481949/Test-rdar-12481949.py
@@ -11,7 +11,7 @@
 class Radar12481949DataFormatterTestCase(TestBase):
 
     # test for rdar://problem/12481949
-    mydir = os.path.join("python_api", "rdar-12481949")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dsym_test
diff --git a/lldb/test/python_api/sbdata/TestSBData.py b/lldb/test/python_api/sbdata/TestSBData.py
index 4fd227f..046339b 100644
--- a/lldb/test/python_api/sbdata/TestSBData.py
+++ b/lldb/test/python_api/sbdata/TestSBData.py
@@ -10,7 +10,7 @@
 
 class SBDataAPICase(TestBase):
 
-    mydir = os.path.join("python_api", "sbdata")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/symbol-context/TestSymbolContext.py b/lldb/test/python_api/symbol-context/TestSymbolContext.py
index 30d62ac..d7574ea 100644
--- a/lldb/test/python_api/symbol-context/TestSymbolContext.py
+++ b/lldb/test/python_api/symbol-context/TestSymbolContext.py
@@ -10,7 +10,7 @@
 
 class SymbolContextAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "symbol-context")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/target/TestTargetAPI.py b/lldb/test/python_api/target/TestTargetAPI.py
index 8f2a6de..5516ee6 100644
--- a/lldb/test/python_api/target/TestTargetAPI.py
+++ b/lldb/test/python_api/target/TestTargetAPI.py
@@ -10,7 +10,7 @@
 
 class TargetAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "target")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/thread/TestThreadAPI.py b/lldb/test/python_api/thread/TestThreadAPI.py
index 1d22550..7cb97cd 100644
--- a/lldb/test/python_api/thread/TestThreadAPI.py
+++ b/lldb/test/python_api/thread/TestThreadAPI.py
@@ -10,7 +10,7 @@
 
 class ThreadAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "thread")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/type/TestTypeList.py b/lldb/test/python_api/type/TestTypeList.py
index a06259d..ce0a166 100644
--- a/lldb/test/python_api/type/TestTypeList.py
+++ b/lldb/test/python_api/type/TestTypeList.py
@@ -10,7 +10,7 @@
 
 class TypeAndTypeListTestCase(TestBase):
 
-    mydir = os.path.join("python_api", "type")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/value/TestValueAPI.py b/lldb/test/python_api/value/TestValueAPI.py
index 0d6d341..0240888 100644
--- a/lldb/test/python_api/value/TestValueAPI.py
+++ b/lldb/test/python_api/value/TestValueAPI.py
@@ -10,7 +10,7 @@
 
 class ValueAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "value")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/value/change_values/TestChangeValueAPI.py b/lldb/test/python_api/value/change_values/TestChangeValueAPI.py
index 3d80fa3..b716335 100644
--- a/lldb/test/python_api/value/change_values/TestChangeValueAPI.py
+++ b/lldb/test/python_api/value/change_values/TestChangeValueAPI.py
@@ -10,7 +10,7 @@
 
 class ChangeValueAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "value", "change_values")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/value/linked_list/TestValueAPILinkedList.py b/lldb/test/python_api/value/linked_list/TestValueAPILinkedList.py
index f022ec4..c20cc31 100644
--- a/lldb/test/python_api/value/linked_list/TestValueAPILinkedList.py
+++ b/lldb/test/python_api/value/linked_list/TestValueAPILinkedList.py
@@ -11,7 +11,7 @@
 
 class ValueAsLinkedListTestCase(TestBase):
 
-    mydir = os.path.join("python_api", "value", "linked_list")
+    mydir = TestBase.compute_mydir(__file__)
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @python_api_test
diff --git a/lldb/test/python_api/watchpoint/TestSetWatchpoint.py b/lldb/test/python_api/watchpoint/TestSetWatchpoint.py
index 8c09019..37a9e55 100644
--- a/lldb/test/python_api/watchpoint/TestSetWatchpoint.py
+++ b/lldb/test/python_api/watchpoint/TestSetWatchpoint.py
@@ -10,7 +10,7 @@
 
 class SetWatchpointAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "watchpoint")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/python_api/watchpoint/TestWatchpointIgnoreCount.py b/lldb/test/python_api/watchpoint/TestWatchpointIgnoreCount.py
index db169e8..b79ef25 100644
--- a/lldb/test/python_api/watchpoint/TestWatchpointIgnoreCount.py
+++ b/lldb/test/python_api/watchpoint/TestWatchpointIgnoreCount.py
@@ -10,7 +10,7 @@
 
 class WatchpointIgnoreCountTestCase(TestBase):
 
-    mydir = os.path.join("python_api", "watchpoint")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/python_api/watchpoint/TestWatchpointIter.py b/lldb/test/python_api/watchpoint/TestWatchpointIter.py
index e0fd624..8efa10b 100644
--- a/lldb/test/python_api/watchpoint/TestWatchpointIter.py
+++ b/lldb/test/python_api/watchpoint/TestWatchpointIter.py
@@ -10,7 +10,7 @@
 
 class WatchpointIteratorTestCase(TestBase):
 
-    mydir = os.path.join("python_api", "watchpoint")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/python_api/watchpoint/condition/TestWatchpointConditionAPI.py b/lldb/test/python_api/watchpoint/condition/TestWatchpointConditionAPI.py
index f756626..a38b9d6 100644
--- a/lldb/test/python_api/watchpoint/condition/TestWatchpointConditionAPI.py
+++ b/lldb/test/python_api/watchpoint/condition/TestWatchpointConditionAPI.py
@@ -10,7 +10,7 @@
 
 class WatchpointConditionAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "watchpoint", "condition")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/python_api/watchpoint/watchlocation/TestSetWatchlocation.py b/lldb/test/python_api/watchpoint/watchlocation/TestSetWatchlocation.py
index d9904e8..9380c4c 100644
--- a/lldb/test/python_api/watchpoint/watchlocation/TestSetWatchlocation.py
+++ b/lldb/test/python_api/watchpoint/watchlocation/TestSetWatchlocation.py
@@ -10,7 +10,7 @@
 
 class SetWatchlocationAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "watchpoint", "watchlocation")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py b/lldb/test/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py
index 4d05fd6..c051f98 100644
--- a/lldb/test/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py
+++ b/lldb/test/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py
@@ -10,7 +10,7 @@
 
 class TargetWatchAddressAPITestCase(TestBase):
 
-    mydir = os.path.join("python_api", "watchpoint", "watchlocation")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/settings/TestSettings.py b/lldb/test/settings/TestSettings.py
index a02e5d0..42d8b7d 100644
--- a/lldb/test/settings/TestSettings.py
+++ b/lldb/test/settings/TestSettings.py
@@ -9,7 +9,7 @@
 
 class SettingsCommandTestCase(TestBase):
 
-    mydir = "settings"
+    mydir = TestBase.compute_mydir(__file__)
 
     @classmethod
     def classCleanup(cls):
diff --git a/lldb/test/source-manager/TestSourceManager.py b/lldb/test/source-manager/TestSourceManager.py
index 4ef4cca..879b9f1 100644
--- a/lldb/test/source-manager/TestSourceManager.py
+++ b/lldb/test/source-manager/TestSourceManager.py
@@ -16,7 +16,7 @@
 
 class SourceManagerTestCase(TestBase):
 
-    mydir = "source-manager"
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/terminal/TestSTTYBeforeAndAfter.py b/lldb/test/terminal/TestSTTYBeforeAndAfter.py
index 947ad88..26e3def 100644
--- a/lldb/test/terminal/TestSTTYBeforeAndAfter.py
+++ b/lldb/test/terminal/TestSTTYBeforeAndAfter.py
@@ -10,7 +10,7 @@
 
 class CommandLineCompletionTestCase(TestBase):
 
-    mydir = os.path.join("functionalities", "completion")
+    mydir = TestBase.compute_mydir(__file__)
 
     @classmethod
     def classCleanup(cls):
diff --git a/lldb/test/types/HideTestFailures.py b/lldb/test/types/HideTestFailures.py
index 01a1a4a..14c7422 100644
--- a/lldb/test/types/HideTestFailures.py
+++ b/lldb/test/types/HideTestFailures.py
@@ -10,9 +10,9 @@
 
 # rdar://problem/9649573
 # Capture the lldb and gdb-remote log files for test failures when run with no "-w" option
-class DebugIntegerTypesFailures(AbstractBase.GenericTester):
+class DebugIntegerTypesFailures(TestBase):
 
-    mydir = "types"
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/types/TestFloatTypes.py b/lldb/test/types/TestFloatTypes.py
index 6bbc228..1e17bd6 100644
--- a/lldb/test/types/TestFloatTypes.py
+++ b/lldb/test/types/TestFloatTypes.py
@@ -10,7 +10,7 @@
 
 class FloatTypesTestCase(AbstractBase.GenericTester):
 
-    mydir = "types"
+    mydir = AbstractBase.GenericTester.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/types/TestFloatTypesExpr.py b/lldb/test/types/TestFloatTypesExpr.py
index 0402415..f09f88a 100644
--- a/lldb/test/types/TestFloatTypesExpr.py
+++ b/lldb/test/types/TestFloatTypesExpr.py
@@ -10,7 +10,7 @@
 
 class FloatTypesExprTestCase(AbstractBase.GenericTester):
 
-    mydir = "types"
+    mydir = AbstractBase.GenericTester.compute_mydir(__file__)
 
     # rdar://problem/8493023
     # test/types failures for Test*TypesExpr.py: element offset computed wrong and sign error?
diff --git a/lldb/test/types/TestIntegerTypes.py b/lldb/test/types/TestIntegerTypes.py
index d8ba5a3..60c7543 100644
--- a/lldb/test/types/TestIntegerTypes.py
+++ b/lldb/test/types/TestIntegerTypes.py
@@ -10,7 +10,7 @@
 
 class IntegerTypesTestCase(AbstractBase.GenericTester):
 
-    mydir = "types"
+    mydir = AbstractBase.GenericTester.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/types/TestIntegerTypesExpr.py b/lldb/test/types/TestIntegerTypesExpr.py
index 1d7b318..6a0322f 100644
--- a/lldb/test/types/TestIntegerTypesExpr.py
+++ b/lldb/test/types/TestIntegerTypesExpr.py
@@ -10,7 +10,7 @@
 
 class IntegerTypesExprTestCase(AbstractBase.GenericTester):
 
-    mydir = "types"
+    mydir = AbstractBase.GenericTester.compute_mydir(__file__)
 
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/warnings/uuid/TestAddDsymCommand.py b/lldb/test/warnings/uuid/TestAddDsymCommand.py
index e697f84..aa9048d 100644
--- a/lldb/test/warnings/uuid/TestAddDsymCommand.py
+++ b/lldb/test/warnings/uuid/TestAddDsymCommand.py
@@ -9,7 +9,7 @@
 @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
 class AddDsymCommandCase(TestBase):
 
-    mydir = os.path.join("warnings", "uuid")
+    mydir = TestBase.compute_mydir(__file__)
 
     def setUp(self):
         TestBase.setUp(self)