[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30330] branches/soc-2010-leifandersen/ tests: 1.

Leif Andersen leif.a.andersen at gmail.com
Wed Jul 14 18:41:45 CEST 2010


Revision: 30330
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30330
Author:   leifandersen
Date:     2010-07-14 18:41:44 +0200 (Wed, 14 Jul 2010)

Log Message:
-----------
1.  Changed the CMake files to match the new format.
2.  Cleaned up more code, so that it goes down for distinct branches (well...six, maybe I can clean up some more), being:  Images (w, w/o animations), Hashcodes (w, w/o animations), and those too options again with user defined paths.   Although the hashcode paths are currently stuck off, and may or may not actually make it into the mid-term evaulations.  Most of the bugs are removed at this point.

Modified Paths:
--------------
    branches/soc-2010-leifandersen/tests/pyunit/ops/physics/CMakeLists.txt
    branches/soc-2010-leifandersen/tests/render/run.py

Modified: branches/soc-2010-leifandersen/tests/pyunit/ops/physics/CMakeLists.txt
===================================================================
--- branches/soc-2010-leifandersen/tests/pyunit/ops/physics/CMakeLists.txt	2010-07-14 16:38:09 UTC (rev 30329)
+++ branches/soc-2010-leifandersen/tests/pyunit/ops/physics/CMakeLists.txt	2010-07-14 16:41:44 UTC (rev 30330)
@@ -4,7 +4,7 @@
 	PROPERTIES PASS_REGULAR_EXPRESSION "OK"
 )
 
