From 7e6c8d30e6e53d8154a3ec0459a06dfa511320d2 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Sat, 23 Dec 2006 23:09:16 +0100 Subject: [PATCH] include MIDI files in testing. --- buildscripts/output-distance.py | 118 +++++++++++++++++++++++++------- 1 file changed, 95 insertions(+), 23 deletions(-) diff --git a/buildscripts/output-distance.py b/buildscripts/output-distance.py index f19886afbf..a7de28b9ff 100644 --- a/buildscripts/output-distance.py +++ b/buildscripts/output-distance.py @@ -313,12 +313,65 @@ def compare_png_images (old, new, dir): system ("composite -quality 65 matte.png %(new)s %(dest)s" % locals ()) class FileLink: + def text_record_string (self): + return '%-30f %-20s\n' % (self.distance (), + self.name ()) + def distance (self): + return 0.0 + + def name (self): + return '' + + def link_files_for_html (self, old_dir, new_dir, dest_dir): + pass + + def write_html_system_details (self, dir1, dir2, dest_dir): + pass + + def html_record_string (self, old_dir, new_dir): + return '' + +class MidiFileLink (FileLink): + def __init__ (self, f1, f2): + self.files = (f1, f2) + + print 'reading', f1 + s1 = open (self.files[0]).read () + print 'reading', f2 + s2 = open (self.files[1]).read () + + self.same = (s1 == s2) + + def name (self): + name = os.path.split (self.files[0])[1] + name = re.sub ('.midi', '', name) + return name + + def distance (self): + ## todo: could use import MIDI to pinpoint + ## what & where changed. + if self.same: + return 0 + else: + return 100; + def html_record_string (self, d1, d2): + return ''' + +%f + +%s +%s +''' % ((self.distance(),) + self.files) + +class SignatureFileLink (FileLink): def __init__ (self): self.original_name = '' self.base_names = ('','') self.system_links = {} self._distance = None - + def name (self): + return self.original_name + def add_system_link (self, link, number): self.system_links[number] = link @@ -338,10 +391,6 @@ class FileLink: return self._distance - def text_record_string (self): - return '%-30f %-20s\n' % (self.distance (), - self.original_name) - def source_file (self): for ext in ('.ly', '.ly.txt'): if os.path.exists (self.base_names[1] + ext): @@ -577,23 +626,35 @@ class ComparisonData: self.compare_trees (d1, d2) def compare_directories (self, dir1, dir2): + for ext in ['signature', 'midi']: + (paired, m1, m2) = paired_files (dir1, dir2, '*.' + ext) - (paired, m1, m2) = paired_files (dir1, dir2, '*.signature') - - self.missing += [(dir1, m) for m in m1] - self.added += [(dir2, m) for m in m2] + self.missing += [(dir1, m) for m in m1] + self.added += [(dir2, m) for m in m2] - for p in paired: - if (inspect_max_count - and len (self.file_links) > inspect_max_count): + for p in paired: + if (inspect_max_count + and len (self.file_links) > inspect_max_count): + + continue - continue - - f2 = dir2 + '/' + p - f1 = dir1 + '/' + p - self.compare_files (f1, f2) + f2 = dir2 + '/' + p + f1 = dir1 + '/' + p + self.compare_files (f1, f2) def compare_files (self, f1, f2): + if f1.endswith ('signature'): + self.compare_signature_files (f1, f2) + elif f1.endswith ('midi'): + self.compare_midi_files (f1, f2) + + def compare_midi_files (self, f1, f2): + name = os.path.split (f1)[1] + + file_link = MidiFileLink (f1, f2) + self.file_links[name] = file_link + + def compare_signature_files (self, f1, f2): name = os.path.split (f1)[1] name = re.sub ('-[0-9]+.signature', '', name) @@ -601,10 +662,10 @@ class ComparisonData: try: file_link = self.file_links[name] except KeyError: - file_link = FileLink () + file_link = SignatureFileLink () self.file_links[name] = file_link - file_link.add_file_compare (f1,f2) + file_link.add_file_compare (f1, f2) def write_text_result_page (self, filename, threshold): out = None @@ -762,12 +823,16 @@ def test_compare_trees (): ## radical diffs. system ('cp 19-1.signature dir2/20grob-1.signature') system ('cp 19-1.signature dir2/20grob-2.signature') + system ('cp 19multipage.midi dir1/midi-differ.midi') + system ('cp 20multipage.midi dir2/midi-differ.midi') compare_trees ('dir1', 'dir2', 'compare-dir1dir2', 0.5) def test_basic_compare (): ly_template = r""" + +\version "2.10.0" #(set! toplevel-score-handler print-score-with-defaults) #(set! toplevel-music-handler (lambda (p m) @@ -778,7 +843,8 @@ def test_basic_compare (): \sourcefilename "my-source.ly" %(papermod)s -\header { tagline = ##f } +\header { tagline = ##f } +\score { << \new Staff \relative c { c4^"%(userstring)s" %(extragrob)s @@ -787,6 +853,9 @@ def test_basic_compare (): c4^"%(userstring)s" %(extragrob)s } >> +\layout{} +} + """ dicts = [{ 'papermod' : '', @@ -805,7 +874,6 @@ def test_basic_compare (): 'name' : '20grob', 'extragrob': 'r2. \\break c1', 'userstring': 'test' }, - ] for d in dicts: @@ -818,10 +886,14 @@ def test_basic_compare (): multipage_str = r''' #(set-default-paper-size "a6") - {c1 \pageBreak c1 } + \score { + \relative {c1 \pageBreak c1 } + \layout {} + \midi {} + } ''' - open ('20multipage', 'w').write (multipage_str) + open ('20multipage', 'w').write (multipage_str.replace ('c1', 'd1')) open ('19multipage', 'w').write ('#(set-global-staff-size 19.5)\n' + multipage_str) system ('lilypond -ddump-signatures --png 19multipage 20multipage ') -- 2.39.2