Skip to content

Commit 74c83e0

Browse files
committed
DeleteFileAction: New action for DuplicateFileBear
Added a new action DeleteFileAction for DuplicateFileBear. Two instances of this action are added corresponding to the files. On applying it will delete one the file.
1 parent 993e86c commit 74c83e0

File tree

4 files changed

+61
-0
lines changed

4 files changed

+61
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import os
2+
from coalib.results.result_actions.ResultAction import ResultAction
3+
4+
5+
class DeleteFileAction(ResultAction):
6+
"""
7+
Deletes a file
8+
"""
9+
10+
SUCCESS_MESSAGE = 'File deleted successfully.'
11+
12+
def __init__(self, filename):
13+
self.filename = filename
14+
self.description = ('Delete {} [Note: This will '
15+
'delete the file permanently]').format(filename)
16+
17+
@staticmethod
18+
def is_applicable(result,
19+
original_file_dict,
20+
file_diff_dict,
21+
applied_actions=()):
22+
return 'DeleteFileAction' not in applied_actions
23+
24+
def apply(self, result, original_file_dict, file_diff_dict):
25+
os.remove(self.filename)
26+
return file_diff_dict

bears/general/actions/__init__.py

Whitespace-only changes.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import os
2+
import unittest
3+
from unittest.mock import patch
4+
from coalib.results.Result import Result
5+
from bears.general.actions.DeleteFileAction import DeleteFileAction
6+
from coala_utils.ContextManagers import retrieve_stdout
7+
8+
9+
def get_path(file):
10+
return os.path.join(
11+
os.getcwd(), 'tests', 'general', 'duplicate_test_files', file)
12+
13+
14+
class DeleteFileActionTest(unittest.TestCase):
15+
16+
def setUp(self):
17+
self.file1 = 'complexFirst.txt'
18+
self.file2 = 'complexSecond.txt'
19+
self.result = Result('origin', 'message')
20+
self.uut1 = DeleteFileAction(self.file1)
21+
self.uut2 = DeleteFileAction(self.file2)
22+
23+
def test_is_applicable(self):
24+
self.assertTrue(self.uut1.is_applicable(self.result, {}, {}))
25+
self.assertFalse(self.uut1.is_applicable(
26+
self.result, {}, {}, applied_actions=('DeleteFileAction')))
27+
28+
def test_apply(self):
29+
with retrieve_stdout() as stdout:
30+
patcher = ('bears.general.actions.DeleteFileAction.'
31+
'os.remove')
32+
with patch(patcher):
33+
ret = self.uut1.apply(self.result, {}, {'file': 'diff'})
34+
self.assertEqual(ret, {'file': 'diff'})
35+
self.assertEqual(stdout.getvalue(), '')

tests/general/actions/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)