test_ids 0.5.0 → 0.5.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
  SHA1:
3
- metadata.gz: bb082e87d6a2fe94daeb06ca7afe3666bab6b9b0
4
- data.tar.gz: c6ea82a1417478b63413bf51e7cd58bfca6fe828
3
+ metadata.gz: afcff07db00bb24f204b83bb988a98630d623642
4
+ data.tar.gz: 7b396dc69641b9375d45ca513709376a40ffe7e9
5
5
  SHA512:
6
- metadata.gz: a24cabcbdf2d02a3ac2f9f0a3575ea0c211939f560ac0f2df4cc14ef9d43c043793fd4a3aaeb248e5f5102fdaf9a54b34a451084820088e5d0722ba67ef868c9
7
- data.tar.gz: 08095b4eaeba91a616ff7cbbccfe1f610ab5e3ea6e9ed6fcdbdb8217e82f32c4eaa72a96a545cc1b166fcfcf155c7dc16d9687e93065c7624b76903022d344ff
6
+ metadata.gz: b940f125fb2e81190a0699a1b9ca9d4566bfc8e3b3b370ecaac57e955175008616f73b6336bcff841295a8a379c5e562c0ed192fb91ee82574df1fb0bbdf94d7
7
+ data.tar.gz: 22eda1e5968da45e985035a3e0a539a8dc0a2396eb7d5da43013d958849d90f98f0f591abc1e6b9681a92817ac524361c58718bdf1b3ee0ea9a2799013704b17
@@ -36,6 +36,10 @@ class TestIdsApplication < Origen::Application
36
36
  #files: ["lib", "config/application.rb"],
37
37
  }
38
38
 
39
+ config.shared = {
40
+ command_launcher: "config/shared_commands.rb"
41
+ }
42
+
39
43
  config.semantically_version = true
40
44
 
41
45
  # An example of how to set application specific LSF parameters
@@ -0,0 +1,16 @@
1
+ # The requested command is passed in here as @command
2
+ case @command
3
+
4
+ when "test_ids:rollback"
5
+ if ARGV[0]
6
+ TestIds::Git.rollback(ARGV[0])
7
+ else
8
+ puts "You must supply a commit ID to rollback to, e.g. origen test_ids:rollback 456ac3f53"
9
+ end
10
+ exit 0
11
+ else
12
+ @plugin_commands << <<-EOT
13
+ test_ids:rollback Rollback the TestIds store to the given commit ID
14
+ EOT
15
+
16
+ end
data/config/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module TestIds
2
2
  MAJOR = 0
3
3
  MINOR = 5
4
- BUGFIX = 0
4
+ BUGFIX = 1
5
5
  DEV = nil
6
6
 
7
7
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
@@ -22,7 +22,7 @@ module TestIds
22
22
  t = store['tests'][name]
23
23
  # If the user has supplied any of these, that number should be used
24
24
  # and reserved so that it is not automatically generated later
25
- if options[:bin]
25
+ if options[:bin] && options[:bin].is_a?(Numeric)
26
26
  t['bin'] = options[:bin]
27
27
  store['manually_assigned']['bin'][options[:bin].to_s] = true
28
28
  # Regenerate the bin if the original allocation has since been applied
@@ -33,7 +33,7 @@ module TestIds
33
33
  t['softbin'] = nil if config.softbins.function?
34
34
  t['number'] = nil if config.numbers.function?
35
35
  end
36
- if options[:softbin]
36
+ if options[:softbin] && options[:softbin].is_a?(Numeric)
37
37
  t['softbin'] = options[:softbin]
38
38
  store['manually_assigned']['softbin'][options[:softbin].to_s] = true
39
39
  elsif store['manually_assigned']['softbin'][t['softbin'].to_s]
@@ -41,7 +41,7 @@ module TestIds
41
41
  # Also regenerate the number as it could be a function of the softbin
42
42
  t['number'] = nil if config.numbers.function?
43
43
  end
44
- if options[:number]
44
+ if options[:number] && options[:number].is_a?(Numeric)
45
45
  t['number'] = options[:number]
46
46
  store['manually_assigned']['number'][options[:number].to_s] = true
47
47
  elsif store['manually_assigned']['number'][t['number'].to_s]
@@ -51,19 +51,16 @@ module TestIds
51
51
  t['bin'] ||= allocate_bin
52
52
  t['softbin'] ||= allocate_softbin(t['bin'])
53
53
  t['number'] ||= allocate_number(t['bin'], t['softbin'])
