clash 0.0.1 → 0.0.2

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: 3e086e99ba358f5f3e581e62126580da77445d4f
4
- data.tar.gz: 783c022e86eea8404dec8bd3c221e2937597650d
3
+ metadata.gz: 9a969d31ec8e0bcf1c77d5e833a0c26c64d64943
4
+ data.tar.gz: 74eb10c9644a5dd2fbcfe0850bdfa535cb669ed8
5
5
  SHA512:
6
- metadata.gz: f84d11e79801cc332e17c3568afb05d0911343b7ba4bae19c4a94db62ae5fdc6f515c2d2433b110259f5366c6cca2cbb1964b3ecf9391a1d92c7b63a167f1a5a
7
- data.tar.gz: b0110c3bafcbd65872f03c087d190a43cdf5e35c3de3d2a1e5e2394d0fdb47dd83a5e0f6bf82d3e9214611e315c095b249bccea4aa9ccdf159636ba2261a0491
6
+ metadata.gz: aa5e1e84f305381673abfbb14796d040306910af540af05439eee4a21d85dd75afaa8c6e549ef9457043f67b1d2bfe579394714676196f3f852d68d05ce9ce7c
7
+ data.tar.gz: 7a312c1e095626a8a984cac7503340c0e46376656bb4a3e92b12bd44522c6ca76ac3d6f8ec83930460a24d568110e72693a8736ce4936e6bfe696a7e4f1a1ec6
data/README.md CHANGED
@@ -18,7 +18,94 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ ```
22
+ clash [test(s)] [options]
23
+ ```
24
+
25
+ To run only specific tests, pass test numbers separated by commas.
26
+
27
+ ```
28
+ $ clash 1 # run only the first test
29
+ $ clash 2,3 # run the second and third tests
30
+ ```
31
+
32
+ ### CLI options
33
+
34
+ ```
35
+ -f, --file FILE Use a specific test file (default: .clash.yml)
36
+ -c, --context NUMBER On diff errors, show NUMBER of lines of surrounding context (default: 2)
37
+ -h, --help show this message
38
+ ```
39
+
40
+ ## Configuration
41
+
42
+ Clash reads its configuration from a .clash.yml file in the root of your project. Use the --file
43
+ option to choose a different configuration file.
44
+
45
+ Simple configuration:
46
+ Clash will build the site with Jekyll, and compare the contents of _site/ to expected/.
47
+
48
+ ```
49
+ build: true
50
+ compare: _site, expected
51
+ ```
52
+
53
+ ### Configuration options
54
+
55
+ | Option | Type | Description |
56
+ |:-----------------|:---------------|:---------------------------------------------------------|
57
+ | name | String | Include a descriptive name with test output. |
58
+ | before | String/Array | Run system command(s) before running tests. |
59
+ | build | Boolean | Build the site with Jekyll. |
60
+ | config | Hash | Configure Jekyll, Octopress or Ink plugins. (Info below) |
61
+ | compare | String/Array | Compare files or directories. e.g. "a.md, b.md" |
62
+ | enforce_missing | String/Array | Ensure that these files are not found. |
63
+ | after | String/Array | Run system command(s) after running tests. |
64
+
65
+ Note: in the table above, String/Array means a single argument can be a string, but mutliples
66
+ can be passed as an array. For example:
67
+
68
+ ```yaml
69
+ compare: _site, expected # Compare two directories
70
+ compare: # Compare mutiple items
71
+ - _site/index.html, expected/index.html
72
+ - _site/atom.xml, expected/atom.xml
73
+ - _site/posts, expected/posts
74
+ ```
75
+
76
+ To run multiple tests each test should be an array, for example:
77
+
78
+ ```
79
+ -
80
+ name: Check site build
81
+ build: true
82
+ compare: _site, _expected
83
+ -
84
+ name: Check asset compression
85
+ compare: _cdn_build, _cdn_expected
86
+ ```
87
+
88
+ Note: When running multiple tests, adding a name can help the reading of test failures.
89
+
90
+ ### Configuring Jekyll, Octopress and Octopress Ink plugins
91
+
92
+ ```
93
+ build: true
94
+ config:
95
+ jekyll:
96
+ - _configs/config.yml
97
+ - _configs/test1.yml
98
+ octopress: _configs/octopress.yml
99
+ feed: _configs/feed.yml
100
+ ```
101
+
102
+ In this example:
103
+
104
+ - Jekyll will build with `--config _configs/config.yml,_configs/test1.yml`
105
+ - _configs/octopress.yml will be copied to ./_octopress.yml (and removed after tests)
106
+ - _configs/feed.yml will be copied to ./_plugins/feed/config.yml (and removed after tests)
107
+
108
+ This will not overwrite existing files as they will be backed up an restored after tests.
22
109
 
