def test_options(tmpdir): """ if uranium fails on an exception, it should return a proper exit code. """ ubuild = """ def main(build): print("main") print(build.options.args) def test(build): print("test") print(build.options.args) """.strip() # we need to create a virtualenv tmpdir.join("ubuild.py").write(ubuild) _, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, "main", "foo", cwd=tmpdir.strpath ) assert "main" in out.decode("UTF-8") assert "foo" in out.decode("UTF-8") _, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, "main", "foo", cwd=tmpdir.strpath ) assert "test" in out.decode("UTF-8") assert "foo" in out.decode("UTF-8")
def test_update(tmpdir): """ update should update versions to the latest. """ hard_version = URANIUM_PY_UPDATE.format(',version="==1.3.1"') tmpdir.join("ubuild.py").write(hard_version) status, out, err = execute_script("uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath) assert "1.3.1" in out.decode("utf-8") no_version = URANIUM_PY_UPDATE.format('') tmpdir.join("ubuild.py").write(no_version) status, out, err = execute_script("uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath) assert "1.3.1" in out.decode("utf-8") update_version = URANIUM_PY_UPDATE.format(',upgrade=True') tmpdir.join("ubuild.py").write(update_version) status, out, err = execute_script("uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath) assert "1.3.1" in out.decode("utf-8")
def test_history_full(tmpdir): """ the history should be stored from run to run """ tmpdir.join("ubuild.py").write(URANIUM_PY) status, out, err = execute_script("uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath) assert "false" in out.decode("utf-8") status, out, err = execute_script("uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath) assert "true" in out.decode("utf-8")
def test_package_cache(tmpdir): """ don't event attempt to call pip, if a package already exists. """ tmpdir.join("ubuild.py").write(URANIUM_PY) execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) code, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) print(out) print(err) assert "Requirement already satisified" not in str(out) assert code == 0
def test_history_full(tmpdir): """ the history should be stored from run to run """ tmpdir.join("ubuild.py").write(URANIUM_PY) status, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) assert "false" in out.decode("utf-8") status, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) assert "true" in out.decode("utf-8")
def test_executable_relocatable_after_install(tmpdir): """ an executable installed from a package should be using the virtualenv relocatable version. """ UBUILD = """ import os def main(build): build.packages.install("tox") nose_path = os.path.join(build.root, "bin", "tox") with open(nose_path) as fh: contents = fh.read() print(contents) assert build.root not in contents """.strip() # we need to create a virtualenv tmpdir.join("ubuild.py").write(UBUILD) code, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) print("stdout:\n" + str(out)) print("stderr:\n" + str(err)) assert code == 0
def test_error(tmpdir): # we need to create a virtualenv tmpdir.join("ubuild.py").write(URANIUM_PY) code, out, err = execute_script("uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath) assert "URANIUM FAILED" in str(out) assert code == 1
def test_error(tmpdir): # we need to create a virtualenv tmpdir.join("ubuild.py").write(URANIUM_PY) code, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) assert "URANIUM FAILED" in str(out) assert code == 1
def test_history_full_invalid_history(tmpdir): """ the history should be stored from run to run """ tmpdir.join("ubuild.py").write(URANIUM_PY_INVALID_HISTORY) status, out, err = execute_script("uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath) assert status != 0
def test_history_full_invalid_history(tmpdir): """ the history should be stored from run to run """ tmpdir.join("ubuild.py").write(URANIUM_PY_INVALID_HISTORY) status, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) assert status != 0
def test_tasks(tmpdir): # we need to create a virtualenv tmpdir.join("ubuild.py").write(URANIUM_PY) code, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, "--tasks", cwd=tmpdir.strpath ) assert "main: this is a docstring" in str(out) assert "_foo: added via tasks" in str(out) assert code == 0
def test_install(tmpdir): # we need to create a virtualenv tmpdir.join("ubuild.py").write(URANIUM_PY) code, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) print("stdout:\n" + str(out)) print("stderr:\n" + str(err)) assert code == 0
def test_nonzero_exit_code(tmpdir): tmpdir.join("ubuild.py").write(""" def main(build): return 1 """.strip()) code, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) assert code == 1
def test_task_overrides_ubuild(tmpdir): """ update should update versions to the latest. """ tmpdir.join("ubuild.py").write(URANIUM_PY) status, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) assert "ubuild.py" not in out.decode("utf-8") assert "task" in out.decode("utf-8")
def test_uninstall(tmpdir): # we need to create a virtualenv tmpdir.join("ubuild.py").write(URANIUM_PY_UNINSTALL) code, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) print("stdout:\n" + str(out)) print("stderr:\n" + str(err)) assert code == 0
def test_tasks(tmpdir): # we need to create a virtualenv tmpdir.join("ubuild.py").write(URANIUM_PY) code, out, err = execute_script("uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, "--tasks", cwd=tmpdir.strpath) assert "main: this is a docstring" in str(out) assert "_foo: added via tasks" in str(out) assert code == 0
def test_task_overrides_ubuild(tmpdir): """ update should update versions to the latest. """ tmpdir.join("ubuild.py").write(URANIUM_PY) status, out, err = execute_script("uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath) assert "" == err.decode("utf-8") assert "ubuild.py" not in out.decode("utf-8") assert "task" in out.decode("utf-8")
def test_config_nested_dict_parameters(tmpdir): """ configuration parameters passed into the command line should become available in the build.config object. """ tmpdir.join("ubuild.py").write(""" def main(build): print(build.config) """.strip()) status, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, "-c", "test_key_out.test_key_in:test_value", cwd=tmpdir.strpath ) assert "{'test_key_out': {'test_key_in': 'test_value'}}" in out.decode("UTF-8")
def test_exit_code_returned_on_bad_run(tmpdir): """ if uranium fails on an exception, it should return a proper exit code. """ ubuild = """ def main(build): assert "foo" == None """.strip() # we need to create a virtualenv tmpdir.join("ubuild.py").write(ubuild) code, _, _ = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) assert code != 0
def test_pytest_available_after_install(tmpdir): """ pytest should be available after an installation. """ UBUILD = """ def main(build): build.packages.install("pytest", version="==2.7.0") build.executables.run(["py.test", "--version"]) """.strip() tmpdir.join("ubuild.py").write(UBUILD) code, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) print("stdout:\n" + str(out)) print("stderr:\n" + str(err)) assert "2.7.0" in out.decode("utf-8")
def test_no_traceback_on_bad_error_code(tmpdir): """ pytest should be available after an installation. """ UBUILD = """ def main(build): # grep with no arguments is a non-zero exit code. build.executables.run(["grep"]) """.strip() tmpdir.join("ubuild.py").write(UBUILD) code, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) print("stdout:\n" + str(out)) print("stderr:\n" + str(err)) assert "Traceback" not in out.decode("utf-8")
def test_config_parameters(tmpdir): """ configuration parameters passed into the command line should become available in the build.config object. """ tmpdir.join("ubuild.py").write(""" def main(build): print(build.config) """.strip()) status, out, err = execute_script("uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, "-c", "test_key:test_value", cwd=tmpdir.strpath) assert "test_key" in out.decode("UTF-8") assert "test_value" in out.decode("UTF-8")
def test_pytest_avaliable_after_install(tmpdir): """ pytest should be available after an installation. """ UBUILD = """ def main(build): build.packages.install("pytest", version="==2.7.0") build.executables.run(["py.test", "--version"]) """.strip() tmpdir.join("ubuild.py").write(UBUILD) code, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) print("stdout:\n" + str(out)) print("stderr:\n" + str(err)) assert "2.7.0" in out.decode("utf-8")
def test_no_traceback_on_bad_error_code(tmpdir): """ pytest should be available after an installation. """ UBUILD = """ def main(build): # grep with no arguments is a non-zero exit code. build.executables.run(["grep"]) """.strip() tmpdir.join("ubuild.py").write(UBUILD) code, out, err = execute_script("uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath) print("stdout:\n" + str(out)) print("stderr:\n" + str(err)) assert "Traceback" not in out.decode("utf-8")
def test_versions_dict_updated(tmpdir): """ the versions dict should be updated once a version is installed. """ UBUILD = """ def main(build): build.packages.install("nose") print(build.packages.versions["nose"]) print("fooo") """.strip() # we need to create a virtualenv tmpdir.join("ubuild.py").write(UBUILD) code, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) print("stdout:\n" + str(out)) print("stderr:\n" + str(err)) assert code == 0
def test_install_with_version_dict_updated(tmpdir): UBUILD = """ def main(build): build.packages.install("requests", version="==2.15.1") build.packages.versions["requests"] = "==2.18.0" build.packages.install("requests") print(build.packages.versions["requests"]) import pkg_resources pkg_resources.get_distribution("requests==2.18.0") """.strip() tmpdir.join("ubuild.py").write(UBUILD) code, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) assert code == 0 assert "2.18.0" in out.decode("utf-8")
def test_hook_initialize(tmpdir): UBUILD = """ def print_hello(build): print("hello") build.hooks["initialize"].append(print_hello) def main(build): print("goodbye") """.strip() # we need to create a virtualenv tmpdir.join("ubuild.py").write(UBUILD) _, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) hello_index = out.decode("utf-8").index("hello") goodbye_index = out.decode("utf-8").index("goodbye") assert hello_index != -1 assert goodbye_index != -1 assert hello_index < goodbye_index
def test_develop_package_imports(tmpdir): """ a develop package should be importable immediately after installation """ UBUILD = """ import os def main(build): build.packages.install("{package}", develop=True) import example """.format(package=EXAMPLE_PACKAGE_PATH).strip() # we need to create a virtualenv tmpdir.join("ubuild.py").write(UBUILD) code, out, err = execute_script("uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath) print("stdout:\n" + str(out)) print("stderr:\n" + str(err)) assert code == 0
def test_develop_package_imports(tmpdir): """ a develop package should be importable immediately after installation """ UBUILD = """ import os def main(build): build.packages.install("{package}", develop=True) import example """.format(package=EXAMPLE_PACKAGE_PATH).strip() # we need to create a virtualenv tmpdir.join("ubuild.py").write(UBUILD) code, out, err = execute_script( "uranium_standalone", "--uranium-dir", URANIUM_SOURCE_ROOT, cwd=tmpdir.strpath ) print("stdout:\n" + str(out)) print("stderr:\n" + str(err)) assert code == 0