Skip to content

Commit

Permalink
Merge pull request #22 from wptide/feature/display-phpcs-versions
Browse files Browse the repository at this point in the history
Extend API with PHPCS version
  • Loading branch information
valendesigns committed Oct 13, 2019
2 parents 6b11b6f + 27b10f6 commit e9fe98c
Show file tree
Hide file tree
Showing 4 changed files with 142 additions and 13 deletions.
5 changes: 4 additions & 1 deletion README.md
Expand Up @@ -31,7 +31,10 @@ Have questions? Don't open an Issue, come join us in the [`#tide` channel](https

## Props

[@rheinardkorf](https://github.com/rheinardkorf), [@valendesigns](https://github.com/valendesigns)
[Derek Herman (@valendesigns)](https://github.com/valendesigns),
[Otto Kekäläinen (@ottok)](https://github.com/ottok),
[Pierre Gordon (@pierlon)](https://github.com/pierlon),
[Rheinard Korf (@rheinardkorf)](https://github.com/rheinardkorf)

## License
Tide `pkg` utilizes an [MIT license](LICENSE).
25 changes: 18 additions & 7 deletions process/phpcs.go
Expand Up @@ -23,12 +23,13 @@ var (

// Phpcs defines the structure for our Phpcs process.
type Phpcs struct {
Process // Inherits methods from Process.
In <-chan Processor // Expects a processor channel as input.
Out chan Processor // Send results to an output channel.
Config Result // Additional config.
TempFolder string // Path to a temp folder where reports will be generated.
StorageProvider storage.Provider // Storage provider to upload reports to.
Process // Inherits methods from Process.
In <-chan Processor // Expects a processor channel as input.
Out chan Processor // Send results to an output channel.
Config Result // Additional config.
TempFolder string // Path to a temp folder where reports will be generated.
StorageProvider storage.Provider // Storage provider to upload reports to.
PhpcsVersions map[string]map[string]string // PHPCS versions.
}

// Run executes the process in a pipe.
Expand All @@ -49,6 +50,10 @@ func (cs *Phpcs) Run(errc *chan error) error {
return errors.New("requires a next process")
}

if cs.PhpcsVersions == nil {
return errors.New("requires a map of PHPCS versions")
}

go func() {
for {
select {
Expand Down Expand Up @@ -107,6 +112,11 @@ func (cs *Phpcs) Do() error {
return errors.New("could not determine standard for report")
}

phpcsVersions, ok := cs.PhpcsVersions[standard]
if !ok {
return errors.New("could not determine PHPCS versions")
}

checksum, ok := result["checksum"].(string)
if !ok {
return errors.New("could not determine checksum")
Expand Down Expand Up @@ -184,13 +194,14 @@ func (cs *Phpcs) Do() error {
return err
}

// Initialise the result and set the "Raw" entry to the uploaded file.
// Initialise the result, set the "Raw" entry to the uploaded file and set the PHPCS version.
auditResults := tide.AuditResult{
Raw: tide.AuditDetails{
Type: fType,
FileName: fFileName,
Path: fPath,
},
PhpcsVersions: phpcsVersions,
}

// `uploadToStorage` already did the error checking.
Expand Down
124 changes: 119 additions & 5 deletions process/phpcs_test.go
Expand Up @@ -188,13 +188,25 @@ func TestPhpcs_Run(t *testing.T) {
Out chan Processor
TempFolder string
StorageProvider storage.Provider
PhpcsVersions map[string]map[string]string
}

validFields := fields{
In: make(<-chan Processor),
Out: make(chan Processor),
StorageProvider: &mockStorage{},
TempFolder: "./testdata/tmp",
PhpcsVersions: map[string]map[string]string{
"phpcompatibility": {
"phpcs": "0.0.1-phpcs",
"phpcompatibility": "0.0.1-phpcompatibility",
"phpcompatibilitywp": "0.0.1-phpcompatibilitywp",
},
"wordpress": {
"phpcs": "0.0.1-phpcs",
"wpcs": "0.0.1-wpcs",
},
},
}

tests := []struct {
Expand All @@ -211,6 +223,7 @@ func TestPhpcs_Run(t *testing.T) {
Out: make(chan Processor),
StorageProvider: &mockStorage{},
TempFolder: "./testdata/tmp",
PhpcsVersions: validFields.PhpcsVersions,
},
nil,
true,
Expand All @@ -223,6 +236,7 @@ func TestPhpcs_Run(t *testing.T) {
In: make(chan Processor),
StorageProvider: &mockStorage{},
TempFolder: "./testdata/tmp",
PhpcsVersions: validFields.PhpcsVersions,
},
nil,
true,
Expand All @@ -235,6 +249,7 @@ func TestPhpcs_Run(t *testing.T) {
In: make(chan Processor),
Out: make(chan Processor),
StorageProvider: &mockStorage{},
PhpcsVersions: validFields.PhpcsVersions,
},
nil,
true,
Expand All @@ -244,18 +259,99 @@ func TestPhpcs_Run(t *testing.T) {
{
"No Storage Provider",
fields{
In: make(chan Processor),
Out: make(chan Processor),
TempFolder: "./testdata/tmp",
In: make(chan Processor),
Out: make(chan Processor),
TempFolder: "./testdata/tmp",
PhpcsVersions: validFields.PhpcsVersions,
},
nil,
true,
false,
true,
},
{
"No Versions",
fields{
In: make(chan Processor),
Out: make(chan Processor),
StorageProvider: &mockStorage{},
TempFolder: "./testdata/tmp",
},
nil,
true,
false,
true,
},
{
"No Version - Phpcompatibility",
fields{
In: make(chan Processor),
Out: make(chan Processor),
StorageProvider: &mockStorage{},
TempFolder: "./testdata/tmp",
PhpcsVersions: map[string]map[string]string{},
},
[]Processor{
&Info{
Process: Process{
Message: message.Message{
Title: "Valid Phpcompat",
Slug: "test",
Audits: auditsPhpCompatibility,
},
Result: &Result{
"checksum": "39c7d71a68565ddd7b6a0fd68d94924d0db449a99541439b3ab8a477c5f1fc4e",
},
FilesPath: "./testdata/info/plugin",
},
},
},
true,
true,
false,
},
{
"No Version - WordPress",
fields{
In: make(chan Processor),
Out: make(chan Processor),
StorageProvider: &mockStorage{},
TempFolder: "./testdata/tmp",
PhpcsVersions: map[string]map[string]string{},
},
[]Processor{
&Info{
Process: Process{
Message: message.Message{
Title: "Valid Test",
Slug: "test",
Audits: auditsWordPress,
},
Result: &Result{
"checksum": "39c7d71a68565ddd7b6a0fd68d94924d0db449a99541439b3ab8a477c5f1fc4e",
},
FilesPath: "./testdata/info/plugin",
},
},
},
true,
true,
false,
},
{
"Valid Item - WordPress",
validFields,
fields{
In: make(chan Processor),
Out: make(chan Processor),
StorageProvider: &mockStorage{},
TempFolder: "./testdata/tmp",
PhpcsVersions: map[string]map[string]string{
"wordpress": {
"phpcs": "0.0.1-phpcs",
"wpcs": "0.0.1-wpcs",
},
},
},
[]Processor{
&Info{
Process: Process{
Expand All @@ -282,6 +378,7 @@ func TestPhpcs_Run(t *testing.T) {
Out: make(chan Processor),
StorageProvider: &mockStorage{},
TempFolder: "./testdata/tmp",
PhpcsVersions: validFields.PhpcsVersions,
},
[]Processor{
&Info{
Expand All @@ -306,6 +403,7 @@ func TestPhpcs_Run(t *testing.T) {
Out: make(chan Processor),
StorageProvider: &mockStorage{},
TempFolder: "./testdata/tmp",
PhpcsVersions: validFields.PhpcsVersions,
},
[]Processor{
&Info{
Expand All @@ -330,6 +428,7 @@ func TestPhpcs_Run(t *testing.T) {
Out: make(chan Processor),
StorageProvider: &mockStorage{},
TempFolder: "./testdata/tmp",
PhpcsVersions: validFields.PhpcsVersions,
},
[]Processor{
&Info{
Expand All @@ -352,7 +451,19 @@ func TestPhpcs_Run(t *testing.T) {
},
{
"Valid Item - Phpcompatibility",
validFields,
fields{
In: make(chan Processor),
Out: make(chan Processor),
StorageProvider: &mockStorage{},
TempFolder: "./testdata/tmp",
PhpcsVersions: map[string]map[string]string{
"phpcompatibility": {
"phpcs": "0.0.1-phpcs",
"phpcompatibility": "0.0.1-phpcompatibility",
"phpcompatibilitywp": "0.0.1-phpcompatibilitywp",
},
},
},
[]Processor{
&Info{
Process: Process{
Expand Down Expand Up @@ -470,6 +581,7 @@ func TestPhpcs_Run(t *testing.T) {
Out: make(chan Processor),
StorageProvider: &mockStorage{},
TempFolder: "closeContext",
PhpcsVersions: validFields.PhpcsVersions,
},
[]Processor{},
true,
Expand Down Expand Up @@ -570,6 +682,7 @@ func TestPhpcs_Run(t *testing.T) {
In: make(chan Processor),
Out: make(chan Processor),
StorageProvider: &mockStorage{},
PhpcsVersions: validFields.PhpcsVersions,
},
nil,
false,
Expand Down Expand Up @@ -629,6 +742,7 @@ func TestPhpcs_Run(t *testing.T) {
Out: tt.fields.Out,
TempFolder: tt.fields.TempFolder,
StorageProvider: tt.fields.StorageProvider,
PhpcsVersions: tt.fields.PhpcsVersions,
}

cs.SetContext(ctx)
Expand Down
1 change: 1 addition & 0 deletions tide/item.go
Expand Up @@ -64,6 +64,7 @@ type AuditResult struct {
Summary AuditSummary `json:"summary,omitempty"`
CompatibleVersions []string `json:"compatible_versions,omitempty"`
IncompatibleVersions []string `json:"incompatible_versions,omitempty"`
PhpcsVersions map[string]string `json:"phpcs_versions,omitempty"`
Error string `json:"error,omitempty"`
Extra map[string]interface{} `json:"extra,omitempty"`
}
Expand Down

0 comments on commit e9fe98c

Please sign in to comment.