-ADD_TEST(Ops_Particle_Test_Image_Compare python ${Blender_BINARY_DIR}/tests/render/run.py --blender-bin ${Blender_BINARY_DIR}/bin/blender --image ${Blender_BINARY_DIR}/tests/pyunit/ops/physics/cube_hair.blend --image ${Blender_BINARY_DIR}/tests/pyunit/ops/physics/cube_hair_group.blend --image ${Blender_BINARY_DIR}/tests/pyunit/ops/physics/cube_hair_object.blend)
+ADD_TEST(Ops_Particle_Test_Image_Compare python ${Blender_BINARY_DIR}/tests/render/run.py --blender-bin ${Blender_BINARY_DIR}/bin/blender --image ${Blender_BINARY_DIR}/tests/pyunit/ops/physics/cube_hair.blend ${Blender_BINARY_DIR}/tests/pyunit/ops/physics/cube_hair_group.blend ${Blender_BINARY_DIR}/tests/pyunit/ops/physics/cube_hair_object.blend)
 
 SET_TESTS_PROPERTIES(Ops_Particle_Test_Image_Compare
 	PROPERTIES PASS_REGULAR_EXPRESSION "All tests passed"

Modified: branches/soc-2010-leifandersen/tests/render/run.py
===================================================================
--- branches/soc-2010-leifandersen/tests/render/run.py	2010-07-14 16:38:09 UTC (rev 30329)
+++ branches/soc-2010-leifandersen/tests/render/run.py	2010-07-14 16:41:44 UTC (rev 30330)
@@ -12,27 +12,9 @@
 from optparse import OptionParser
 
 BLENDER_BIN = 'blender'
-RUN_ANIMATIONS = False
-RUN_IMAGES = True
-RUN_ANIMATIONS = False
-VERBOSE = False
-SAVEOUT = sys.stdout
-BLEND_FILE_FOLDER = os.path.join(sys.path[0])
-ANIM_BLEND_FILE_FOLDER = os.path.join(sys.path[0], 'anim')
-GOOD_FOLDER = os.path.join(sys.path[0], 'render')
-ANIM_GOOD_FOLDER = os.path.join(sys.path[0], 'anim')
-OUTPUT_FOLDER = os.path.join(sys.path[0], 'output')
-ANIM_OUTPUT_FOLDER = os.path.join(sys.path[0], 'output')
-HTML_OUTPUT = sys.path[0]
 GOOD_BLENDER_BIN = 'blender'
-BUILDING_TESTS = False
-HASHCODE_TEST = False
-HASHCODE_FILE = os.path.join(sys.path[0], 'hashcodes.txt')
-GET_HASHCODES = False
-OPTIONAL_CASES = []
+VERBOSE = False
 
-HELP = '''Help to come'''
-
 class ImageTestCase:
     '''A Render Test Case.  Steps must be run in order:
     1. Constructer
@@ -86,8 +68,9 @@
         try:
             self.good_image = Image.open(good_path)
         except IOError:
-            self.mode = 'Fail'
+            self.passed = False
             self.good_image = None
+            self.messaged = 'Failed to find good image'
 
     def generate_hash(self, image):
         hash = 0
@@ -119,7 +102,6 @@
             self.test_image = Image.open(self.test_path)
             self.test_hash = self.generate_hash(self.test_image)
         except IOError:
-            self.ID = 'Fail'
             self.test_image = None
             self.passed = False
             self.pixel_range = 0
@@ -150,13 +132,6 @@
             else:
                 self.passed = False
             return self.passed
-        elif self.good_hash != None and self.test_hash != None:
-            self.diff_hash = abs(self.good_hash - self.test_hash)
-            if self.diff_hash < 1000:
-                self.passed = True
-            else:
-                self.passed = False
-            return self.passed
 
     def hash_test(self):
         if self.test_image == None:
@@ -457,11 +432,11 @@
     file.close()
     return cases
 
-def console_output(cases):
+def console_output(cases, building_tests, get_hashcodes):
     '''Displays the final output to the console.  The output that will be shown if the -v flag isn't used'''
     failed = []
     print ''
-    if BUILDING_TESTS:
+    if building_tests:
         print "Tests built successfully"
         return
 
@@ -469,7 +444,7 @@
         if test_case.passed == False:
             failed.append(test_case)
 
-    if GET_HASHCODES:
+    if get_hashcodes:
         for case in cases:
             print case.ID + ':', case.name, case.test_hash    
 
@@ -480,6 +455,8 @@
     else:
         print "All tests passed"
     if len(failed) == len(cases):
+        print ''
+        print "It is possible that the tests have not been built, if so"
         print "Please build tests by running: python run.py --build-tests"
         print "Or python --build-tests --with-animations to also build animation tests"
     print 'Check index.html for more information'
@@ -616,19 +593,30 @@
     file.write('</div>\n</body>\n</html>')
     file.close()
 
-if __name__ == "__main__":
+def main():
+    global BLENDER_BIN, VERBOSE
+    BLEND_FILE_FOLDER = os.path.join(sys.path[0])
+    ANIM_BLEND_FILE_FOLDER = os.path.join(sys.path[0], 'anim')
+    GOOD_FOLDER = os.path.join(sys.path[0], 'render')
+    ANIM_GOOD_FOLDER = os.path.join(sys.path[0], 'anim')
+    OUTPUT_FOLDER = os.path.join(sys.path[0], 'output')
+    ANIM_OUTPUT_FOLDER = os.path.join(sys.path[0], 'output')
+    HTML_OUTPUT = sys.path[0]
+    HASHCODE_FILE = os.path.join(sys.path[0], 'hashcodes.txt')
+    
     # Case list, can contain both image cases, and animation cases
     cases = []
+    optional_cases = []
 
     # Parse the arguements
     parser = OptionParser()
-    parser.add_option('--build-tests', action='store_true', dest='build_tests', default=False,
+    parser.add_option('--build-tests', action='store_true', dest='building_tests', default=False,
                       help="Render the images for the tests")
     parser.add_option('--blender-bin', type='string', dest='blender_bin', default='blender',
                       help="Location of the blender binary if not in your path.")
-    parser.add_option('-i', '--image', type='string', dest='image', default = '',
+    parser.add_option('-i', '--image', action='store_true', dest='image', default=True,
                       help="Run an image test outside of the current folder")
-    parser.add_option('-a', '--animation', type='string', dest='animation', default = '',
+    parser.add_option('-a', '--animation', action='store_false', dest='image', default=True,
                       help="Run an animation test outside of the current folder")
     parser.add_option('--with-animations', action='store_true', dest='run_animations', default=False,
                       help="Run the animation tests as well as the image ones.")
@@ -639,35 +627,43 @@
 
     BLENDER_BIN = options.blender_bin
     VERBOSE = options.verbose
-    RUN_ANIMATIONS = options.run_animations
-    
+    if options.building_tests:
+        BLENDER_BIN = GOOD_BLENDER_BIN
+        OUTPUT_FOLDER = GOOD_FOLDER
+        GOOD_FOLDER = ''
+        ANIM_OUTPUT_FOLDER = ANIM_GOOD_FOLDER
+        ANIM_GOOD_FOLDER = ''
+        
     for arg in args:
-        (argv_directory, argv_file) = os.path.split(arg)
-        case = ImageTestCase()
-        OPTIONAL_CASES.append((case, arg, os.path.join(argv_directory, 'render', string.replace(argv_file, '.blend', '.png')), os.path.join(argv_directory, 'output', string.replace(argv_file, '.blend', ''))))
- 
+        (directory, file) = os.path.split(arg)
+        if options.image:
+            case = ImageTestCase()
+            optional_cases.append((case, arg, os.path.join(directory, 'render', string.replace(file, '.blend', '_0001.png')), os.path.join(directory, 'output', string.replace(file, '.blend', ''))))
+        else:
+            case = AnimationTestCase()
+            optional_cases.append((case, arg, os.path.join(directory, string.replace(file, '.blend', '')), os.path.join(directory, 'output', string.replace(file, '.blend', ''))))
+
     # Get cases, unless told not to.
     if len(args) == 0:
-        cases += get_image_cases(BLEND_FILE_FOLDER, GOOD_FOLDER, OUTPUT_FOLDER)
-        if RUN_ANIMATIONS:
-            cases += get_animation_cases(ANIM_BLEND_FILE_FOLDER, ANIM_GOOD_FOLDER, ANIM_OUTPUT_FOLDER)
-
-    if HASHCODE_TEST == True and len(OPTIONAL_CASES) == 0:
-        cases += get_hash_cases(BLEND_FILE_FOLDER, HASHCODE_FILE, OUTPUT_FOLDER)
-        if RUN_IMAGES_AND_ANIMATIONS:
-            cases+=get_hash_cases(ANIM_BLEND_FILE_FOLDER, HASHCODE_FILE, ANIM_OUTPUT_FOLDER)
-        
-    if len(OPTIONAL_CASES) > 0:
-        if BUILDING_TESTS == False:
-            if HASHCODE_TEST == True:
-                for case in OPTIONAL_CASES:
+        if False:
+            cases += get_hash_cases(BLEND_FILE_FOLDER, HASHCODE_FILE, OUTPUT_FOLDER)
+            if options.run_animations:
+                cases+=get_hash_cases(ANIM_BLEND_FILE_FOLDER, HASHCODE_FILE, ANIM_OUTPUT_FOLDER)
+        else:
+            cases += get_image_cases(BLEND_FILE_FOLDER, GOOD_FOLDER, OUTPUT_FOLDER)
+            if options.run_animations:
+                cases += get_animation_cases(ANIM_BLEND_FILE_FOLDER, ANIM_GOOD_FOLDER, ANIM_OUTPUT_FOLDER)
+    else:
+        if options.building_tests == False:
+            if False:
+                for case in optional_cases:
                     case[0].setup_hash(case[1], HASHCODE_FILE, case[3])
             else:
-                for case in OPTIONAL_CASES:
+                for case in optional_cases:
                     case[0].setup_image(case[1], case[2], case[3])
                     cases.append(case[0])
         else:
-            for case in OPTIONAL_CASES:
+            for case in optional_cases:
                 case[0].setup_image(case[1], '', case[2])
                 cases.append(case[0])
                 
@@ -677,18 +673,21 @@
     for test_case in cases:
         print test_case.name + '...',
         test_case.render_test()
-        if RUN_IMAGES or RUN_IMAGES_AND_ANIMATIONS:
+        if not False:
             test_case.image_test()
             test_case.save_diff(os.path.join(HTML_OUTPUT, 'output', string.replace(test_case.name, '.blend', '_diff.png')))
-        if HASHCODE_TEST or GET_HASHCODES:
+        if False:
             test_case.hash_test()
-        if test_case.passed or BUILDING_TESTS:
+        if test_case.passed or options.building_tests:
             print 'OK'
         else:
             print 'FAILED'
 
     # Output Result
-    if not BUILDING_TESTS:
+    if not options.building_tests:
         print 'Generating Output'
         generate_output(cases, os.path.join(HTML_OUTPUT, 'index.html'))
-    console_output(cases)
\ No newline at end of file

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list