diff --git a/fig/cli/command.py b/fig/cli/command.py index d546c81544..a07be7bdb9 100644 --- a/fig/cli/command.py +++ b/fig/cli/command.py @@ -69,7 +69,7 @@ class Command(DocoptCommand): @cached_property def project_name(self): - project = os.path.basename(os.path.dirname(self.yaml_path)) + project = os.path.basename(os.path.dirname(os.path.abspath(self.yaml_path))) if self.explicit_project_name is not None: project = self.explicit_project_name project = re.sub(r'[^a-zA-Z0-9]', '', project) diff --git a/tests/unit/cli_test.py b/tests/unit/cli_test.py index bced969b59..911b14ad8d 100644 --- a/tests/unit/cli_test.py +++ b/tests/unit/cli_test.py @@ -3,13 +3,29 @@ from __future__ import absolute_import from .. import unittest from fig.cli.main import TopLevelCommand from fig.packages.six import StringIO +import os class CLITestCase(unittest.TestCase): - def test_project_name_defaults_to_dirname(self): + def test_default_project_name(self): + cwd = os.getcwd() + + try: + os.chdir('tests/fixtures/simple-figfile') + command = TopLevelCommand() + self.assertEquals('simplefigfile', command.project_name) + finally: + os.chdir(cwd) + + def test_project_name_with_explicit_base_dir(self): command = TopLevelCommand() command.base_dir = 'tests/fixtures/simple-figfile' self.assertEquals('simplefigfile', command.project_name) + def test_project_name_with_explicit_project_name(self): + command = TopLevelCommand() + command.explicit_project_name = 'explicit-project-name' + self.assertEquals('explicitprojectname', command.project_name) + def test_yaml_filename_check(self): command = TopLevelCommand() command.base_dir = 'tests/fixtures/longer-filename-figfile'