@@ -219,9 +219,9 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
def config_is_unchanged(self, setuppath):
os.environ['BBPATH'] = os.path.join(setuppath, 'build')
- out = self.runbbsetup("status")
+ out = self.runbbsetup(["status"])
self.assertIn("Configuration in {} has not changed".format(setuppath), out[0])
- out = self.runbbsetup("update --update-bb-conf='yes'")
+ out = self.runbbsetup(["update", "--update-bb-conf=yes"])
self.assertIn("Configuration in {} has not changed".format(setuppath), out[0])
del os.environ['BBPATH']
@@ -286,50 +286,50 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
del os.environ['BBPATH']
# check that no arguments works
- self.runbbsetup("")
+ self.runbbsetup([])
# check that --help works
- self.runbbsetup("--help")
+ self.runbbsetup(["--help"])
# change to self.tempdir to work with cwd-based default settings
os.chdir(self.tempdir)
# check that the default top-dir-prefix is cwd (now self.tempdir) with no global settings
- out = self.runbbsetup("settings list")
+ out = self.runbbsetup(["settings", "list"])
self.assertIn("default top-dir-prefix {}".format(os.getcwd()), out[0])
# set up global location for dl-dir
settings_path = "{}/global-config".format(self.tempdir)
- out = self.runbbsetup("settings set --global default dl-dir {}".format(os.path.join(self.tempdir, 'downloads')))
+ out = self.runbbsetup(["settings", "set", "--global", "default", "dl-dir", os.path.join(self.tempdir, 'downloads')])
self.assertIn("From section 'default' the setting 'dl-dir' was changed to", out[0])
self.assertIn("Settings written to".format(settings_path), out[0])
# check that writing settings works and then adjust them to point to
# test registry repo
- out = self.runbbsetup("settings set default registry 'git://{};protocol=file;branch=master;rev=master'".format(self.registrypath))
+ out = self.runbbsetup(["settings", "set", "default", "registry", "'git://{};protocol=file;branch=master;rev=master'".format(self.registrypath)])
settings_path = "{}/bitbake-builds/settings.conf".format(self.tempdir)
self.assertIn(settings_path, out[0])
self.assertIn("From section 'default' the setting 'registry' was changed to", out[0])
self.assertIn("Settings written to".format(settings_path), out[0])
# check that listing settings works
- out = self.runbbsetup("settings list")
+ out = self.runbbsetup(["settings", "list"])
self.assertIn("default top-dir-prefix {}".format(self.tempdir), out[0])
self.assertIn("default dl-dir {}".format(os.path.join(self.tempdir, 'downloads')), out[0])
self.assertIn("default registry {}".format('git://{};protocol=file;branch=master;rev=master'.format(self.registrypath)), out[0])
# check that 'list' produces correct output with no configs, one config and two configs
- out = self.runbbsetup("list")
+ out = self.runbbsetup(["list"])
self.assertNotIn("test-config-1", out[0])
self.assertNotIn("test-config-2", out[0])
json_1 = self.add_json_config_to_registry('test-config-1.conf.json', 'master', 'master')
- out = self.runbbsetup("list")
+ out = self.runbbsetup(["list"])
self.assertIn("test-config-1", out[0])
self.assertNotIn("test-config-2", out[0])
json_2 = self.add_json_config_to_registry('config-2/test-config-2.conf.json', 'master', 'master')
- out = self.runbbsetup("list --write-json={}".format(os.path.join(self.tempdir, "test-configs.json")))
+ out = self.runbbsetup(["list", "--write-json={}".format(os.path.join(self.tempdir, "test-configs.json"))])
self.assertIn("test-config-1", out[0])
self.assertIn("test-config-2", out[0])
with open(os.path.join(self.tempdir, "test-configs.json")) as f:
@@ -364,14 +364,14 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
try:
for v in test_configurations:
for c in v['buildconfigs']:
- out = self.runbbsetup("init --non-interactive {} {}".format(v['cmdline'], c))
+ out = self.runbbsetup(["init", "--non-interactive", v['cmdline']] + c.split())
setuppath = self.get_setup_path(v['name'], c)
self.check_setupdir_files(setuppath, test_file_content)
finally:
server.stop()
# install buildtools
- out = self.runbbsetup("install-buildtools --setup-dir {}".format(setuppath))
+ out = self.runbbsetup(["install-buildtools", "--setup-dir", setuppath])
self.assertIn("Buildtools installed into", out[0])
self.assertTrue(os.path.exists(os.path.join(setuppath, 'buildtools')))
@@ -383,9 +383,9 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
for c in variants:
setuppath = self.get_setup_path('test-config-1', c)
os.environ['BBPATH'] = os.path.join(setuppath, 'build')
- out = self.runbbsetup("status")
+ out = self.runbbsetup(["status"])
self.assertIn("Layer repository file://{} checked out into {}/layers/test-repo updated revision master from".format(self.testrepopath, setuppath), out[0])
- out = self.runbbsetup("update --update-bb-conf='yes'")
+ out = self.runbbsetup(["update", "--update-bb-conf=yes"])
if c in ('gadget', 'gizmo'):
self.assertIn("Leaving the previous configuration in {}/build/conf-backup.".format(setuppath), out[0])
self.assertIn('-{}+{}'.format(prev_test_file_content, test_file_content), out[0])
@@ -403,10 +403,10 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
for c in variants:
setuppath = self.get_setup_path('test-config-1', c)
os.environ['BBPATH'] = os.path.join(setuppath, 'build')
- out = self.runbbsetup("status")
+ out = self.runbbsetup(["status"])
self.assertIn("Configuration in {} has changed:".format(setuppath), out[0])
self.assertIn('- "rev": "master"\n+ "rev": "another-branch"', out[0])
- out = self.runbbsetup("update --update-bb-conf='yes'")
+ out = self.runbbsetup(["update", "--update-bb-conf=yes"])
if c in ('gadget', 'gizmo'):
self.assertIn("Leaving the previous configuration in {}/build/conf-backup.".format(setuppath), out[0])
self.assertIn('-{}+{}'.format(prev_test_file_content, test_file_content), out[0])
@@ -438,7 +438,7 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
with open(f"{setuppath}/build/conf/{f}", "w") as fd:
fd.write("deadbeef")
sums_before = _conf_chksum(f"{setuppath}/build/conf")
- out = self.runbbsetup("update --update-bb-conf='no'")
+ out = self.runbbsetup(["update", "--update-bb-conf=no"])
sums_after = _conf_chksum(f"{setuppath}/build/conf")
self.assertEqual(sums_before, sums_after)
@@ -467,7 +467,7 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
json_1 = self.add_local_json_config_to_registry('test-config-1.conf.json', self.testrepopath)
os.environ['BBPATH'] = os.path.join(setuppath, 'build')
- out = self.runbbsetup("update --update-bb-conf='yes'")
+ out = self.runbbsetup(["update", "--update-bb-conf=yes"])
_check_local_sources(setuppath)
_check_layer_backups(layers_path, 1)
@@ -476,14 +476,14 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
self.git(['clone', prev_path, self.testrepopath], cwd=self.tempdir)
json_1 = self.add_local_json_config_to_registry('test-config-1.conf.json', self.testrepopath)
os.environ['BBPATH'] = os.path.join(setuppath, 'build')
- out = self.runbbsetup("update --update-bb-conf='yes'")
+ out = self.runbbsetup(["update", "--update-bb-conf=yes"])
_check_local_sources(setuppath)
_check_layer_backups(layers_path, 1)
self.testrepopath = prev_path
json_1 = self.add_json_config_to_registry('test-config-1.conf.json', branch, branch)
os.environ['BBPATH'] = os.path.join(setuppath, 'build')
- out = self.runbbsetup("update --update-bb-conf='yes'")
+ out = self.runbbsetup(["update", "--update-bb-conf=yes"])
self.check_setupdir_files(setuppath, test_file_content)
_check_layer_backups(layers_path, 1)
@@ -493,7 +493,7 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
test_file_content = "modified-again\n"
self.add_file_to_testrepo('test-file', test_file_content)
os.environ['BBPATH'] = os.path.join(setuppath, 'build')
- out = self.runbbsetup("update --update-bb-conf='yes'")
+ out = self.runbbsetup(["update", "--update-bb-conf=yes"])
_check_layer_backups(layers_path, 1)
## edit a file and make a commit such that no rebase conflicts occur
@@ -503,7 +503,7 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
self.git(['commit', '-m', 'Adding a local modification'], cwd=layer_path)
test_file_content = "modified-again-and-again\n"
self.add_file_to_testrepo('test-file', test_file_content)
- out = self.runbbsetup("update --update-bb-conf='yes'")
+ out = self.runbbsetup(["update", "--update-bb-conf=yes"])
_check_layer_backups(layers_path, 1)
## edit a file and make a commit in a way that causes a rebase conflict
@@ -514,7 +514,7 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
test_file_content = "remotely-modified\n"
self.add_file_to_testrepo('test-file', test_file_content)
with self.assertRaisesRegex(bb.process.ExecutionError, "Merge conflict in test-file"):
- out = self.runbbsetup("update --update-bb-conf='yes'")
+ out = self.runbbsetup(["update", "--update-bb-conf=yes"])
_check_layer_backups(layers_path, 1)
# check source overrides, local sources provided with symlinks, and custom setup dir name
@@ -531,12 +531,12 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
override_filename = 'source-overrides.json'
custom_setup_dir = 'special-setup-dir'
self.add_file_to_testrepo(override_filename, source_override_content)
- out = self.runbbsetup("init --non-interactive --source-overrides {} --setup-dir-name {} test-config-1 gadget".format(os.path.join(self.testrepopath, override_filename), custom_setup_dir))
+ out = self.runbbsetup(["init", "--non-interactive", "--source-overrides", os.path.join(self.testrepopath, override_filename), "--setup-dir-name", custom_setup_dir, "test-config-1", "gadget"])
_check_local_sources(custom_setup_dir)
# same but use command line options to specify local overrides
custom_setup_dir = 'special-setup-dir-with-cmdline-overrides'
- out = self.runbbsetup("init --non-interactive -L test-repo {} --setup-dir-name {} test-config-1 gadget".format(self.testrepopath, custom_setup_dir))
+ out = self.runbbsetup(["init", "--non-interactive", "-L", "test-repo", self.testrepopath, "--setup-dir-name", custom_setup_dir, "test-config-1", "gadget"])
_check_local_sources(custom_setup_dir)
def test_vscode(self):
@@ -544,12 +544,12 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
del os.environ['BBPATH']
os.chdir(self.tempdir)
- self.runbbsetup("settings set default registry 'git://{};protocol=file;branch=master;rev=master'".format(self.registrypath))
+ self.runbbsetup(["settings", "set", "default", "registry", "'git://{};protocol=file;branch=master;rev=master'".format(self.registrypath)])
self.add_file_to_testrepo('test-file', 'initial\n')
self.add_json_config_to_registry('test-config-1.conf.json', 'master', 'master')
# --init-vscode should create bitbake.code-workspace
- self.runbbsetup("init --non-interactive --init-vscode test-config-1 gadget")
+ self.runbbsetup(["init", "--non-interactive", "--init-vscode", "test-config-1", "gadget"])
setuppath = self.get_setup_path('test-config-1', 'gadget')
workspace_file = os.path.join(setuppath, 'bitbake.code-workspace')
self.assertTrue(os.path.exists(workspace_file),
@@ -595,7 +595,7 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
settings.get('python.autoComplete.extraPaths'))
# --no-init-vscode should NOT create a workspace file
- self.runbbsetup("init --non-interactive --no-init-vscode test-config-1 gadget-notemplate")
+ self.runbbsetup(["init", "--non-interactive", "--no-init-vscode", "test-config-1", "gadget-notemplate"])
notemplate_path = self.get_setup_path('test-config-1', 'gadget-notemplate')
self.assertFalse(
os.path.exists(os.path.join(notemplate_path, 'bitbake.code-workspace')),
@@ -610,7 +610,7 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
self.add_file_to_testrepo('test-file', 'updated\n')
os.environ['BBPATH'] = os.path.join(setuppath, 'build')
- self.runbbsetup("update --update-bb-conf='no'")
+ self.runbbsetup(["update", "--update-bb-conf=no"])
del os.environ['BBPATH']
with open(workspace_file) as f:
@@ -625,7 +625,7 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
with open(workspace_file, 'w') as f:
f.write('{invalid json')
os.environ['BBPATH'] = os.path.join(setuppath, 'build')
- self.runbbsetup("update --update-bb-conf='no'")
+ self.runbbsetup(["update", "--update-bb-conf=no"])
del os.environ['BBPATH']
with open(workspace_file) as f:
content = f.read()
@@ -654,10 +654,10 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
del os.environ['BBPATH']
os.chdir(self.tempdir)
- self.runbbsetup("settings set default registry 'git://{};protocol=file;branch=master;rev=master'".format(self.registrypath))
+ self.runbbsetup(["settings", "set", "default", "registry", "'git://{};protocol=file;branch=master;rev=master'".format(self.registrypath)])
self.add_file_to_testrepo('test-file', 'initial\n')
self.add_json_config_to_registry('test-config-1.conf.json', 'master', 'master')
- self.runbbsetup("init --non-interactive test-config-1 gadget")
+ self.runbbsetup(["init", "--non-interactive", "test-config-1", "gadget"])
setuppath = self.get_setup_path('test-config-1', 'gadget')
layer_path = os.path.join(setuppath, 'layers', 'test-repo')
@@ -672,7 +672,7 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
os.environ['BBPATH'] = os.path.join(setuppath, 'build')
with self.assertRaises(bb.process.ExecutionError) as ctx:
- self.runbbsetup("update --update-bb-conf='no'")
+ self.runbbsetup(["update", "--update-bb-conf=no"])
self.assertIn('has uncommitted changes', str(ctx.exception))
self.assertIn('--rebase-conflicts-strategy=backup', str(ctx.exception))
# No backup directory must have been created.
@@ -680,7 +680,7 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
"abort strategy must not create any backup")
# Scenario 2: same uncommitted change, 'backup' strategy
- out = self.runbbsetup("update --update-bb-conf='no' --rebase-conflicts-strategy=backup")
+ out = self.runbbsetup(["update", "--update-bb-conf=no", "--rebase-conflicts-strategy=backup"])
# One backup directory must now exist.
self.assertEqual(self._count_layer_backups(layers_path), 1,
"backup strategy must create exactly one backup")
@@ -695,7 +695,7 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
# Scenario 3: committed conflicting change, 'backup' strategy
# Re-initialise a fresh setup so we start from a clean state.
- self.runbbsetup("init --non-interactive --setup-dir-name rebase-conflict-setup test-config-1 gadget")
+ self.runbbsetup(["init", "--non-interactive", "--setup-dir-name", "rebase-conflict-setup", "test-config-1", "gadget"])
conflict_setup = os.path.join(self.tempdir, 'bitbake-builds', 'rebase-conflict-setup')
conflict_layer = os.path.join(conflict_setup, 'layers', 'test-repo')
conflict_layers = os.path.join(conflict_setup, 'layers')
@@ -713,13 +713,13 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
# Default stop strategy must still fail with a conflict error and include
# the --rebase-conflicts-strategy=backup hint (same handler as LocalModificationsError).
with self.assertRaises(bb.process.ExecutionError) as ctx:
- self.runbbsetup("update --update-bb-conf='no'")
+ self.runbbsetup(["update", "--update-bb-conf=no"])
self.assertIn('Merge conflict in test-file', str(ctx.exception))
self.assertIn('--rebase-conflicts-strategy=backup', str(ctx.exception))
self.assertEqual(self._count_layer_backups(conflict_layers), 0)
# Backup strategy must succeed: backup the conflicted dir and re-clone.
- self.runbbsetup("update --update-bb-conf='no' --rebase-conflicts-strategy=backup")
+ self.runbbsetup(["update", "--update-bb-conf=no", "--rebase-conflicts-strategy=backup"])
self.assertEqual(self._count_layer_backups(conflict_layers), 1,
"backup strategy must create exactly one backup after a conflict")
with open(os.path.join(conflict_layer, 'test-file')) as f:
String commands have to be processed by subprocess using shell=True which is suboptimal for all kinds of reasons, including quoting. Convert to use a list where possible to improve efficiency and the robustness of code. It also means copy and paste will be more likely to use the preferred form. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> --- lib/bb/tests/setup.py | 76 +++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 38 deletions(-)