54
- t['bin'] = nil if t['bin'] == :none
55
- t['softbin'] = nil if t['softbin'] == :none
56
- t['number'] = nil if t['number'] == :none
57
54
  # Record that there has been a reference to the final numbers
58
55
  time = Time.now.to_f
59
- store['references']['bin'][t['bin'].to_s] = time if t['bin']
60
- store['references']['softbin'][t['softbin'].to_s] = time if t['softbin']
61
- store['references']['number'][t['number'].to_s] = time if t['number']
56
+ store['references']['bin'][t['bin'].to_s] = time if t['bin'] && options[:bin] != :none
57
+ store['references']['softbin'][t['softbin'].to_s] = time if t['softbin'] && options[:softbin] != :none
58
+ store['references']['number'][t['number'].to_s] = time if t['number'] && options[:number] != :none
62
59
  # Update the supplied options hash that will be forwarded to the
63
60
  # program generator
64
- options[:bin] = t['bin']
65
- options[:softbin] = t['softbin']
66
- options[:number] = t['number']
61
+ options[:bin] = t['bin'] unless options.delete(:bin) == :none
62
+ options[:softbin] = t['softbin'] unless options.delete(:softbin) == :none
63
+ options[:number] = t['number'] unless options.delete(:number) == :none
67
64
  options
68
65
  end
69
66
 
data/lib/test_ids/git.rb CHANGED
@@ -10,8 +10,66 @@ module TestIds
10
10
  #
11
11
  # An instance of this class is instantiated as TestIds.git
12
12
  class Git
13
+ include Origen::Utility::InputCapture
14
+
13
15
  attr_reader :repo, :local
14
16
 
17
+ class Rollback
18
+ include Origen::Utility::InputCapture
19
+
20
+ def initialize(id)
21
+ repos = Dir.glob("#{Origen.app.imports_dir}/test_ids/*.git")
22
+ if repos.size == 0
23
+ puts 'No TestIds repositories were found in this application'
24
+ elsif repos.size > 1
25
+ puts
26
+ puts 'Multiple TestIDs repositories found, select the one to rollback:'
27
+ puts
28
+ repos.each_with_index do |repo, i|
29
+ puts " #{i} - #{Pathname.new(repo).basename}"
30
+ end
31
+ accept = repos.map.with_index { |r, i| i }
32
+ puts
33
+ selection = repos.size + 1
34
+ until repos[selection]
35
+ selection = get_text(single: true, accept: accept).to_i
36
+ end
37
+ else
38
+ selection = 0
39
+ end
40
+ name = Pathname.new(repos[selection]).basename.to_s
41
+ repo = ::Git.open(repos[selection])
42
+ begin
43
+ commit = repo.object(id)
44
+ rescue ::Git::GitExecuteError
45
+ puts 'The given commit ID cannot be found in that repository'
46
+ exit
47
+ end
48
+ day = 24 * 60 * 60
49
+ if commit.date < Time.now - (7 * day)
50
+ puts "Sorry, that commit is more than a week old and I'm too scared to rollback that far."
51
+ puts 'You will need to do that manually if you must.'
52
+ exit
53
+ end
54
+ puts
55
+ puts "About to rollback the TestIds repository #{name} to commit #{id}."
56
+ puts
57
+ puts 'This will permanently delete any IDs assigned by anyone, anywhere, since that commit.'
58
+ puts
59
+ puts 'ARE YOU SURE YOU KNOW WHAT YOU ARE DOING?'
60
+ puts
61
+ get_text(confirm: true, default: 'no')
62
+ repo.reset_hard(id)
63
+ repo.push('origin', 'master', force: true)
64
+ puts 'As you wish, rolled back successfully!'
65
+ end
66
+ end
67
+
68
+ def self.rollback(id)
69
+ # Implemented as a class as a hack to get access to InputCapture
70
+ Rollback.new(id)
71
+ end
72
+
15
73
  def initialize(options)
16
74
  unless File.exist?("#{options[:local]}/.git")
17
75
  FileUtils.rm_rf(options[:local]) if File.exist?(options[:local])
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_ids
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen McGinty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-16 00:00:00.000000000 Z
11
+ date: 2017-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: origen
@@ -62,6 +62,7 @@ files:
62
62
  - config/application.rb
63
63
  - config/boot.rb
64
64
  - config/commands.rb
65
+ - config/shared_commands.rb
65
66
  - config/version.rb
66
67
  - lib/tasks/test_ids.rake
67
68
  - lib/test_ids.rb