""" Creates a new folder for running SeleniumBase scripts. Usage: seleniumbase mkdir [DIRECTORY] [OPTIONS] OR sbase mkdir [DIRECTORY] [OPTIONS] Example: sbase mkdir ui_tests Options: -b / --basic (Only config files. No tests added.) Output: Creates a new folder for running SBase scripts. The new folder contains default config files, sample tests for helping new users get started, and Python boilerplates for setting up customized test frameworks. """ import codecs import colorama import os import sys def invalid_run_command(msg=None): exp = " ** mkdir **\n\n" exp += " Usage:\n" exp += " seleniumbase mkdir [DIRECTORY] [OPTIONS]\n" exp += " OR sbase mkdir [DIRECTORY] [OPTIONS]\n" exp += " Example:\n" exp += " sbase mkdir ui_tests\n" exp += " Options:\n" exp += " -b / --basic (Only config files. No tests added.)\n" exp += " Output:\n" exp += " Creates a new folder for running SBase scripts.\n" exp += " The new folder contains default config files,\n" exp += " sample tests for helping new users get started,\n" exp += " and Python boilerplates for setting up customized\n" exp += " test frameworks.\n" if not msg: raise Exception("INVALID RUN COMMAND!\n\n%s" % exp) elif msg == "help": print("\n%s" % exp) sys.exit() else: raise Exception("INVALID RUN COMMAND!\n\n%s\n%s\n" % (exp, msg)) def main(): c1 = "" c5 = "" c7 = "" cr = "" if "linux" not in sys.platform: if ( "win32" in sys.platform and hasattr(colorama, "just_fix_windows_console") ): colorama.just_fix_windows_console() else: colorama.init(autoreset=True) c1 = colorama.Fore.BLUE + colorama.Back.LIGHTCYAN_EX c5 = colorama.Fore.RED + colorama.Back.LIGHTYELLOW_EX c7 = colorama.Fore.BLACK + colorama.Back.MAGENTA cr = colorama.Style.RESET_ALL basic = False help_me = False error_msg = None invalid_cmd = None command_args = sys.argv[2:] dir_name = command_args[0] if dir_name == "-h" or dir_name == "--help": invalid_run_command("help") elif len(str(dir_name)) < 2: error_msg = "Directory name length must be at least 2 characters long!" elif "/" in str(dir_name) or "\\" in str(dir_name): error_msg = 'Directory name must not include slashes ("/", "\\")!' elif dir_name.startswith("-"): error_msg = 'Directory name cannot start with "-"!' elif os.path.exists(os.getcwd() + "/" + dir_name): error_msg = ( 'Directory "%s" already exists in this directory!' % dir_name ) if error_msg: error_msg = c5 + "ERROR: " + error_msg + cr invalid_run_command(error_msg) if len(command_args) >= 2: options = command_args[1:] for option in options: option = option.lower() if option == "-h" or option == "--help": help_me = True elif option == "-b" or option == "--basic": basic = True else: invalid_cmd = "\n===> INVALID OPTION: >> %s <<\n" % option invalid_cmd = invalid_cmd.replace(">> ", ">>" + c5 + " ") invalid_cmd = invalid_cmd.replace(" <<", " " + cr + "<<") invalid_cmd = invalid_cmd.replace(">>", c7 + ">>" + cr) invalid_cmd = invalid_cmd.replace("<<", c7 + "<<" + cr) help_me = True break if help_me: invalid_run_command(invalid_cmd) os.mkdir(dir_name) data = [] seleniumbase_req = "seleniumbase" try: from seleniumbase import __version__ seleniumbase_req = "seleniumbase>=%s" % str(__version__) except Exception: pass data.append(seleniumbase_req) data.append("") file_path = "%s/%s" % (dir_name, "requirements.txt") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append("[pytest]") data.append("addopts = --capture=no -p no:cacheprovider") data.append("norecursedirs = .* build dist recordings temp assets") data.append("filterwarnings =") data.append(" ignore::pytest.PytestWarning") data.append(" ignore:.*U.*mode is deprecated:DeprecationWarning") data.append("junit_family = legacy") data.append("python_files = test_*.py *_test.py *_tests.py *_suite.py") data.append("python_classes = Test* *Test* *Test *Tests *Suite") data.append("python_functions = test_*") data.append("markers =") data.append(" marker1: custom marker") data.append(" marker2: custom marker") data.append(" marker3: custom marker") data.append(" marker_test_suite: custom marker") data.append(" expected_failure: custom marker") data.append(" local: custom marker") data.append(" remote: custom marker") data.append(" offline: custom marker") data.append(" develop: custom marker") data.append(" qa: custom marker") data.append(" ci: custom marker") data.append(" e2e: custom marker") data.append(" ready: custom marker") data.append(" smoke: custom marker") data.append(" deploy: custom marker") data.append(" active: custom marker") data.append(" master: custom marker") data.append(" release: custom marker") data.append(" staging: custom marker") data.append(" production: custom marker") data.append("") file_path = "%s/%s" % (dir_name, "pytest.ini") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append("[flake8]") data.append("exclude=recordings,temp") data.append("ignore=W503") data.append("") data.append("[nosetests]") data.append("nocapture=1") data.append("logging-level=INFO") data.append("") data.append("[behave]") data.append("show_skipped=false") data.append("show_timings=false") file_path = "%s/%s" % (dir_name, "setup.cfg") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append("") file_path = "%s/%s" % (dir_name, "__init__.py") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append("*.py[cod]") data.append("*.egg") data.append("*.egg-info") data.append("dist") data.append("build") data.append(".eggs") data.append("eggs") data.append("parts") data.append("bin") data.append("var") data.append("sdist") data.append("develop-eggs") data.append(".installed.cfg") data.append("lib") data.append("lib64") data.append("__pycache__") data.append(".env") data.append(".venv") data.append("env/") data.append("venv/") data.append("ENV/") data.append("VENV/") data.append("env.bak/") data.append("venv.bak/") data.append(".sbase") data.append(".sbase*") data.append("seleniumbase_env") data.append("seleniumbase_venv") data.append("sbase_env") data.append("sbase_venv") data.append("pyvenv.cfg") data.append(".Python") data.append("include") data.append("pip-delete-this-directory.txt") data.append("pip-selfcheck.json") data.append("ipython.1.gz") data.append("nosetests.1") data.append(".noseids") data.append("pip-log.txt") data.append(".swp") data.append(".coverage") data.append(".tox") data.append("coverage.xml") data.append("nosetests.xml") data.append(".cache/*") data.append(".pytest_cache/*") data.append(".pytest_config") data.append("junit") data.append("test-results.xml") data.append(".idea") data.append(".project") data.append(".pydevproject") data.append(".vscode") data.append("chromedriver") data.append("geckodriver") data.append("msedgedriver") data.append("operadriver") data.append("uc_driver") data.append("MicrosoftWebDriver.exe") data.append("headless_ie_selenium.exe") data.append("IEDriverServer.exe") data.append("chromedriver.exe") data.append("geckodriver.exe") data.append("msedgedriver.exe") data.append("operadriver.exe") data.append("uc_driver.exe") data.append("logs") data.append("latest_logs") data.append("log_archives") data.append("archived_logs") data.append("geckodriver.log") data.append("ghostdriver.log") data.append("pytestdebug.log") data.append("reports/*.xml") data.append("latest_report") data.append("report_archives") data.append("archived_reports") data.append("html_report.html") data.append("report.html") data.append("report.xml") data.append("dashboard.html") data.append("dashboard.json") data.append("dash_pie.json") data.append("dashboard.lock") data.append("allure_report") data.append("allure-report") data.append("allure_results") data.append("allure-results") data.append("saved_charts") data.append("saved_presentations") data.append("tours_exported") data.append("images_exported") data.append("saved_cookies") data.append("recordings") data.append("visual_baseline") data.append(".DS_Store") data.append("selenium-server-standalone.jar") data.append("proxy.zip") data.append("proxy.lock") data.append("verbose_hub_server.dat") data.append("verbose_node_server.dat") data.append("ip_of_grid_hub.dat") data.append("downloaded_files") data.append("archived_files") data.append("assets") data.append("temp") data.append("temp_*/") data.append("node_modules") file_path = "%s/%s" % (dir_name, ".gitignore") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() if basic: data = [] data.append(" %s/" % dir_name) data.append(" ├── __init__.py") data.append(" ├── pytest.ini") data.append(" ├── requirements.txt") data.append(" └── setup.cfg") file_path = "%s/%s" % (dir_name, "outline.rst") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() os.system("sbase print %s -n" % file_path) os.remove(file_path) success = ( "\n" + c1 + '* Directory "' + dir_name + '" was created ' "with config files! *" + cr + "\n" ) print(success) return data = [] data.append("from seleniumbase import BaseCase") data.append("BaseCase.main(__name__, __file__)") data.append("") data.append("") data.append("class MyTestClass(BaseCase):") data.append(" def test_swag_labs(self):") data.append(' self.open("https://www.saucedemo.com")') data.append(' self.type("#user-name", "standard_user")') data.append(' self.type("#password", "secret_sauce\\n")') data.append(' self.assert_element("div.inventory_list")') data.append(' self.assert_text("Products", "span.title")') data.append(" self.click('button[name*=\"backpack\"]')") data.append(' self.click("#shopping_cart_container a")') data.append(' self.assert_text("Your Cart", "span.title")') data.append(' self.assert_text("Backpack", "div.cart_item")') data.append(' self.click("button#checkout")') data.append(' self.type("#first-name", "SeleniumBase")') data.append(' self.type("#last-name", "Automation")') data.append(' self.type("#postal-code", "77123")') data.append(' self.click("input#continue")') data.append(' self.assert_text("Checkout: Overview")') data.append(' self.assert_text("Backpack", "div.cart_item")') data.append(' self.click("button#finish")') data.append( ' self.assert_exact_text("Thank you for your order!", "h2")' ) data.append(" self.assert_element('img[alt=\"Pony Express\"]')") data.append(' self.js_click("a#logout_sidebar_link")') data.append(' self.assert_element("div#login_button_container")') data.append("") file_path = "%s/%s" % (dir_name, "my_first_test.py") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append("from seleniumbase import BaseCase") data.append("BaseCase.main(__name__, __file__)") data.append("") data.append("") data.append("class DemoSiteTests(BaseCase):") data.append(" def test_demo_site(self):") data.append(' self.open("https://seleniumbase.io/demo_page.html")') data.append(' self.assert_title("Web Testing Page")') data.append(' self.assert_element("tbody#tbodyId")') data.append(' self.assert_text("Demo Page", "h1")') data.append(' self.type("#myTextInput", "This is Automated")') data.append(' self.type("textarea.area1", "Testing Time!\\n")') data.append(' self.type(\'[name="preText2"]\', "Typing Text!")') data.append( ' self.assert_text("This is Automated", "#myTextInput")' ) data.append( ' self.assert_text("Testing Time!\\n", "textarea.area1")' ) data.append( ' self.assert_text("Typing Text!", \'[name="preText2"]\')' ) data.append(' self.assert_text("Automation Practice", "h3")') data.append( ' self.hover_and_js_click("#myDropdown", "#dropOption2")' ) data.append(' self.assert_text("Link Two Selected", "h3")') data.append(' self.assert_text("This Text is Green", "#pText")') data.append(' self.click("#myButton")') data.append(' self.assert_text("This Text is Purple", "#pText")') data.append(" self.assert_element('svg[name=\"svgName\"]')") data.append(" self.assert_element('progress[value=\"50\"]')") data.append(' self.press_right_arrow("#myslider", times=5)') data.append(" self.assert_element('progress[value=\"100\"]')") data.append(" self.assert_element('meter[value=\"0.25\"]')") data.append( ' self.select_option_by_text("#mySelect", "Set to 75%")' ) data.append(" self.assert_element('meter[value=\"0.75\"]')") data.append(' self.assert_false(self.is_element_visible("img"))') data.append(' self.switch_to_frame("#myFrame1")') data.append(' self.assert_true(self.is_element_visible("img"))') data.append(" self.switch_to_default_content()") data.append( ' self.assert_false(self.is_text_visible("iFrame Text"))' ) data.append(' self.switch_to_frame("#myFrame2")') data.append( ' self.assert_true(self.is_text_visible("iFrame Text"))' ) data.append(" self.switch_to_default_content()") data.append(' self.assert_false(self.is_selected("#radioButton2"))') data.append(' self.click("#radioButton2")') data.append(' self.assert_true(self.is_selected("#radioButton2"))') data.append(' self.assert_false(self.is_selected("#checkBox1"))') data.append(' self.click("#checkBox1")') data.append(' self.assert_true(self.is_selected("#checkBox1"))') data.append(' self.assert_false(self.is_selected("#checkBox2"))') data.append(' self.assert_false(self.is_selected("#checkBox3"))') data.append(' self.assert_false(self.is_selected("#checkBox4"))') data.append(' self.click_visible_elements("input.checkBoxClassB")') data.append(' self.assert_true(self.is_selected("#checkBox2"))') data.append(' self.assert_true(self.is_selected("#checkBox3"))') data.append(' self.assert_true(self.is_selected("#checkBox4"))') data.append(' self.assert_false(self.is_element_visible(".fBox"))') data.append(' self.switch_to_frame("#myFrame3")') data.append(' self.assert_true(self.is_element_visible(".fBox"))') data.append(' self.assert_false(self.is_selected(".fBox"))') data.append(' self.click(".fBox")') data.append(' self.assert_true(self.is_selected(".fBox"))') data.append(" self.switch_to_default_content()") data.append( ' self.assert_element_not_visible("div#drop2 img#logo")' ) data.append(' self.drag_and_drop("img#logo", "div#drop2")') data.append(' self.assert_element("div#drop2 img#logo")') data.append(' self.assert_link_text("seleniumbase.com")') data.append(' self.assert_link_text("SeleniumBase on GitHub")') data.append(' self.assert_link_text("seleniumbase.io")') data.append(' self.click_link("SeleniumBase Demo Page")') data.append(' self.assert_exact_text("Demo Page", "h1")') data.append(' self.highlight("h2")') data.append(' if self.headed:') data.append(" self.activate_demo_mode()") data.append(' self.type("input", "Have a Nice Day!")') data.append(' self.assert_text("SeleniumBase", "h2")') data.append("") file_path = "%s/%s" % (dir_name, "test_demo_site.py") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append("from parameterized import parameterized") data.append("from seleniumbase import BaseCase") data.append("BaseCase.main(__name__, __file__)") data.append("") data.append("") data.append("class SearchTests(BaseCase):") data.append(" @parameterized.expand(") data.append(" [") data.append( " " '["SeleniumBase Commander", "Commander", "GUI / Commander"],' ) data.append( ' ["SeleniumBase Recorder", "Recorder", "Recorder Mode"],' ) data.append( ' ["SeleniumBase Syntax", "Syntax", "Syntax Formats"],' ) data.append(" ]") data.append(" )") data.append( " def test_parameterized_search(" "self, search_term, keyword, title_text):" ) data.append( ' self.open("https://seleniumbase.io/help_docs/how_it_works/")' ) data.append( ' self.type(\'[aria-label="Search"]\', search_term)' ) data.append(' self.click(\'mark:contains("%s")\' % keyword)') data.append(' self.assert_title_contains(title_text)') data.append("") file_path = "%s/%s" % (dir_name, "parameterized_test.py") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() dir_name_2 = dir_name + "/" + "boilerplates" os.mkdir(dir_name_2) data = [] data.append("") file_path = "%s/%s" % (dir_name_2, "__init__.py") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append("from seleniumbase import BaseCase") data.append("BaseCase.main(__name__, __file__)") data.append("") data.append("") data.append("class BaseTestCase(BaseCase):") data.append(" def setUp(self):") data.append(" super().setUp()") data.append(" # <<< Run custom code AFTER the super() line >>>") data.append("") data.append(" def tearDown(self):") data.append(" self.save_teardown_screenshot()") data.append(" if self.has_exception():") data.append(" # <<< Run custom code if the test failed. >>>") data.append(" pass") data.append(" else:") data.append(" # <<< Run custom code if the test passed. >>>") data.append(" pass") data.append(" # (Wrap unreliable code in a try/except block.)") data.append(" # <<< Run custom code BEFORE the super() line >>>") data.append(" super().tearDown()") data.append("") data.append(" def login(self):") data.append(" # <<< Placeholder. Add your code here. >>>") data.append(" pass") data.append("") data.append(" def example_method(self):") data.append(" # <<< Placeholder. Add your code here. >>>") data.append(" pass") data.append("") file_path = "%s/%s" % (dir_name_2, "base_test_case.py") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append("class Page(object):") data.append(' html = "html"') data.append("") file_path = "%s/%s" % (dir_name_2, "page_objects.py") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append("from .base_test_case import BaseTestCase") data.append("from .page_objects import Page") data.append("") data.append("") data.append("class MyTestClass(BaseTestCase):") data.append(" def test_boilerplate(self):") data.append(" self.login()") data.append(" self.example_method()") data.append(" self.assert_element(Page.html)") data.append("") file_path = "%s/%s" % (dir_name_2, "boilerplate_test.py") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append("from seleniumbase import BaseCase") data.append("BaseCase.main(__name__, __file__)") data.append("") data.append("") data.append("class DataPage:") data.append(" def go_to_data_url(self, sb):") data.append(' sb.open("data:text/html,

Hello!

")') data.append("") data.append(" def add_input_text(self, sb, text):") data.append(' sb.type("input", text)') data.append("") data.append("") data.append("class ObjTests(BaseCase):") data.append(" def test_data_url_page(self):") data.append(" DataPage().go_to_data_url(self)") data.append(' self.assert_text("Hello!", "p")') data.append(' DataPage().add_input_text(self, "Goodbye!")') data.append("") file_path = "%s/%s" % (dir_name_2, "classic_obj_test.py") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append("class DataPage:") data.append(" def go_to_data_url(self, sb):") data.append(' sb.open("data:text/html,

Hello!

")') data.append("") data.append(" def add_input_text(self, sb, text):") data.append(' sb.type("input", text)') data.append("") data.append("") data.append("class ObjTests:") data.append(" def test_data_url_page(self, sb):") data.append(" DataPage().go_to_data_url(sb)") data.append(' sb.assert_text("Hello!", "p")') data.append(' DataPage().add_input_text(sb, "Goodbye!")') data.append("") file_path = "%s/%s" % (dir_name_2, "sb_fixture_test.py") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() dir_name_3 = dir_name_2 + "/" + "samples" os.mkdir(dir_name_3) data = [] data.append("") file_path = "%s/%s" % (dir_name_3, "__init__.py") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append("from seleniumbase import BaseCase") data.append("from .google_objects import HomePage, ResultsPage") data.append("") data.append("") data.append("class GoogleTests(BaseCase):") data.append(" def test_google_dot_com(self):") data.append(' self.open("https://google.com/ncr")') data.append(' self.assert_title_contains("Google")') data.append(" self.sleep(0.05)") data.append(" self.save_screenshot_to_logs()") data.append( " self.wait_for_element('iframe[role=\"presentation\"]')" ) data.append(" self.hide_elements('iframe')") data.append(" self.sleep(0.05)") data.append(" self.save_screenshot_to_logs()") data.append(' self.type(HomePage.search_box, "github.com")') data.append(" self.assert_element(HomePage.search_button)") data.append(" self.assert_element(HomePage.feeling_lucky_button)") data.append(" self.click(HomePage.search_button)") data.append( ' self.assert_text("github.com", ResultsPage.search_results)' ) data.append("") file_path = "%s/%s" % (dir_name_3, "google_test.py") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append("class HomePage(object):") data.append(" dialog_box = '[role=\"dialog\"] div'") data.append(" search_box = '[title=\"Search\"]'") data.append(" search_button = 'input[value=\"Google Search\"]'") data.append( ' feeling_lucky_button = """input[value="I\'m Feeling Lucky"]"""' ) data.append("") data.append("") data.append("class ResultsPage(object):") data.append(' search_results = "div#center_col"') data.append("") file_path = "%s/%s" % (dir_name_3, "google_objects.py") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append('""" Classic Page Object Model with BaseCase inheritance """') data.append("") data.append("from seleniumbase import BaseCase") data.append("BaseCase.main(__name__, __file__)") data.append("") data.append("") data.append("class LoginPage:") data.append(" def login_to_swag_labs(self, sb, username):") data.append(' sb.open("https://www.saucedemo.com/")') data.append(' sb.type("#user-name", username)') data.append(' sb.type("#password", "secret_sauce")') data.append(" sb.click('input[type=\"submit\"]')") data.append("") data.append("") data.append("class MyTests(BaseCase):") data.append(" def test_swag_labs_login(self):") data.append( ' LoginPage().login_to_swag_labs(self, "standard_user")' ) data.append(' self.assert_element("#inventory_container")') data.append( " self.assert_element('div:contains(\"Sauce Labs Backpack\")')" ) data.append(' self.js_click("a#logout_sidebar_link")') data.append(' self.assert_element("div#login_button_container")') data.append("") file_path = "%s/%s" % (dir_name_3, "swag_labs_test.py") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append('""" Classic Page Object Model with the "sb" fixture """') data.append("") data.append("") data.append("class LoginPage:") data.append(" def login_to_swag_labs(self, sb, username):") data.append(' sb.open("https://www.saucedemo.com/")') data.append(' sb.type("#user-name", username)') data.append(' sb.type("#password", "secret_sauce")') data.append(" sb.click('input[type=\"submit\"]')") data.append("") data.append("") data.append("class MyTests:") data.append(" def test_swag_labs_login(self, sb):") data.append(' LoginPage().login_to_swag_labs(sb, "standard_user")') data.append(' sb.assert_element("div.inventory_list")') data.append( " sb.assert_element('div:contains(\"Sauce Labs Backpack\")')" ) data.append(' sb.js_click("a#logout_sidebar_link")') data.append(' sb.assert_element("div#login_button_container")') data.append("") file_path = "%s/%s" % (dir_name_3, "sb_swag_test.py") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() data = [] data.append(" %s/" % dir_name) data.append(" ├── __init__.py") data.append(" ├── my_first_test.py") data.append(" ├── parameterized_test.py") data.append(" ├── pytest.ini") data.append(" ├── requirements.txt") data.append(" ├── setup.cfg") data.append(" ├── test_demo_site.py") data.append(" └── boilerplates/") data.append(" ├── __init__.py") data.append(" ├── base_test_case.py") data.append(" ├── boilerplate_test.py") data.append(" ├── classic_obj_test.py") data.append(" ├── page_objects.py") data.append(" ├── sb_fixture_test.py") data.append(" └── samples/") data.append(" ├── __init__.py") data.append(" ├── google_objects.py") data.append(" ├── google_test.py") data.append(" ├── sb_swag_test.py") data.append(" └── swag_labs_test.py") file_path = "%s/%s" % (dir_name, "outline.rst") file = codecs.open(file_path, "w+", "utf-8") file.writelines("\r\n".join(data)) file.close() if " " not in file_path: os.system("sbase print %s -n" % file_path) elif '"' not in file_path: os.system('sbase print "%s" -n' % file_path) else: os.system("sbase print '%s' -n" % file_path) os.remove(file_path) success = ( "\n" + c1 + '* Directory "' + dir_name + '" was created ' "with config files and sample tests! *" + cr + "\n" ) print(success) if __name__ == "__main__": invalid_run_command()