OUTPUT_EXPRESSION_PENALTY = 1
ORPHAN_GROB_PENALTY = 1
-inspect_max_count = 0
+options = None
def shorten_string (s):
threshold = 15
return ''
class MidiFileLink (FileLink):
+ def get_midi (self, f):
+ s = open (f).read ()
+ s = re.sub ('LilyPond [0-9.]+', '', s)
+ return s
+
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 ()
-
+ s1 = self.get_midi (self.files[0])
+ s2 = self.get_midi (self.files[1])
+
self.same = (s1 == s2)
def name (self):
self.add_system_link (link, system_index[0])
+
+ def create_images (self, old_dir, new_dir, dest_dir):
+
+ files_created = [[], []]
+ for oldnew in (0, 1):
+ pat = self.base_names[oldnew] + '.eps'
+
+ for f in glob.glob (pat):
+ infile = f
+ outfile = (dest_dir + '/' + f).replace ('.eps', '.png')
+
+ mkdir (os.path.split (outfile)[0])
+ cmd = ('gs -sDEVICE=png16m -dGraphicsAlphaBits=4 -dTextAlphaBits=4 '
+ ' -r101 '
+ ' -sOutputFile=%(outfile)s -dNOSAFER -dEPSCrop -q -dNOPAUSE '
+ ' %(infile)s -c quit ' % locals ())
+
+ files_created[oldnew].append (outfile)
+ system (cmd)
+
+ return files_created
+
def link_files_for_html (self, old_dir, new_dir, dest_dir):
- png_linked = [[], []]
- for ext in ('.png', '.ly', '-page*png'):
-
+ to_compare = [[], []]
+
+ exts = ['.ly']
+ if options.create_images:
+ to_compare = self.create_images (old_dir, new_dir, dest_dir)
+ else:
+ exts += ['.png', '-page*png']
+
+ for ext in exts:
for oldnew in (0,1):
for f in glob.glob (self.base_names[oldnew] + ext):
dst = dest_dir + '/' + f
link_file (f, dst)
if f.endswith ('.png'):
- png_linked[oldnew].append (f)
-
- for (old,new) in zip (png_linked[0], png_linked[1]):
- compare_png_images (old, new, dest_dir)
+ to_compare[oldnew].append (f)
+
+ if options.compare_images:
+ for (old, new) in zip (to_compare[0], to_compare[1]):
+ compare_png_images (old, new, dest_dir)
+
def html_record_string (self, old_dir, new_dir):
def img_cell (ly, img, name):
if not name:
</font>
</td>
''' % locals ()
-
def multi_img_cell (ly, imgs, name):
if not name:
name = 'source'
html_2 = self.base_names[1] + '.html'
name = self.original_name
+
+ cell_1 = cell (self.base_names[0], name)
+ cell_2 = cell (self.base_names[1], name)
+ if options.compare_images:
+ cell_2 = cell_2.replace ('.png', '.compare.jpeg')
html_entry = '''
<tr>
%s
%s
</tr>
-''' % (self.distance (), html_2,
- cell (self.base_names[0], name),
- cell (self.base_names[1], name).replace ('.png', '.compare.jpeg'))
+''' % (self.distance (), html_2, cell_1, cell_2)
return html_entry
self.added += [(dir2, m) for m in m2]
for p in paired:
- if (inspect_max_count
- and len (self.file_links) > inspect_max_count):
+ if (options.max_count
+ and len (self.file_links) > options.max_count):
continue
def test_compare_trees ():
system ('rm -rf dir1 dir2')
system ('mkdir dir1 dir2')
- system ('cp 20{-*.signature,.ly,.png} dir1')
- system ('cp 20{-*.signature,.ly,.png} dir2')
- system ('cp 20expr{-*.signature,.ly,.png} dir1')
- system ('cp 19{-*.signature,.ly,.png} dir2/')
- system ('cp 19{-*.signature,.ly,.png} dir1/')
+ system ('cp 20{-*.signature,.ly,.png,.eps} dir1')
+ system ('cp 20{-*.signature,.ly,.png,.eps} dir2')
+ system ('cp 20expr{-*.signature,.ly,.png,.eps} dir1')
+ system ('cp 19{-*.signature,.ly,.png,.eps} dir2/')
+ system ('cp 19{-*.signature,.ly,.png,.eps} dir1/')
system ('cp 19-1.signature 19-sub-1.signature')
system ('cp 19.ly 19-sub.ly')
system ('cp 19.png 19-sub.png')
+ system ('cp 19.eps 19-sub.eps')
system ('cp 20multipage* dir1')
system ('cp 20multipage* dir2')
system ('mkdir -p dir1/subdir/ dir2/subdir/')
- system ('cp 19-sub{-*.signature,.ly,.png} dir1/subdir/')
- system ('cp 19-sub{-*.signature,.ly,.png} dir2/subdir/')
- system ('cp 20grob{-*.signature,.ly,.png} dir2/')
- system ('cp 20grob{-*.signature,.ly,.png} dir1/')
+ system ('cp 19-sub{-*.signature,.ly,.png,.eps} dir1/subdir/')
+ system ('cp 19-sub{-*.signature,.ly,.png,.eps} dir2/subdir/')
+ system ('cp 20grob{-*.signature,.ly,.png,.eps} dir2/')
+ system ('cp 20grob{-*.signature,.ly,.png,.eps} dir1/')
## introduce differences
system ('cp 19-1.signature dir2/20-1.signature')
type="float",
help='threshold for geometric distance')
+ p.add_option ('--no-compare-images',
+ dest="compare_images",
+ default=True,
+ action="store_false",
+ help="Don't run graphical comparisons")
+
+ p.add_option ('--create-images',
+ dest="create_images",
+ default=False,
+ action="store_true",
+ help="Create PNGs from EPSes")
p.add_option ('-o', '--output-dir',
dest="output_dir",
type="string",
help='where to put the test results [tree2/compare-tree1tree2]')
+ global options
(options, a) = p.parse_args ()
if options.run_test:
p.print_usage()
sys.exit (2)
- global inspect_max_count
- inspect_max_count = options.max_count
-
name = options.output_dir
if not name:
name = a[0].replace ('/', '')