pg-verify 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0582b670fd565351fe5f6f01f34e5dd7358f4fd6f2385ced16d7a487c0b65a8d'
4
- data.tar.gz: ea5556b7831154f0330e96e145be74fba25a31d5a775dc5e6abc5d32eaba9b03
3
+ metadata.gz: 9b580ce77eaa5f2da5c136688b09db56a3397d810188fcfe8480a59bca92760a
4
+ data.tar.gz: 89a4e5af16afc5186326cb12615432cb17d38fb7e986b790b7e061cc53138541
5
5
  SHA512:
6
- metadata.gz: fb81fb19377bda7a3c109a5dfb7ee4174c5d529a3133223b784ff814bc68636487664ed07ce8cc6f39eed1cdf99ebd3e20ac027ab5a19da9416f32f6977a5105
7
- data.tar.gz: 5453f990cda9252b0be7b9e6c0a71ce8f1d8fc77f064ef5f3f6eb29c03dbb1a5a44f370e54b8137398c02c0a3643a9135558ea5c20066684545618ab60f5de94
6
+ metadata.gz: c3d040e30a27cf278ff987157b97abeb045d0cf12d209eacc7f4577e81ca39ae40bff1bff51ffb9581b030f5b28628ca08e84994b554c5ca8ac01773c1a8e4f5
7
+ data.tar.gz: 56f901795a267c9fea53f0a203122767cb50003fc18f510df455de9f3df715421a7b788321d3538f19e3e87ac3b5cac4d6d6e8908db16f935bf5481959197e9b
data/Gemfile.lock CHANGED
@@ -1,9 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pg-verify (0.1.0)
4
+ pg-verify (0.1.1)
5
5
  config (~> 4.2.1)
6
- ebnf (~> 2.3.4)
7
6
  plantuml_builder (~> 0.3.0)
8
7
  rainbow (~> 3.0.0)
9
8
  thor (~> 1.2.1)
@@ -50,21 +49,10 @@ GEM
50
49
  dry-core (~> 0.5, >= 0.5)
51
50
  dry-initializer (~> 3.0)
52
51
  dry-schema (~> 1.8, >= 1.8.0)
53
- ebnf (2.3.4)
54
- htmlentities (~> 4.3)
55
- rdf (~> 3.2)
56
- scanf (~> 1.0)
57
- sxp (~> 1.2)
58
- unicode-types (~> 1.8)
59
- htmlentities (4.3.4)
60
- link_header (0.0.8)
61
- matrix (0.4.2)
62
52
  plantuml_builder (0.3.0)
63
53
  docopt (~> 0.5.0)
64
54
  rainbow (3.0.0)
65
55
  rake (13.0.6)
66
- rdf (3.2.11)
67
- link_header (~> 0.0, >= 0.0.8)
68
56
  rspec (3.12.0)
69
57
  rspec-core (~> 3.12.0)
70
58
  rspec-expectations (~> 3.12.0)
@@ -78,12 +66,7 @@ GEM
78
66
  diff-lcs (>= 1.2.0, < 2.0)
79
67
  rspec-support (~> 3.12.0)
80
68
  rspec-support (3.12.0)
81
- scanf (1.0.0)
82
- sxp (1.2.4)
83
- matrix (~> 0.4)
84
- rdf (~> 3.2)
85
69
  thor (1.2.1)
86
- unicode-types (1.8.0)
87
70
 
88
71
  PLATFORMS
89
72
  x86_64-darwin-19
data/data/banner.txt ADDED
@@ -0,0 +1,5 @@
1
+ ___ _____ _ __ _ ___
2
+ / _ \/ ___/ | | / /__ ____(_) _/_ __
3
+ / ___/ (_ / | |/ / -_) __/ / _/ // /
4
+ /_/ \___/ |___/\__/_/ /_/_/ \_, /
5
+ version 0.1.0 /___/
@@ -93,6 +93,18 @@ module PgVerify
93
93
 
94
94
  class BaseCommand < Thor
95
95
 
96
+ desc "version", "Print version information"
97
+ def version()
98
+ banner = File.read(File.join(PgVerify.root, "data", "banner.txt"))
99
+ banner = banner.gsub("0.1.0", PgVerify::VERSION)
100
+ colors = [ "red", "orange", "yellow", "orange", "red" ]
101
+ banner = banner.split("\n").each_with_index.map { |l, i| l.send(:"c_#{colors[i]}") }.join("\n")
102
+ puts banner
103
+ puts
104
+ puts "You are running #{'pg-verify'.c_string} version #{PgVerify::VERSION.to_s.c_num}"
105
+ puts "Installation root: #{PgVerify.root.to_s.c_file}"
106
+ end
107
+
96
108
  desc "test", "Test the model specifications"
97
109
  method_option :script, :type => :string
98
110
  def test()
@@ -205,6 +217,8 @@ module PgVerify
205
217
  # Copy the actual default config into the project as that
206
218
  # will contain all keys and should be commented
207
219
  FileUtils.cp(File.join(PgVerify.root, "data", "config", "pg-verify.yml"), File.join(target, ".pg-verify.yml"))
220
+ prelude_pg_file = File.join(PgVerify.root, "integration_tests", "ruby_dsl", "016_pressure_tank.rb")
221
+ FileUtils.cp(prelude_pg_file, File.join(target, Settings.ruby_dsl.default_script_name))
208
222
 
209
223
  # Initialize git project
