How to use build method in Cucumber-gherkin

Best JavaScript code snippet using cucumber-gherkin

manifest.bzl

Source:manifest.bzl Github

copy

Full Screen

1manifest = {2    "org_golang_x_tools": {3        "@bazel_gazelle//third_party:org_golang_x_tools/present/BUILD.bazel.in": "present/BUILD.bazel",4        "@bazel_gazelle//third_party:org_golang_x_tools/benchmark/parse/BUILD.bazel.in": "benchmark/parse/BUILD.bazel",5        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/present/BUILD.bazel.in": "cmd/present/BUILD.bazel",6        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/fiximports/testdata/src/titanic.biz/foo/BUILD.bazel.in": "cmd/fiximports/testdata/src/titanic.biz/foo/BUILD.bazel",7        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/fiximports/testdata/src/titanic.biz/bar/BUILD.bazel.in": "cmd/fiximports/testdata/src/titanic.biz/bar/BUILD.bazel",8        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/fiximports/testdata/src/new.com/one/BUILD.bazel.in": "cmd/fiximports/testdata/src/new.com/one/BUILD.bazel",9        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/fiximports/testdata/src/fruit.io/pear/BUILD.bazel.in": "cmd/fiximports/testdata/src/fruit.io/pear/BUILD.bazel",10        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/fiximports/testdata/src/fruit.io/banana/BUILD.bazel.in": "cmd/fiximports/testdata/src/fruit.io/banana/BUILD.bazel",11        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/fiximports/testdata/src/fruit.io/orange/BUILD.bazel.in": "cmd/fiximports/testdata/src/fruit.io/orange/BUILD.bazel",12        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/fiximports/testdata/src/old.com/one/BUILD.bazel.in": "cmd/fiximports/testdata/src/old.com/one/BUILD.bazel",13        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/fiximports/BUILD.bazel.in": "cmd/fiximports/BUILD.bazel",14        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/gorename/BUILD.bazel.in": "cmd/gorename/BUILD.bazel",15        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/calls/BUILD.bazel.in": "cmd/guru/testdata/src/calls/BUILD.bazel",16        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/implements-methods-json/BUILD.bazel.in": "cmd/guru/testdata/src/implements-methods-json/BUILD.bazel",17        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/whicherrs/BUILD.bazel.in": "cmd/guru/testdata/src/whicherrs/BUILD.bazel",18        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/referrers-json/BUILD.bazel.in": "cmd/guru/testdata/src/referrers-json/BUILD.bazel",19        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/alias/BUILD.bazel.in": "cmd/guru/testdata/src/alias/BUILD.bazel",20        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/pointsto/BUILD.bazel.in": "cmd/guru/testdata/src/pointsto/BUILD.bazel",21        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/implements/BUILD.bazel.in": "cmd/guru/testdata/src/implements/BUILD.bazel",22        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/what-json/BUILD.bazel.in": "cmd/guru/testdata/src/what-json/BUILD.bazel",23        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/softerrs/BUILD.bazel.in": "cmd/guru/testdata/src/softerrs/BUILD.bazel",24        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/implements-json/BUILD.bazel.in": "cmd/guru/testdata/src/implements-json/BUILD.bazel",25        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/imports/BUILD.bazel.in": "cmd/guru/testdata/src/imports/BUILD.bazel",26        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/describe/BUILD.bazel.in": "cmd/guru/testdata/src/describe/BUILD.bazel",27        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/pointsto-json/BUILD.bazel.in": "cmd/guru/testdata/src/pointsto-json/BUILD.bazel",28        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/freevars/BUILD.bazel.in": "cmd/guru/testdata/src/freevars/BUILD.bazel",29        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/describe-json/BUILD.bazel.in": "cmd/guru/testdata/src/describe-json/BUILD.bazel",30        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/implements-methods/BUILD.bazel.in": "cmd/guru/testdata/src/implements-methods/BUILD.bazel",31        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/lib/BUILD.bazel.in": "cmd/guru/testdata/src/lib/BUILD.bazel",32        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/lib/sublib/BUILD.bazel.in": "cmd/guru/testdata/src/lib/sublib/BUILD.bazel",33        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/what/BUILD.bazel.in": "cmd/guru/testdata/src/what/BUILD.bazel",34        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/peers/BUILD.bazel.in": "cmd/guru/testdata/src/peers/BUILD.bazel",35        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/main/BUILD.bazel.in": "cmd/guru/testdata/src/main/BUILD.bazel",36        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/definition-json/BUILD.bazel.in": "cmd/guru/testdata/src/definition-json/BUILD.bazel",37        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/calls-json/BUILD.bazel.in": "cmd/guru/testdata/src/calls-json/BUILD.bazel",38        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/referrers/BUILD.bazel.in": "cmd/guru/testdata/src/referrers/BUILD.bazel",39        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/reflection/BUILD.bazel.in": "cmd/guru/testdata/src/reflection/BUILD.bazel",40        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/testdata/src/peers-json/BUILD.bazel.in": "cmd/guru/testdata/src/peers-json/BUILD.bazel",41        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/BUILD.bazel.in": "cmd/guru/BUILD.bazel",42        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/guru/serial/BUILD.bazel.in": "cmd/guru/serial/BUILD.bazel",43        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/toolstash/BUILD.bazel.in": "cmd/toolstash/BUILD.bazel",44        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/compilebench/BUILD.bazel.in": "cmd/compilebench/BUILD.bazel",45        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/goyacc/testdata/expr/BUILD.bazel.in": "cmd/goyacc/testdata/expr/BUILD.bazel",46        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/goyacc/BUILD.bazel.in": "cmd/goyacc/BUILD.bazel",47        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/ssadump/BUILD.bazel.in": "cmd/ssadump/BUILD.bazel",48        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/stringer/testdata/BUILD.bazel.in": "cmd/stringer/testdata/BUILD.bazel",49        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/stringer/BUILD.bazel.in": "cmd/stringer/BUILD.bazel",50        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/html2article/BUILD.bazel.in": "cmd/html2article/BUILD.bazel",51        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/gotype/BUILD.bazel.in": "cmd/gotype/BUILD.bazel",52        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/heapview/BUILD.bazel.in": "cmd/heapview/BUILD.bazel",53        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/heapview/internal/core/BUILD.bazel.in": "cmd/heapview/internal/core/BUILD.bazel",54        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/godoc/BUILD.bazel.in": "cmd/godoc/BUILD.bazel",55        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/godex/BUILD.bazel.in": "cmd/godex/BUILD.bazel",56        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/bundle/testdata/src/initial/BUILD.bazel.in": "cmd/bundle/testdata/src/initial/BUILD.bazel",57        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/bundle/testdata/src/domain.name/importdecl/BUILD.bazel.in": "cmd/bundle/testdata/src/domain.name/importdecl/BUILD.bazel",58        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/bundle/BUILD.bazel.in": "cmd/bundle/BUILD.bazel",59        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/gomvpkg/BUILD.bazel.in": "cmd/gomvpkg/BUILD.bazel",60        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/tip/BUILD.bazel.in": "cmd/tip/BUILD.bazel",61        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/goimports/BUILD.bazel.in": "cmd/goimports/BUILD.bazel",62        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/go-contrib-init/BUILD.bazel.in": "cmd/go-contrib-init/BUILD.bazel",63        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/callgraph/testdata/src/pkg/BUILD.bazel.in": "cmd/callgraph/testdata/src/pkg/BUILD.bazel",64        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/callgraph/BUILD.bazel.in": "cmd/callgraph/BUILD.bazel",65        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/eg/BUILD.bazel.in": "cmd/eg/BUILD.bazel",66        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/getgo/BUILD.bazel.in": "cmd/getgo/BUILD.bazel",67        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/getgo/server/BUILD.bazel.in": "cmd/getgo/server/BUILD.bazel",68        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/benchcmp/BUILD.bazel.in": "cmd/benchcmp/BUILD.bazel",69        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/stress/BUILD.bazel.in": "cmd/stress/BUILD.bazel",70        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/digraph/BUILD.bazel.in": "cmd/digraph/BUILD.bazel",71        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/cover/testdata/BUILD.bazel.in": "cmd/cover/testdata/BUILD.bazel",72        "@bazel_gazelle//third_party:org_golang_x_tools/cmd/cover/BUILD.bazel.in": "cmd/cover/BUILD.bazel",73        "@bazel_gazelle//third_party:org_golang_x_tools/go/gcexportdata/BUILD.bazel.in": "go/gcexportdata/BUILD.bazel",74        "@bazel_gazelle//third_party:org_golang_x_tools/go/types/typeutil/BUILD.bazel.in": "go/types/typeutil/BUILD.bazel",75        "@bazel_gazelle//third_party:org_golang_x_tools/go/buildutil/BUILD.bazel.in": "go/buildutil/BUILD.bazel",76        "@bazel_gazelle//third_party:org_golang_x_tools/go/internal/gccgoimporter/BUILD.bazel.in": "go/internal/gccgoimporter/BUILD.bazel",77        "@bazel_gazelle//third_party:org_golang_x_tools/go/gccgoexportdata/BUILD.bazel.in": "go/gccgoexportdata/BUILD.bazel",78        "@bazel_gazelle//third_party:org_golang_x_tools/go/ssa/ssautil/BUILD.bazel.in": "go/ssa/ssautil/BUILD.bazel",79        "@bazel_gazelle//third_party:org_golang_x_tools/go/ssa/BUILD.bazel.in": "go/ssa/BUILD.bazel",80        "@bazel_gazelle//third_party:org_golang_x_tools/go/ssa/interp/BUILD.bazel.in": "go/ssa/interp/BUILD.bazel",81        "@bazel_gazelle//third_party:org_golang_x_tools/go/vcs/BUILD.bazel.in": "go/vcs/BUILD.bazel",82        "@bazel_gazelle//third_party:org_golang_x_tools/go/loader/testdata/BUILD.bazel.in": "go/loader/testdata/BUILD.bazel",83        "@bazel_gazelle//third_party:org_golang_x_tools/go/loader/BUILD.bazel.in": "go/loader/BUILD.bazel",84        "@bazel_gazelle//third_party:org_golang_x_tools/go/ast/astutil/BUILD.bazel.in": "go/ast/astutil/BUILD.bazel",85        "@bazel_gazelle//third_party:org_golang_x_tools/go/gcimporter15/testdata/versions/BUILD.bazel.in": "go/gcimporter15/testdata/versions/BUILD.bazel",86        "@bazel_gazelle//third_party:org_golang_x_tools/go/gcimporter15/BUILD.bazel.in": "go/gcimporter15/BUILD.bazel",87        "@bazel_gazelle//third_party:org_golang_x_tools/go/pointer/testdata/BUILD.bazel.in": "go/pointer/testdata/BUILD.bazel",88        "@bazel_gazelle//third_party:org_golang_x_tools/go/pointer/BUILD.bazel.in": "go/pointer/BUILD.bazel",89        "@bazel_gazelle//third_party:org_golang_x_tools/go/callgraph/cha/BUILD.bazel.in": "go/callgraph/cha/BUILD.bazel",90        "@bazel_gazelle//third_party:org_golang_x_tools/go/callgraph/BUILD.bazel.in": "go/callgraph/BUILD.bazel",91        "@bazel_gazelle//third_party:org_golang_x_tools/go/callgraph/rta/BUILD.bazel.in": "go/callgraph/rta/BUILD.bazel",92        "@bazel_gazelle//third_party:org_golang_x_tools/go/callgraph/static/BUILD.bazel.in": "go/callgraph/static/BUILD.bazel",93        "@bazel_gazelle//third_party:org_golang_x_tools/playground/BUILD.bazel.in": "playground/BUILD.bazel",94        "@bazel_gazelle//third_party:org_golang_x_tools/playground/socket/BUILD.bazel.in": "playground/socket/BUILD.bazel",95        "@bazel_gazelle//third_party:org_golang_x_tools/godoc/BUILD.bazel.in": "godoc/BUILD.bazel",96        "@bazel_gazelle//third_party:org_golang_x_tools/godoc/vfs/BUILD.bazel.in": "godoc/vfs/BUILD.bazel",97        "@bazel_gazelle//third_party:org_golang_x_tools/godoc/vfs/zipfs/BUILD.bazel.in": "godoc/vfs/zipfs/BUILD.bazel",98        "@bazel_gazelle//third_party:org_golang_x_tools/godoc/vfs/gatefs/BUILD.bazel.in": "godoc/vfs/gatefs/BUILD.bazel",99        "@bazel_gazelle//third_party:org_golang_x_tools/godoc/vfs/httpfs/BUILD.bazel.in": "godoc/vfs/httpfs/BUILD.bazel",100        "@bazel_gazelle//third_party:org_golang_x_tools/godoc/vfs/mapfs/BUILD.bazel.in": "godoc/vfs/mapfs/BUILD.bazel",101        "@bazel_gazelle//third_party:org_golang_x_tools/godoc/analysis/BUILD.bazel.in": "godoc/analysis/BUILD.bazel",102        "@bazel_gazelle//third_party:org_golang_x_tools/godoc/util/BUILD.bazel.in": "godoc/util/BUILD.bazel",103        "@bazel_gazelle//third_party:org_golang_x_tools/godoc/static/BUILD.bazel.in": "godoc/static/BUILD.bazel",104        "@bazel_gazelle//third_party:org_golang_x_tools/godoc/redirect/BUILD.bazel.in": "godoc/redirect/BUILD.bazel",105        "@bazel_gazelle//third_party:org_golang_x_tools/imports/BUILD.bazel.in": "imports/BUILD.bazel",106        "@bazel_gazelle//third_party:org_golang_x_tools/blog/BUILD.bazel.in": "blog/BUILD.bazel",107        "@bazel_gazelle//third_party:org_golang_x_tools/blog/atom/BUILD.bazel.in": "blog/atom/BUILD.bazel",108        "@bazel_gazelle//third_party:org_golang_x_tools/container/intsets/BUILD.bazel.in": "container/intsets/BUILD.bazel",109        "@bazel_gazelle//third_party:org_golang_x_tools/refactor/satisfy/BUILD.bazel.in": "refactor/satisfy/BUILD.bazel",110        "@bazel_gazelle//third_party:org_golang_x_tools/refactor/rename/BUILD.bazel.in": "refactor/rename/BUILD.bazel",111        "@bazel_gazelle//third_party:org_golang_x_tools/refactor/eg/BUILD.bazel.in": "refactor/eg/BUILD.bazel",112        "@bazel_gazelle//third_party:org_golang_x_tools/refactor/importgraph/BUILD.bazel.in": "refactor/importgraph/BUILD.bazel",113        "@bazel_gazelle//third_party:org_golang_x_tools/cover/BUILD.bazel.in": "cover/BUILD.bazel",114    }...

Full Screen

Full Screen

batchbuild.py

Source:batchbuild.py Github

copy

Full Screen

...54        self.cmake_log_path = os.path.join( work_dir, 'batchbuild_cmake.log' )55        self.build_log_path = os.path.join( work_dir, 'batchbuild_build.log' )56        self.cmake_succeeded = False57        self.build_succeeded = False58    def execute_build(self):59        print('Build %s' % self.desc)60        self._make_new_work_dir( )61        self.cmake_succeeded = self._generate_makefiles( )62        if self.cmake_succeeded:63            self.build_succeeded = self._build_using_makefiles( )64        return self.build_succeeded65    def _generate_makefiles(self):66        print('  Generating makefiles: ', end=' ')67        cmd = ['cmake'] + self.desc.cmake_args( ) + [os.path.abspath( self.source_dir )]68        succeeded = self._execute_build_subprocess( cmd, self.desc.env(), self.cmake_log_path )69        print('done' if succeeded else 'FAILED')70        return succeeded71    def _build_using_makefiles(self):72        print('  Building:', end=' ')73        cmd = ['cmake', '--build', self.work_dir]74        if self.desc.build_type:75            cmd += ['--config', self.desc.build_type]76        succeeded = self._execute_build_subprocess( cmd, self.desc.env(), self.build_log_path )77        print('done' if succeeded else 'FAILED')78        return succeeded79    def _execute_build_subprocess(self, cmd, env, log_path):80        process = subprocess.Popen( cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=self.work_dir,81                                    env=env )82        stdout, _ = process.communicate( )83        succeeded = (process.returncode == 0)84        with open( log_path, 'wb' ) as flog:85            log = ' '.join( cmd ) + '\n' + stdout + '\nExit code: %r\n' % process.returncode86            flog.write( fix_eol( log ) )87        return succeeded88    def _make_new_work_dir(self):89        if os.path.isdir( self.work_dir ):90            print('  Removing work directory', self.work_dir)91            shutil.rmtree( self.work_dir, ignore_errors=True )92        if not os.path.isdir( self.work_dir ):93            os.makedirs( self.work_dir )94def fix_eol( stdout ):95    """Fixes wrong EOL produced by cmake --build on Windows (\r\r\n instead of \r\n).96    """97    return re.sub( '\r*\n', os.linesep, stdout )98def load_build_variants_from_config( config_path ):99    with open( config_path, 'rb' ) as fconfig:100        data = json.load( fconfig )101    variants = data[ 'cmake_variants' ]102    build_descs_by_axis = collections.defaultdict( list )103    for axis in variants:104        axis_name = axis["name"]105        build_descs = []106        if "generators" in axis:107            for generator_data in axis["generators"]:108                for generator in generator_data["generator"]:109                    build_desc = BuildDesc( generator=generator,110                                            prepend_envs=generator_data.get("env_prepend") )111                    build_descs.append( build_desc )112        elif "variables" in axis:113            for variables in axis["variables"]:114                build_desc = BuildDesc( variables=variables )115                build_descs.append( build_desc )116        elif "build_types" in axis:117            for build_type in axis["build_types"]:118                build_desc = BuildDesc( build_type=build_type )119                build_descs.append( build_desc )120        build_descs_by_axis[axis_name].extend( build_descs )121    return build_descs_by_axis122def generate_build_variants( build_descs_by_axis ):123    """Returns a list of BuildDesc generated for the partial BuildDesc for each axis."""124    axis_names = list(build_descs_by_axis.keys())125    build_descs = []126    for axis_name, axis_build_descs in list(build_descs_by_axis.items()):127        if len(build_descs):128            # for each existing build_desc and each axis build desc, create a new build_desc129            new_build_descs = []130            for prototype_build_desc, axis_build_desc in itertools.product( build_descs, axis_build_descs):131                new_build_descs.append( prototype_build_desc.merged_with( axis_build_desc ) )132            build_descs = new_build_descs133        else:134            build_descs = axis_build_descs135    return build_descs136HTML_TEMPLATE = string.Template('''<html>137<head>138    <title>$title</title>139    <style type="text/css">140    td.failed {background-color:#f08080;}141    td.ok {background-color:#c0eec0;}142    </style>143</head>144<body>145<table border="1">146<thead>147    <tr>148        <th>Variables</th>149        $th_vars150    </tr>151    <tr>152        <th>Build type</th>153        $th_build_types154    </tr>155</thead>156<tbody>157$tr_builds158</tbody>159</table>160</body></html>''')161def generate_html_report( html_report_path, builds ):162    report_dir = os.path.dirname( html_report_path )163    # Vertical axis: generator164    # Horizontal: variables, then build_type165    builds_by_generator = collections.defaultdict( list )166    variables = set()167    build_types_by_variable = collections.defaultdict( set )168    build_by_pos_key = {} # { (generator, var_key, build_type): build }169    for build in builds:170        builds_by_generator[build.desc.generator].append( build )171        var_key = tuple(sorted(build.desc.variables))172        variables.add( var_key )173        build_types_by_variable[var_key].add( build.desc.build_type )174        pos_key = (build.desc.generator, var_key, build.desc.build_type)175        build_by_pos_key[pos_key] = build176    variables = sorted( variables )177    th_vars = []178    th_build_types = []179    for variable in variables:180        build_types = sorted( build_types_by_variable[variable] )181        nb_build_type = len(build_types_by_variable[variable])182        th_vars.append( '<th colspan="%d">%s</th>' % (nb_build_type, cgi.escape( ' '.join( variable ) ) ) )183        for build_type in build_types:184            th_build_types.append( '<th>%s</th>' % cgi.escape(build_type) )185    tr_builds = []186    for generator in sorted( builds_by_generator ):187        tds = [ '<td>%s</td>\n' % cgi.escape( generator ) ]188        for variable in variables:189            build_types = sorted( build_types_by_variable[variable] )190            for build_type in build_types:191                pos_key = (generator, variable, build_type)192                build = build_by_pos_key.get(pos_key)193                if build:194                    cmake_status = 'ok' if build.cmake_succeeded else 'FAILED'195                    build_status = 'ok' if build.build_succeeded else 'FAILED'196                    cmake_log_url = os.path.relpath( build.cmake_log_path, report_dir )197                    build_log_url = os.path.relpath( build.build_log_path, report_dir )198                    td = '<td class="%s"><a href="%s" class="%s">CMake: %s</a>' % (199                        build_status.lower(), cmake_log_url, cmake_status.lower(), cmake_status)200                    if build.cmake_succeeded:201                        td += '<br><a href="%s" class="%s">Build: %s</a>' % (202                            build_log_url, build_status.lower(), build_status)203                    td += '</td>'204                else:205                    td = '<td></td>'206                tds.append( td )207        tr_builds.append( '<tr>%s</tr>' % '\n'.join( tds ) )208    html = HTML_TEMPLATE.substitute(209        title='Batch build report',210        th_vars=' '.join(th_vars),211        th_build_types=' '.join( th_build_types),212        tr_builds='\n'.join( tr_builds ) )213    with open( html_report_path, 'wt' ) as fhtml:214        fhtml.write( html )215    print('HTML report generated in:', html_report_path)216def main():217    usage = r"""%prog WORK_DIR SOURCE_DIR CONFIG_JSON_PATH [CONFIG2_JSON_PATH...]218Build a given CMake based project located in SOURCE_DIR with multiple generators/options.dry_run219as described in CONFIG_JSON_PATH building in WORK_DIR.220Example of call:221python devtools\batchbuild.py e:\buildbots\jsoncpp\build . devtools\agent_vmw7.json222"""223    from optparse import OptionParser224    parser = OptionParser(usage=usage)225    parser.allow_interspersed_args = True226#    parser.add_option('-v', '--verbose', dest="verbose", action='store_true',227#        help="""Be verbose.""")228    parser.enable_interspersed_args()229    options, args = parser.parse_args()230    if len(args) < 3:231        parser.error( "Missing one of WORK_DIR SOURCE_DIR CONFIG_JSON_PATH." )232    work_dir = args[0]233    source_dir = args[1].rstrip('/\\')234    config_paths = args[2:]235    for config_path in config_paths:236        if not os.path.isfile( config_path ):237            parser.error( "Can not read: %r" % config_path )238    # generate build variants239    build_descs = []240    for config_path in config_paths:241        build_descs_by_axis = load_build_variants_from_config( config_path )242        build_descs.extend( generate_build_variants( build_descs_by_axis ) )243    print('Build variants (%d):' % len(build_descs))244    # assign build directory for each variant245    if not os.path.isdir( work_dir ):246        os.makedirs( work_dir )247    builds = []248    with open( os.path.join( work_dir, 'matrix-dir-map.txt' ), 'wt' ) as fmatrixmap:249        for index, build_desc in enumerate( build_descs ):250            build_desc_work_dir = os.path.join( work_dir, '%03d' % (index+1) )251            builds.append( BuildData( build_desc, build_desc_work_dir, source_dir ) )252            fmatrixmap.write( '%s: %s\n' % (build_desc_work_dir, build_desc) )253    for build in builds:254        build.execute_build()255    html_report_path = os.path.join( work_dir, 'batchbuild-report.html' )256    generate_html_report( html_report_path, builds )257    print('Done')258if __name__ == '__main__':...

Full Screen

Full Screen

fetch_build_test.py

Source:fetch_build_test.py Github

copy

Full Screen

1# Copyright 2014 The Chromium Authors. All rights reserved.2# Use of this source code is governed by a BSD-style license that can be3# found in the LICENSE file.4"""Unit tests for the fetch_builds module."""5import errno6import unittest7# The third-party mock module is expected to be available in PYTHONPATH.8import mock9import fetch_build10# The tests below test private functions (W0212).11# Some methods don't reference self because they use the mock module (R0201).12# pylint: disable=R0201,W021213class FetchBuildTest(unittest.TestCase):14  def setUp(self):15    # Mocks of the os and bisect_utils modules are used in the methods below.16    cloud_storage_patcher = mock.patch('fetch_build.cloud_storage')17    self.mock_cloud_storage = cloud_storage_patcher.start()18    self.addCleanup(cloud_storage_patcher.stop)19  @mock.patch('fetch_build.os.path.exists')20  def test_FetchFromCloudStorage_FileFound(self, mock_os_path_exists):21    self.mock_cloud_storage.Exists.return_value = True22    mock_os_path_exists.return_value = True23    local_path = fetch_build.FetchFromCloudStorage(24        'my_bucket', 'remote/foo.zip', 'local')25    self.assertEqual('local/foo.zip', local_path)26    self.mock_cloud_storage.Get.assert_called_with(27        'my_bucket', 'remote/foo.zip', 'local/foo.zip')28  def test_FetchFromCloudStorage_FileNotFound(self):29    self.mock_cloud_storage.Exists.return_value = False30    local_path = fetch_build.FetchFromCloudStorage(31        'my_bucket', 'remote/foo.zip', 'local')32    self.assertIsNone(local_path)33    self.assertFalse(self.mock_cloud_storage.Get.called)34class BuildArchiveTest(unittest.TestCase):35  def test_CreatePerfBuildArchive(self):36    archive = fetch_build.BuildArchive.Create(fetch_build.PERF_BUILDER)37    self.assertEqual('chrome-perf', archive.BucketName())38    self.assertTrue(isinstance(archive, fetch_build.PerfBuildArchive))39  def test_CreateFullBuildArchive(self):40    archive = fetch_build.BuildArchive.Create(fetch_build.FULL_BUILDER)41    archive._platform = 'linux'42    self.assertEqual('chromium-linux-archive', archive.BucketName())43    self.assertTrue(isinstance(archive, fetch_build.FullBuildArchive))44  def test_BuildArchive_NonExistentType(self):45    self.assertRaises(46        NotImplementedError, fetch_build.BuildArchive.Create, 'other')47  def test_FullBuildArchive_Linux(self):48    archive = fetch_build.FullBuildArchive()49    archive._platform = 'linux'50    self.assertEqual('chromium-linux-archive', archive.BucketName())51    self.assertEqual(52        'chromium.linux/Linux Builder/full-build-linux_1234567890abcdef.zip',53        archive.FilePath('1234567890abcdef'))54  def test_FullBuildArchive_Android(self):55    archive = fetch_build.FullBuildArchive()56    archive._platform = 'android'57    self.assertEqual('chromium-android', archive.BucketName())58    self.assertEqual(59        'android_main_rel/full-build-linux_1234567890abcdef.zip',60        archive.FilePath('1234567890abcdef'))61  def test_FullBuildArchive_Linux_BuilderName(self):62    archive = fetch_build.FullBuildArchive()63    archive._platform = 'linux'64    self.assertEqual('linux_full_bisect_builder', archive.GetBuilderName())65  def test_FullBuildArchive_Windows_BuildTime(self):66    archive = fetch_build.FullBuildArchive()67    archive._platform = 'win'68    self.assertEqual(14400, archive.GetBuilderBuildTime())69  def test_PerfBuildArchive_Linux(self):70    archive = fetch_build.PerfBuildArchive()71    archive._platform = 'linux'72    self.assertEqual('chrome-perf', archive.BucketName())73    self.assertEqual(74        'Linux Builder/full-build-linux_1234567890abcdef.zip',75        archive.FilePath('1234567890abcdef'))76  def test_PerfBuildArchive_Android(self):77    archive = fetch_build.PerfBuildArchive()78    archive._platform = 'android'79    self.assertEqual('chrome-perf', archive.BucketName())80    self.assertEqual(81        'android_perf_rel/full-build-linux_123456.zip',82        archive.FilePath('123456'))83  def test_PerfBuildArchive_AndroidArm64(self):84    archive = fetch_build.PerfBuildArchive()85    archive._platform = 'android_arm64'86    self.assertEqual('chrome-perf', archive.BucketName())87    self.assertEqual(88        'android_perf_rel_arm64/full-build-linux_123456.zip',89        archive.FilePath('123456'))90  def test_PerfBuildArchive_64BitWindows(self):91    archive = fetch_build.PerfBuildArchive(target_arch='x64')92    archive._platform = 'win64'93    self.assertEqual('chrome-perf', archive.BucketName())94    self.assertEqual(95        'Win x64 Builder/full-build-win32_123456.zip',96        archive.FilePath('123456'))97  def test_PerfBuildArchive_WithDepsPatchSha(self):98    archive = fetch_build.PerfBuildArchive()99    archive._platform = 'linux'100    self.assertEqual(101        'Linux Builder/full-build-linux_123456'102        '_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.zip',103        archive.FilePath(123456, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'))104  def test_PerfBuildArchive_64BitWindows_BuilderName(self):105    archive = fetch_build.PerfBuildArchive()106    archive._platform = 'win64'107    self.assertEqual('winx64_bisect_builder', archive.GetBuilderName())108  def test_PerfBuildArchive_64BitWindows_BuildTime(self):109    archive = fetch_build.PerfBuildArchive()110    archive._platform = 'win64'111    self.assertEqual(14400, archive.GetBuilderBuildTime())112  def test_PerfBuildArchive_Windows_BuilderName(self):113    archive = fetch_build.PerfBuildArchive()114    archive._platform = 'win'115    self.assertEqual('win_perf_bisect_builder', archive.GetBuilderName())116  def test_PerfBuildArchive_Windows_BuildTime(self):117    archive = fetch_build.PerfBuildArchive()118    archive._platform = 'win'119    self.assertEqual(14400, archive.GetBuilderBuildTime())120  def test_PerfBuildArchive_Linux_BuilderName(self):121    archive = fetch_build.PerfBuildArchive()122    archive._platform = 'linux'123    self.assertEqual('linux_perf_bisect_builder', archive.GetBuilderName())124  def test_PerfBuildArchive_Linux_BuildTime(self):125    archive = fetch_build.PerfBuildArchive()126    archive._platform = 'linux'127    self.assertEqual(14400, archive.GetBuilderBuildTime())128  def test_PerfBuildArchive_Android_BuilderName(self):129    archive = fetch_build.PerfBuildArchive()130    archive._platform = 'android'131    self.assertEqual('android_perf_bisect_builder', archive.GetBuilderName())132  def test_PerfBuildArchive_Android_BuildTime(self):133    archive = fetch_build.PerfBuildArchive()134    archive._platform = 'android'135    self.assertEqual(14400, archive.GetBuilderBuildTime())136  def test_PerfBuildArchive_Mac_BuilderName(self):137    archive = fetch_build.PerfBuildArchive()138    archive._platform = 'mac'139    self.assertEqual('mac_perf_bisect_builder', archive.GetBuilderName())140  def test_PerfBuildArchive_mac_BuildTime(self):141    archive = fetch_build.PerfBuildArchive()142    archive._platform = 'mac'143    self.assertEqual(14400, archive.GetBuilderBuildTime())144  def test_GetBuildBotUrl_Perf(self):145    self.assertEqual(146        fetch_build.PERF_TRY_SERVER_URL,147        fetch_build.GetBuildBotUrl(fetch_build.PERF_BUILDER))148  def test_GetBuildBotUrl_full(self):149    self.assertEqual(150        fetch_build.LINUX_TRY_SERVER_URL,151        fetch_build.GetBuildBotUrl(fetch_build.FULL_BUILDER))152class UnzipTest(unittest.TestCase):153  def setUp(self):154    # Mocks of the os and bisect_utils modules are used in the methods below.155    os_patcher = mock.patch('fetch_build.os')156    self.mock_os = os_patcher.start()157    self.addCleanup(os_patcher.stop)158    bisect_utils_patcher = mock.patch('fetch_build.bisect_utils')159    self.mock_bisect_utils = bisect_utils_patcher.start()160    self.addCleanup(bisect_utils_patcher.stop)161  @mock.patch('fetch_build._MakeDirectory')162  @mock.patch('fetch_build._UnzipUsingCommand')163  def test_Unzip_Linux(self, mock_UnzipUsingCommand, mock_MakeDirectory):164    self.mock_bisect_utils.IsLinuxHost.return_value = True165    self.mock_bisect_utils.IsMacHost.return_value = False166    self.mock_bisect_utils.IsWindowsHost.return_value = False167    fetch_build.Unzip('x.zip', 'out_dir', verbose=False)168    mock_MakeDirectory.assert_called_with('out_dir')169    mock_UnzipUsingCommand.assert_called_with(170        ['unzip', '-o'], 'x.zip', 'out_dir')171  @mock.patch('fetch_build._MakeDirectory')172  @mock.patch('fetch_build._UnzipUsingZipFile')173  def test_Unzip_Mac_LargeFile(174      self, mock_UnzipUsingZipFile, mock_MakeDirectory):175    # The zipfile module is used to unzip on mac when the file is > 4GB.176    self.mock_bisect_utils.IsLinuxHost.return_value = False177    self.mock_bisect_utils.IsMacHost.return_value = True178    self.mock_bisect_utils.IsWindowsHost.return_value = False179    self.mock_os.path.getsize.return_value = 2 ** 33  # 8GB180    fetch_build.Unzip('x.zip', 'out_dir', verbose=False)181    mock_MakeDirectory.assert_called_with('out_dir')182    mock_UnzipUsingZipFile.assert_called_with('x.zip', 'out_dir', False)183  def test_UnzipUsingCommand(self):184    # The _UnzipUsingCommand function should move to the output185    # directory and run the command with the file's absolute path.186    self.mock_os.path.abspath.return_value = '/foo/some/path/x.zip'187    self.mock_os.getcwd.return_value = 'curr_dir'188    self.mock_bisect_utils.RunProcess.return_value = 0189    fetch_build._UnzipUsingCommand(['unzip'], 'x.zip', 'out_dir')190    self.mock_os.chdir.assert_has_calls(191        [mock.call('out_dir'), mock.call('curr_dir')])192    self.mock_bisect_utils.RunProcess.assert_called_with(193        ['unzip', '/foo/some/path/x.zip'])194  def test_MakeDirectory(self):195    # _MakeDirectory uses os.makedirs.196    fetch_build._MakeDirectory('some/path')197    self.mock_os.makedirs.assert_called_with('some/path')198  def test_MakeDirectory_RaisesError(self):199    self.mock_os.makedirs.side_effect = OSError()200    self.assertRaises(OSError, fetch_build._MakeDirectory, 'some/path')201  def test_MakeDirectory_NoErrorIfDirectoryAlreadyExists(self):202    already_exists = OSError()203    already_exists.errno = errno.EEXIST204    self.mock_os.makedirs.side_effect = already_exists205    fetch_build._MakeDirectory('some/path')206  @mock.patch('fetch_build.shutil')207  def test_RemoveDirectoryTree(self, mock_shutil):208    # _RemoveDirectoryTree uses shutil.rmtree.209    fetch_build._RemoveDirectoryTree('some/path')210    mock_shutil.rmtree.assert_called_with('some/path')211if __name__ == '__main__':...

Full Screen

Full Screen

runbuilds.py

Source:runbuilds.py Github

copy

Full Screen

...139                      Q(state=BuildRequest.REQ_CANCELLING) &140                      ~Q(environment=None)):141            br.environment.lock = BuildEnvironment.LOCK_FREE142            br.environment.save()143    def runbuild(self):144        try:145            self.cleanup()146        except Exception as e:147            logger.warning("runbuilds: cleanup exception %s" % str(e))148        try:149            self.archive()150        except Exception as e:151            logger.warning("runbuilds: archive exception %s" % str(e))152        try:153            self.schedule()154        except Exception as e:155            logger.warning("runbuilds: schedule exception %s" % str(e))156    def handle(self, **options):157        pidfile_path = os.path.join(os.environ.get("BUILDDIR", "."),158                                    ".runbuilds.pid")159        with open(pidfile_path, 'w') as pidfile:160            pidfile.write("%s" % os.getpid())161        self.runbuild()162        signal.signal(signal.SIGUSR1, lambda sig, frame: None)163        while True:164            signal.pause()...

Full Screen

Full Screen

test_most_recent_builds_states.py

Source:test_most_recent_builds_states.py Github

copy

Full Screen

1#! /usr/bin/env python32#3# BitBake Toaster Implementation4#5# SPDX-License-Identifier: GPL-2.0-only6#7# Copyright (C) 2013-2016 Intel Corporation8#9from django.core.urlresolvers import reverse10from django.utils import timezone11from tests.browser.selenium_helpers import SeleniumTestCase12from tests.browser.selenium_helpers_base import Wait13from orm.models import Project, Build, Task, Recipe, Layer, Layer_Version14from bldcontrol.models import BuildRequest15class TestMostRecentBuildsStates(SeleniumTestCase):16    """ Test states update correctly in most recent builds area """17    def _create_build_request(self):18        project = Project.objects.get_or_create_default_project()19        now = timezone.now()20        build = Build.objects.create(project=project, build_name='fakebuild',21            started_on=now, completed_on=now)22        return BuildRequest.objects.create(build=build, project=project,23            state=BuildRequest.REQ_QUEUED)24    def _create_recipe(self):25        """ Add a recipe to the database and return it """26        layer = Layer.objects.create()27        layer_version = Layer_Version.objects.create(layer=layer)28        return Recipe.objects.create(name='foo', layer_version=layer_version)29    def _check_build_states(self, build_request):30        recipes_to_parse = 1031        url = reverse('all-builds')32        self.get(url)33        build = build_request.build34        base_selector = '[data-latest-build-result="%s"] ' % build.id35        # build queued; check shown as queued36        selector = base_selector + '[data-build-state="Queued"]'37        element = self.wait_until_visible(selector)38        self.assertRegexpMatches(element.get_attribute('innerHTML'),39            'Build queued', 'build should show queued status')40        # waiting for recipes to be parsed41        build.outcome = Build.IN_PROGRESS42        build.recipes_to_parse = recipes_to_parse43        build.recipes_parsed = 044        build_request.state = BuildRequest.REQ_INPROGRESS45        build_request.save()46        self.get(url)47        selector = base_selector + '[data-build-state="Parsing"]'48        element = self.wait_until_visible(selector)49        bar_selector = '#recipes-parsed-percentage-bar-%s' % build.id50        bar_element = element.find_element_by_css_selector(bar_selector)51        self.assertEqual(bar_element.value_of_css_property('width'), '0px',52            'recipe parse progress should be at 0')53        # recipes being parsed; check parse progress54        build.recipes_parsed = 555        build.save()56        self.get(url)57        element = self.wait_until_visible(selector)58        bar_element = element.find_element_by_css_selector(bar_selector)59        recipe_bar_updated = lambda driver: \60            bar_element.get_attribute('style') == 'width: 50%;'61        msg = 'recipe parse progress bar should update to 50%'62        element = Wait(self.driver).until(recipe_bar_updated, msg)63        # all recipes parsed, task started, waiting for first task to finish;64        # check status is shown as "Tasks starting..."65        build.recipes_parsed = recipes_to_parse66        build.save()67        recipe = self._create_recipe()68        task1 = Task.objects.create(build=build, recipe=recipe,69            task_name='Lionel')70        task2 = Task.objects.create(build=build, recipe=recipe,71            task_name='Jeffries')72        self.get(url)73        selector = base_selector + '[data-build-state="Starting"]'74        element = self.wait_until_visible(selector)75        self.assertRegexpMatches(element.get_attribute('innerHTML'),76            'Tasks starting', 'build should show "tasks starting" status')77        # first task finished; check tasks progress bar78        task1.order = 179        task1.save()80        self.get(url)81        selector = base_selector + '[data-build-state="In Progress"]'82        element = self.wait_until_visible(selector)83        bar_selector = '#build-pc-done-bar-%s' % build.id84        bar_element = element.find_element_by_css_selector(bar_selector)85        task_bar_updated = lambda driver: \86            bar_element.get_attribute('style') == 'width: 50%;'87        msg = 'tasks progress bar should update to 50%'88        element = Wait(self.driver).until(task_bar_updated, msg)89        # last task finished; check tasks progress bar updates90        task2.order = 291        task2.save()92        self.get(url)93        element = self.wait_until_visible(selector)94        bar_element = element.find_element_by_css_selector(bar_selector)95        task_bar_updated = lambda driver: \96            bar_element.get_attribute('style') == 'width: 100%;'97        msg = 'tasks progress bar should update to 100%'98        element = Wait(self.driver).until(task_bar_updated, msg)99    def test_states_to_success(self):100        """101        Test state transitions in the recent builds area for a build which102        completes successfully.103        """104        build_request = self._create_build_request()105        self._check_build_states(build_request)106        # all tasks complete and build succeeded; check success state shown107        build = build_request.build108        build.outcome = Build.SUCCEEDED109        build.save()110        selector = '[data-latest-build-result="%s"] ' \111            '[data-build-state="Succeeded"]' % build.id112        element = self.wait_until_visible(selector)113    def test_states_to_failure(self):114        """115        Test state transitions in the recent builds area for a build which116        completes in a failure.117        """118        build_request = self._create_build_request()119        self._check_build_states(build_request)120        # all tasks complete and build succeeded; check fail state shown121        build = build_request.build122        build.outcome = Build.FAILED123        build.save()124        selector = '[data-latest-build-result="%s"] ' \125            '[data-build-state="Failed"]' % build.id126        element = self.wait_until_visible(selector)127    def test_states_cancelling(self):128        """129        Test that most recent build area updates correctly for a build130        which is cancelled.131        """132        url = reverse('all-builds')133        build_request = self._create_build_request()134        build = build_request.build135        # cancel the build136        build_request.state = BuildRequest.REQ_CANCELLING137        build_request.save()138        self.get(url)139        # check cancelling state140        selector = '[data-latest-build-result="%s"] ' \141            '[data-build-state="Cancelling"]' % build.id142        element = self.wait_until_visible(selector)143        self.assertRegexpMatches(element.get_attribute('innerHTML'),144            'Cancelling the build', 'build should show "cancelling" status')145        # check cancelled state146        build.outcome = Build.CANCELLED147        build.save()148        self.get(url)149        selector = '[data-latest-build-result="%s"] ' \150            '[data-build-state="Cancelled"]' % build.id151        element = self.wait_until_visible(selector)152        self.assertRegexpMatches(element.get_attribute('innerHTML'),...

Full Screen

Full Screen

request_build.py

Source:request_build.py Github

copy

Full Screen

1# Copyright 2014 The Chromium Authors. All rights reserved.2# Use of this source code is governed by a BSD-style license that can be3# found in the LICENSE file.4"""This module contains functionality for starting build try jobs via HTTP.5This includes both sending a request to start a job, and also related code6for querying the status of the job.7This module can be either run as a stand-alone script to send a request to a8builder, or imported and used by calling the public functions below.9"""10import json11import urllib212# URL template for fetching JSON data about builds.13BUILDER_JSON_URL = ('%(server_url)s/json/builders/%(bot_name)s/builds/'14                    '%(build_num)s?as_text=1&filter=0')15# URL template for displaying build steps.16BUILDER_HTML_URL = '%(server_url)s/builders/%(bot_name)s/builds/%(build_num)s'17# Status codes that can be returned by the GetBuildStatus method18# From buildbot.status.builder.19# See: http://docs.buildbot.net/current/developer/results.html20SUCCESS, WARNINGS, FAILURE, SKIPPED, EXCEPTION, RETRY, TRYPENDING = range(7)21OK = (SUCCESS, WARNINGS)  # These indicate build is complete.22FAILED = (FAILURE, EXCEPTION, SKIPPED)  # These indicate build failure.23PENDING = (RETRY, TRYPENDING)  # These indicate in progress or in pending queue.24class ServerAccessError(Exception):25  def __str__(self):26    return '%s\nSorry, cannot connect to server.' % self.args[0]27def _IsBuildRunning(build_data):28  """Checks whether the build is in progress on buildbot.29  Presence of currentStep element in build JSON indicates build is in progress.30  Args:31    build_data: A dictionary with build data, loaded from buildbot JSON API.32  Returns:33    True if build is in progress, otherwise False.34  """35  current_step = build_data.get('currentStep')36  if (current_step and current_step.get('isStarted') and37      current_step.get('results') is None):38    return True39  return False40def _IsBuildFailed(build_data):41  """Checks whether the build failed on buildbot.42  Sometime build status is marked as failed even though compile and packaging43  steps are successful. This may happen due to some intermediate steps of less44  importance such as gclient revert, generate_telemetry_profile are failed.45  Therefore we do an addition check to confirm if build was successful by46  calling _IsBuildSuccessful.47  Args:48    build_data: A dictionary with build data, loaded from buildbot JSON API.49  Returns:50    True if revision is failed build, otherwise False.51  """52  if (build_data.get('results') in FAILED and53      not _IsBuildSuccessful(build_data)):54    return True55  return False56def _IsBuildSuccessful(build_data):57  """Checks whether the build succeeded on buildbot.58  We treat build as successful if the package_build step is completed without59  any error i.e., when results attribute of the this step has value 0 or 160  in its first element.61  Args:62    build_data: A dictionary with build data, loaded from buildbot JSON API.63  Returns:64    True if revision is successfully build, otherwise False.65  """66  if build_data.get('steps'):67    for item in build_data.get('steps'):68      # The 'results' attribute of each step consists of two elements,69      # results[0]: This represents the status of build step.70      # See: http://docs.buildbot.net/current/developer/results.html71      # results[1]: List of items, contains text if step fails, otherwise empty.72      if (item.get('name') == 'package_build' and73          item.get('isFinished') and74          item.get('results')[0] in OK):75        return True76  return False77def _FetchBuilderData(builder_url):78  """Fetches JSON data for the all the builds from the try server.79  Args:80    builder_url: A try server URL to fetch builds information.81  Returns:82    A dictionary with information of all build on the try server.83  """84  data = None85  try:86    url = urllib2.urlopen(builder_url)87  except urllib2.URLError as e:88    print ('urllib2.urlopen error %s, waterfall status page down.[%s]' % (89        builder_url, str(e)))90    return None91  if url is not None:92    try:93      data = url.read()94    except IOError as e:95      print 'urllib2 file object read error %s, [%s].' % (builder_url, str(e))96  return data97def _GetBuildData(buildbot_url):98  """Gets build information for the given build id from the try server.99  Args:100    buildbot_url: A try server URL to fetch build information.101  Returns:102    A dictionary with build information if build exists, otherwise None.103  """104  builds_json = _FetchBuilderData(buildbot_url)105  if builds_json:106    return json.loads(builds_json)107  return None108def GetBuildStatus(build_num, bot_name, server_url):109  """Gets build status from the buildbot status page for a given build number.110  Args:111    build_num: A build number on try server to determine its status.112    bot_name: Name of the bot where the build information is scanned.113    server_url: URL of the buildbot.114  Returns:115    A pair which consists of build status (SUCCESS, FAILED or PENDING) and a116    link to build status page on the waterfall.117  """118  results_url = None119  if build_num:120    # Get the URL for requesting JSON data with status information.121    buildbot_url = BUILDER_JSON_URL % {122        'server_url': server_url,123        'bot_name': bot_name,124        'build_num': build_num,125    }126    build_data = _GetBuildData(buildbot_url)127    if build_data:128      # Link to build on the buildbot showing status of build steps.129      results_url = BUILDER_HTML_URL % {130          'server_url': server_url,131          'bot_name': bot_name,132          'build_num': build_num,133      }134      if _IsBuildFailed(build_data):135        return (FAILED, results_url)136      elif _IsBuildSuccessful(build_data):137        return (OK, results_url)138  return (PENDING, results_url)139def GetBuildNumFromBuilder(build_reason, bot_name, server_url):140  """Gets build number on build status page for a given 'build reason'.141  This function parses the JSON data from buildbot page and collects basic142  information about the all the builds, and then uniquely identifies the build143  based on the 'reason' attribute in the JSON data about the build.144  The 'reason' attribute set is when a build request is posted, and it is used145  to identify the build on status page.146  Args:147    build_reason: A unique build name set to build on try server.148    bot_name: Name of the bot where the build information is scanned.149    server_url: URL of the buildbot.150  Returns:151    A build number as a string if found, otherwise None.152  """153  buildbot_url = BUILDER_JSON_URL % {154      'server_url': server_url,155      'bot_name': bot_name,156      'build_num': '_all',157  }158  builds_json = _FetchBuilderData(buildbot_url)159  if builds_json:160    builds_data = json.loads(builds_json)161    for current_build in builds_data:162      if builds_data[current_build].get('reason') == build_reason:163        return builds_data[current_build].get('number')...

Full Screen

Full Screen

build.py

Source:build.py Github

copy

Full Screen

...6from distutils.util import get_platform7def show_compilers():8    from distutils.ccompiler import show_compilers9    show_compilers()10class build(Command):11    description = "build everything needed to install"12    user_options = [13        ('build-base=', 'b',14         "base directory for build library"),15        ('build-purelib=', None,16         "build directory for platform-neutral distributions"),17        ('build-platlib=', None,18         "build directory for platform-specific distributions"),19        ('build-lib=', None,20         "build directory for all distribution (defaults to either " +21         "build-purelib or build-platlib"),22        ('build-scripts=', None,23         "build directory for scripts"),24        ('build-temp=', 't',...

Full Screen

Full Screen

clean.py

Source:clean.py Github

copy

Full Screen

1"""distutils.command.clean2Implements the Distutils 'clean' command."""3# contributed by Bastian Kleineidam <calvin@cs.uni-sb.de>, added 2000-03-184import os5from distutils.core import Command6from distutils.dir_util import remove_tree7from distutils import log8class clean(Command):9    description = "clean up temporary files from 'build' command"10    user_options = [11        ('build-base=', 'b',12         "base build directory (default: 'build.build-base')"),13        ('build-lib=', None,14         "build directory for all modules (default: 'build.build-lib')"),15        ('build-temp=', 't',16         "temporary build directory (default: 'build.build-temp')"),17        ('build-scripts=', None,18         "build directory for scripts (default: 'build.build-scripts')"),19        ('bdist-base=', None,20         "temporary directory for built distributions"),21        ('all', 'a',22         "remove all build output, not just temporary by-products")23    ]24    boolean_options = ['all']25    def initialize_options(self):26        self.build_base = None27        self.build_lib = None28        self.build_temp = None29        self.build_scripts = None30        self.bdist_base = None31        self.all = None32    def finalize_options(self):33        self.set_undefined_options('build',34                                   ('build_base', 'build_base'),35                                   ('build_lib', 'build_lib'),36                                   ('build_scripts', 'build_scripts'),37                                   ('build_temp', 'build_temp'))38        self.set_undefined_options('bdist',39                                   ('bdist_base', 'bdist_base'))40    def run(self):41        # remove the build/temp.<plat> directory (unless it's already42        # gone)43        if os.path.exists(self.build_temp):44            remove_tree(self.build_temp, dry_run=self.dry_run)45        else:46            log.debug("'%s' does not exist -- can't clean it",47                      self.build_temp)48        if self.all:49            # remove build directories50            for directory in (self.build_lib,51                              self.bdist_base,52                              self.build_scripts):53                if os.path.exists(directory):54                    remove_tree(directory, dry_run=self.dry_run)55                else:56                    log.warn("'%s' does not exist -- can't clean it",57                             directory)58        # just for the heck of it, try to remove the base build directory:59        # we might have emptied it right now, but if not we don't care60        if not self.dry_run:61            try:62                os.rmdir(self.build_base)63                log.info("removing '%s'", self.build_base)64            except OSError:...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var Cucumber = require('cucumber');2var fs = require('fs');3var parser = Cucumber.Gherkin.Parser();4var compiler = Cucumber.Gherkin.Compiler();5var gherkinSource = fs.readFileSync('test.feature', 'utf8');6var gherkinDocument = parser.parse(gherkinSource);7var pickles = compiler.compile(gherkinDocument, 'test.feature');8console.log(pickles);9    at Object.exports.parse (/Users/ramanathan/Documents/Projects/node_modules/cucumber/node_modules/gherkin/lib/gherkin/parser.js:6:20)10    at Object.exports.parse (/Users/ramanathan/Documents/Projects/node_modules/cucumber/node_modules/gherkin/lib/gherkin/parser.js:12:14)11    at Object.exports.parse (/Users/ramanathan/Documents/Projects/node_modules/cucumber/node_modules/gherkin/lib/gherkin/parser.js:12:14)12    at Object.exports.parse (/Users/ramanathan/Documents/Projects/node_modules/cucumber/node_modules/gherkin/lib/gherkin/parser.js:12:14)13    at Object.exports.parse (/Users/ramanathan/Documents/Projects/node_modules/cucumber/node_modules/gherkin/lib/gherkin/parser.js:12:14)14    at Object.exports.parse (/Users/ramanathan/Documents/Projects/node_modules/cucumber/node_modules/gherkin/lib/gherkin/parser.js:12:14)15    at Object.exports.parse (/Users/ramanathan/Documents/Projects/node_modules/cucumber/node_modules/gherkin/lib/gherkin/parser.js:12:14)16    at Object.exports.parse (/Users/ramanathan/Documents/Projects/node_modules/cucumber/node_modules/gherkin/lib/gherkin/parser.js:12:14)17    at Object.exports.parse (/Users/ramanathan/Documents/Projects/node_modules/cucumber/node_modules/gherkin/lib/gherkin

Full Screen

Using AI Code Generation

copy

Full Screen

1var gherkin = require('cucumber-gherkin');2gherkin.build('test.feature', function(err, result) {3  if(err) {4    console.log(err);5  } else {6    console.log(result);7  }8});9{ feature: 10   { tags: [],11      [ { tags: [],12          type: 'scenario' } ],13     type: 'feature' },14  comments: [] }

Full Screen

Using AI Code Generation

copy

Full Screen

1var gherkin = require('cucumber-gherkin');2var fs = require('fs');3var feature = fs.readFileSync('features/test.feature', 'utf8');4var parser = new gherkin.Parser();5var feature = parser.parse(feature);6console.log(feature);7    at Object.<anonymous> (C:\Users\user\Documents\test\test.js:6:20)8    at Module._compile (module.js:456:26)9    at Object.Module._extensions..js (module.js:474:10)10    at Module.load (module.js:356:32)11    at Function.Module._load (module.js:312:12)12    at Function.Module.runMain (module.js:497:10)13    at startup (node.js:119:16)14I am trying to call the parse method of Cucumber-gherkin. I am getting the following error: TypeError: Cannot read property 'parse' of undefined at Object.<anonymous> (C:\Users\user\Documents\test\test.js:6:20) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:929:3 I am not sure what I am doing wrong. Any help is much appreciated. Thanks!15Your name to display (optional):16Your name to display (optional):17var gherkin = require('cucumber-gherkin').gherkin;18var parser = new gherkin.Parser();19Your name to display (optional):

Full Screen

Using AI Code Generation

copy

Full Screen

1var gherkin = require('gherkin');2var parser = new gherkin.Parser();3var lexer = new gherkin.Lexer('en');4    Then the result should be 120 on the screen';5var features = parser.parse(lexer.lex(source));6console.log(features);

Full Screen

Using AI Code Generation

copy

Full Screen

1const Cucumber = require('cucumber');2const fs = require('fs');3const parser = new Cucumber.Gherkin.Parser();4const gherkinSource = fs.readFileSync('test.feature', 'utf8');5const gherkinDocument = parser.parse(gherkinSource);6console.log(gherkinDocument);7const Cucumber = require('cucumber');8const fs = require('fs');9const parser = new Cucumber.Gherkin.Parser();10const gherkinSource = fs.readFileSync('test.feature', 'utf8');11const gherkinDocument = parser.parse(gherkinSource);12console.log(gherkinDocument);13const Cucumber = require('cucumber');14const fs = require('fs');15const gherkinSource = fs.readFileSync('test.feature', 'utf8');

Full Screen

Using AI Code Generation

copy

Full Screen

1var Cucumber = require('cucumber');2var gherkin = Cucumber.Gherkin;3';4var parser = new gherkin.Parser();5var document = parser.parse(gherkinSource);6console.log(JSON.stringify(document, null, 2));7{8  "scripts": {9  },10  "dependencies": {11  }12}

Full Screen

Cucumber Tutorial:

LambdaTest offers a detailed Cucumber testing tutorial, explaining its features, importance, best practices, and more to help you get started with running your automation testing scripts.

Cucumber Tutorial Chapters:

Here are the detailed Cucumber testing chapters to help you get started:

  • Importance of Cucumber - Learn why Cucumber is important in Selenium automation testing during the development phase to identify bugs and errors.
  • Setting Up Cucumber in Eclipse and IntelliJ - Learn how to set up Cucumber in Eclipse and IntelliJ.
  • Running First Cucumber.js Test Script - After successfully setting up your Cucumber in Eclipse or IntelliJ, this chapter will help you get started with Selenium Cucumber testing in no time.
  • Annotations in Cucumber - To handle multiple feature files and the multiple scenarios in each file, you need to use functionality to execute these scenarios. This chapter will help you learn about a handful of Cucumber annotations ranging from tags, Cucumber hooks, and more to ease the maintenance of the framework.
  • Automation Testing With Cucumber And Nightwatch JS - Learn how to build a robust BDD framework setup for performing Selenium automation testing by integrating Cucumber into the Nightwatch.js framework.
  • Automation Testing With Selenium, Cucumber & TestNG - Learn how to perform Selenium automation testing by integrating Cucumber with the TestNG framework.
  • Integrate Cucumber With Jenkins - By using Cucumber with Jenkins integration, you can schedule test case executions remotely and take advantage of the benefits of Jenkins. Learn how to integrate Cucumber with Jenkins with this detailed chapter.
  • Cucumber Best Practices For Selenium Automation - Take a deep dive into the advanced use cases, such as creating a feature file, separating feature files, and more for Cucumber testing.

Run Cucumber-gherkin automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful