diff options
Diffstat (limited to 'bin/SConsExamples.py')
| -rw-r--r-- | bin/SConsExamples.py | 65 | 
1 files changed, 39 insertions, 26 deletions
diff --git a/bin/SConsExamples.py b/bin/SConsExamples.py index 50c4c1a..7491c58 100644 --- a/bin/SConsExamples.py +++ b/bin/SConsExamples.py @@ -39,7 +39,7 @@  #           env.Program('foo')  #         </file>  #         <file name="foo.c"> -#           int main() { printf("foo.c\n"); } +#           int main(void) { printf("foo.c\n"); }  #         </file>  #       </scons_example>  # @@ -305,6 +305,11 @@ def createAllExampleOutputs(dpath):      examples = readAllExampleInfos(dpath)      total = len(examples)      idx = 0 + +    if len(sys.argv) > 1: +        examples_to_run = sys.argv[1:] +        examples = { k:v for k,v in examples.items() if k in examples_to_run } +      for key, value in examples.items():          # Process all scons_output tags          print("%.2f%s (%d/%d) %s" % (float(idx + 1) * 100.0 / float(total), @@ -411,8 +416,8 @@ def exampleNamesAreUnique(dpath):  #  # ############################################################### -sys.path.append(os.path.join(os.getcwd(), 'QMTest')) -sys.path.append(os.path.join(os.getcwd(), 'build', 'QMTest')) +sys.path.append(os.path.join(os.getcwd(), 'testing/framework')) +sys.path.append(os.path.join(os.getcwd(), 'build', 'testing/framework'))  scons_py = os.path.join('bootstrap', 'src', 'script', 'scons.py')  if not os.path.exists(scons_py): @@ -657,21 +662,27 @@ SConscript('SConstruct')  """  # "Commands" that we will execute in our examples. -def command_scons(args, c, test, dict): +def command_scons(args, command, test, values): +    """ +    Fake scons command +    """      save_vals = {}      delete_keys = []      try: -        ce = c.environment +        ce = command.environment      except AttributeError:          pass      else: -        for arg in c.environment.split(): +        for arg in command.environment.split():              key, val = arg.split('=')              try:                  save_vals[key] = os.environ[key]              except KeyError:                  delete_keys.append(key)              os.environ[key] = val + +    test.write(test.workpath('WORK/SConstruct_created'), Stdin % values) +      test.run(interpreter=sys.executable,               program=scons_py,               # We use ToolSurrogates to capture win32 output by "building" @@ -681,7 +692,7 @@ def command_scons(args, c, test, dict):               # Visual C installed.               arguments='--warn=no-visual-c-missing -f - ' + ' '.join(args),               chdir=test.workpath('WORK'), -             stdin=Stdin % dict) +             stdin=Stdin % values)      os.environ.update(save_vals)      for key in delete_keys:          del(os.environ[key]) @@ -698,7 +709,7 @@ def command_scons(args, c, test, dict):      #    sys.stderr.write(err)      return lines -def command_touch(args, c, test, dict): +def command_touch(args, command, test, values):      if args[0] == '-t':          t = int(time.mktime(time.strptime(args[1], '%Y%m%d%H%M')))          times = (t, t) @@ -714,7 +725,7 @@ def command_touch(args, c, test, dict):          os.utime(file, times)      return [] -def command_edit(args, c, test, dict): +def command_edit(args, c, test, values):      if c.edit is None:          add_string = 'void edit(void) { ; }\n'      else: @@ -728,7 +739,7 @@ def command_edit(args, c, test, dict):          open(file, 'wb').write(contents + add_string)      return [] -def command_ls(args, c, test, dict): +def command_ls(args, c, test, values):      def ls(a):          try:              return ['  '.join(sorted([x for x in os.listdir(a) if x[0] != '.']))] @@ -743,7 +754,7 @@ def command_ls(args, c, test, dict):      else:          return ls(test.workpath('WORK')) -def command_sleep(args, c, test, dict): +def command_sleep(args, c, test, values):      time.sleep(int(args[0]))  CommandDict = { @@ -754,17 +765,19 @@ CommandDict = {      'sleep' : command_sleep,  } -def ExecuteCommand(args, c, t, dict): +def ExecuteCommand(args, c, t, values):      try:          func = CommandDict[args[0]]      except KeyError: -        func = lambda args, c, t, dict: [] -    return func(args[1:], c, t, dict) +        func = lambda args, c, t, values: [] +    return func(args[1:], c, t, values)  def create_scons_output(e): -    # The real raison d'etre for this script, this is where we -    # actually execute SCons to fetch the output. +    """ +    The real raison d'etre for this script, this is where we +    actually execute SCons to fetch the output. +    """      # Loop over all outputs for the example      for o in e.outputs: @@ -837,37 +850,37 @@ def create_scons_output(e):          sroot = stf.newEtreeNode("screen", True)          curchild = None          content = "" -        for c in o.commands: +        for command in o.commands:              content += Prompt[o.os]              if curchild is not None: -                if not c.output: +                if not command.output:                      # Append content as tail                      curchild.tail = content                      content = "\n"                      # Add new child for userinput tag                      curchild = stf.newEtreeNode("userinput") -                    d = c.cmd.replace('__ROOT__', '') +                    d = command.cmd.replace('__ROOT__', '')                      curchild.text = d                      sroot.append(curchild)                  else: -                    content += c.output + '\n' +                    content += command.output + '\n'              else: -                if not c.output: +                if not command.output:                      # Add first text to root                      sroot.text = content                      content = "\n"                      # Add new child for userinput tag                      curchild = stf.newEtreeNode("userinput") -                    d = c.cmd.replace('__ROOT__', '') +                    d = command.cmd.replace('__ROOT__', '')                      curchild.text = d                      sroot.append(curchild)                  else: -                    content += c.output + '\n' +                    content += command.output + '\n'              # Execute command and capture its output -            cmd_work = c.cmd.replace('__ROOT__', t.workpath('ROOT')) +            cmd_work = command.cmd.replace('__ROOT__', t.workpath('ROOT'))              args = cmd_work.split() -            lines = ExecuteCommand(args, c, t, {'osname':o.os, 'tools':o.tools}) -            if not c.output and lines: +            lines = ExecuteCommand(args, command, t, {'osname':o.os, 'tools':o.tools}) +            if not command.output and lines:                  ncontent = '\n'.join(lines)                  ncontent = address_re.sub(r' at 0x700000>', ncontent)                  ncontent = engine_re.sub(r' File "bootstrap/src/engine/SCons/', ncontent)  | 
