code: def create_run_for_input_file(
              self, input_file, options, property_file, required_files_pattern, append_file_tags):
          
          input_files = [input_file]
          base_dir = os.path.dirname(input_file)
          for append_file in append_file_tags:
              input_files.extend(
                  self.expand_filename_pattern(append_file.text, base_dir, sourcefile=input_file))
  
          run = Run(
              input_file,
              util.get_files(input_files), # expand directories to get their sub-files
              options,
              self,
              property_file,
              required_files_pattern)
  
          if not run.propertyfile:
              return run
  
          prop = result.Property.create(run.propertyfile, allow_unknown=False)
          run.properties = [prop]
          expected_results = result.expected_results_of_file(input_file)
          if prop.name in expected_results:
              run.expected_results[prop.filename] = expected_results[prop.name]
          # We do not check here if there is an expected result for the given propertyfile
          # like we do in create_run_from_task_definition, to keep backwards compatibility.
          return run
docs: Create a Run from a direct definition of the main input file (without task definition)