everything-core 0.0.4 → 0.0.6

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: e66db03bfad6a1e58a7aeff49d6798ada6b0964d
4
- data.tar.gz: ea00f472f7f0a9c2cb845e657f229e6d0bc96c43
3
+ metadata.gz: b1e55885b20990f6ab77929b12caf60764e35147
4
+ data.tar.gz: f1abad4f7afdad19f21149cfcc9ff84f0c287380
5
5
  SHA512:
6
- metadata.gz: a24df55089664a1af6ad6a84a2610915ec8d2c32102d63ca16a6d9bc0740452fe2c215897ed6c9451a1882e0f227635117ecd232d4da624709bc7c7e322f2248
7
- data.tar.gz: ad37737f932f8d77f5d68760fd37ba4b46e868d8b9d17fd49d24b10fbe2563f58327567564c124525d9c4ce8958738743a573a5cf5ee4fe51954b8eced3a583f
6
+ metadata.gz: 1412bc7491dbe5f794afe3feaf2592d3a5a1fd06d652cfdfbbf1f5a562021699592a056464d14383f786960a0d0a7efaaacea88607555805df1586f967268cce
7
+ data.tar.gz: 09b06432902bedaee4cc7629207984e4e1c81c939f00258a4859b2afdc1db6acd7a7d18c97ebc96d73863d423ca954624ced23b222fe4272885570fc434e6781
data/.gitignore CHANGED
@@ -1,3 +1,10 @@
1
- *.gem
2
1
  .env
3
- Gemfile.lock
2
+ /.bundle/
3
+ /.yardoc
4
+ /Gemfile.lock
5
+ /_yardoc/
6
+ /coverage/
7
+ /doc/
8
+ /pkg/
9
+ /spec/reports/
10
+ /tmp/
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.3
4
+ before_install: gem install bundler -v 1.11.2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.0.6
4
+
5
+ - Add an Everything::Piece::Content class
6
+ - Add an Everything::Piece::Metadata class
7
+ - Rename piece#content to piece#body
8
+ - Add a piece#content to return the piece's content
9
+ - Add a piece#metadata to return the piece's metadata
10
+ - Add a piece#public? for easily checking the metadata for the `public` boolean
11
+
12
+ ## 0.0.5
13
+
14
+ - Increase version number of dotenv dependency
15
+
3
16
  ## 0.0.4
4
17
 
5
18
  - Add Everything::Piece#full_path to return path of the piece
