brutal 1.4.0 → 1.5.0
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/README.md +26 -6
- data/bin/brutal +7 -1
- data/lib/brutal/file/read.rb +1 -1
- data/lib/brutal/file.rb +8 -14
- data/lib/brutal/yaml.rb +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea124053ebeef681c2e046022936f9d67ca97778733a23bd2d81781e90daa9a8
|
4
|
+
data.tar.gz: 677089454fece7f60aedfc4693b53c132f057bbeeaca5e651f88ec52d026ea34
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b1d043d4740db1987c188755e9b339da566034a3cc2a43f99ced12fb3de26a93df0f93d669b20700ba662a935d9be662a25bffba8f8ae92aae3e01deade92d9b
|
7
|
+
data.tar.gz: 5abc20c46849f69b20de5b89848f8fed831b2d92641f57cfa349be4e0a975c8630c27268d16a022911693d403af8262b4f0d1099dcf468879392e9c2d7fe7ec0
|
data/README.md
CHANGED
@@ -61,28 +61,48 @@ Just type `brutal` in a Ruby project's folder and watch the magic happen.
|
|
61
61
|
|
62
62
|
__Brutal__ needs a configuration file to know how to write your tests.
|
63
63
|
Currently, only the YAML format is supported.
|
64
|
-
This file is composed of 4 top-level sections:
|
64
|
+
This file is by default named `.brutal.yml` and is composed of 4 top-level sections:
|
65
65
|
|
66
66
|
* `header` - Specifies the code to execute before generating the test suite.
|
67
67
|
* `subject` - Specifies the template of the code to be declined across contexts.
|
68
68
|
* `contexts` - Specifies a list of variables to populate the subject's template.
|
69
69
|
* `actuals` - Specifies templates to challenge evaluated subjects & get results.
|
70
70
|
|
71
|
-
|
71
|
+
When the configuration file is present, the generation of a test suite can be done with the command:
|
72
72
|
|
73
73
|
```sh
|
74
|
-
brutal
|
74
|
+
brutal .brutal.yml
|
75
75
|
```
|
76
76
|
|
77
|
-
|
77
|
+
or:
|
78
|
+
|
79
|
+
```sh
|
80
|
+
brutal .
|
81
|
+
```
|
82
|
+
|
83
|
+
or even:
|
84
|
+
|
85
|
+
```sh
|
86
|
+
brutal
|
87
|
+
```
|
88
|
+
|
89
|
+
This would create a `test.rb` file containing the test suite.
|
90
|
+
|
91
|
+
Configuration files can also be named differently:
|
92
|
+
|
93
|
+
```sh
|
94
|
+
brutal path/to/test_hello_world.yml
|
95
|
+
```
|
96
|
+
|
97
|
+
This would create a `path/to/test_hello_world.rb` file containing the test suite.
|
78
98
|
|
79
99
|
To avoid accidentally overwriting a file, the `--no-force` option can be used:
|
80
100
|
|
81
101
|
```sh
|
82
|
-
brutal test_hello_world.yml --no-force
|
102
|
+
brutal path/to/test_hello_world.yml --no-force
|
83
103
|
```
|
84
104
|
|
85
|
-
> A test_hello_world.rb file already exists!
|
105
|
+
> A path/to/test_hello_world.rb file already exists!
|
86
106
|
|
87
107
|
### Getting started
|
88
108
|
|
data/bin/brutal
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
+
require "pathname"
|
4
5
|
require_relative File.join("..", "lib", "brutal")
|
5
6
|
|
6
|
-
|
7
|
+
path = ARGV.fetch(0, Brutal::File::DEFAULT_CONFIG_FILENAME)
|
8
|
+
pathname = Pathname.new(path)
|
9
|
+
pathname += Brutal::File::DEFAULT_CONFIG_FILENAME if pathname.directory?
|
10
|
+
force_opt = ARGV.none?("--no-force")
|
11
|
+
|
12
|
+
Brutal.generate!(pathname, force: force_opt)
|
data/lib/brutal/file/read.rb
CHANGED
data/lib/brutal/file.rb
CHANGED
@@ -10,28 +10,22 @@ module Brutal
|
|
10
10
|
module File
|
11
11
|
DEFAULT_CONFIG_FILENAME = ".brutal.yml"
|
12
12
|
DEFAULT_GENERATED_FILENAME = "test.rb"
|
13
|
+
RUBY_EXTENSION = ".rb"
|
13
14
|
|
14
15
|
def self.generated_pathname(pathname)
|
15
|
-
filename = pathname.
|
16
|
+
filename = pathname.basename
|
17
|
+
return pathname.dirname + DEFAULT_GENERATED_FILENAME if default_config_filename?(filename)
|
16
18
|
|
17
|
-
|
18
|
-
directory_parts = pathname.split(separator)[..-2]
|
19
|
-
path_parts = directory_parts + [DEFAULT_GENERATED_FILENAME]
|
20
|
-
return path_parts.join(separator)
|
21
|
-
end
|
22
|
-
|
23
|
-
pathname.gsub(/.[^.]+\z/, ".rb")
|
19
|
+
pathname.sub_ext(RUBY_EXTENSION)
|
24
20
|
end
|
25
21
|
|
26
22
|
def self.override_protection(pathname)
|
27
|
-
|
28
|
-
|
29
|
-
abort "A #{pathname} file already exists!"
|
23
|
+
abort "A #{pathname} file already exists!" if pathname.exist?
|
30
24
|
end
|
31
25
|
|
32
|
-
def self.
|
33
|
-
|
26
|
+
def self.default_config_filename?(filename)
|
27
|
+
filename.to_s == DEFAULT_CONFIG_FILENAME
|
34
28
|
end
|
35
|
-
private_class_method :
|
29
|
+
private_class_method :default_config_filename?
|
36
30
|
end
|
37
31
|
end
|
data/lib/brutal/yaml.rb
CHANGED
@@ -8,8 +8,8 @@ module Brutal
|
|
8
8
|
# @since 1.1.0
|
9
9
|
module Yaml
|
10
10
|
FILENAME_EXTENSIONS = %w[
|
11
|
-
yaml
|
12
|
-
yml
|
11
|
+
.yaml
|
12
|
+
.yml
|
13
13
|
].freeze
|
14
14
|
|
15
15
|
def self.parse(yaml)
|
@@ -17,7 +17,7 @@ module Brutal
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.parse?(pathname)
|
20
|
-
filename_extension = pathname.
|
20
|
+
filename_extension = pathname.extname
|
21
21
|
FILENAME_EXTENSIONS.include?(filename_extension)
|
22
22
|
end
|
23
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brutal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cyril Kato
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|