-
Notifications
You must be signed in to change notification settings - Fork 35
Closed
Description
Issue description
When you run stestr run
and there is an empty .stestr/ directory in the run dir this raises an unhandled exception. This is because stestr run only checks for that the repository path exists not that it's a valid repository. For example:
Traceback (most recent call last):
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/repository/file.py", line 54, in open
stream = open(os.path.join(base, 'format'), 'rt')
FileNotFoundError: [Errno 2] No such file or directory: '/home/travis/build/mtreinish/aqua/.stestr/format'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/commands/run.py", line 348, in run_command
repo = util.get_repo_open(repo_type, repo_url)
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/repository/util.py", line 47, in get_repo_open
return repo_module.RepositoryFactory().open(repo_url)
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/repository/file.py", line 57, in open
raise repository.RepositoryNotFound(url)
stestr.repository.abstract.RepositoryNotFound: No repository found in /home/travis/build/mtreinish/aqua. Create one by running "stestr init".
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/cliff/app.py", line 401, in run_subcommand
result = cmd.run(parsed_args)
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/cliff/command.py", line 185, in run
return_code = self.take_action(parsed_args) or 0
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/commands/run.py", line 235, in take_action
all_attachments=all_attachments)
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/commands/run.py", line 357, in run_command
repo = util.get_repo_initialise(repo_type, repo_url)
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/repository/util.py", line 68, in get_repo_initialise
return repo_module.RepositoryFactory().initialise(repo_url)
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/repository/file.py", line 43, in initialise
os.mkdir(base)
FileExistsError: [Errno 17] File exists: '/home/travis/build/mtreinish/aqua/.stestr'
Traceback (most recent call last):
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/repository/file.py", line 54, in open
stream = open(os.path.join(base, 'format'), 'rt')
FileNotFoundError: [Errno 2] No such file or directory: '/home/travis/build/mtreinish/aqua/.stestr/format'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/commands/run.py", line 348, in run_command
repo = util.get_repo_open(repo_type, repo_url)
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/repository/util.py", line 47, in get_repo_open
return repo_module.RepositoryFactory().open(repo_url)
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/repository/file.py", line 57, in open
stestr.repository.abstract.RepositoryNotFound: No repository found in /home/travis/build/mtreinish/aqua. Create one by running "stestr init".
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/travis/virtualenv/python3.6.7/bin/stestr", line 10, in <module>
sys.exit(main())
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/cli.py", line 118, in main
return cli.run(argv)
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/cliff/app.py", line 281, in run
result = self.run_subcommand(remainder)
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/cliff/app.py", line 401, in run_subcommand
result = cmd.run(parsed_args)
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/cliff/command.py", line 185, in run
return_code = self.take_action(parsed_args) or 0
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/commands/run.py", line 235, in take_action
all_attachments=all_attachments)
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/commands/run.py", line 357, in run_command
repo = util.get_repo_initialise(repo_type, repo_url)
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/repository/util.py", line 68, in get_repo_initialise
return repo_module.RepositoryFactory().initialise(repo_url)
File "/home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages/stestr/repository/file.py", line 43, in initialise
os.mkdir(base)
FileExistsError: [Errno 17] File exists: '/home/travis/build/mtreinish/aqua/.stestr'
Expected behavior and actual behavior
The expected behavior is debatable, but we either should return an error like stestr init
does if a .stestr dir exists or try to initialize a new repo in the directory if it's empty.
Steps to reproduce the problem
rm -rf .stestr && mkdir .stestr && stestr run
Specifications like the version of the project, operating system, or hardware
System information
stestr version (stestr --version
): 2.5.0 (and master)
Python release (python --version
): any
pip packages (pip freeze
): N/A