diff --git a/ros_cross_compile/ros_cross_compile.py b/ros_cross_compile/ros_cross_compile.py
index 38fb475..b37fd01 100644
--- a/ros_cross_compile/ros_cross_compile.py
+++ b/ros_cross_compile/ros_cross_compile.py
@@ -137,7 +137,12 @@ def cross_compile_pipeline(
 ):
     platform = Platform(args.arch, args.os, args.rosdistro, args.sysroot_base_image)
 
-    ros_workspace_dir = Path(args.ros_workspace)
+    ros_workspace_dir = Path(args.ros_workspace).resolve()
+    if not (ros_workspace_dir / 'src').is_dir():
+        raise ValueError(
+            'Specified workspace "{}" does not look like a colcon workspace '
+            '(there is no "src/" directory). Cannot continue'.format(ros_workspace_dir))
+
     skip_rosdep_keys = args.skip_rosdep_keys
     custom_data_dir = _path_if(args.custom_data_dir)
     custom_rosdep_script = _path_if(args.custom_rosdep_script)

cross compile script fails on OSX
## Description
I am trying to follow the tutorial and build the [demos](https://github.com/ros2/demos.git) for AARCH64 under OSX. The script unfortunately does not go through and fails with a stacktrace.

### Expected Behavior
Script exits correctly and `build_aarch64` is created.

### Actual Behavior
i am running `ros_cross_compile --arch aarch64 --os ubuntu --rosdistro foxy .`, where `.` is the current workspace.

```
INFO:Rosdep Gatherer:Running rosdep collector image on workspace .
Traceback (most recent call last):
  File "/Users/karsten/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/lib/python3.7/site-packages/docker/api/client.py", line 222, in _raise_for_status
    response.raise_for_status()
  File "/Users/karsten/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/lib/python3.7/site-packages/requests/models.py", line 941, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http+docker://localunixsocket/v1.30/containers/create

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/karsten/.pyenv/versions/3.7.4/bin/ros_cross_compile", line 8, in <module>
    sys.exit(main())
  File "/Users/karsten/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/lib/python3.7/site-packages/ros_cross_compile/ros_cross_compile.py", line 172, in main
    cross_compile_pipeline(args)
  File "/Users/karsten/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/lib/python3.7/site-packages/ros_cross_compile/ros_cross_compile.py", line 163, in cross_compile_pipeline
    custom_data_dir=custom_data_dir)
  File "/Users/karsten/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/lib/python3.7/site-packages/ros_cross_compile/dependencies.py", line 84, in gather_rosdeps
    volumes=volumes,
  File "/Users/karsten/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/lib/python3.7/site-packages/ros_cross_compile/docker_client.py", line 128, in run_container
    network_mode='host',
  File "/Users/karsten/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/lib/python3.7/site-packages/docker/models/containers.py", line 719, in run
    detach=detach, **kwargs)
  File "/Users/karsten/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/lib/python3.7/site-packages/docker/models/containers.py", line 777, in create
    resp = self.client.api.create_container(**create_kwargs)
  File "/Users/karsten/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/lib/python3.7/site-packages/docker/api/container.py", line 450, in create_container
    return self.create_container_from_config(config, name)
  File "/Users/karsten/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/lib/python3.7/site-packages/docker/api/container.py", line 461, in create_container_from_config
    return self._result(res, True)
  File "/Users/karsten/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/lib/python3.7/site-packages/docker/api/client.py", line 228, in _result
    self._raise_for_status(response)
  File "/Users/karsten/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/lib/python3.7/site-packages/docker/api/client.py", line 224, in _raise_for_status
    raise create_api_error_from_http_exception(e)
  File "/Users/karsten/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/lib/python3.7/site-packages/docker/errors.py", line 31, in create_api_error_from_http_exception
    raise cls(e, response=response, explanation=explanation)
docker.errors.APIError: 400 Client Error: Bad Request ("create .: volume name is too short, names should be at least two alphanumeric characters")
```

## System (please complete the following information)
 - OSX
 - ROS 2 Distro: Foxy

diff --git a/test/test_entrypoint.py b/test/test_entrypoint.py
index 9058cb2..07dde78 100644
--- a/test/test_entrypoint.py
+++ b/test/test_entrypoint.py
@@ -12,6 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import contextlib
+import os
 from pathlib import Path
 from unittest.mock import Mock
 from unittest.mock import patch
@@ -26,12 +28,47 @@ from ros_cross_compile.ros_cross_compile import cross_compile_pipeline
 from ros_cross_compile.ros_cross_compile import parse_args
 
 
+@contextlib.contextmanager
+def chdir(dirname: str):
+    """Provide a "with" statement for changing the working directory."""
+    curdir = os.getcwd()
+    try:
+        os.chdir(dirname)
+        yield
+    finally:
+        os.chdir(curdir)
+
+
 def test_trivial_argparse():
     args = parse_args(['somepath', '-a', 'aarch64', '-o', 'ubuntu'])
     assert args
 
 
+def test_bad_workspace(tmpdir):
+    args = parse_args([str(tmpdir), '-a', 'aarch64', '-o', 'ubuntu', '-d', 'foxy'])
+    with pytest.raises(ValueError):
+        cross_compile_pipeline(args)
+
+
+def test_relative_workspace(tmpdir):
+    # Change directory to the tmp dir and invoke using '.' as the
+    # workspace to check if relative paths work
+    tmp = Path(str(tmpdir))
+    (tmp / 'src').mkdir()
+    relative_dir = '.'
+    args = parse_args([relative_dir, '-a', 'aarch64', '-o', 'ubuntu', '-d', 'foxy'])
+    with chdir(str(tmp)), patch(
+        'ros_cross_compile.ros_cross_compile.DockerClient', Mock()
+    ), patch(
+        'ros_cross_compile.ros_cross_compile.assert_install_rosdep_script_exists'
+    ):
+        # should not raise an exception
+        cross_compile_pipeline(args)
+
+
 def test_mocked_cc_pipeline(tmpdir):
+    tmp = Path(str(tmpdir))
+    (tmp / 'src').mkdir()
     args = parse_args([str(tmpdir), '-a', 'aarch64', '-o', 'ubuntu'])
     with patch(
         'ros_cross_compile.ros_cross_compile.DockerClient', Mock()

pip install -e .
parse_log_pytest
pytest
pytest pytest-cov pytest-repeat pytest-runner flake8 mypy pydocstyle yamllint
apt-get update apt-get install -y gcc
3.7
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs @ file:///croot/attrs_1668696182826/work
certifi @ file:///croot/certifi_1671487769961/work/certifi
charset-normalizer==3.4.1
coverage==7.2.7
docker==2.7.0
docker-pycreds==0.4.0
flake8==5.0.4
flit_core @ file:///opt/conda/conda-bld/flit-core_1644941570762/work/source/flit_core
idna==3.10
importlib-metadata==4.2.0
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
mccabe==0.7.0
mypy==1.4.1
mypy-extensions==1.0.0
packaging @ file:///croot/packaging_1671697413597/work
pathspec==0.11.2
pluggy @ file:///tmp/build/80754af9/pluggy_1648042572264/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pycodestyle==2.9.1
pydocstyle==6.3.0
pyflakes==2.5.0
pytest==7.1.2
pytest-cov==4.1.0
pytest-repeat==0.9.3
pytest-runner==6.0.1
PyYAML==6.0.1
requests==2.31.0
-e git+https://github.com/ros-tooling/cross_compile.git@2a05d1815ad4d13d7e96039fd15bb54b99f3841d#egg=ros_cross_compile
six==1.17.0
snowballstemmer==2.2.0
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
typed-ast==1.5.5
typing_extensions @ file:///croot/typing_extensions_1669924550328/work
urllib3==2.0.7
websocket-client==1.6.1
yamllint==1.32.0
zipp @ file:///croot/zipp_1672387121353/work

name: cross_compile
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=22.1.0=py37h06a4308_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - flit-core=3.6.0=pyhd3eb1b0_0
  - importlib_metadata=4.11.3=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=22.0=py37h06a4308_0
  - pip=22.3.1=py37h06a4308_0
  - pluggy=1.0.0=py37h06a4308_1
  - py=1.11.0=pyhd3eb1b0_0
  - pytest=7.1.2=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py37h06a4308_0
  - typing_extensions=4.4.0=py37h06a4308_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.11.0=py37h06a4308_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - charset-normalizer==3.4.1
      - coverage==7.2.7
      - docker==2.7.0
      - docker-pycreds==0.4.0
      - flake8==5.0.4
      - idna==3.10
      - importlib-metadata==4.2.0
      - mccabe==0.7.0
      - mypy==1.4.1
      - mypy-extensions==1.0.0
      - pathspec==0.11.2
      - pycodestyle==2.9.1
      - pydocstyle==6.3.0
      - pyflakes==2.5.0
      - pytest-cov==4.1.0
      - pytest-repeat==0.9.3
      - pytest-runner==6.0.1
      - pyyaml==6.0.1
      - requests==2.31.0
      - six==1.17.0
      - snowballstemmer==2.2.0
      - typed-ast==1.5.5
      - urllib3==2.0.7
      - websocket-client==1.6.1
      - yamllint==1.32.0
prefix: /opt/conda/envs/cross_compile

test/test_entrypoint.py::test_bad_workspace
test/test_entrypoint.py::test_relative_workspace test/test_entrypoint.py::test_mocked_cc_pipeline
test/test_entrypoint.py::test_trivial_argparse test/test_entrypoint.py::test_install_rosdep_script_exist test/test_entrypoint.py::test_install_rosdep_script_doesnot_exist
ros_cross_compile/ros_cross_compile.py
ros_cross_compile/ros_cross_compile.py