23
110
  ## Contributing
24
111
 
@@ -0,0 +1,117 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ $LOAD_PATH.unshift(File.expand_path("../lib", File.dirname(__FILE__)))
4
+
5
+ require 'clash'
6
+ require 'optparse'
7
+
8
+ options = {}
9
+
10
+ OptionParser.new do |opts|
11
+ opts.banner = "Usage: clash [options]"
12
+
13
+ opts.on("-f FILE", "--file FILE", "Set test file (default: .clash.yml).") do |f|
14
+ options[:file] = f
15
+ end
16
+
17
+ opts.on("-c", "--context NUMBER", Integer, "Number of lines of context on a diff") do |context|
18
+ options[:context] = context
19
+ end
20
+
21
+ opts.on("-h", "--help", "Show help message") do |h|
22
+ options[:help] = h
23
+ end
24
+
25
+ end.parse!
26
+
27
+ if !ARGV.empty?
28
+ # Parse input `clash 1 2 3` and `clash 1,2,3` the same
29
+ #
30
+ options[:only] = ARGV.join(',').split(',').map{ |n| n.to_i }
31
+ end
32
+
33
+ if options[:help]
34
+ puts <<-HELP
35
+ clash #{Clash::VERSION} -- Clash is a diff based testing suite for static sites.
36
+
37
+ Usage:
38
+
39
+ clash [test(s)] [options]
40
+
41
+ To run only specific tests, pass test numbers separated by commas.
42
+
43
+ `clash 1` # run only the first test
44
+ `clash 2,3` # run the second and third tests
45
+
46
+ Options:
47
+
48
+ -f, --file FILE Use a specific test file (default: .clash.yml)
49
+ -c, --context NUMBER On diff errors, show NUMBER of lines of surrounding context (default: 2)
50
+ -h, --help show this message
51
+
52
+ Configuration:
53
+
54
+ Clash reads its configuration from a .clash.yml file in the root of your project. Use the --file
55
+ option to choose a different configuration file.
56
+
57
+ Simple configuration:
58
+ Clash will build the site with Jekyll, and compare the contents of _site/ to expected/.
59
+
60
+ build: true
61
+ compare: _site, expected
62
+
63
+ Full configuration:
64
+
65
+ | Option | Type | Description |
66
+ |:-----------------|:---------------|:---------------------------------------------------------|
67
+ | before | String/Array | Run system command(s) before running tests. |
68
+ | build | Boolean | Build the site with Jekyll. |
69
+ | config | Hash | Configure Jekyll, Octopress or Ink plugins. (Info below) |
70
+ | compare | String/Array | Compare files or directories. e.g. "a.md, b.md" |
71
+ | enforce_missing | String/Array | Ensure that these files are not found. |
72
+ | after | String/Array | Run system command(s) after running tests. |
73
+
74
+ Note: in the table above, String/Array means a single argument can be a string, but mutliples
75
+ can be passed as an array. For example:
76
+
77
+ compare: _site, expected # Compare two directories
78
+ compare: # Compare mutiple items
79
+ - _site/index.html, expected/index.html
80
+ - _site/atom.xml, expected/atom.xml
81
+ - _site/posts, expected/posts
82
+
83
+
84
+ To run multiple tests each test should be an array, for example:
85
+
86
+ -
87
+ name: Check site build
88
+ build: true
89
+ compare: _site, _expected
90
+ -
91
+ name: Check asset compression
92
+ compare: _cdn_build, _cdn_expected
93
+
94
+ Note: When running multiple tests, adding a name can help the reading of test failures.
95
+
96
+
97
+ Configuring Jekyll, Octopress and Octopress Ink plugins:
98
+
99
+ build: true
100
+ config:
101
+ jekyll:
102
+ - _configs/config.yml
103
+ - _configs/test1.yml
104
+ octopress: _configs/octopress.yml
105
+ feed: _configs/feed.yml
106
+
107
+ In this example:
108
+
109
+ - Jekyll will build with `--config _configs/config.yml,_configs/test1.yml`
110
+ - _configs/octopress.yml will be copied to ./_octopress.yml (and removed after tests)
111
+ - _configs/feed.yml will be copied to ./_plugins/feed/config.yml (and removed after tests)
112
+
113
+ This will not overwrite existing files as they will be backed up an restored after tests.
114
+ HELP
115
+ else
116
+ Clash::Tests.new(options).run
117
+ end
@@ -18,6 +18,11 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.add_runtime_dependency "diffy", "~> 3.0"
22
+ spec.add_runtime_dependency "safe_yaml", "~> 1.0"
23
+ spec.add_runtime_dependency "colorator", "~> 0.1"
24
+
21
25
  spec.add_development_dependency "bundler", "~> 1.6"
