common.py 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. import xml.sax.saxutils
  2. import time
  3. def make_test_name( library_idx, test_idx ):
  4. return "test_%02d_%02d" % ( library_idx, test_idx )
  5. def make_library_name( library_idx ):
  6. if library_idx % 4 in ( 0, 1 ):
  7. return "library_%02d/%02d" % ( int( library_idx / 4 ) * 4, library_idx % 4 )
  8. else:
  9. return "library_%02d" % library_idx
  10. def make_toolset_name( toolset_idx ):
  11. return "toolset_%02d" % toolset_idx
  12. def make_library_target_directory( library_idx, toolset_idx, variant = None ):
  13. base = "lib/%s/%s" % ( make_library_name( library_idx )
  14. , make_toolset_name( toolset_idx ) )
  15. if variant is not None:
  16. return "%s/%s" % ( base, variant )
  17. else:
  18. return base
  19. def make_test_target_directory( library_idx, toolset_idx, test_name, variant ):
  20. base = "%s/%s/%s" % ( make_library_name( library_idx )
  21. , make_toolset_name( toolset_idx )
  22. , test_name )
  23. if variant is not None:
  24. return "%s/%s" % ( base, variant )
  25. else:
  26. return base
  27. def format_timestamp( timestamp ):
  28. return time.strftime( "%Y-%m-%dT%H:%M:%SZ", timestamp )
  29. def make_test_log( xml_generator
  30. , library_idx
  31. , toolset_idx
  32. , test_name
  33. , test_type
  34. , test_result
  35. , show_run_output
  36. , variant ):
  37. library = make_library_name( library_idx )
  38. toolset_name = make_toolset_name( toolset_idx )
  39. target_directory = ""
  40. if test_type != "lib":
  41. target_directory = make_test_target_directory( library_idx, toolset_idx, test_name, variant )
  42. else:
  43. target_directory = make_library_target_directory( library_idx, toolset_idx, variant )
  44. xml_generator.startElement( "test-log", { "library": library
  45. , "test-name": test_name
  46. , "toolset": toolset_name
  47. , "test-type": test_type
  48. , "test-program": "some_program"
  49. , "target-directory": target_directory
  50. , "show-run-output": show_run_output
  51. } )
  52. if test_type != "lib":
  53. if test_result == "success" and ( toolset_idx + 1 ) % 4:
  54. xml_generator.startElement( "compile", { "result": "success" } );
  55. xml_generator.characters( "Compiling in %s" % target_directory )
  56. xml_generator.endElement( "compile" )
  57. if test_type.find( "link" ) == 0 or test_type.find( "run" ) == 0 and toolset_idx % 4:
  58. xml_generator.startElement( "lib", { "result": test_result } );
  59. xml_generator.characters( make_library_target_directory( library_idx, toolset_idx ) )
  60. xml_generator.endElement( "lib" )
  61. xml_generator.startElement( "link", { "result": "success" } );
  62. xml_generator.characters( "Linking in %s" % target_directory )
  63. xml_generator.endElement( "link" )
  64. if test_type.find( "run" ) == 0 and ( toolset_idx + 2 ) % 4:
  65. xml_generator.startElement( "run", { "result": test_result } );
  66. xml_generator.characters( "Running in %s" % target_directory )
  67. xml_generator.endElement( "run" )
  68. else:
  69. xml_generator.startElement( "compile", { "result": test_result } );
  70. xml_generator.characters( "Compiling in %s" % make_library_target_directory( library_idx, toolset_idx ) )
  71. xml_generator.endElement( "compile" )
  72. xml_generator.endElement( "test-log" )
  73. def make_expicit_failure_markup( num_of_libs, num_of_toolsets, num_of_tests ):
  74. g = xml.sax.saxutils.XMLGenerator( open( "explicit-failures-markup.xml", "w" ), "utf-8" )
  75. g.startDocument()
  76. g.startElement( "explicit-failures-markup", {} );
  77. # required toolsets
  78. for i_toolset in range( 0, num_of_toolsets ):
  79. if i_toolset < 2:
  80. g.startElement( "mark-toolset", { "name": "toolset_%02d" % i_toolset, "status":"required"} )
  81. g.endElement( "mark-toolset" )
  82. for i_library in range( 0, num_of_libs ):
  83. g.startElement( "library", { "name": make_library_name( i_library ) } )
  84. if i_library % 4 == 0:
  85. g.startElement( "mark-unusable", {} )
  86. for i_toolset in range( 0, num_of_toolsets ):
  87. if i_toolset % 2 == 1:
  88. g.startElement( "toolset", { "name": make_toolset_name( i_toolset ) } )
  89. g.endElement( "toolset" )
  90. g.startElement( "note", { "author": u"T. T\xe8st" } )
  91. g.characters( "Test note" )
  92. g.endElement( "note" )
  93. g.endElement( "mark-unusable" )
  94. for i_test in range( 0, num_of_tests ):
  95. category = 0
  96. explicitly_marked_failure = 0
  97. unresearched = 0
  98. if i_test % 2 == 0:
  99. category = i_test % 3
  100. if i_test % 3 == 0:
  101. explicitly_marked_failure = 1
  102. if i_test % 2 == 0:
  103. unresearched = 1
  104. if category or explicitly_marked_failure:
  105. test_attrs = { "name": make_test_name( i_library, i_test ) }
  106. if category:
  107. test_attrs[ "category" ] = "Category %s" % category
  108. g.startElement( "test", test_attrs )
  109. if explicitly_marked_failure:
  110. failure_attrs = {}
  111. if unresearched: failure_attrs[ "reason" ] = "not-researched"
  112. g.startElement( "mark-failure", failure_attrs )
  113. g.startElement( "toolset", { "name": make_toolset_name( 1 ) } )
  114. g.endElement( "toolset" )
  115. g.startElement( "toolset", { "name": make_toolset_name( 0 ) } )
  116. g.endElement( "toolset" )
  117. g.startElement( "toolset", { "name": make_toolset_name( 2 ) } )
  118. g.endElement( "toolset" )
  119. g.startElement( "note", { "author": u"V. Ann\xf3tated" } )
  120. g.characters( "Some thoughtful note" )
  121. g.endElement( "note" )
  122. g.endElement( "mark-failure" )
  123. g.endElement( "test" );
  124. g.endElement( "library" )
  125. g.endElement( "explicit-failures-markup" )
  126. g.endDocument()
  127. def make_expected_results( num_of_libs, num_of_toolsets, num_of_tests ):
  128. pass
粤ICP备19079148号