@@ -0,0 +1,49 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, and in the interest of
4
+ fostering an open and welcoming community, we pledge to respect all people who
5
+ contribute through reporting issues, posting feature requests, updating
6
+ documentation, submitting pull requests or patches, and other activities.
7
+
8
+ We are committed to making participation in this project a harassment-free
9
+ experience for everyone, regardless of level of experience, gender, gender
10
+ identity and expression, sexual orientation, disability, personal appearance,
11
+ body size, race, ethnicity, age, religion, or nationality.
12
+
13
+ Examples of unacceptable behavior by participants include:
14
+
15
+ * The use of sexualized language or imagery
16
+ * Personal attacks
17
+ * Trolling or insulting/derogatory comments
18
+ * Public or private harassment
19
+ * Publishing other's private information, such as physical or electronic
20
+ addresses, without explicit permission
21
+ * Other unethical or unprofessional conduct
22
+
23
+ Project maintainers have the right and responsibility to remove, edit, or
24
+ reject comments, commits, code, wiki edits, issues, and other contributions
25
+ that are not aligned to this Code of Conduct, or to ban temporarily or
26
+ permanently any contributor for other behaviors that they deem inappropriate,
27
+ threatening, offensive, or harmful.
28
+
29
+ By adopting this Code of Conduct, project maintainers commit themselves to
30
+ fairly and consistently applying these principles to every aspect of managing
31
+ this project. Project maintainers who do not follow or enforce the Code of
32
+ Conduct may be permanently removed from the project team.
33
+
34
+ This code of conduct applies both within project spaces and in public spaces
35
+ when an individual is representing the project or its community.
36
+
37
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
38
+ reported by contacting a project maintainer at kyle at nullsix dot com. All
39
+ complaints will be reviewed and investigated and will result in a response that
40
+ is deemed necessary and appropriate to the circumstances. Maintainers are
41
+ obligated to maintain confidentiality with regard to the reporter of an
42
+ incident.
43
+
44
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
45
+ version 1.3.0, available at
46
+ [http://contributor-covenant.org/version/1/3/0/][version]
47
+
48
+ [homepage]: http://contributor-covenant.org
49
+ [version]: http://contributor-covenant.org/version/1/3/0/
data/README.md CHANGED
@@ -1,4 +1,8 @@
1
- # everything-core
1
+ # Everything
2
+ [![Gem Version](https://badge.fury.io/rb/everything-core.svg)](http://badge.fury.io/rb/everything-core)
3
+ [![Build Status](https://travis-ci.org/kyletolle/everything-core.svg?branch=master)](https://travis-ci.org/kyletolle/everything-core)
4
+ [![Code Climate](https://codeclimate.com/github/kyletolle/everything-core/badges/gpa.svg)](https://codeclimate.com/github/kyletolle/everything-core)
5
+ [![Dependency Status](https://gemnasium.com/kyletolle/everything-core.svg)](https://gemnasium.com/kyletolle/everything-core)
2
6
 
3
7
  For familiarity with a `everything` repository, see the
4
8
  [intro](http://blog.kyletolle.com/introducing-everything/).
@@ -12,12 +16,24 @@ Must define these environment variables:
12
16
 
13
17
  - `EVERYTHING_PATH` - the full path to your everything repo.
14
18
 
19
+
15
20
  ## Installation
16
21
 
17
- ```
22
+ Add this line to your application's Gemfile:
23
+
24
+ ```ruby
18
25
  gem install everything-core
19
26
  ```
20
27
 
28
+ And then execute:
29
+
30
+ $ bundle
31
+
32
+ Or install it yourself as:
33
+
34
+ $ gem install everything-core
35
+
36
+
21
37
  ## Usage
22
38
 
23
39
  This assumes you have a `EVERYTHING_PATH` environment variable either set in
@@ -31,7 +47,7 @@ your-piece-here/index.md
31
47
 
32
48
  # Your Piece Here
33
49
 
34
- The rest of the content of your file...
50
+ The rest of the body of your file...
35
51
 
36
52
  ```
37
53
 
@@ -44,11 +60,39 @@ require 'everything'
44
60
  piece_path = File.join(Everything.path, 'your-piece-here')
45
61
  piece = Everything::Piece.new(piece_path)
46
62
 
47
- piece.title # => "Your Piece Here"
48
- piece.content # => "The rest of the content of your file...\n\n"
63
+ piece.title # => "Your Piece Here"
64
+ piece.body # => "The rest of the body of your file...\n\n"
65
+ piece['categories'] # Returns the value for the `categories` metadata key
66
+ piece.public? # Convience method to return the value for the boolean `public` metadata key
67
+ piece.content # Return an instance of the piece's content
68
+ piece.metadata # Return an instance of the piece's metadata
49
69
  ```
50
70
 
71
+
72
+ ## Development
73
+
74
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run
75
+ `rake spec` to run the tests. You can also run `bin/console` for an interactive
76
+ prompt that will allow you to experiment.
77
+
78
+ To install this gem onto your local machine, run `bundle exec rake install`. To
79
+ release a new version, update the version number in `version.rb`, and then run
80
+ `bundle exec rake release`, which will create a git tag for the version, push
81
+ git commits and tags, and push the `.gem` file to
82
+ [rubygems.org](https://rubygems.org).
83
+
84
+
85
+ ## Contributing
86
+
87
+ Bug reports and pull requests are welcome on GitHub at
88
+ https://github.com/kyletolle/everything-core. This project is intended to
89
+ be a safe, welcoming space for collaboration, and contributors are expected to
90
+ adhere to the [Contributor Covenant](http://contributor-covenant.org) code of
91
+ conduct.
92
+
93
+
51
94
  ## License
52
95
 
53
- MIT
96
+ The gem is available as open source under the terms of the [MIT
97
+ License](http://opensource.org/licenses/MIT).
54
98
 
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "everything"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -18,7 +18,7 @@ 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 'dotenv', '= 2.0.2'
21
+ spec.add_runtime_dependency 'dotenv', '~> 2.1'
22
22
  spec.add_runtime_dependency 'fastenv', '= 0.0.2'
23
23
 
24
24
  spec.add_development_dependency 'bundler', '~> 1.11'
@@ -0,0 +1,36 @@
1
+ module Everything
2
+ class Piece
3
+ class Content
4
+ def initialize(piece_path)
5
+ @piece_path = piece_path
6
+ end
7
+
8
+ def file_path
9
+ @file_path ||= File.join(piece_path, file_name)
10
+ end
11
+
12
+ def title
13
+ partitioned_text.first.sub('# ', '')
14
+ end
15
+
16
+ def body
17
+ partitioned_text.last
18
+ end
19
+
20
+ def raw_markdown
21
+ @raw_markdown ||= File.read(file_path)
22
+ end
23
+
24
+ private
25
+ attr_reader :piece_path
26
+
27
+ def file_name
28
+ 'index.md'
29
+ end
30
+
31
+ def partitioned_text
32
+ @partitioned_text ||= raw_markdown.partition("\n\n")
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,30 @@
1
+ require 'yaml'
2
+
3
+ module Everything
4
+ class Piece
5
+ class Metadata
6
+ extend Forwardable
7
+
8
+ def initialize(piece_path)
9
+ @piece_path = piece_path
10
+ end
11
+
12
+ def file_path
13
+ @file_path ||= File.join(piece_path, file_name)
14
+ end
15
+
16
+ def raw_yaml
17
+ @raw_yaml ||= YAML.load_file(file_path)
18
+ end
19
+
20
+ def_delegators :raw_yaml, :[]
21
+
22
+ private
23
+ attr_reader :piece_path
24
+
25
+ def file_name
26
+ 'index.yaml'
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,5 +1,7 @@
1
1
  module Everything
2
2
  class Piece
3
+ extend Forwardable
4
+
3
5
  attr_reader :full_path
4
6
 
5
7
  def initialize(full_path)
@@ -7,25 +9,21 @@ module Everything
7
9
  end
8
10
 
9
11
  def content
10
- @content ||= partitioned_content.last
12
+ @content ||= Content.new(full_path)
11
13
  end
12
14
 
13
- def title
14
- @title ||= partitioned_content.first.sub('# ', '')
15
- end
15
+ def_delegators :content, :body, :raw_markdown, :title
16
16
 
17
- def raw_markdown
18
- @raw_markdown ||= File.read(content_path)
17
+ def metadata
18
+ @metadata ||= Metadata.new(full_path)
19
19
  end
20
20
 
21
- private
22
- def content_path
23
- @content_path ||= File.join(@full_path, 'index.md')
24
- end
25
-
26
- def partitioned_content
27
- @partitioned_content ||= raw_markdown.partition("\n\n")
21
+ def public?
22
+ metadata['public']
28
23
  end
29
24
  end
30
25
  end
31
26
 
27
+ require 'everything/piece/content'
28
+ require 'everything/piece/metadata'
29
+
@@ -1,3 +1,3 @@
1
1
  module Everything
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.6'
3
3
  end
@@ -0,0 +1,97 @@
1
+ require './spec/support/pieces'
2
+
3
+ describe Everything::Piece::Content do
4
+ shared_context 'with tmp piece markdown file on disk' do
5
+ let(:tmp_piece_markdown_path) do
6
+ File.join(tmp_piece_path, 'index.md')
7
+ end
8
+
9
+ let(:given_markdown) do
10
+ <<MD
11
+ # Piece Title Here
12
+
13
+ The body is totally this right here.
14
+
15
+ And it might even include multiple lines!
16
+ MD
17
+ end
18
+
19
+ before do
20
+ File.open(tmp_piece_markdown_path, 'w') do |markdown_file|
21
+ markdown_file.puts given_markdown
22
+ end
23
+ end
24
+ end
25
+
26
+ let(:content) do
27
+ described_class.new(tmp_piece_path)
28
+ end
29
+
30
+ describe '#file_path' do
31
+ include_context 'with tmp piece on disk'
32
+
33
+ let(:expected_file_path) do
34
+ "#{tmp_piece_path}/index.md"
35
+ end
36
+
37
+ it 'is the index.md under the piece' do
38
+ expect(content.file_path).to eq(expected_file_path)
39
+ end
40
+ end
41
+
42
+ describe '#title' do
43
+ include_context 'with tmp piece on disk'
44
+ include_context 'with tmp piece markdown file on disk'
45
+
46
+ let(:expected_title) do
47
+ 'Piece Title Here'
48
+ end
49
+
50
+ it 'is the title from the markdown' do
51
+ expect(content.title).to eq(expected_title)
52
+ end
53
+ end
54
+
55
+ describe '#body' do
56
+ include_context 'with tmp piece on disk'
57
+ include_context 'with tmp piece markdown file on disk'
58
+
59
+ let(:expected_body) do
60
+ <<MD
61
+ The body is totally this right here.
62
+
63
+ And it might even include multiple lines!
64
+ MD
65
+ end
66
+
67
+ it 'is the body text from the markdown' do
68
+ expect(content.body).to eq(expected_body)
69
+ end
70
+ end
71
+
72
+ describe '#raw_markdown' do
73
+ include_context 'with tmp piece on disk'
74
+ include_context 'with tmp piece markdown file on disk'
75
+
76
+ let(:expected_raw_markdown) do
77
+ given_markdown
78
+ end
79
+
80
+ it 'is the markdown from the file' do
81
+ expect(content.raw_markdown).to eq(expected_raw_markdown)
82
+ end
83
+
84
+ it 'memoizes the file read' do
85
+ allow(File)
86
+ .to receive(:read)
87
+ .and_call_original
88
+
89
+ content.raw_markdown
90
+ content.raw_markdown
91
+
92
+ expect(File)
93
+ .to have_received(:read)
94
+ .exactly(:once)
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,92 @@
1
+ require './spec/support/pieces'
2
+
3
+ describe Everything::Piece::Metadata do
4
+ shared_context 'with tmp piece metadata file on disk' do
5
+ let(:tmp_piece_metadata_path) do
6
+ File.join(tmp_piece_path, 'index.yaml')
7
+ end
8
+
9
+ let(:given_yaml) do
10
+ <<YAML
11
+ ---
12
+ public: false
13
+ YAML
14
+ end
15
+
16
+ before do
17
+ File.open(tmp_piece_metadata_path, 'w') do |metadata_file|
18
+ metadata_file.puts given_yaml
19
+ end
20
+ end
21
+ end
22
+
23
+ let(:metadata) do
24
+ described_class.new(tmp_piece_path)
25
+ end
26
+
27
+ describe '#[]' do
28
+ include_context 'with tmp piece on disk'
29
+
30
+ let(:yaml_double) do
31
+ instance_double(Hash)
32
+ end
33
+ let(:given_key) { 'public' }
34
+
35
+ before do
36
+ expect(YAML)
37
+ .to receive(:load_file)
38
+ .and_return(yaml_double)
39
+ end
40
+
41
+ it 'delegates to the yaml' do
42
+ allow(yaml_double)
43
+ .to receive(:[])
44
+
45
+ metadata[given_key]
46
+
47
+ expect(yaml_double)
48
+ .to have_received(:[])
49
+ .with(given_key)
50
+ end
51
+ end
52
+
53
+ describe '#file_path' do
54
+ include_context 'with tmp piece on disk'
55
+
56
+ let(:expected_file_path) do
57
+ "#{tmp_piece_path}/index.yaml"
58
+ end
59
+
60
+ it 'is the index.yaml under the piece' do
61
+ expect(metadata.file_path).to eq(expected_file_path)
62
+ end
63
+ end
64
+
65
+ describe '#raw_yaml' do
66
+ include_context 'with tmp piece on disk'
67
+ include_context 'with tmp piece metadata file on disk'
68
+
69
+ let(:expected_raw_yaml) do
70
+ {
71
+ 'public' => false
72
+ }
73
+ end
74
+
75
+ it 'is the yaml as parsed from the file' do
76
+ expect(metadata.raw_yaml).to eq(expected_raw_yaml)
77
+ end
78
+
79
+ it 'memoizes the yaml read' do
80
+ allow(YAML)
81
+ .to receive(:load_file)
82
+ .and_call_original
83
+
84
+ metadata.raw_yaml
85
+ metadata.raw_yaml
86
+
87
+ expect(YAML)
88
+ .to have_received(:load_file)
89
+ .exactly(:once)
90
+ end
91
+ end
92
+ end
@@ -5,41 +5,41 @@ describe Everything::Piece do
5
5
  let(:piece) do
6
6
  described_class.new(given_full_path)
7
7
  end
8
- let(:expected_markdown_file_path) do
9
- "#{given_full_path}/index.md"
8
+ shared_context 'with content double' do
9
+ let(:content_double) do
10
+ instance_double(Everything::Piece::Content)
11
+ end
12
+
13
+ before do
14
+ allow(Everything::Piece::Content)
15
+ .to receive(:new)
16
+ .and_return(content_double)
17
+ end
10
18
  end
11
- let(:fake_markdown_text) do
12
- <<MD
13
- # Piece Title Here
14
19
 
15
- The content is totally this right here.
20
+ describe '#body' do
21
+ include_context 'with content double'
16
22
 
17
- And it might even include multiple lines!
18
- MD
19
- end
23
+ it 'delegates to the content' do
24
+ allow(content_double).to receive(:body)
20
25
 
21
- shared_context 'with fake markdown file' do
22
- before do
23
- expect(File)
24
- .to receive(:read)
25
- .with(expected_markdown_file_path)
26
- .and_return(fake_markdown_text)
26
+ piece.body
27
+
28
+ expect(content_double).to have_received(:body)
27
29
  end
28
30
  end
29
31
 
30
32
  describe '#content' do
31
- include_context 'with fake markdown file'
32
-
33
- let(:expected_content) do
34
- <<TEXT
35
- The content is totally this right here.
36
-
37
- And it might even include multiple lines!
38
- TEXT
33
+ it 'is an instance of Content' do
34
+ expect(piece.content).to be_a(Everything::Piece::Content)
39
35
  end
40
36
 
41
- it 'is only the markdown after the title' do
42
- expect(piece.content).to eq(expected_content)
37
+ it "is created with the piece's full path" do
38
+ expect(Everything::Piece::Content)
39
+ .to receive(:new)
40
+ .with(given_full_path)
41
+
42
+ piece.content
43
43
  end
44
44
  end
45
45
 
@@ -49,27 +49,60 @@ TEXT
49
49
  end
50
50
  end
51
51
 
52
- describe '#raw_markdown' do
53
- include_context 'with fake markdown file'
52
+ describe '#metadata' do
53
+ it 'is an instance of Metadata' do
54
+ expect(piece.metadata).to be_a(Everything::Piece::Metadata)
55
+ end
56
+
57
+ it "is created with the piece's full path" do
58
+ expect(Everything::Piece::Metadata)
59
+ .to receive(:new)
60
+ .with(given_full_path)
54
61
 
55
- let(:expected_raw_markdown) do
56
- fake_markdown_text
62
+ piece.metadata
57
63
  end
64
+ end
58
65
 
59
- it "is all the file's markdown" do
60
- expect(piece.raw_markdown).to eq(expected_raw_markdown)
66
+ describe '#public?' do
67
+ let(:metadata_double) do
68
+ instance_double(Everything::Piece::Metadata)
69
+ end
70
+
71
+ it "returns the metadata's public value" do
72
+ allow(Everything::Piece::Metadata)
73
+ .to receive(:new)
74
+ .and_return(metadata_double)
75
+
76
+ expect(metadata_double)
77
+ .to receive(:[])
78
+ .with('public')
79
+ .and_return(false)
80
+
81
+ expect(piece.public?).to eq(false)
61
82
  end
62
83
  end
63
84
 
64
- describe '#title' do
65
- include_context 'with fake markdown file'
85
+ describe '#raw_markdown' do
86
+ include_context 'with content double'
87
+
88
+ it 'delegates to the content' do
89
+ allow(content_double).to receive(:raw_markdown)
66
90
 
67
- let(:expected_title) do
68
- 'Piece Title Here'
91
+ piece.raw_markdown
92
+
93
+ expect(content_double).to have_received(:raw_markdown)
69
94
  end
95
+ end
96
+
97
+ describe '#title' do
98
+ include_context 'with content double'
99
+
100
+ it 'delegates to the content' do
101
+ allow(content_double).to receive(:title)
102
+
103
+ piece.title
70
104
 
71
- it 'is text of the markdown title' do
72
- expect(piece.title).to eq(expected_title)
105
+ expect(content_double).to have_received(:title)
73
106
  end
74
107
  end
75
108
  end
data/spec/spec_helper.rb CHANGED
@@ -43,9 +43,6 @@ RSpec.configure do |config|
43
43
  mocks.verify_partial_doubles = true
44
44
  end
45
45
 
46
- # The settings below are suggested to provide a good initial experience
47
- # with RSpec, but feel free to customize to your heart's content.
48
- =begin
49
46
  # These two settings work together to allow you to limit a spec run
50
47
  # to individual examples or groups you care about by tagging them with
51
48
  # `:focus` metadata. When nothing is tagged with `:focus`, all examples
@@ -53,11 +50,25 @@ RSpec.configure do |config|
53
50
  config.filter_run :focus
54
51
  config.run_all_when_everything_filtered = true
55
52
 
56
- # Allows RSpec to persist some state between runs in order to support
57
- # the `--only-failures` and `--next-failure` CLI options. We recommend
58
- # you configure your source control system to ignore this file.
59
- config.example_status_persistence_file_path = "spec/examples.txt"
53
+ # This setting enables warnings. It's recommended, but in some cases may
54
+ # be too noisy due to issues in dependencies.
55
+ config.warnings = true
60
56
 
57
+ # Run specs in random order to surface order dependencies. If you find an
58
+ # order dependency and want to debug it, you can fix the order by providing
59
+ # the seed, which is printed after each run.
60
+ # --seed 1234
61
+ config.order = :random
62
+
63
+ # Seed global randomization in this process using the `--seed` CLI option.
64
+ # Setting this allows you to use `--seed` to deterministically reproduce
65
+ # test failures related to randomization by passing the same `--seed` value
66
+ # as the one that triggered the failure.
67
+ Kernel.srand config.seed
68
+
69
+ # The settings below are suggested to provide a good initial experience
70
+ # with RSpec, but feel free to customize to your heart's content.
71
+ =begin
61
72
  # Limits the available syntax to the non-monkey patched syntax that is
62
73
  # recommended. For more details, see:
63
74
  # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
@@ -65,10 +76,6 @@ RSpec.configure do |config|
65
76
  # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
66
77
  config.disable_monkey_patching!
67
78
 
68
- # This setting enables warnings. It's recommended, but in some cases may
69
- # be too noisy due to issues in dependencies.
70
- config.warnings = true
71
-
72
79
  # Many RSpec users commonly either run the entire suite or an individual
73
80
  # file, and it's useful to allow more verbose output when running an
74
81
  # individual spec file.
@@ -79,21 +86,14 @@ RSpec.configure do |config|
79
86
  config.default_formatter = 'doc'
80
87
  end
81
88
 
89
+ # Allows RSpec to persist some state between runs in order to support
90
+ # the `--only-failures` and `--next-failure` CLI options. We recommend
91
+ # you configure your source control system to ignore this file.
92
+ config.example_status_persistence_file_path = "spec/examples.txt"
93
+
82
94
  # Print the 10 slowest examples and example groups at the
83
95
  # end of the spec run, to help surface which specs are running
84
96
  # particularly slow.
85
97
  config.profile_examples = 10
86
-
87
- # Run specs in random order to surface order dependencies. If you find an
88
- # order dependency and want to debug it, you can fix the order by providing
89
- # the seed, which is printed after each run.
90
- # --seed 1234
91
- config.order = :random
92
-
93
- # Seed global randomization in this process using the `--seed` CLI option.
94
- # Setting this allows you to use `--seed` to deterministically reproduce
95
- # test failures related to randomization by passing the same `--seed` value
96
- # as the one that triggered the failure.
97
- Kernel.srand config.seed
98
98
  =end
99
99
  end
@@ -0,0 +1,10 @@
1
+ RSpec.shared_context 'with tmp piece on disk' do
2
+ let!(:tmp_piece_path) do
3
+ Dir.mktmpdir
4
+ end
5
+
6
+ after do
7
+ # This will recursively remove everything under that tmp dir.
8
+ FileUtils.remove_entry(tmp_piece_path)
9
+ end
10
+ end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: everything-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Tolle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-18 00:00:00.000000000 Z
11
+ date: 2016-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.2
19
+ version: '2.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: 2.0.2
26
+ version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: fastenv
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -83,23 +83,35 @@ dependencies:
83
83
  description: Gives you access to pieces within your everything repo.
84
84
  email:
85
85
  - kyle@nullsix.com
86
- executables: []
86
+ executables:
87
+ - console
88
+ - setup
87
89
  extensions: []
88
90
  extra_rdoc_files: []
89
91
  files:
90
92
  - ".gitignore"
91
93
  - ".rspec"
94
+ - ".travis.yml"
92
95
  - CHANGELOG.md
96
+ - CODE_OF_CONDUCT.md
93
97
  - Gemfile
94
98
  - LICENSE
95
99
  - README.md
100
+ - Rakefile
101
+ - bin/console
102
+ - bin/setup
96
103
  - everything-core.gemspec
97
104
  - lib/everything.rb
98
105
  - lib/everything/piece.rb
106
+ - lib/everything/piece/content.rb
107
+ - lib/everything/piece/metadata.rb
99
108
  - lib/everything/version.rb
109
+ - spec/everything/piece/content_spec.rb
110
+ - spec/everything/piece/metadata_spec.rb
100
111
  - spec/everything/piece_spec.rb
101
112
  - spec/everything_spec.rb
102
113
  - spec/spec_helper.rb
114
+ - spec/support/pieces.rb
103
115
  homepage: https://github.com/kyletolle/everything-core
104
116
  licenses:
105
117
  - MIT
@@ -125,7 +137,9 @@ signing_key:
125
137
  specification_version: 4
126
138
  summary: Library for working with your `everything` repository.
127
139
  test_files:
140
+ - spec/everything/piece/content_spec.rb
141
+ - spec/everything/piece/metadata_spec.rb
128
142
  - spec/everything/piece_spec.rb
129
143
  - spec/everything_spec.rb
130
144
  - spec/spec_helper.rb
131
- has_rdoc:
145
+ - spec/support/pieces.rb