22
26
  spec.add_development_dependency "rake"
27
+ spec.add_development_dependency "pry-debugger"
23
28
  end
@@ -1,5 +1,13 @@
1
- require "clash/version"
1
+ require 'clash/version'
2
+ require 'colorator'
3
+ require 'find'
4
+ require 'safe_yaml'
5
+ require 'diffy'
2
6
 
3
7
  module Clash
4
- # Your code goes here...
8
+
9
+ autoload :Tests, 'clash/tests'
10
+ autoload :Test, 'clash/test'
11
+ autoload :Diff, 'clash/diff'
12
+ autoload :Helpers, 'clash/helpers'
5
13
  end
@@ -0,0 +1,110 @@
1
+ module Clash
2
+ class Diff
3
+ include Helpers
4
+
5
+ def initialize(a, b, options={})
6
+ @diffs = {}
7
+ @a = a
8
+ @b = b
9
+ @context = options[:context] || 2
10
+ end
11
+
12
+ def diff
13
+ if File.directory?(@a)
14
+ diff_dirs(@a, @b)
15
+ else
16
+ diff_files(@a, @b)
17
+ end
18
+
19
+ @diffs
20
+ end
21
+
22
+ def diff_files(a, b)
23
+ if exists(a) && exists(b)
24
+ diffy = Diffy::Diff.new(a,b, :source => 'files', :context => @context)
25
+ file_diff = diffy.to_a
26
+
27
+ if !file_diff.empty?
28
+ file_diff = format_diff(file_diff)
29
+ @diffs["Compared #{colorize(a, 'yellow')} to #{colorize(b,'yellow')}"] = file_diff
30
+ end
31
+ end
32
+ end
33
+
34
+ # Recursively diff common files between dir1 and dir2
35
+ #
36
+ def diff_dirs(dir1, dir2)
37
+ mattching_dir_files(dir1, dir2).each do |file|
38
+ a = File.join(dir1, file)
39
+ b = File.join(dir2, file)
40
+ diff_files(a,b)
41
+ end
42
+ end
43
+
44
+ # Return files that exist in both directories (without dir names)
45
+ #
46
+ def mattching_dir_files(dir1, dir2)
47
+ dir1_files = dir_files(dir1).map {|f| f.sub(dir1,'') }
48
+ dir2_files = dir_files(dir2).map {|f| f.sub(dir2,'') }
49
+
50
+ matches = dir1_files & dir2_files
51
+
52
+ unique_files(dir1, dir1_files, matches)
53
+ unique_files(dir2, dir2_files, matches)
54
+
55
+ matches
56
+ end
57
+
58
+ # Find all files in a given directory
59
+ #
60
+ def dir_files(dir)
61
+ Find.find(dir).to_a.reject!{|f| File.directory?(f) }
62
+ end
63
+
64
+ # Find files which aren't common to both directories
65
+ #
66
+ def unique_files(dir, dir_files, common_files)
67
+ unique = dir_files - common_files
68
+ if !unique.empty?
69
+ @test_failures << colorize("Files missing from #{dir}/", 'red')
70
+ unique.each {|f| @test_failures << "- #{f}"}
71
+ end
72
+ end
73
+
74
+ def exists(f)
75
+ file_exists = File.exists?(f)
76
+
77
+ if !file_exists
78
+ @test_failures << "#{colorize('File not found:', 'red')} #{f}"
79
+ end
80
+
81
+ file_exists
82
+ end
83
+
84
+
85
+ def format_diff(diff)
86
+ count = 0
87
+
88
+ diff = diff.map { |line|
89
+ case line
90
+ when /^\+/ then
91
+ count = 0
92
+ colorize(line, 'green')
93
+ when /^-/ then
94
+ count = 0
95
+ colorize(line, 'red')
96
+ else
97
+ if count == @context
98
+ count = 0
99
+ "...\n#{line}"
100
+ else
101
+ count += 1
102
+ line
103
+ end
104
+ end
105
+ }
106
+ diff.join('')
107
+ end
108
+
109
+ end
110
+ end
@@ -0,0 +1,34 @@
1
+ module Clash
2
+ module Helpers
3
+ def default_array(option)
4
+ o = option || []
5
+ o = [o] unless o.is_a?(Array)
6
+ o
7
+ end
8
+
9
+ def colorize(str, color)
10
+ if STDOUT.tty?
11
+ str.send(color)
12
+ else
13
+ str
14
+ end
15
+ end
16
+
17
+ # Print a single character without a newline
18
+ #
19
+ def pout(str)
20
+ print str
21
+ if STDOUT.tty?
22
+ $stdout.flush
23
+ end
24
+ end
25
+
26
+ def print_fail
27
+ pout colorize('F', 'red')
28
+ end
29
+
30
+ def print_pass
31
+ pout colorize('.', 'green')
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,129 @@
1
+ module Clash
2
+ class Test
3
+ attr_accessor :title
4
+
5
+ include Helpers
6
+
7
+ def initialize(options={})
8
+ @test_failures = []
9
+ @options = options
10
+ @options['config'] ||= {}
11
+ @cleanup = []
12
+ end
13
+
14
+ def run
15
+ system_cmd(@options['before'])
16
+ config
17
+ build if @options['build']
18
+ cleanup_config
19
+ compare
20
+ enforce_missing
21
+ print_result
22
+ system_cmd(@options['after'])
23
+ results
24
+ end
25
+
26
+ def config
27
+ @options['config'].each do |name, file|
28
+ case name
29
+ when 'jekyll' then next
30
+ when 'octopress' then config_octopress(file)
31
+ else config_plugin(name, file)
32
+ end
33
+ end
34
+ end
35
+
36
+ def cleanup_config
37
+ @cleanup.each do |file|
38
+ if File.extname(file) == '.bak'
39
+ FileUtils.mv(file, file.sub(/\.bak$/,''), force: true)
40
+ else
41
+ FileUtils.rm(file)
42
+ end
43
+ end
44
+ end
45
+
46
+ def config_octopress(file)
47
+ copy_config(file, '_octopress.yml')
48
+ end
49
+
50
+ def config_plugin(name, file)
51
+ copy_config(file, "_plugins/#{name}/config.yml")
52
+ end
53
+
54
+ def copy_config(file, target)
55
+ if File.exists?(file)
56
+ # Make a backup of existing files first
57
+ #
58
+ if File.exists?(target)
59
+ FileUtils.mv target, "#{target}.bak"
60
+ @cleanup << "#{target}.bak"
61
+ else
62
+ @cleanup << target
63
+ end
64
+
65
+ FileUtils.mkdir_p(File.dirname(target))
66
+ FileUtils.cp file, target
67
+ else
68
+ @test_failures << "Config file: #{file} cannot be found.\n"
69
+ end
70
+ end
71
+
72
+ def build
73
+ if jekyll_config = @options['config']['jekyll']
74
+ configs = default_array(jekyll_config).join(',')
75
+ system("jekyll build --trace --config #{configs}")
76
+ else
77
+ system("jekyll build --trace")
78
+ end
79
+ end
80
+
81
+ def system_cmd(cmds)
82
+ cmds = default_array(cmds)
83
+ cmds.each {|cmd| system(cmd) }
84
+ end
85
+
86
+ def compare
87
+ default_array(@options['compare']).each do |files|
88
+ f = files.split(',')
89
+ diff = Diff.new(f[0].strip, f[1].strip, context: @options['context']).diff
90
+ diff.each do |title, diff|
91
+ @test_failures << "#{title}\n#{diff}\n"
92
+ end
93
+ end
94
+ end
95
+
96
+ def enforce_missing
97
+ default_array(@options['enforce_missing']).each do |files|
98
+ if File.exists?(file)
99
+ @test_failures << "File #{file} shouldn't exist."
100
+ end
101
+ end
102
+ end
103
+
104
+ def print_result
105
+ if @test_failures.empty?
106
+ print_pass
107
+ else
108
+ print_fail
109
+ end
110
+ end
111
+
112
+ def results
113
+ if !@test_failures.empty?
114
+ @test_failures.unshift(test_title)
115
+ @test_failures
116
+ end
117
+ end
118
+
119
+ def test_title
120
+ title = colorize("Test ##{@options['index']}", 'bold')
121
+ title << " - #{@options['title']}" unless @options['title'].nil?
122
+ <<-HERE
123
+ Failed #{title}
124
+ ========================================================
125
+ HERE
126
+ end
127
+
128
+ end
129
+ end
@@ -0,0 +1,58 @@
1
+ module Clash
2
+ class Tests
3
+ include Helpers
4
+
5
+ def initialize(options={})
6
+ @options = options
7
+
8
+ @options[:file] ||= '.clash.yml'
9
+ @options[:context] ||= 2
10
+ @options[:only] = default_array(@options[:only])
11
+
12
+ @tests = default_array(SafeYAML.load_file(@options[:file]))
13
+ end
14
+
15
+ def run
16
+ @results = {}
17
+ @passed = []
18
+ @failed = []
19
+ @tests.each_with_index do |options, index|
20
+
21
+ # If tests are limited, only run specified tests
22
+ #
23
+ next if !@options[:only].empty? && !@options[:only].include?(index + 1)
24
+
25
+ options['index'] = index + 1
26
+ options['context'] = @options[:context]
27
+
28
+ results = Test.new(options).run
29
+
30
+ if results.nil?
31
+ @passed << index + 1
32
+ else
33
+ @failed << index + 1
34
+ @results[index + 1] = results
35
+ end
36
+ end
37
+
38
+ print_results
39
+ end
40
+
41
+ def print_results
42
+ puts "" # newline
43
+
44
+ if @results.empty?
45
+ puts colorize("Passed #{@passed.size} of #{@passed.size} tests", "green")
46
+ else
47
+ @results.each do |test, results|
48
+ if !results.empty?
49
+ puts "\n#{results.join('')}"
50
+ end
51
+ end
52
+
53
+ puts "#{colorize("Passed #{@passed.size}", "green")}: Tests: #{@passed.join(',')}"
54
+ puts "#{colorize("Failed #{@failed.size}", "red")}: Tests: #{@failed.join(',')}"
55
+ end
56
+ end
57
+ end
58
+ end
@@ -1,3 +1,3 @@
1
1
  module Clash
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,14 @@
1
+ -
2
+ title: Checking a and b
3
+ compare: 'a.txt, b.txt'
4
+ -
5
+ title: Checking a and c
6
+ compare: 'a.txt, c.txt'
7
+ config:
8
+ feed: _test.yml
9
+ -
10
+ title: Checking dirs a and b
11
+ compare: 'a, b'
12
+ -
13
+ title: Checking dirs a and c
14
+ compare: 'a, c'
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem "clash", path: "../"
4
+ gem "pry-debugger"
@@ -0,0 +1 @@
1
+ name: Clashing
@@ -0,0 +1 @@
1
+ name: Clash
@@ -0,0 +1,5 @@
1
+ this is awesome
2
+ you guys
3
+ it's pretty great
4
+ you should have
5
+ lots of fun
@@ -0,0 +1,17 @@
1
+ This is a file.
2
+ There is some content.
3
+ It's not particularly imaginative.
4
+
5
+
6
+
7
+
8
+ asdf
9
+ asdf
10
+ asdf
11
+ asdf
12
+ awesome
13
+
14
+ asdfa
15
+ dsfa
16
+ sdfasdf
17
+ adsf
@@ -0,0 +1,2 @@
1
+ This file is fantastic.
2
+ It has words and everything.
@@ -0,0 +1,5 @@
1
+ this is awesome
2
+ you guys
3
+ it's pretty great
4
+ you should have
5
+ lots of fun
@@ -0,0 +1,17 @@
1
+ This is a file.
2
+ There is some content.
3
+ It's not particularly imaginative.
4
+
5
+
6
+
7
+
8
+ asdf
9
+ asdf
10
+ asdf
11
+ asdf
12
+ awesome
13
+
14
+ asdfa
15
+ dsfa
16
+ sdfasdf
17
+ adsf
@@ -0,0 +1,2 @@
1
+ This file is fantastic.
2
+ It has words and everything.
@@ -0,0 +1,4 @@
1
+ this is awesome
2
+ it's pretty great
3
+ you should have
4
+ lots of fun
@@ -0,0 +1,17 @@
1
+ This is a file.
2
+ There is content.
3
+ It's not particularly imaginative.
4
+
5
+
6
+
7
+
8
+ asdf
9
+ asdf
10
+ asdf
11
+ asdf
12
+ awesome
13
+ sweet
14
+ asdfa
15
+ dsfa
16
+ sdfasdf
17
+ adsf
@@ -0,0 +1,3 @@
1
+ This file is fantastic.
2
+ It has words and things.
3
+ Ladies…
metadata CHANGED
@@ -1,15 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Mathis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-04 00:00:00.000000000 Z
11
+ date: 2014-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: diffy
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: safe_yaml
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: colorator
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.1'
13
55
  - !ruby/object:Gem::Dependency
