Compare commits
	
		
			3 Commits
		
	
	
		
			develop-1.
			...
			5a75f42808
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5a75f42808 | |||
| 04f5c3208a | |||
| 110fac70a6 | 
@ -1,5 +1,4 @@
 | 
				
			|||||||
#! /usr/bin/env python3
 | 
					#! /usr/bin/env python3
 | 
				
			||||||
# TODO: SoundMonitor class
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
"""Monitor sound files; For each program, check for:
 | 
					"""Monitor sound files; For each program, check for:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -62,10 +61,8 @@ class Command(BaseCommand):
 | 
				
			|||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def handle(self, *args, **options):
 | 
					    def handle(self, *args, **options):
 | 
				
			||||||
        SoundMonitor()
 | 
					        monitor = SoundMonitor()
 | 
				
			||||||
        if options.get("scan"):
 | 
					        if options.get("scan"):
 | 
				
			||||||
            self.scan()
 | 
					            monitor.scan()
 | 
				
			||||||
        # if options.get('quality_check'):
 | 
					 | 
				
			||||||
        #    self.check_quality(check=(not options.get('scan')))
 | 
					 | 
				
			||||||
        if options.get("monitor"):
 | 
					        if options.get("monitor"):
 | 
				
			||||||
            self.monitor()
 | 
					            monitor.monitor()
 | 
				
			||||||
 | 
				
			|||||||
@ -214,29 +214,31 @@ def monitor():
 | 
				
			|||||||
    yield sound_monitor.SoundMonitor()
 | 
					    yield sound_monitor.SoundMonitor()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SoundMonitor:
 | 
					class TestSoundMonitor:
 | 
				
			||||||
 | 
					    @pytest.mark.django_db
 | 
				
			||||||
    def test_report(self, monitor, program, logger):
 | 
					    def test_report(self, monitor, program, logger):
 | 
				
			||||||
        monitor.report(program, "component", "content", logger=logger)
 | 
					        monitor.report(program, "component", "content", logger=logger)
 | 
				
			||||||
        msg = f"{program}, component: content"
 | 
					        msg = f"{program}, component: content"
 | 
				
			||||||
        assert logger._trace("info", args=True) == (msg,)
 | 
					        assert logger._trace("info", args=True) == (msg,)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_scan(self, monitor, program, logger):
 | 
					    @pytest.mark.django_db
 | 
				
			||||||
 | 
					    def test_scan(self, monitor, programs, logger):
 | 
				
			||||||
        interface = Interface(None, {"scan_for_program": None})
 | 
					        interface = Interface(None, {"scan_for_program": None})
 | 
				
			||||||
        monitor.scan_for_program = interface.scan_for_program
 | 
					        monitor.scan_for_program = interface.scan_for_program
 | 
				
			||||||
        dirs = monitor.scan(logger)
 | 
					        dirs = monitor.scan(logger)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assert logger._traces("info") == (
 | 
					        assert logger._traces("info") == tuple([
 | 
				
			||||||
            "scan all programs...",
 | 
					            (('scan all programs...',), {}),] + \
 | 
				
			||||||
            f"#{program.id} {program.title}",
 | 
					            [((f"#{program.id} {program.title}",), {}) for program in programs])
 | 
				
			||||||
        )
 | 
					        assert dirs == [program.abspath for program in programs]
 | 
				
			||||||
        assert dirs == [program.abspath]
 | 
					        traces = tuple([
 | 
				
			||||||
        assert interface._traces("scan_for_program") == (
 | 
					                [((program, settings.SOUND_ARCHIVES_SUBDIR), {"logger": logger, "type": Sound.TYPE_ARCHIVE}),
 | 
				
			||||||
            ((program, settings.SOUND_ARCHIVES_SUBDIR), {"logger": logger})(
 | 
					                ((program, settings.SOUND_EXCERPTS_SUBDIR), {"logger": logger, "type": Sound.TYPE_EXCERPT})]
 | 
				
			||||||
                (program, settings.SOUND_EXCERPTS_SUBDIR), {"logger": logger}
 | 
					        for program in programs])
 | 
				
			||||||
            )
 | 
					        traces_flat = tuple([item for sublist in traces for item in sublist])
 | 
				
			||||||
        )
 | 
					        assert interface._traces("scan_for_program") == traces_flat
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_monitor(self, monitor, monitor_interfaces, logger):
 | 
					    def broken_test_monitor(self, monitor, monitor_interfaces, logger):
 | 
				
			||||||
        def sleep(*args, **kwargs):
 | 
					        def sleep(*args, **kwargs):
 | 
				
			||||||
            monitor.stop()
 | 
					            monitor.stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										18
									
								
								aircox/tests/management/test_sounds_monitor.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								aircox/tests/management/test_sounds_monitor.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					import pytest
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.core.management import call_command
 | 
				
			||||||
 | 
					from django.conf import settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wav = b"RIFF$\x00\x00\x00WAVEfmt \x10\x00\x00\x00\x01\x00\x02\x00D\xac\x00\x00\x10\xb1\x02\x00\x04\x00\x10\x00data\x00\x00\x00\x00"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@pytest.mark.django_db
 | 
				
			||||||
 | 
					def test_adding_a_sound(programs, fs):
 | 
				
			||||||
 | 
					    p0 = programs[0]
 | 
				
			||||||
 | 
					    assert len(p0.sound_set.all()) == 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    s0 = os.path.join(settings.PROJECT_ROOT, "static/media/%s/archives/sound.wav" % p0.path)
 | 
				
			||||||
 | 
					    fs.create_file(s0, contents=wav)
 | 
				
			||||||
 | 
					    call_command("sounds_monitor", "-s")
 | 
				
			||||||
 | 
					    assert len(p0.sound_set.all()) == 1
 | 
				
			||||||
@ -40,3 +40,9 @@ LOGGING = {
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CACHES = {
 | 
				
			||||||
 | 
					        "default": {
 | 
				
			||||||
 | 
					                    "BACKEND": "django.core.cache.backends.locmem.LocMemCache",
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,4 @@
 | 
				
			|||||||
pytest~=7.2
 | 
					pytest~=7.2
 | 
				
			||||||
pytest-django~=4.5
 | 
					pytest-django~=4.5
 | 
				
			||||||
model_bakery~=1.10
 | 
					model_bakery~=1.10
 | 
				
			||||||
 | 
					pyfakefs~=5.2
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user