From d69aa96f23d4b7cb897b6000de0703a1d63f1479 Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Wed, 10 Feb 2021 14:59:54 +0100 Subject: [PATCH] More tests --- .../dataflow/local/DataflowStep.expected | 15 ++++++++++ .../dataflow/local/local_dataflow.rb | 28 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/ql/test/library-tests/dataflow/local/DataflowStep.expected b/ql/test/library-tests/dataflow/local/DataflowStep.expected index d877f7a867b..3c8f5cfd3a1 100644 --- a/ql/test/library-tests/dataflow/local/DataflowStep.expected +++ b/ql/test/library-tests/dataflow/local/DataflowStep.expected @@ -31,3 +31,18 @@ | local_dataflow.rb:20:17:20:21 | break | local_dataflow.rb:19:1:21:3 | for ... in ... | | local_dataflow.rb:24:2:24:8 | break | local_dataflow.rb:23:1:25:3 | while ... | | local_dataflow.rb:24:8:24:8 | 5 | local_dataflow.rb:24:2:24:8 | break | +| local_dataflow.rb:28:5:28:26 | M | local_dataflow.rb:28:1:28:26 | ... = ... | +| local_dataflow.rb:28:15:28:22 | module | local_dataflow.rb:28:5:28:26 | M | +| local_dataflow.rb:30:5:30:24 | C | local_dataflow.rb:30:1:30:24 | ... = ... | +| local_dataflow.rb:30:14:30:20 | class | local_dataflow.rb:30:5:30:24 | C | +| local_dataflow.rb:32:5:32:25 | bar | local_dataflow.rb:32:1:32:25 | ... = ... | +| local_dataflow.rb:32:5:32:25 | bar | local_dataflow.rb:32:1:32:25 | ... = ... | +| local_dataflow.rb:34:7:34:7 | x | local_dataflow.rb:35:6:35:6 | x | +| local_dataflow.rb:36:13:36:13 | 7 | local_dataflow.rb:36:6:36:13 | return | +| local_dataflow.rb:41:7:41:7 | x | local_dataflow.rb:42:6:42:6 | x | +| local_dataflow.rb:43:13:43:13 | 7 | local_dataflow.rb:43:6:43:13 | return | +| local_dataflow.rb:45:10:45:10 | 6 | local_dataflow.rb:45:3:45:10 | return | +| local_dataflow.rb:49:3:53:3 | | local_dataflow.rb:50:18:50:18 | x | +| local_dataflow.rb:50:8:50:13 | next | local_dataflow.rb:50:3:50:13 | next | +| local_dataflow.rb:50:18:50:18 | x | local_dataflow.rb:51:20:51:20 | x | +| local_dataflow.rb:51:9:51:15 | break | local_dataflow.rb:51:3:51:15 | break | diff --git a/ql/test/library-tests/dataflow/local/local_dataflow.rb b/ql/test/library-tests/dataflow/local/local_dataflow.rb index b212fa9ce16..27fc5f4d841 100644 --- a/ql/test/library-tests/dataflow/local/local_dataflow.rb +++ b/ql/test/library-tests/dataflow/local/local_dataflow.rb @@ -23,3 +23,31 @@ end while true break 5 end + +# string flows to x +x = module M; "module" end +# string flows to x +x = class C; "class" end +# string does not flow to x because "def" evaluates to a method symbol +x = def bar; "method" end + +def m x + if x == 4 + return 7 + end + "reachable" +end + +def m x + if x == 4 + return 7 + end + return 6 + "unreachable" +end + +m do + next "next" if x < 4 + break "break" if x < 9 + "normal" +end