def run(self, cmd = None, test_type=""):

		if not len(self.get_setting("testbox_runner_url")):
			sublime.message_dialog("No TestBox runner URL has been defined for this project.")
			return

		testbox_tests_root = self.normalize_directory(self.get_setting("testbox_tests_root"))

		directory, filename, ext = self.get_path_parts(self.window.active_view().file_name())
		full_url = self.get_setting("testbox_runner_url")
		test_bundle = ""

		if ["directory","cfc"] in test_type:
			if not directory.startswith(testbox_tests_root):
				print(testbox_tests_root, directory)
				sublime.message_dialog("\"testbox_tests_root\" is missing, cannot determine dotted path for directory.")
				return
			full_url += self.get_dotted_directory(testbox_tests_root, directory)
		else:
			full_url += self.get_setting("testbox_default_directory")

		if test_type == "cfc":
			if ext != "cfc":
				sublime.message_dialog("Invalid file type, only \"cfc\" extension is valid for TestBox tests.")
				return
			test_bundle = self.get_dotted_directory(testbox_tests_root, directory) + "." + filename
			full_url += "&testBundles=" + test_bundle

		if not hasattr(self, "output_view"):
			self.output_view = self.window.create_output_panel("testbox")

		testbox_results = {k: self.normalize_directory(v) for k, v in self.get_setting("testbox_results").items()}

		self.output_view.settings().set("result_file_regex", testbox_results["server_root"] + "([^\\s].*):([0-9]+)$")
		self.output_view.settings().set("result_base_dir", testbox_results["sublime_root"])
		self.output_view.settings().set("word_wrap", True)
		self.output_view.settings().set("line_numbers", False)
		self.output_view.settings().set("gutter", False)
		self.output_view.settings().set("scroll_past_end", False)
		self.output_view.settings().set("color_scheme", "Packages/" + utils.get_plugin_name() + "/color-schemes/testbox.hidden-tmTheme")
		self.output_view.assign_syntax("Packages/" + utils.get_plugin_name() + "/syntaxes/testbox." + SYNTAX_EXT)

		# As per Default/exec.py
		# Call create_output_panel a second time after assigning the above
		# settings, so that it'll be picked up as a result buffer
		self.window.create_output_panel("testbox")

		self.window.run_command("show_panel", {"panel": "output.testbox"})
		self.output_view.run_command("append", {"characters": RESULTS_TEMPLATES["logo"], "force": True, "scroll_to_end": True})

		# run async
		sublime.set_timeout_async(partial(self.run_tests, full_url, test_bundle))
dataset/ETHPy150Open jcberquist/sublimetext-cfml/src/testbox/test_runner.py/TestboxCommand.run/swapped operands of `in`