Best JavaScript code snippet using playwright-internal
CQL.js
Source:CQL.js
...199 }200 while (operatorStack.length > 0) {201 postfix.push(operatorStack.pop());202 }203 function buildTree() {204 var tok = postfix.pop();205 switch (tok.type) {206 case "LOGICAL":207 var rhs = buildTree(),208 lhs = buildTree();209 return new OpenLayers.Filter.Logical({210 filters: [lhs, rhs],211 type: logicals[tok.text.toUpperCase()]212 });213 case "NOT":214 var operand = buildTree();215 return new OpenLayers.Filter.Logical({216 filters: [operand],217 type: OpenLayers.Filter.Logical.NOT218 });219 case "BETWEEN":220 var min, max, property;221 postfix.pop(); // unneeded AND token here222 max = buildTree();223 min = buildTree();224 property = buildTree();225 return new OpenLayers.Filter.Comparison({226 property: property,227 lowerBoundary: min,228 upperBoundary: max,229 type: OpenLayers.Filter.Comparison.BETWEEN230 });231 case "COMPARISON":232 var value = buildTree(),233 property = buildTree();234 return new OpenLayers.Filter.Comparison({235 property: property,236 value: value,237 type: operators[tok.text.toUpperCase()]238 });239 case "IS_NULL":240 var property = buildTree();241 return new OpenLayers.Filter.Comparison({242 property: property,243 type: operators[tok.text.toUpperCase()]244 });245 case "VALUE":246 var match = tok.text.match(/^'(.*)'$/);247 if (match) {248 return match[1].replace(/''/g, "'");249 } else {250 return Number(tok.text);251 }252 case "SPATIAL":253 switch(tok.text.toUpperCase()) {254 case "BBOX":255 var maxy = buildTree(),256 maxx = buildTree(),257 miny = buildTree(),258 minx = buildTree(),259 prop = buildTree();260 return new OpenLayers.Filter.Spatial({261 type: OpenLayers.Filter.Spatial.BBOX,262 property: prop,263 value: OpenLayers.Bounds.fromArray(264 [minx, miny, maxx, maxy]265 )266 });267 case "INTERSECTS":268 var value = buildTree(),269 property = buildTree();270 return new OpenLayers.Filter.Spatial({271 type: OpenLayers.Filter.Spatial.INTERSECTS,272 property: property,273 value: value274 });275 case "WITHIN":276 var value = buildTree(),277 property = buildTree();278 return new OpenLayers.Filter.Spatial({279 type: OpenLayers.Filter.Spatial.WITHIN,280 property: property,281 value: value282 });283 case "CONTAINS":284 var value = buildTree(),285 property = buildTree();286 return new OpenLayers.Filter.Spatial({287 type: OpenLayers.Filter.Spatial.CONTAINS,288 property: property,289 value: value290 });291 case "DWITHIN":292 var distance = buildTree(),293 value = buildTree(),294 property = buildTree();295 return new OpenLayers.Filter.Spatial({296 type: OpenLayers.Filter.Spatial.DWITHIN,297 value: value,298 property: property,299 distance: Number(distance)300 });301 }302 case "GEOMETRY":303 return OpenLayers.Geometry.fromWKT(tok.text);304 default:305 return tok.text;306 }307 }308 var result = buildTree();309 if (postfix.length > 0) {310 var msg = "Remaining tokens after building AST: \n";311 for (var i = postfix.length - 1; i >= 0; i--) {312 msg += postfix[i].type + ": " + postfix[i].text + "\n";313 }314 throw new Error(msg);315 }316 return result;317 }318 return OpenLayers.Class(OpenLayers.Format, {319 /**320 * APIMethod: read321 * Generate a filter from a CQL string.322 * Parameters:...
shellbuildtrees.py
Source:shellbuildtrees.py
1# Pylint doesn't play well with fixtures and dependency injection from pytest2# pylint: disable=redefined-outer-name3import os4import shutil5import pytest6from buildstream._testing import cli, cli_integration, Cli # pylint: disable=unused-import7from buildstream.exceptions import ErrorDomain8from buildstream._testing._utils.site import HAVE_SANDBOX9from tests.testutils import ArtifactShare10pytestmark = pytest.mark.integration11DATA_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "project")12#13# Ensure that we didn't get a build tree if we didn't ask for one14#15@pytest.mark.datafiles(DATA_DIR)16@pytest.mark.skipif(not HAVE_SANDBOX, reason="Only available with a functioning sandbox")17def test_buildtree_unused(cli_integration, datafiles):18 # We can only test the non interacitve case19 # The non interactive case defaults to not using buildtrees20 # for `bst shell --build`21 project = str(datafiles)22 element_name = "build-shell/buildtree.bst"23 res = cli_integration.run(project=project, args=["--cache-buildtrees", "always", "build", element_name])24 res.assert_success()25 res = cli_integration.run(project=project, args=["shell", "--build", element_name, "--", "cat", "test"])26 res.assert_shell_error()27#28# Ensure we can use a buildtree from a successful build29#30@pytest.mark.datafiles(DATA_DIR)31@pytest.mark.skipif(not HAVE_SANDBOX, reason="Only available with a functioning sandbox")32def test_buildtree_from_success(cli_integration, datafiles):33 # Test that if we ask for a build tree it is there.34 project = str(datafiles)35 element_name = "build-shell/buildtree.bst"36 res = cli_integration.run(project=project, args=["--cache-buildtrees", "always", "build", element_name])37 res.assert_success()38 res = cli_integration.run(39 project=project, args=["shell", "--build", "--use-buildtree", element_name, "--", "cat", "test"]40 )41 res.assert_success()42 assert "Hi" in res.output43#44# Ensure we can use a buildtree from a failed build45#46@pytest.mark.datafiles(DATA_DIR)47@pytest.mark.skipif(not HAVE_SANDBOX, reason="Only available with a functioning sandbox")48def test_buildtree_from_failure(cli_integration, datafiles):49 # Test that we can use a build tree after a failure50 project = str(datafiles)51 element_name = "build-shell/buildtree-fail.bst"52 res = cli_integration.run(project=project, args=["build", element_name])53 res.assert_main_error(ErrorDomain.STREAM, None)54 # Assert that file has expected contents55 res = cli_integration.run(56 project=project, args=["shell", "--build", element_name, "--use-buildtree", "--", "cat", "test"]57 )58 res.assert_success()59 assert "WARNING using a buildtree from a failed build" in res.stderr60 assert "Hi" in res.output61###########################################################################62# Custom fixture ahead #63###########################################################################64#65# There are a lot of scenarios to test with launching shells with various states66# of local cache, which all require that artifacts be built in an artifact share.67#68# We want to use @pytest.mark.parametrize() here so that we can more coherently test69# specific scenarios, but testing each of these in a separate test is very expensive.70#71# For this reason, we use some module scope fixtures which will prepare the72# ArtifactShare() object by building and pushing to it, and the same ArtifactShare()73# object is shared across all tests which need the ArtifactShare() to be in that74# given state.75#76# This means we only need to download (fetch) the external alpine runtime and77# push it to our internal ArtifactShare() once, but we can reuse it for many78# parametrized tests.79#80# It is important that none of the tests using these fixtures access the81# module scope ArtifactShare() instances with "push" access, as tests82# should not be modifying the state of the shared data.83#84###########################################################################85# create_built_artifact_share()86#87# A helper function to create an ArtifactShare object with artifacts88# prebuilt, this can be shared across multiple tests which access89# the artifact share in a read-only fashion.90#91# Args:92# tmpdir (str): The temp directory to be used93# cache_buildtrees (bool): Whether to cache buildtrees when building94# integration_cache (IntegrationCache): The session wide integration cache so that we95# can reuse the sources from previous runs96#97def create_built_artifact_share(tmpdir, cache_buildtrees, integration_cache):98 element_name = "build-shell/buildtree.bst"99 # Replicate datafiles behavior and do work entirely in the temp directory100 project = os.path.join(tmpdir, "project")101 shutil.copytree(DATA_DIR, project)102 # Create the share to be hosted from this temp directory103 share = ArtifactShare(os.path.join(tmpdir, "artifactcache"))104 # Create a Cli instance to build and populate the share105 cli = Cli(os.path.join(tmpdir, "cache"))106 cli.configure(107 {"artifacts": {"servers": [{"url": share.repo, "push": True}]}, "sourcedir": integration_cache.sources}108 )109 # Optionally cache build trees110 args = []111 if cache_buildtrees:112 args += ["--cache-buildtrees", "always"]113 args += ["build", element_name]114 # Build115 result = cli.run(project=project, args=args)116 result.assert_success()117 # Assert that the artifact is indeed in the share118 assert cli.get_element_state(project, element_name) == "cached"119 artifact_name = cli.get_artifact_name(project, "test", element_name)120 assert share.get_artifact(artifact_name)121 return share122# share_with_buildtrees()123#124# A module scope fixture which prepares an ArtifactShare() instance125# which will have all dependencies of "build-shell/buildtree.bst" built and126# cached with buildtrees also cached.127#128@pytest.fixture(scope="module")129def share_with_buildtrees(tmp_path_factory, integration_cache):130 # Get a temporary directory for this module scope fixture131 tmpdir = tmp_path_factory.mktemp("artifact_share_with_buildtrees")132 # Create our ArtifactShare instance which will persist for the duration of133 # the class scope fixture.134 share = create_built_artifact_share(tmpdir, True, integration_cache)135 try:136 yield share137 finally:138 share.close()139# share_without_buildtrees()140#141# A module scope fixture which prepares an ArtifactShare() instance142# which will have all dependencies of "build-shell/buildtree.bst" built143# but without caching any buildtrees.144#145@pytest.fixture(scope="module")146def share_without_buildtrees(tmp_path_factory, integration_cache):147 # Get a temporary directory for this module scope fixture148 tmpdir = tmp_path_factory.mktemp("artifact_share_without_buildtrees")149 # Create our ArtifactShare instance which will persist for the duration of150 # the class scope fixture.151 share = create_built_artifact_share(tmpdir, False, integration_cache)152 try:153 yield share154 finally:155 share.close()156# maybe_pull_deps()157#158# Convenience function for optionally pulling element dependencies159# in the following parametrized tests.160#161# Args:162# cli (Cli): The Cli object163# project (str): The project path164# element_name (str): The element name165# pull_deps (str): The argument for `--deps`, or None166# pull_buildtree (bool): Whether to also pull buildtrees167#168def maybe_pull_deps(cli, project, element_name, pull_deps, pull_buildtree):169 # Optionally pull the buildtree along with `bst artifact pull`170 if pull_deps:171 args = []172 if pull_buildtree:173 args += ["--pull-buildtrees"]174 args += ["artifact", "pull", "--deps", pull_deps, element_name]175 # Pull from cache176 result = cli.run(project=project, args=args)177 result.assert_success()178#179# Test behavior of launching a shell and requesting to use a buildtree, with180# various states of local cache (ranging from nothing cached to everything cached)181#182@pytest.mark.datafiles(DATA_DIR)183@pytest.mark.skipif(not HAVE_SANDBOX, reason="Only available with a functioning sandbox")184@pytest.mark.parametrize(185 "pull_deps,pull_buildtree,expect_error",186 [187 # Don't pull at all188 (None, False, "missing-buildtree-artifact-not-cached"),189 # Pull only dependencies190 ("build", False, "missing-buildtree-artifact-not-cached"),191 # Pull all elements including the shell element, but without the buildtree192 ("all", False, "missing-buildtree-artifact-buildtree-not-cached"),193 # Pull all elements including the shell element, and pull buildtrees194 ("all", True, None),195 # Pull only the artifact, but without the buildtree196 ("none", False, "missing-buildtree-artifact-buildtree-not-cached"),197 # Pull only the artifact with its buildtree198 ("none", True, None),199 ],200 ids=[201 "no-pull",202 "pull-only-deps",203 "pull-without-buildtree",204 "pull-with-buildtree",205 "pull-target-without-buildtree",206 "pull-target-with-buildtree",207 ],208)209def test_shell_use_cached_buildtree(share_with_buildtrees, datafiles, cli, pull_deps, pull_buildtree, expect_error):210 project = str(datafiles)211 element_name = "build-shell/buildtree.bst"212 cli.configure({"artifacts": {"servers": [{"url": share_with_buildtrees.repo}]}})213 # Optionally pull the buildtree along with `bst artifact pull`214 maybe_pull_deps(cli, project, element_name, pull_deps, pull_buildtree)215 # Disable access to the artifact server after pulling, so that `bst shell` cannot automatically216 # pull the missing bits, this should be equivalent to the missing bits being missing in a217 # remote server218 cli.configure({"artifacts": {}})219 # Run the shell without asking it to pull any buildtree, just asking to use a buildtree220 result = cli.run(project=project, args=["shell", "--build", element_name, "--use-buildtree", "--", "cat", "test"])221 if expect_error:222 result.assert_main_error(ErrorDomain.APP, expect_error)223 else:224 result.assert_success()225 assert "Hi" in result.output226#227# Test behavior of launching a shell and requesting to use a buildtree, while allowing228# BuildStream to download any missing bits from the artifact server on the fly (which229# it will do by default) again with various states of local cache (ranging from nothing230# cached to everything cached)231#232@pytest.mark.datafiles(DATA_DIR)233@pytest.mark.skipif(not HAVE_SANDBOX, reason="Only available with a functioning sandbox")234@pytest.mark.parametrize(235 "pull_deps,pull_buildtree",236 [237 # Don't pull at all238 (None, False),239 # Pull only dependencies240 ("build", False),241 # Pull all elements including the shell element, but without the buildtree242 ("all", False),243 # Pull all elements including the shell element, and pull buildtrees244 ("all", True),245 ],246 ids=["no-pull", "pull-only-deps", "pull-without-buildtree", "pull-with-buildtree"],247)248def test_shell_pull_cached_buildtree(share_with_buildtrees, datafiles, cli, pull_deps, pull_buildtree):249 project = str(datafiles)250 element_name = "build-shell/buildtree.bst"251 cli.configure({"artifacts": {"servers": [{"url": share_with_buildtrees.repo}]}})252 # Optionally pull the buildtree along with `bst artifact pull`253 maybe_pull_deps(cli, project, element_name, pull_deps, pull_buildtree)254 # Run the shell and request that required artifacts and buildtrees should be pulled255 result = cli.run(256 project=project,257 args=[258 "--pull-buildtrees",259 "shell",260 "--build",261 element_name,262 "--use-buildtree",263 "--",264 "cat",265 "test",266 ],267 )268 # In this case, we should succeed every time, regardless of what was269 # originally available in the local cache.270 #271 result.assert_success()272 assert "Hi" in result.output273#274# Test behavior of shelling into a buildtree by its artifact name275#276@pytest.mark.datafiles(DATA_DIR)277@pytest.mark.skipif(not HAVE_SANDBOX, reason="Only available with a functioning sandbox")278def test_shell_pull_artifact_cached_buildtree(share_with_buildtrees, datafiles, cli):279 project = str(datafiles)280 artifact_name = "test/build-shell-buildtree/4a47c98a10df39e65e99d471f96edc5b58d4ea5b9b1f221d0be832a8124b8099"281 cli.configure({"artifacts": {"servers": [{"url": share_with_buildtrees.repo}]}})282 # Run the shell and request that required artifacts and buildtrees should be pulled283 result = cli.run(284 project=project,285 args=[286 "--pull-buildtrees",287 "shell",288 "--build",289 "--use-buildtree",290 artifact_name,291 "--",292 "cat",293 # We don't preserve the working directory in artifacts, so we will be executing at /294 "/buildstream/test/build-shell/buildtree.bst/test",295 ],296 )297 # In this case, we should succeed every time, regardless of what was298 # originally available in the local cache.299 #300 result.assert_success()301 assert "Hi" in result.output302#303# Test behavior of launching a shell and requesting to use a buildtree.304#305# In this case we download everything we need first, but the buildtree was never cached at build time306#307@pytest.mark.datafiles(DATA_DIR)308@pytest.mark.skipif(not HAVE_SANDBOX, reason="Only available with a functioning sandbox")309def test_shell_use_uncached_buildtree(share_without_buildtrees, datafiles, cli):310 project = str(datafiles)311 element_name = "build-shell/buildtree.bst"312 cli.configure({"artifacts": {"servers": [{"url": share_without_buildtrees.repo}]}})313 # Pull everything we would need314 maybe_pull_deps(cli, project, element_name, "all", True)315 # Run the shell without asking it to pull any buildtree, just asking to use a buildtree316 result = cli.run(project=project, args=["shell", "--build", element_name, "--use-buildtree", "--", "cat", "test"])317 # Sorry, a buildtree was never cached for this element318 result.assert_main_error(ErrorDomain.APP, "missing-buildtree-artifact-created-without-buildtree")319@pytest.mark.datafiles(DATA_DIR)320@pytest.mark.skipif(not HAVE_SANDBOX, reason="Only available with a functioning sandbox")321def test_shell_script_element(datafiles, cli_integration):322 project = str(datafiles)323 element_name = "build-shell/script.bst"324 result = cli_integration.run(project=project, args=["--cache-buildtrees", "always", "build", element_name])325 result.assert_success()326 # Run the shell and use the cached buildtree on this script element327 result = cli_integration.run(328 project=project, args=["shell", "--build", element_name, "--use-buildtree", "--", "cat", "/test"]329 )330 result.assert_success()331 assert "Hi" in result.output332@pytest.mark.datafiles(DATA_DIR)333@pytest.mark.skipif(not HAVE_SANDBOX, reason="Only available with a functioning sandbox")334@pytest.mark.parametrize(335 "element_name,expect_success",336 [337 # Build shell into a compose element which succeeded338 ("build-shell/compose-success.bst", True),339 # Build shell into a compose element with failed integration commands340 ("build-shell/compose-fail.bst", False),341 ],342 ids=["integration-success", "integration-fail"],343)344def test_shell_compose_element(datafiles, cli_integration, element_name, expect_success):345 project = str(datafiles)346 # Build the element so it's in the local cache, ensure caching of buildtrees at build time347 result = cli_integration.run(project=project, args=["--cache-buildtrees", "always", "build", element_name])348 if expect_success:349 result.assert_success()350 else:351 result.assert_main_error(ErrorDomain.STREAM, None)352 # Ensure that the shell works regardless of success expectations353 #354 result = cli_integration.run(355 project=project, args=["shell", "--build", element_name, "--use-buildtree", "--", "echo", "Hi"]356 )357 result.assert_success()358 assert "Hi" in result.output359 # Check the file created with integration commands360 #361 result = cli_integration.run(362 project=project,363 args=["shell", "--build", element_name, "--use-buildtree", "--", "cat", "/integration-success"],364 )365 if expect_success:366 result.assert_success()367 assert "Hi" in result.output368 else:369 # Here the exit code is determined by `cat`, and will be non-zero.370 #371 # We cannot use result.assert_main_error() because that explicitly expects -1...
parser.js
Source:parser.js
...193 }194 while (operatorStack.length > 0) {195 postfix.push(operatorStack.pop());196 }197 function buildTree() {198 let tok = postfix.pop();199 switch (tok.type) {200 case "LOGICAL":201 let rhs = buildTree();202 let lhs = buildTree();203 return ({204 filters: [lhs, rhs],205 type: logical[tok.text.toUpperCase()]206 });207 case "NOT":208 let operand = buildTree();209 return ({210 filters: [operand],211 type: logical.NOT212 });213 case "BETWEEN": {214 postfix.pop(); // unneeded AND token here215 let max = buildTree();216 let min = buildTree();217 const property = buildTree();218 return ({219 property,220 lowerBoundary: min,221 upperBoundary: max,222 type: operators.BETWEEN223 });224 }225 case "COMPARISON": {226 let value = buildTree();227 const property = buildTree();228 return ({229 property,230 value: value,231 type: operators[tok.text.toUpperCase()]232 });233 }234 case "IS_NULL": {235 const property = buildTree();236 return ({237 property,238 type: operators[tok.text.toUpperCase()]239 });240 }241 case "VALUE":242 let match = tok.text.match(/^'(.*)'$/);243 if (match) {244 return match[1].replace(/''/g, "'");245 }246 return Number(tok.text);247 case "SPATIAL":248 switch (tok.text.toUpperCase()) {249 case "BBOX": {250 let maxy = buildTree();251 let maxx = buildTree();252 let miny = buildTree();253 let minx = buildTree();254 let property = buildTree();255 return ({256 type: spatialOperators.BBOX,257 property,258 value: [minx, miny, maxx, maxy] // TODO: evaluate this special case259 });260 }261 case "INTERSECTS": {262 const value = buildTree();263 const property = buildTree();264 return ({265 type: spatialOperators.INTERSECTS,266 property,267 value268 });269 }270 case "WITHIN": {271 let value = buildTree();272 let property = buildTree();273 return ({274 type: spatialOperators.WITHIN,275 property,276 value277 });278 }279 case "CONTAINS": {280 let value = buildTree();281 const property = buildTree();282 return ({283 type: spatialOperators.CONTAINS,284 property,285 value286 });287 }288 case "DWITHIN": {289 let distance = buildTree();290 let value = buildTree();291 const property = buildTree();292 return ({293 type: spatialOperators.DWITHIN,294 value,295 property,296 distance: Number(distance)297 });298 }299 default:300 return null;301 }302 case "GEOMETRY":303 return fromWKT(tok.text);304 default:305 return tok.text;306 }307 }308 let result = buildTree();309 if (postfix.length > 0) {310 let msg = "Remaining tokens after building AST: \n";311 for (let i = postfix.length - 1; i >= 0; i--) {312 msg += postfix[i].type + ": " + postfix[i].text + "\n";313 }314 throw new Error(msg);315 }316 return result;317};318module.exports = {319 /**320 * Parse a CQL filter. returns an object representation of the filter.321 * For the moment this parser doesn't support WKT parsing.322 * Example:...
tree_building_test.py
Source:tree_building_test.py
1import unittest2from tree_building import Record, BuildTree3class TestBuildingTest(unittest.TestCase):4 """5 Record(record_id, parent_id): records given to be processed6 Node(node_id): Node in tree7 BuildTree(records): records as argument and returns tree8 BuildTree should raise ValueError if given records are invalid9 """10 def test_empty_list_input(self):11 records = []12 root = BuildTree(records)13 self.assertIsNone(root)14 def test_one_node(self):15 records = [16 Record(0, 0)17 ]18 root = BuildTree(records)19 self.assert_node_is_leaf(root, node_id=0)20 def test_three_nodes_in_order(self):21 records = [22 Record(0, 0),23 Record(1, 0),24 Record(2, 0)25 ]26 root = BuildTree(records)27 self.assert_node_is_branch(root, node_id=0, children_count=2)28 self.assert_node_is_leaf(root.children[0], node_id=1)29 self.assert_node_is_leaf(root.children[1], node_id=2)30 def test_three_nodes_in_reverse_order(self):31 records = [32 Record(2, 0),33 Record(1, 0),34 Record(0, 0)35 ]36 root = BuildTree(records)37 self.assert_node_is_branch(root, node_id=0, children_count=2)38 self.assert_node_is_leaf(root.children[0], node_id=1)39 self.assert_node_is_leaf(root.children[1], node_id=2)40 def test_more_than_two_children(self):41 records = [42 Record(0, 0),43 Record(1, 0),44 Record(2, 0),45 Record(3, 0)46 ]47 root = BuildTree(records)48 self.assert_node_is_branch(root, node_id=0, children_count=3)49 self.assert_node_is_leaf(root.children[0], node_id=1)50 self.assert_node_is_leaf(root.children[1], node_id=2)51 self.assert_node_is_leaf(root.children[2], node_id=3)52 def test_binary_tree(self):53 records = [54 Record(6, 2),55 Record(0, 0),56 Record(3, 1),57 Record(2, 0),58 Record(4, 1),59 Record(5, 2),60 Record(1, 0)61 ]62 root = BuildTree(records)63 self.assert_node_is_branch(root, 0, 2)64 self.assert_node_is_branch(root.children[0], 1, 2)65 self.assert_node_is_branch(root.children[1], 2, 2)66 self.assert_node_is_leaf(root.children[0].children[0], 3)67 self.assert_node_is_leaf(root.children[0].children[1], 4)68 self.assert_node_is_leaf(root.children[1].children[0], 5)69 self.assert_node_is_leaf(root.children[1].children[1], 6)70 def test_unbalanced_tree(self):71 records = [72 Record(0, 0),73 Record(1, 0),74 Record(2, 0),75 Record(3, 1),76 Record(4, 1),77 Record(5, 1),78 Record(6, 2),79 ]80 root = BuildTree(records)81 self.assert_node_is_branch(root, 0, 2)82 self.assert_node_is_branch(root.children[0], 1, 3)83 self.assert_node_is_branch(root.children[1], 2, 1)84 self.assert_node_is_leaf(root.children[0].children[0], 3)85 self.assert_node_is_leaf(root.children[0].children[1], 4)86 self.assert_node_is_leaf(root.children[0].children[2], 5)87 self.assert_node_is_leaf(root.children[1].children[0], 6)88 def test_root_node_has_parent(self):89 records = [90 Record(0, 1),91 Record(1, 0)92 ]93 # Root parent_id should be equal to record_id(0)94 with self.assertRaisesWithMessage(ValueError):95 BuildTree(records)96 def test_no_root_node(self):97 records = [98 Record(1, 0),99 Record(2, 0)100 ]101 # Record with record_id 0 (root) is missing102 with self.assertRaisesWithMessage(ValueError):103 BuildTree(records)104 def test_non_continuous(self):105 records = [106 Record(2, 0),107 Record(4, 2),108 Record(1, 0),109 Record(0, 0)110 ]111 # Record with record_id 3 is missing112 with self.assertRaisesWithMessage(ValueError):113 BuildTree(records)114 def test_cycle_directly(self):115 records = [116 Record(5, 2),117 Record(3, 2),118 Record(2, 2),119 Record(4, 1),120 Record(1, 0),121 Record(0, 0),122 Record(6, 3)123 ]124 # Cycle caused by Record 2 with parent_id pointing to itself125 with self.assertRaisesWithMessage(ValueError):126 BuildTree(records)127 def test_cycle_indirectly(self):128 records = [129 Record(5, 2),130 Record(3, 2),131 Record(2, 6),132 Record(4, 1),133 Record(1, 0),134 Record(0, 0),135 Record(6, 3)136 ]137 # Cycle caused by Record 2 with parent_id(6) greater than record_id(2)138 with self.assertRaisesWithMessage(ValueError):139 BuildTree(records)140 def test_higher_id_parent_of_lower_id(self):141 records = [142 Record(0, 0),143 Record(2, 0),144 Record(1, 2)145 ]146 # Record 1 have parent_id(2) greater than record_id(1)147 with self.assertRaisesWithMessage(ValueError):148 BuildTree(records)149 def assert_node_is_branch(self, node, node_id, children_count):150 self.assertEqual(node.node_id, node_id)151 self.assertNotEqual(len(node.children), 0)152 self.assertEqual(len(node.children), children_count)153 def assert_node_is_leaf(self, node, node_id):154 self.assertEqual(node.node_id, node_id)155 self.assertEqual(len(node.children), 0)156 # Utility functions157 def setUp(self):158 try:159 self.assertRaisesRegex160 except AttributeError:161 self.assertRaisesRegex = self.assertRaisesRegexp162 def assertRaisesWithMessage(self, exception):163 return self.assertRaisesRegex(exception, r".+")164if __name__ == '__main__':...
config.js
Source:config.js
1/*jslint regexp: true, node: true, nomen: true */2var Config = {3 manifestUrlTemplate: "http://build.webos-ports.org/luneos-%%BUILDTREE%%/manifest.json",4 versionFile: "/etc/luneos-release",5 //regexp to parse webos-release file. Will return:6 //${BUILD_DISTRIB_ID} release ${DISTRO_VERSION}-${BUILD_TREE}-${WEBOS_DISTRO_BUILD_ID} (${WEBOS_DISTRO_RELEASE_CODENAME})7 //where ${WEBOS_DISTRO_BUILD_ID} is ${PLATFORMVERSION}-${BUILD}8 //and BUILD_TREE is one of stable, testing, unstable.9 parseWholeStringRegExp: /([0-9\._\-A-Za-z]+) release ([0-9\.]+)-([A-Za-z\/\-0-9]+)-([0-9]+)-([0-9]+) \(([0-9a-zA-Z_\-\.]+)\)/,10 parseWholeStringIndex: 4,11 parseWholeStringBuildTreeIndex: 3,12 parseWholeStringBuildIndex: 5,13 parseWholeStringCodenameIndex: 6,14 parseOnlyPlatformVersionRegExp: /.*?-([0-9]+)-.*?/,15 //download image:16 downloadPath: "/userdata/luneos-data/",17 downloadFilename: "system-update.zip",18 deviceImagesUrlTemplate: "http://build.webos-ports.org/luneos-%%BUILDTREE%%/device-images.json", //a json that contains the urls of the images to download19 //install update20 rebootToUpdateModeCommand: {cmd: "script", args: ["-q", "-c", "/usr/palm/services/org.webosports.service.update/start-update.sh", "/dev/null"]},21 //misc stuff22 checkUpdateResultsFile: "/tmp/checkUpdateResults.json",23 getDeviceNameCommand: {cmd: "nyx-cmd", args: ["DeviceInfo", "query", "--format=json"] },24 _buildUrl: function (template, buildtree) {25 "use strict";26 if (!buildtree) {27 buildtree = "stable";28 }29 return template.replace("%%BUILDTREE%%", buildtree);30 },31 getManifestUrl: function (buildtree) {32 "use strict";33 return Config._buildUrl(Config.manifestUrlTemplate, buildtree);34 },35 getDeviceImagesUrl: function (buildtree) {36 "use strict";37 return Config._buildUrl(Config.deviceImagesUrlTemplate, buildtree);38 }39};...
sameTree.test.js
Source:sameTree.test.js
...26 */27 describe('Recursive version', function () {28 test('should check if they are the same or not', function () {29 expect(isSameTreeRecursive(null, null)).toEqual(true)30 expect(isSameTreeRecursive(null, buildTree([1]))).toEqual(false)31 expect(isSameTreeRecursive(buildTree([1]), null)).toEqual(false)32 expect(isSameTreeRecursive(buildTree([1, 2, 4]), buildTree([1, 2, 4]))).toEqual(true)33 expect(isSameTreeRecursive(buildTree([1, 2, 4]), buildTree([1, 2, 5]))).toEqual(false)34 expect(isSameTreeRecursive(buildTree([1, 2, 4]), buildTree([1, 2, null, 4, null]))).toEqual(35 false36 )37 })38 })39 describe('Recursive version', function () {40 test('should check if they are the same or not', function () {41 expect(isSameTreeIterative(null, null)).toEqual(true)42 expect(isSameTreeIterative(null, buildTree([1]))).toEqual(false)43 expect(isSameTreeIterative(buildTree([1]), null)).toEqual(false)44 expect(isSameTreeIterative(buildTree([1, 2, 4]), buildTree([1, 2, 4]))).toEqual(true)45 expect(isSameTreeIterative(buildTree([1, 2, 4]), buildTree([1, 2, 5]))).toEqual(false)46 expect(isSameTreeIterative(buildTree([1, 2, 4]), buildTree([1, 2, null, 4, null]))).toEqual(47 false48 )49 })50 })...
preorder.py
Source:preorder.py
...4 self.val = val5 self.left = None6 self.right = None7 8 def buildTree(self,data):9 if data == self.val:10 return11 12 # add in left13 if data < self.val:14 if self.left:15 self.left.buildTree(data)16 else:17 self.left = BuildTree(data)18 19 # add in right20 else:21 if self.right:22 self.right.buildTree(data)23 else:24 self.right = BuildTree(data)25 def preorder(self,root):26 if root:27 print(root.val)28 self.preorder(root.left)29 self.preorder(root.right)30s = BuildTree(10)31s.buildTree(5)32s.buildTree(15)33s.buildTree(3)34s.buildTree(7)35s.buildTree(18)...
Using AI Code Generation
1const { buildTree } = require('playwright/lib/utils/dom');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const html = await page.content();8 const dom = buildTree(html);9 console.log(dom);10 await browser.close();11})();12### `buildTree(html, options)`
Using AI Code Generation
1import { buildTree } from "@playwright/test";2import { test } from "@playwright/test";3import { expect } from "@playwright/test";4test("test", async ({ page }) => {5 const tree = await buildTree(page);6 expect(tree).toMatchSnapshot();7});
Using AI Code Generation
1const { buildTree } = require('@playwright/test/lib/utils/buildTree');2const { test } = require('@playwright/test');3test.describe('test', () => {4 test('test', async ({ page }) => {5 const tree = await buildTree(page, 'body');6 console.log(tree);7 });8});
Using AI Code Generation
1const { chromium } = require('playwright');2const { buildTree } = require('playwright/lib/server/inspector/buildTree');3(async () => {4 const browser = await chromium.launch({ headless: false });5 const context = await browser.newContext();6 const page = await context.newPage();7 await page.click('text=Images');8 const tree = await buildTree(page);9 console.log(JSON.stringify(tree, null, 2));10 await browser.close();11})();
Using AI Code Generation
1const { buildTree } = require('@playwright/test/lib/utils/locator');2const { test, expect } = require('@playwright/test');3test('buildTree', async ({ page }) => {4 await page.setContent('<html><body><div>hello</div></body></html>');5 const div = await page.$('div');6 const tree = buildTree(div);7 expect(tree).toEqual({8 attributes: {},9 {10 attributes: {},11 },12 });13});
Using AI Code Generation
1const { buildTree } = require('@playwright/test/lib/utils/locator');2const { chromium } = require('playwright');3const { test, expect } = require('@playwright/test');4test('test', async ({ page }) => {5 const locator = buildTree(page, 'header >> text=Get started');6 const element = await locator.elementHandle();7 await element.click();8 await page.screenshot({ path: `example.png` });9});
Using AI Code Generation
1const { buildTree } = require('@playwright/test/build/utils/buildTree');2const tree = buildTree({3 import { test } from '@playwright/test';4 test('test', async ({ page }) => {5 });6});7const { runTest } = require('@playwright/test/build/runner');8const result = await runTest(tree.suites[0].specs[0], {9});10const { runCLI } = require('@playwright/test/build/cli/parseArgs');11const result = await runCLI(['--help']);
Using AI Code Generation
1const { buildTree } = require('@playwright/test/lib/utils/traceModel');2const trace = require('./trace.json');3const tree = buildTree(trace);4console.log(JSON.stringify(tree, null, 2));5const { buildTree } = require('@playwright/test/lib/utils/traceModel');6const trace = require('./trace.json');7const tree = buildTree(trace);8console.log(JSON.stringify(tree, null, 2));9const { buildTree } = require('@playwright/test/lib/utils/traceModel');10const trace = require('./trace.json');11const tree = buildTree(trace, {12 filter: (event) => {13 return event.name === 'ResourceSendRequest';14 },15});16console.log(JSON.stringify(tree, null, 2));17const { buildTree } = require('@playwright/test/lib/utils/traceModel');18const trace = require('./trace.json');19const tree = buildTree(trace, {20 filter: (event) => {21 return event.name === 'ResourceSendRequest';22 },23 transform: (event) => {24 return {25 };26 },27});28console.log(JSON.stringify(tree, null, 2));29const { buildTree } = require('@playwright/test/lib/utils/traceModel');30const trace = require('./trace.json');31const tree = buildTree(trace, {32 filter: (event) => {33 return event.name === 'ResourceSendRequest';34 },35 transform: (event, context) => {36 return {37 };38 },39});40console.log(JSON.stringify(tree, null, 2));41const { buildTree } = require('@playwright/test/lib/utils/traceModel');42const trace = require('./trace.json');43const tree = buildTree(trace, {44 filter: (event) => {45 return event.name === 'ResourceSendRequest';46 },47 transform: (event, context, parent) => {48 return {
Using AI Code Generation
1const { buildTree } = require('@playwright/test/lib/utils/inspectorHelper');2const tree = buildTree({3 {4 { title: 'Step 1.1' },5 { title: 'Step 1.2' },6 },7 { title: 'Step 2' },8});9console.log(tree);10[Apache 2.0](LICENSE)
Using AI Code Generation
1const { buildTree } = require('@playwright/test');2const tree = buildTree();3console.log(tree);4interface Test {5 id: string;6 title: string;7 location: string;8 file: string;9 line: number;10 column: number;11 fn: Function;12 timeout: number;13 annotations: Annotation[];14 results: TestResult[];15 retries: number;16 expectedStatus: 'passed' | 'failed' | 'skipped';17 expectedIssues: string[];18 expectedSnapshots: string[];19 slowMo: number;20 repeatEachIndex: number;21 repeatEachIterations: number;22 repeatEachSeparate: boolean;23 isFocused: boolean;24 isFlaky: boolean;25 isExpectedToFail: boolean;26 isExpectedToPass: boolean;27 isSkipped: boolean;28 isSlow: boolean;29 isStable: boolean;30 isTodo: boolean;31 isUnstable: boolean;32 isWorker: boolean;33 isExternal: boolean;34 isFailing: boolean;35 isPassing: boolean;36 isPending: boolean;37 isRetried: boolean;38 isTerminal: boolean;39 isFailed: boolean;40 isFinished: boolean;41 isRunning: boolean;42 isScheduled: boolean;43 isDone: boolean;44 isStarted: boolean;45 isStopped: boolean;46 isTimedOut: boolean;47 isSkipped: boolean;48 isExpected: boolean;49 isUnexpected: boolean;50 isFlaky: boolean;51 isStable: boolean;52 isUnstable: boolean;53 isSlow: boolean;54 isFast: boolean;55 isExpectedToFail: boolean;56 isExpectedToPass: boolean;57 isTodo: boolean;58 isWorker: boolean;59 isExternal: boolean;60 isFailing: boolean;61 isPassing: boolean;62 isPending: boolean;63 isRetried: boolean;64 isTerminal: boolean;65 isFailed: boolean;66 isFinished: boolean;67 isRunning: boolean;68 isScheduled: boolean;
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!