tdx 0.1 → 0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.rubocop.yml +9 -1
 - data/bin/tdx +16 -44
 - data/features/cli.feature +1 -2
 - data/lib/tdx/base.rb +56 -15
 - data/lib/tdx/version.rb +1 -1
 - data/tdx.gemspec +3 -1
 - data/test/test_tdx.rb +15 -7
 - metadata +31 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 75b7cfed6e48c402e1cedd1ab7ce10c236ebeacf
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 637915bd109fd8cdf192ac58f3019cf114dc3ca2
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 357dbf0825dd394eb54c29a6ed89dedaa5d076f16cf5c5e3e2130bceb1ac4963fe389b2718f6f5a83f41da96527e662beb01063074ef42599b4181b7de7c8eb9
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 7c79c8861cfb785ecca4d1da8dbe76675be1e730ffa2530d86a868feb81b468b4abd890ffeed38bcec8dacbe4d95ece15f567bca4ed550ec42f638e8badbd3d1
         
     | 
    
        data/.rubocop.yml
    CHANGED
    
    | 
         @@ -6,4 +6,12 @@ Metrics/MethodLength: 
     | 
|
| 
       6 
6 
     | 
    
         
             
            Metrics/ClassLength:
         
     | 
| 
       7 
7 
     | 
    
         
             
              Max: 150
         
     | 
| 
       8 
8 
     | 
    
         
             
            Metrics/AbcSize:
         
     | 
| 
       9 
     | 
    
         
            -
              Max:  
     | 
| 
      
 9 
     | 
    
         
            +
              Max: 50
         
     | 
| 
      
 10 
     | 
    
         
            +
            Style/MultilineMethodCallIndentation:
         
     | 
| 
      
 11 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 12 
     | 
    
         
            +
            Style/IndentationWidth:
         
     | 
| 
      
 13 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 14 
     | 
    
         
            +
            Style/ElseAlignment:
         
     | 
| 
      
 15 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 16 
     | 
    
         
            +
            Lint/EndAlignment:
         
     | 
| 
      
 17 
     | 
    
         
            +
              Enabled: false
         
     | 
    
        data/bin/tdx
    CHANGED
    
    | 
         @@ -28,46 +28,17 @@ require 'tdx' 
     | 
|
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
            args = ARGV
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
            opts = Slop.parse(args, strict: true, help: true) do
         
     | 
| 
       32 
     | 
    
         
            -
              banner "Usage (#{TDX::VERSION}): tdx [options]"
         
     | 
| 
       33 
     | 
    
         
            -
               
     | 
| 
       34 
     | 
    
         
            -
               
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                ' 
     | 
| 
       37 
     | 
    
         
            -
                'Repository URI, e.g. "git@github.com:yegor256/tdx.git"',
         
     | 
| 
       38 
     | 
    
         
            -
                type: String,
         
     | 
| 
       39 
     | 
    
         
            -
                argument: :required,
         
     | 
| 
       40 
     | 
    
         
            -
                limit: 1
         
     | 
| 
       41 
     | 
    
         
            -
              )
         
     | 
| 
       42 
     | 
    
         
            -
              on(
         
     | 
| 
       43 
     | 
    
         
            -
                'tests',
         
     | 
| 
      
 31 
     | 
    
         
            +
            opts = Slop.parse(args, strict: true, help: true) do |o|
         
     | 
| 
      
 32 
     | 
    
         
            +
              o.banner = "Usage (#{TDX::VERSION}): tdx [options] <GitHub URI> <SVG path>"
         
     | 
| 
      
 33 
     | 
    
         
            +
              o.bool '-h', '--help', 'Show usage summary'
         
     | 
| 
      
 34 
     | 
    
         
            +
              o.bool '-v', '--version', 'Show current version'
         
     | 
| 
      
 35 
     | 
    
         
            +
              o.array(
         
     | 
| 
      
 36 
     | 
    
         
            +
                '--tests',
         
     | 
| 
       44 
37 
     | 
    
         
             
                'Comma-separated list of relative paths with test-related files',
         
     | 
| 
       45 
     | 
    
         
            -
                 
     | 
| 
       46 
     | 
    
         
            -
                argument: :required,
         
     | 
| 
       47 
     | 
    
         
            -
                limit: 1
         
     | 
| 
       48 
     | 
    
         
            -
              )
         
     | 
| 
       49 
     | 
    
         
            -
              on(
         
     | 
| 
       50 
     | 
    
         
            -
                'login',
         
     | 
| 
       51 
     | 
    
         
            -
                'GitHub login',
         
     | 
| 
       52 
     | 
    
         
            -
                argument: :required,
         
     | 
| 
       53 
     | 
    
         
            -
                type: String,
         
     | 
| 
       54 
     | 
    
         
            -
                limit: 1
         
     | 
| 
       55 
     | 
    
         
            -
              )
         
     | 
| 
       56 
     | 
    
         
            -
              on(
         
     | 
| 
       57 
     | 
    
         
            -
                'password',
         
     | 
| 
       58 
     | 
    
         
            -
                'GitHub password',
         
     | 
| 
       59 
     | 
    
         
            -
                argument: :required,
         
     | 
| 
       60 
     | 
    
         
            -
                type: String,
         
     | 
| 
       61 
     | 
    
         
            -
                limit: 1
         
     | 
| 
       62 
     | 
    
         
            -
              )
         
     | 
| 
       63 
     | 
    
         
            -
              on(
         
     | 
| 
       64 
     | 
    
         
            -
                's',
         
     | 
| 
       65 
     | 
    
         
            -
                'svg',
         
     | 
| 
       66 
     | 
    
         
            -
                'Full path of the SVG file to generate (STDOUT otherwise)',
         
     | 
| 
       67 
     | 
    
         
            -
                argument: :required,
         
     | 
| 
       68 
     | 
    
         
            -
                type: String,
         
     | 
| 
       69 
     | 
    
         
            -
                limit: 1
         
     | 
| 
      
 38 
     | 
    
         
            +
                delimiter: ','
         
     | 
| 
       70 
39 
     | 
    
         
             
              )
         
     | 
| 
      
 40 
     | 
    
         
            +
              o.string '--login', 'GitHub login'
         
     | 
| 
      
 41 
     | 
    
         
            +
              o.string '--password', 'GitHub password'
         
     | 
| 
       71 
42 
     | 
    
         
             
            end
         
     | 
| 
       72 
43 
     | 
    
         | 
| 
       73 
44 
     | 
    
         
             
            if opts.help?
         
     | 
| 
         @@ -80,11 +51,12 @@ if opts.version? 
     | 
|
| 
       80 
51 
     | 
    
         
             
              exit
         
     | 
| 
       81 
52 
     | 
    
         
             
            end
         
     | 
| 
       82 
53 
     | 
    
         | 
| 
      
 54 
     | 
    
         
            +
            if opts.arguments.length < 2
         
     | 
| 
      
 55 
     | 
    
         
            +
              puts 'URI and SVG path are required'
         
     | 
| 
      
 56 
     | 
    
         
            +
              exit
         
     | 
| 
      
 57 
     | 
    
         
            +
            end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
       83 
59 
     | 
    
         
             
            Encoding.default_external = Encoding::UTF_8
         
     | 
| 
       84 
60 
     | 
    
         
             
            Encoding.default_internal = Encoding::UTF_8
         
     | 
| 
       85 
     | 
    
         
            -
            output = TDX::Base.new(opts).svg
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
              File.new(opts[:svg], 'w') << output
         
     | 
| 
       88 
     | 
    
         
            -
            else
         
     | 
| 
       89 
     | 
    
         
            -
              puts output
         
     | 
| 
       90 
     | 
    
         
            -
            end
         
     | 
| 
      
 61 
     | 
    
         
            +
            output = TDX::Base.new(opts.arguments[0], opts).svg
         
     | 
| 
      
 62 
     | 
    
         
            +
            File.new(opts.arguments[1], 'w') << output
         
     | 
    
        data/features/cli.feature
    CHANGED
    
    | 
         @@ -13,8 +13,7 @@ Feature: Command Line Processing 
     | 
|
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
              Scenario: Simple SVG is built
         
     | 
| 
       15 
15 
     | 
    
         
             
                Given I have a Git repository in ./repo
         
     | 
| 
       16 
     | 
    
         
            -
                When I run bin/tdx with " 
     | 
| 
       17 
     | 
    
         
            -
                Then Stdout is empty
         
     | 
| 
      
 16 
     | 
    
         
            +
                When I run bin/tdx with "file://$(pwd)/repo pic.svg"
         
     | 
| 
       18 
17 
     | 
    
         
             
                Then Exit code is zero
         
     | 
| 
       19 
18 
     | 
    
         
             
                And SVG is valid in "pic.svg"
         
     | 
| 
       20 
19 
     | 
    
         | 
    
        data/lib/tdx/base.rb
    CHANGED
    
    | 
         @@ -20,8 +20,11 @@ 
     | 
|
| 
       20 
20 
     | 
    
         
             
            # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
         
     | 
| 
       21 
21 
     | 
    
         
             
            # SOFTWARE.
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
      
 23 
     | 
    
         
            +
            require 'date'
         
     | 
| 
       23 
24 
     | 
    
         
             
            require 'yaml'
         
     | 
| 
      
 25 
     | 
    
         
            +
            require 'octokit'
         
     | 
| 
       24 
26 
     | 
    
         
             
            require 'fileutils'
         
     | 
| 
      
 27 
     | 
    
         
            +
            require 'English'
         
     | 
| 
       25 
28 
     | 
    
         | 
| 
       26 
29 
     | 
    
         
             
            # TDX main module.
         
     | 
| 
       27 
30 
     | 
    
         
             
            # Author:: Yegor Bugayenko (yegor256@gmail.com)
         
     | 
| 
         @@ -30,12 +33,13 @@ require 'fileutils' 
     | 
|
| 
       30 
33 
     | 
    
         
             
            module TDX
         
     | 
| 
       31 
34 
     | 
    
         
             
              # Base class
         
     | 
| 
       32 
35 
     | 
    
         
             
              class Base
         
     | 
| 
       33 
     | 
    
         
            -
                def initialize(opts)
         
     | 
| 
      
 36 
     | 
    
         
            +
                def initialize(uri, opts)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  @uri = uri
         
     | 
| 
       34 
38 
     | 
    
         
             
                  @opts = opts
         
     | 
| 
       35 
39 
     | 
    
         
             
                end
         
     | 
| 
       36 
40 
     | 
    
         | 
| 
       37 
41 
     | 
    
         
             
                def svg
         
     | 
| 
       38 
     | 
    
         
            -
                  dat = Tempfile.new('tdx 
     | 
| 
      
 42 
     | 
    
         
            +
                  dat = Tempfile.new('tdx')
         
     | 
| 
       39 
43 
     | 
    
         
             
                  version = `git --version`.split(/ /)[2]
         
     | 
| 
       40 
44 
     | 
    
         
             
                  raise "git version #{version} is too old, upgrade it to 2.0+" unless
         
     | 
| 
       41 
45 
     | 
    
         
             
                    Gem::Version.new(version) >= Gem::Version.new('2.0')
         
     | 
| 
         @@ -45,13 +49,17 @@ module TDX 
     | 
|
| 
       45 
49 
     | 
    
         
             
                    .split(/\n/)
         
     | 
| 
       46 
50 
     | 
    
         
             
                    .map { |c| c.split(' ') }
         
     | 
| 
       47 
51 
     | 
    
         
             
                  issues = issues(commits)
         
     | 
| 
      
 52 
     | 
    
         
            +
                  puts "Date\t\tTest\tHoC\tFiles\tLoC\tIssues\tSHA"
         
     | 
| 
       48 
53 
     | 
    
         
             
                  commits.each do |sha, date|
         
     | 
| 
       49 
54 
     | 
    
         
             
                    `cd "#{path}" && git checkout --quiet #{sha}`
         
     | 
| 
       50 
     | 
    
         
            -
                     
     | 
| 
       51 
     | 
    
         
            -
                     
     | 
| 
      
 55 
     | 
    
         
            +
                    raise 'Failed to checkout' unless $CHILD_STATUS.exitstatus == 0
         
     | 
| 
      
 56 
     | 
    
         
            +
                    line = "#{date[0, 10]}\t#{tests(path)}\t#{hoc(path)}\t#{files(path)}\t\
         
     | 
| 
      
 57 
     | 
    
         
            +
            #{loc(path)}\t#{issues[sha]}\t#{sha[0, 7]}"
         
     | 
| 
      
 58 
     | 
    
         
            +
                    dat << "#{line}\n"
         
     | 
| 
      
 59 
     | 
    
         
            +
                    puts line
         
     | 
| 
       52 
60 
     | 
    
         
             
                  end
         
     | 
| 
       53 
61 
     | 
    
         
             
                  dat.close
         
     | 
| 
       54 
     | 
    
         
            -
                  svg = Tempfile.new('tdx 
     | 
| 
      
 62 
     | 
    
         
            +
                  svg = Tempfile.new('tdx')
         
     | 
| 
       55 
63 
     | 
    
         
             
                  gpi = [
         
     | 
| 
       56 
64 
     | 
    
         
             
                    "set output \"#{svg.path}\"",
         
     | 
| 
       57 
65 
     | 
    
         
             
                    'set terminal svg size 700, 260',
         
     | 
| 
         @@ -64,10 +72,17 @@ module TDX 
     | 
|
| 
       64 
72 
     | 
    
         
             
                    'set autoscale',
         
     | 
| 
       65 
73 
     | 
    
         
             
                    'set style fill solid',
         
     | 
| 
       66 
74 
     | 
    
         
             
                    'set boxwidth 0.75 relative',
         
     | 
| 
       67 
     | 
    
         
            -
                     
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
      
 75 
     | 
    
         
            +
                    [
         
     | 
| 
      
 76 
     | 
    
         
            +
                      "plot \"#{dat.path}\" using 1:2 with boxes",
         
     | 
| 
      
 77 
     | 
    
         
            +
                      'title "Test HoC" linecolor rgb "#81b341"',
         
     | 
| 
      
 78 
     | 
    
         
            +
                      ', "" using 1:3 with boxes title "HoC" linecolor rgb "red"',
         
     | 
| 
      
 79 
     | 
    
         
            +
                      ', "" using 1:4 with boxes title "Files" linecolor rgb "black"',
         
     | 
| 
      
 80 
     | 
    
         
            +
                      ', "" using 1:5 with boxes title "LoC" linecolor rgb "cyan"',
         
     | 
| 
      
 81 
     | 
    
         
            +
                      ', "" using 1:6 with boxes title "Issues" linecolor rgb "orange"'
         
     | 
| 
      
 82 
     | 
    
         
            +
                    ].join(' ')
         
     | 
| 
       69 
83 
     | 
    
         
             
                  ]
         
     | 
| 
       70 
     | 
    
         
            -
                  `gnuplot -e '#{gpi.join(';')}' 
     | 
| 
      
 84 
     | 
    
         
            +
                  `gnuplot -e '#{gpi.join('; ')}'`
         
     | 
| 
      
 85 
     | 
    
         
            +
                  raise 'Failed to run Gnuplot' unless $CHILD_STATUS.exitstatus == 0
         
     | 
| 
       71 
86 
     | 
    
         
             
                  FileUtils.rm_rf(path)
         
     | 
| 
       72 
87 
     | 
    
         
             
                  File.delete(dat)
         
     | 
| 
       73 
88 
     | 
    
         
             
                  xml = File.read(svg)
         
     | 
| 
         @@ -79,7 +94,12 @@ title \"Test HoC\" linecolor rgb \"#81b341\"" 
     | 
|
| 
       79 
94 
     | 
    
         | 
| 
       80 
95 
     | 
    
         
             
                def checkout
         
     | 
| 
       81 
96 
     | 
    
         
             
                  dir = Dir.mktmpdir
         
     | 
| 
       82 
     | 
    
         
            -
                  `cd #{dir} && git clone --quiet #{@ 
     | 
| 
      
 97 
     | 
    
         
            +
                  `cd #{dir} && git clone --quiet #{@uri} .`
         
     | 
| 
      
 98 
     | 
    
         
            +
                  raise 'Failed to clone repository' unless $CHILD_STATUS.exitstatus == 0
         
     | 
| 
      
 99 
     | 
    
         
            +
                  size = Dir.glob(File.join(dir, '**/*'))
         
     | 
| 
      
 100 
     | 
    
         
            +
                    .map(&:size)
         
     | 
| 
      
 101 
     | 
    
         
            +
                    .inject(0) { |a, e| a + e }
         
     | 
| 
      
 102 
     | 
    
         
            +
                  puts "Cloned #{@uri} (#{size / 1024}Kb) into temporary directory"
         
     | 
| 
       83 
103 
     | 
    
         
             
                  dir
         
     | 
| 
       84 
104 
     | 
    
         
             
                end
         
     | 
| 
       85 
105 
     | 
    
         | 
| 
         @@ -88,7 +108,8 @@ title \"Test HoC\" linecolor rgb \"#81b341\"" 
     | 
|
| 
       88 
108 
     | 
    
         
             
                end
         
     | 
| 
       89 
109 
     | 
    
         | 
| 
       90 
110 
     | 
    
         
             
                def loc(path)
         
     | 
| 
       91 
     | 
    
         
            -
                  cloc = `cd "#{path}" && cloc . --yaml --quiet 
     | 
| 
      
 111 
     | 
    
         
            +
                  cloc = `cd "#{path}" && cloc . --yaml --quiet`
         
     | 
| 
      
 112 
     | 
    
         
            +
                  raise 'Failed to run cloc' unless $CHILD_STATUS.exitstatus == 0
         
     | 
| 
       92 
113 
     | 
    
         
             
                  yaml = YAML.load(cloc)
         
     | 
| 
       93 
114 
     | 
    
         
             
                  if yaml
         
     | 
| 
       94 
115 
     | 
    
         
             
                    yaml['SUM']['code']
         
     | 
| 
         @@ -98,17 +119,37 @@ title \"Test HoC\" linecolor rgb \"#81b341\"" 
     | 
|
| 
       98 
119 
     | 
    
         
             
                end
         
     | 
| 
       99 
120 
     | 
    
         | 
| 
       100 
121 
     | 
    
         
             
                def hoc(path)
         
     | 
| 
       101 
     | 
    
         
            -
                  `cd "#{path}" && hoc`
         
     | 
| 
      
 122 
     | 
    
         
            +
                  hoc = `cd "#{path}" && hoc`
         
     | 
| 
      
 123 
     | 
    
         
            +
                  raise 'Failed to run hoc' unless $CHILD_STATUS.exitstatus == 0
         
     | 
| 
      
 124 
     | 
    
         
            +
                  hoc
         
     | 
| 
       102 
125 
     | 
    
         
             
                end
         
     | 
| 
       103 
126 
     | 
    
         | 
| 
       104 
127 
     | 
    
         
             
                def tests(path)
         
     | 
| 
       105 
     | 
    
         
            -
                  `cd "#{path}" && hoc`
         
     | 
| 
      
 128 
     | 
    
         
            +
                  hoc = `cd "#{path}" && hoc`
         
     | 
| 
      
 129 
     | 
    
         
            +
                  raise 'Failed to run hoc' unless $CHILD_STATUS.exitstatus == 0
         
     | 
| 
      
 130 
     | 
    
         
            +
                  hoc
         
     | 
| 
       106 
131 
     | 
    
         
             
                end
         
     | 
| 
       107 
132 
     | 
    
         | 
| 
       108 
133 
     | 
    
         
             
                def issues(commits)
         
     | 
| 
       109 
     | 
    
         
            -
                  dates =  
     | 
| 
       110 
     | 
    
         
            -
             
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
      
 134 
     | 
    
         
            +
                  dates = if @uri.include?('github.com')
         
     | 
| 
      
 135 
     | 
    
         
            +
                    client = if @opts[:login]
         
     | 
| 
      
 136 
     | 
    
         
            +
                      Octokit::Client.new(login: @opts[:login], password: @opts[:password])
         
     | 
| 
      
 137 
     | 
    
         
            +
                    else
         
     | 
| 
      
 138 
     | 
    
         
            +
                      Octokit::Client.new
         
     | 
| 
      
 139 
     | 
    
         
            +
                    end
         
     | 
| 
      
 140 
     | 
    
         
            +
                    repo = if @uri.start_with?('git@')
         
     | 
| 
      
 141 
     | 
    
         
            +
                      @uri.gsub(/^git@github\.com:|\.git$/, '')
         
     | 
| 
      
 142 
     | 
    
         
            +
                    else
         
     | 
| 
      
 143 
     | 
    
         
            +
                      @uri.gsub(%r{^https://github\.com/|\.git$}, '')
         
     | 
| 
      
 144 
     | 
    
         
            +
                    end
         
     | 
| 
      
 145 
     | 
    
         
            +
                    client.list_issues(repo, state: :all).map(&:created_at)
         
     | 
| 
      
 146 
     | 
    
         
            +
                  else
         
     | 
| 
      
 147 
     | 
    
         
            +
                    []
         
     | 
| 
      
 148 
     | 
    
         
            +
                  end
         
     | 
| 
      
 149 
     | 
    
         
            +
                  commits.map do |sha, date|
         
     | 
| 
      
 150 
     | 
    
         
            +
                    iso = Time.parse(date)
         
     | 
| 
      
 151 
     | 
    
         
            +
                    [sha, dates.select { |d| d < iso }.size]
         
     | 
| 
      
 152 
     | 
    
         
            +
                  end.to_h
         
     | 
| 
       112 
153 
     | 
    
         
             
                end
         
     | 
| 
       113 
154 
     | 
    
         
             
              end
         
     | 
| 
       114 
155 
     | 
    
         
             
            end
         
     | 
    
        data/lib/tdx/version.rb
    CHANGED
    
    
    
        data/tdx.gemspec
    CHANGED
    
    | 
         @@ -44,11 +44,13 @@ Gem::Specification.new do |s| 
     | 
|
| 
       44 
44 
     | 
    
         
             
              s.test_files = s.files.grep(%r{^(test|spec|features)/})
         
     | 
| 
       45 
45 
     | 
    
         
             
              s.rdoc_options = ['--charset=UTF-8']
         
     | 
| 
       46 
46 
     | 
    
         
             
              s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
         
     | 
| 
       47 
     | 
    
         
            -
              s.add_runtime_dependency 'slop', '~> 
     | 
| 
      
 47 
     | 
    
         
            +
              s.add_runtime_dependency 'slop', '~>4.4.1'
         
     | 
| 
      
 48 
     | 
    
         
            +
              s.add_runtime_dependency 'octokit', '~>4.6.2'
         
     | 
| 
       48 
49 
     | 
    
         
             
              s.add_development_dependency 'rake', '12.0.0'
         
     | 
| 
       49 
50 
     | 
    
         
             
              s.add_development_dependency 'cucumber', '1.3.17'
         
     | 
| 
       50 
51 
     | 
    
         
             
              s.add_development_dependency 'coveralls', '0.7.2'
         
     | 
| 
       51 
52 
     | 
    
         
             
              s.add_development_dependency 'rubocop', '0.41.2'
         
     | 
| 
      
 53 
     | 
    
         
            +
              s.add_development_dependency 'hoc', '0.8'
         
     | 
| 
       52 
54 
     | 
    
         
             
              s.add_development_dependency 'rubocop-rspec', '1.5.1'
         
     | 
| 
       53 
55 
     | 
    
         
             
              s.add_development_dependency 'minitest', '5.10.1'
         
     | 
| 
       54 
56 
     | 
    
         
             
              s.add_development_dependency 'nokogiri', '1.7.0.1'
         
     | 
    
        data/test/test_tdx.rb
    CHANGED
    
    | 
         @@ -35,7 +35,6 @@ class TestPDD < Minitest::Test 
     | 
|
| 
       35 
35 
     | 
    
         
             
                Dir.mktmpdir 'test' do |dir|
         
     | 
| 
       36 
36 
     | 
    
         
             
                  opts = opts(
         
     | 
| 
       37 
37 
     | 
    
         
             
                    [
         
     | 
| 
       38 
     | 
    
         
            -
                      '--repo', "file:///#{File.join(dir, 'repo')}",
         
     | 
| 
       39 
38 
     | 
    
         
             
                      '--tests', 'tests'
         
     | 
| 
       40 
39 
     | 
    
         
             
                    ]
         
     | 
| 
       41 
40 
     | 
    
         
             
                  )
         
     | 
| 
         @@ -51,18 +50,27 @@ class TestPDD < Minitest::Test 
     | 
|
| 
       51 
50 
     | 
    
         
             
                    mkdir tests
         
     | 
| 
       52 
51 
     | 
    
         
             
                    echo 'c = 3' > tests/3.py && git add tests/3.py && git commit -qam '3'
         
     | 
| 
       53 
52 
     | 
    
         
             
                  ")
         
     | 
| 
       54 
     | 
    
         
            -
                  assert( 
     | 
| 
      
 53 
     | 
    
         
            +
                  assert(
         
     | 
| 
      
 54 
     | 
    
         
            +
                    TDX::Base.new(
         
     | 
| 
      
 55 
     | 
    
         
            +
                      "file:///#{File.join(dir, 'repo')}", opts
         
     | 
| 
      
 56 
     | 
    
         
            +
                    ).svg.include?('<path ')
         
     | 
| 
      
 57 
     | 
    
         
            +
                  )
         
     | 
| 
       55 
58 
     | 
    
         
             
                end
         
     | 
| 
       56 
59 
     | 
    
         
             
              end
         
     | 
| 
       57 
60 
     | 
    
         | 
| 
      
 61 
     | 
    
         
            +
              def test_real_github_repo
         
     | 
| 
      
 62 
     | 
    
         
            +
                assert(
         
     | 
| 
      
 63 
     | 
    
         
            +
                  TDX::Base.new(
         
     | 
| 
      
 64 
     | 
    
         
            +
                    'https://github.com/yegor256/tdx.git', opts([])
         
     | 
| 
      
 65 
     | 
    
         
            +
                  ).svg.include?('<path ')
         
     | 
| 
      
 66 
     | 
    
         
            +
                )
         
     | 
| 
      
 67 
     | 
    
         
            +
              end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
       58 
69 
     | 
    
         
             
              private
         
     | 
| 
       59 
70 
     | 
    
         | 
| 
       60 
71 
     | 
    
         
             
              def opts(args)
         
     | 
| 
       61 
     | 
    
         
            -
                Slop.parse args do
         
     | 
| 
       62 
     | 
    
         
            -
                   
     | 
| 
       63 
     | 
    
         
            -
                  on 's', 'svg', argument: :required
         
     | 
| 
       64 
     | 
    
         
            -
                  on 'r', 'repo', argument: :required
         
     | 
| 
       65 
     | 
    
         
            -
                  on 't', 'tests', argument: :required
         
     | 
| 
      
 72 
     | 
    
         
            +
                Slop.parse args do |o|
         
     | 
| 
      
 73 
     | 
    
         
            +
                  o.string '-t', '--tests', argument: :required
         
     | 
| 
       66 
74 
     | 
    
         
             
                end
         
     | 
| 
       67 
75 
     | 
    
         
             
              end
         
     | 
| 
       68 
76 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: tdx
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: '0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: '0.2'
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Yegor Bugayenko
         
     | 
| 
         @@ -16,14 +16,28 @@ dependencies: 
     | 
|
| 
       16 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       17 
17 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       18 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
     | 
    
         
            -
                    version:  
     | 
| 
      
 19 
     | 
    
         
            +
                    version: 4.4.1
         
     | 
| 
       20 
20 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       21 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       22 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       24 
24 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
     | 
    
         
            -
                    version:  
     | 
| 
      
 26 
     | 
    
         
            +
                    version: 4.4.1
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: octokit
         
     | 
| 
      
 29 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: 4.6.2
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 37 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 39 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 40 
     | 
    
         
            +
                    version: 4.6.2
         
     | 
| 
       27 
41 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
42 
     | 
    
         
             
              name: rake
         
     | 
| 
       29 
43 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -80,6 +94,20 @@ dependencies: 
     | 
|
| 
       80 
94 
     | 
    
         
             
                - - '='
         
     | 
| 
       81 
95 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       82 
96 
     | 
    
         
             
                    version: 0.41.2
         
     | 
| 
      
 97 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 98 
     | 
    
         
            +
              name: hoc
         
     | 
| 
      
 99 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 100 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 101 
     | 
    
         
            +
                - - '='
         
     | 
| 
      
 102 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 103 
     | 
    
         
            +
                    version: '0.8'
         
     | 
| 
      
 104 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 105 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 106 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 107 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 108 
     | 
    
         
            +
                - - '='
         
     | 
| 
      
 109 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 110 
     | 
    
         
            +
                    version: '0.8'
         
     | 
| 
       83 
111 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       84 
112 
     | 
    
         
             
              name: rubocop-rspec
         
     | 
| 
       85 
113 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     |