14
56
  name: bundler
15
57
  requirement: !ruby/object:Gem::Requirement
@@ -38,10 +80,25 @@ dependencies:
38
80
  - - ">="
39
81
  - !ruby/object:Gem::Version
40
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry-debugger
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
41
97
  description: A diff based testing framework for static sites.
42
98
  email:
43
99
  - brandon@imathis.com
44
- executables: []
100
+ executables:
101
+ - clash
45
102
  extensions: []
46
103
  extra_rdoc_files: []
47
104
  files:
@@ -50,9 +107,27 @@ files:
50
107
  - LICENSE.txt
51
108
  - README.md
52
109
  - Rakefile
110
+ - bin/clash
53
111
  - clash.gemspec
54
112
  - lib/clash.rb
113
+ - lib/clash/diff.rb
114
+ - lib/clash/helpers.rb
115
+ - lib/clash/test.rb
116
+ - lib/clash/tests.rb
55
117
  - lib/clash/version.rb
118
+ - test/.clash.yml
119
+ - test/Gemfile
120
+ - test/_plugins/feed/config.yml
121
+ - test/_test.yml
122
+ - test/a.txt
123
+ - test/a/1.txt
124
+ - test/a/2.txt
125
+ - test/b.txt
126
+ - test/b/1.txt
127
+ - test/b/2.txt
128
+ - test/c.txt
129
+ - test/c/1.txt
130
+ - test/c/2.txt
56
131
  homepage: https://github.com/imathis/clash
57
132
  licenses:
58
133
  - MIT
@@ -77,4 +152,17 @@ rubygems_version: 2.2.2
77
152
  signing_key:
78
153
  specification_version: 4
79
154
  summary: A diff based testing framework for static sites.
80
- test_files: []
155
+ test_files:
156
+ - test/.clash.yml
157
+ - test/Gemfile
158
+ - test/_plugins/feed/config.yml
159
+ - test/_test.yml
160
+ - test/a.txt
161
+ - test/a/1.txt
162
+ - test/a/2.txt
163
+ - test/b.txt
164
+ - test/b/1.txt
165
+ - test/b/2.txt
166
+ - test/c.txt
167
+ - test/c/1.txt
168
+ - test/c/2.txt