Browse Source

Fix regression of default behaviour in Command.project_name

Needed an `os.abspath` in there. Added more tests, too.

Signed-off-by: Aanand Prasad <[email protected]>
Aanand Prasad 11 years ago
parent
commit
91fe414522
2 changed files with 18 additions and 2 deletions
  1. 1 1
      fig/cli/command.py
  2. 17 1
      tests/unit/cli_test.py

+ 1 - 1
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)

+ 17 - 1
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'