210
224
  Dir.chdir(target) {
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PgVerify
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
data/pg-verify.gemspec CHANGED
@@ -30,7 +30,6 @@ Gem::Specification.new do |spec|
30
30
 
31
31
  # Gem dependencies
32
32
  spec.add_dependency "thor", "~> 1.2.1"
33
- spec.add_dependency "ebnf", "~> 2.3.4"
34
33
  spec.add_dependency "rainbow", "~> 3.0.0"
35
34
  spec.add_dependency "config", "~> 4.2.1"
36
35
  spec.add_dependency "plantuml_builder", "~> 0.3.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg-verify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arian Weber
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.2.1
27
- - !ruby/object:Gem::Dependency
28
- name: ebnf
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: 2.3.4
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 2.3.4
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rainbow
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -97,13 +83,12 @@ files:
97
83
  - bin/pg-verify.rb
98
84
  - bin/setup
99
85
  - calc.ebnf
86
+ - data/banner.txt
100
87
  - data/config/pg-verify.yml
101
88
  - data/nusmv.sample.smv
102
89
  - data/project-template/.gitignore.resource
103
- - data/project-template/.pg-verify.yml
104
90
  - data/project-template/README.md
105
91
  - data/project-template/addon/.keep
106
- - data/project-template/program-graph.rb.resource
107
92
  - devpg
108
93
  - doc/examples/railroad_crossing.rb
109
94
  - doc/examples/train-tree.rb
File without changes
@@ -1,103 +0,0 @@
1
- ####################################################################
2
- # Model definition
3
- ####################################################################
4
-
5
- model :FeelThePain do
6
-
7
- # Define a graph called 'Hand'.
8
- graph :Hand do
9
- # The hand can be touching the fence or be somewhere else
10
- # It starts in 'somewhere' as that state is listed first
11
- states :somewhere, :at_fence
12
-
13
- # Transition non-deterministically between those states
14
- transition :somewhere => :somewhere
15
- transition :somewhere => :at_fence
16
- transition :at_fence => :somewhere
17
- transition :at_fence => :at_fence
18
- end
19
-
20
- # Define another graph called 'PowerSwitch', which also
21
- # transitions non-deterministically.
22
- graph :PowerSwitch do
23
- states :off, :on
24
- transition :off => :off
25
- transition :off => :on
26
- transition :on => :off
27
- transition :on => :on
28
- end
29
-
30
- graph :Fence do
31
- # The fence has no states we are interested in
32
- states :exists
33
-
34
- # The fence has a voltage which can go up to 15
35
- var :voltage => (0..12), init: 0
36
-
37
- # The voltage increases when the power switch is on
38
- transition :exists => :exists do
39
- guard "PowerSwitch == on"
40
- action "voltage := voltage + 1"
41
- end
42
- # ..and instantly stops when the switch is off
43
- transition :exists => :exists do
44
- guard "PowerSwitch == off"
45
- action "voltage := 0"
46
- end
47
-
48
- end
49
-
50
- graph :Pain do
51
- # We can either be in pain or not
52
- states :No, :Yes
53
- # Using regular variables with string interpolation
54
- pain_threshold = 7
55
- transition :No => :Yes do
56
- # action "voltage := 2"
57
- guard "Hand == at_fence && voltage >= #{pain_threshold}"
58
- end
59
- transition :Yes => :No do
60
- guard "Hand == somewhere || voltage < #{pain_threshold}"
61
- end
62
- end
63
-
64
- ####################################################################
65
- # Validity tests
66
- ####################################################################
67
-
68
- # Specification of validity characteristics regarding the hand.
69
- # The 'specify' block serves as a namespace/container for the contained specifications
70
- specify "The Hand" do
71
- # Define some simple specs using a description text and an LTL expression
72
- it "isn't always touching the fence" => :"F Hand == somewhere"
73
- it "isn't always away form the fence" => :"F Hand == at_fence"
74
- end
75
-
76
- # Specification of validity characteristics regarding the pain
77
- specify "The pain" do
78
- # Use a regular LTL Formula as the expression
79
- it "is felt at some point" => :"F Pain == Yes"
80
- # Use a more declarative syntax. This becomes useful for complex expressions
81
- # as LTL patterns can be used very easily
82
- it "is always felt at some point" => ltl.globally.exists(:"Pain == Yes")
83
-
84
- # Pattern: 'Universality', range: 'after q'
85
- it "is felt after the switch is activated" => ltl.after(:"PowerSwitch == on").exists(:"Pain == Yes")
86
- # Pattern: 'Absence', range: 'before q'
87
- it "is never felt before the switch is activated" => ltl.before(:"PowerSwitch == on").never(:"Pain == Yes")
88
- # Pattern: 'Reaction', range: 'global'
89
- it "always reacts to the switch being activated" => ltl.globally.reacts(:"PowerSwitch == on", :"Pain == Yes")
90
-
91
- # Define an assumption. That assumption must be true for all contained specs
92
- assuming "the switch is never activated" => :"G PowerSwitch == off" do
93
- it "is never felt " => :"G Pain == No"
94
- end
95
-
96
- # Assumptions can be nested and used with the declarative syntax.
97
- assuming "the switch is activated" => ltl.globally.exists(:"PowerSwitch == No") do
98
- assuming "the hand never touches the fence" => :"G Hand != at_fence" do
99
- it "is never felt " => :"G Pain == No"
100
- end
101
- end
102
- end
103
- end