Browse Source

pytest: postproc -> rar_renamer() (#1469)

* pytest: postproc -> rar_renamer()

* pytest: postproc -> rar_renamer(): remove trailing slash

* pytest: postproc -> rar_renamer(): remove trailing slash

* pytest: postproc -> rar_renamer(): check on matching filenames

* pytest: postproc -> rar_renamer(): appveyor Windows compatible, cleaner coding

* pytest: postproc -> rar_renamer(): appveyor Windows compatible, cleaner coding

* pytest: postproc -> rar_renamer(): try without minus

* pytest: postproc -> rar_renamer(): try with distutils.dir_util.copy_tree() instead of shutil.copytree()

* pytest: postproc -> rar_renamer(): formatting to make Travis happy

* pytest: postproc -> rar_renamer(): correct printing in pytest.fail()
pull/1485/head
Sander 5 years ago
committed by GitHub
parent
commit
d40cebd34d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. BIN
      tests/data/obfuscated_but_no_rar/39cec468-cebc-411d-8494-ccb0c5b2158e
  2. BIN
      tests/data/obfuscated_but_no_rar/5b331515-eb3b-495c-a9b6-76983dc02998
  3. BIN
      tests/data/obfuscated_but_no_rar/71287e2e-988a-4f8b-8fb2-5b1a23d1e89b
  4. BIN
      tests/data/obfuscated_but_no_rar/7fc582cf-b0c2-4c13-a7f0-6edff299a4d5
  5. BIN
      tests/data/obfuscated_but_no_rar/884f0030-b10f-40db-b9b7-ea757acd93d0
  6. BIN
      tests/data/obfuscated_but_no_rar/bf641bb5-d0d2-4914-8418-fb13d5c3a685
  7. BIN
      tests/data/obfuscated_single_rar_set/0f32e539-81a6-4549-9695-50603ba11f14
  8. BIN
      tests/data/obfuscated_single_rar_set/92cc040f-819d-400b-aa66-f2de205b06bb
  9. BIN
      tests/data/obfuscated_single_rar_set/9ca69bfe-907a-4693-b1af-a149e65f098d
  10. BIN
      tests/data/obfuscated_single_rar_set/b0bec2e0-67ab-4440-b654-b1847ba9c1c1
  11. BIN
      tests/data/obfuscated_single_rar_set/b6b06ef8-0af5-41fe-8901-f6e5d810f5e9
  12. BIN
      tests/data/obfuscated_single_rar_set/cf4281a2-01a4-4399-bf57-066a73cd9b74
  13. BIN
      tests/data/obfuscated_single_rar_set/f40bf22a-fe69-4b41-ab4c-5ef728a6e162
  14. BIN
      tests/data/obfuscated_two_rar_sets/1f34e542-0a5a-4a7e-81d3-9726c24bb3fd
  15. BIN
      tests/data/obfuscated_two_rar_sets/3b7d77bc-b95d-45b9-bb25-22b156d4ffef
  16. BIN
      tests/data/obfuscated_two_rar_sets/3d2d4cc9-529c-4a7b-91a0-67e3e0ddb2b8
  17. BIN
      tests/data/obfuscated_two_rar_sets/686e730b-87c6-42ff-af52-3d6a32d449fc
  18. BIN
      tests/data/obfuscated_two_rar_sets/6bc6ba71-f563-4b85-af93-1f04e36671e7
  19. BIN
      tests/data/obfuscated_two_rar_sets/70629f48-11bd-4b1e-b1ee-2b1c902d6069
  20. BIN
      tests/data/obfuscated_two_rar_sets/790f7aa9-0e93-43f9-ad05-81394f02072b
  21. BIN
      tests/data/obfuscated_two_rar_sets/79e1de93-f1ed-4ec8-ad69-484038a8d626
  22. BIN
      tests/data/obfuscated_two_rar_sets/8aab6897-3810-47fb-aa69-8bf36ee70081
  23. BIN
      tests/data/obfuscated_two_rar_sets/aaffd55d-5282-4497-a52e-894181dd7531
  24. BIN
      tests/data/obfuscated_two_rar_sets/c2bfeeb1-a0b6-47d2-be35-50328927c1ae
  25. BIN
      tests/data/obfuscated_two_rar_sets/c92aa713-1eac-405e-8b64-448485eefe45
  26. BIN
      tests/data/obfuscated_two_rar_sets/d266818f-83f9-45af-a6dd-44e7194a66dc
  27. BIN
      tests/data/obfuscated_two_rar_sets/e819d66d-ccb1-409d-8794-51205742fb1d
  28. BIN
      tests/data/obfuscated_two_rar_sets/f5b9482f-dff3-433e-ac55-ed48fc8fc02f
  29. BIN
      tests/data/obfuscated_two_rar_sets/f62c18e6-56fb-4758-b499-edac3988fc6a
  30. 96
      tests/test_postproc.py

BIN
tests/data/obfuscated_but_no_rar/39cec468-cebc-411d-8494-ccb0c5b2158e

Binary file not shown.

BIN
tests/data/obfuscated_but_no_rar/5b331515-eb3b-495c-a9b6-76983dc02998

Binary file not shown.

BIN
tests/data/obfuscated_but_no_rar/71287e2e-988a-4f8b-8fb2-5b1a23d1e89b

Binary file not shown.

BIN
tests/data/obfuscated_but_no_rar/7fc582cf-b0c2-4c13-a7f0-6edff299a4d5

Binary file not shown.

BIN
tests/data/obfuscated_but_no_rar/884f0030-b10f-40db-b9b7-ea757acd93d0

Binary file not shown.

BIN
tests/data/obfuscated_but_no_rar/bf641bb5-d0d2-4914-8418-fb13d5c3a685

Binary file not shown.

BIN
tests/data/obfuscated_single_rar_set/0f32e539-81a6-4549-9695-50603ba11f14

Binary file not shown.

BIN
tests/data/obfuscated_single_rar_set/92cc040f-819d-400b-aa66-f2de205b06bb

Binary file not shown.

BIN
tests/data/obfuscated_single_rar_set/9ca69bfe-907a-4693-b1af-a149e65f098d

Binary file not shown.

BIN
tests/data/obfuscated_single_rar_set/b0bec2e0-67ab-4440-b654-b1847ba9c1c1

Binary file not shown.

BIN
tests/data/obfuscated_single_rar_set/b6b06ef8-0af5-41fe-8901-f6e5d810f5e9

Binary file not shown.

BIN
tests/data/obfuscated_single_rar_set/cf4281a2-01a4-4399-bf57-066a73cd9b74

Binary file not shown.

BIN
tests/data/obfuscated_single_rar_set/f40bf22a-fe69-4b41-ab4c-5ef728a6e162

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/1f34e542-0a5a-4a7e-81d3-9726c24bb3fd

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/3b7d77bc-b95d-45b9-bb25-22b156d4ffef

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/3d2d4cc9-529c-4a7b-91a0-67e3e0ddb2b8

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/686e730b-87c6-42ff-af52-3d6a32d449fc

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/6bc6ba71-f563-4b85-af93-1f04e36671e7

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/70629f48-11bd-4b1e-b1ee-2b1c902d6069

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/790f7aa9-0e93-43f9-ad05-81394f02072b

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/79e1de93-f1ed-4ec8-ad69-484038a8d626

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/8aab6897-3810-47fb-aa69-8bf36ee70081

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/aaffd55d-5282-4497-a52e-894181dd7531

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/c2bfeeb1-a0b6-47d2-be35-50328927c1ae

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/c92aa713-1eac-405e-8b64-448485eefe45

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/d266818f-83f9-45af-a6dd-44e7194a66dc

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/e819d66d-ccb1-409d-8794-51205742fb1d

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/f5b9482f-dff3-433e-ac55-ed48fc8fc02f

Binary file not shown.

BIN
tests/data/obfuscated_two_rar_sets/f62c18e6-56fb-4758-b499-edac3988fc6a

Binary file not shown.

96
tests/test_postproc.py

@ -0,0 +1,96 @@
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
"""
tests.test_postproc- Tests of various functions in newspack, among which rar_renamer()
"""
from sabnzbd.postproc import *
from unittest import mock
import os, shutil, pytest
from distutils.dir_util import copy_tree
class TestPostProc:
# Tests of rar_renamer() (=deobfuscate) against various input directories
def test_rar_renamer(self):
# Function to deobfuscate one directorty with rar_renamer()
def deobfuscate_dir(sourcedir, expected_filename_matches):
# sourcedir is the relative path to the directory with obfuscated files
# enrich to absolute path:
sourcedir = os.path.join(os.getcwd(), sourcedir)
# We create a workingdir inside the sourcedir, because the filenames are really changed
workingdir = os.path.join(sourcedir, "workingdir")
# print("workingdir is", workingdir)
# if workingdir is still there from previous run, remove it:
if os.path.isdir(workingdir):
try:
shutil.rmtree(workingdir)
except PermissionError:
pytest.fail(
"Could not remove existing workingdir %s for rar_renamer"
% workingdir
)
# create a fresh copy
try:
# shutil.copytree(sourcedir, workingdir) gives problems on AppVeyor, so:
copy_tree(sourcedir, workingdir)
except:
pytest.fail("Could not create copy of files for rar_renamer")
# And now let the magic happen:
nzo = mock.Mock()
nzo.final_name = "somedownloadname"
number_renamed_files = rar_renamer(nzo, workingdir)
# run check on the resulting files
if expected_filename_matches:
for filename_match in expected_filename_matches:
if (
len(globber_full(workingdir, filename_match))
!= expected_filename_matches[filename_match]
):
pytest.fail(
"Failed filename_match %s in %s"
% (filename_match, workingdir)
)
# Remove workingdir again
try:
shutil.rmtree(workingdir)
except:
pytest.fail(
"Could not remove existing workingdir %s for rar_renamer"
% workingdir
)
return number_renamed_files
# The tests and asserts per directory:
# we use os.path.join("test","data","..." ) to make it OS compatible
# obfuscated, single rar set
sourcedir = os.path.join("tests", "data", "obfuscated_single_rar_set")
# Now define the filematches we want to see, in which amount:
expected_filename_matches = {"*part007.rar": 1, "*-*-*-*-*": 0}
assert deobfuscate_dir(sourcedir, expected_filename_matches) == 7
# obfuscated, two rar sets
sourcedir = os.path.join("tests", "data", "obfuscated_two_rar_sets")
expected_filename_matches = {
"*part007.rar": 2,
"*part009.rar": 1,
"*-*-*-*-*": 0,
}
assert deobfuscate_dir(sourcedir, expected_filename_matches) == 16
# obfuscated, but not a rar set
sourcedir = os.path.join("tests", "data", "obfuscated_but_no_rar")
expected_filename_matches = {"*.rar": 0, "*-*-*-*-*": 6}
assert deobfuscate_dir(sourcedir, expected_filename_matches) == 0
Loading…
Cancel
Save