Comments (2)
The target func declaration to be match against:
{
"kind": "func|var|const",
"pkg":"pkg",
"name":"xxx",
"main_module": true|false,
"closure": true|false,
"stdlib": true|false,
"exported": true|false,
"generic": true|false
}
So the json config is a set of rules to check if a target will be included , excluded or remain default.
for _ target := range targets {
var result string
for _, rule := range rules {
ok = match(rule, target)
if ok != "" {
result = rule.action
break
}
}
if result == "" {
result = checkDefault()
}
if result == "exclude" {
remove target
}
}
The json config then becomes a list of rules:
{
"rules":[{pkg:"*", func:"*", closure: "true|false", stdlib:"true|false|*", main_module: true|false, action:"exclude"}]
}
Examples:
- filter out all closures:
{
"rules": [{closure:"true", action:"exclude"}]
}
- include only main modules' functions
{
"rules": [{main_module:"true", action:"include"},{any:true, action:"exclude"}]
}
Implementation of match(rule,target)
:
func match(rule Rule,target Target) bool {
if rule.Any {
return true
}
if rule.MainModule != nil && *rule.MainModule != target.MainModule {
return false
}
// can use comma to denote a string list, meaning any matches
if rule.Pkg != "" && !matchWild(rule.Pkg, target.Pkg){
return false
}
...
return true
}
And since this affects the compile results, so it's content should be part of the build cache. A rough design is to append md5 of the config to the build cache path.
from xgo.
A new option is added: --options-from-file options.json
from xgo.
Related Issues (20)
- 基于代码生成来 proxy go test 到 xgo HOT 15
- test-explorer: allow custom test args in test.config.json
- Failed to setup mock HOT 11
- Proposal: add `--debug` flag to automatically debug test from command line, without relying on IDE buttons
- IDE Integration: fake go script to integrate with IDEs without plugin modification HOT 1
- fix cross compile: correct the behavior when GOOS & GOARCH are set to enable cross compile
- test-explorer: read test.config.json when opened from sub directory
- shadow: allow bypassing via XGO_SHADOW_BYPASS=true
- test-explorer: add `mock_rules` for test.config.json, and `--mock-rules` option for xgo
- test-explorer: fix windows test path
- Goland Xgo shadow HOT 4
- Error while mocking json.Marshall HOT 2
- Allow --mock-rule to specify for condition `Closure:true`
- test-explorer: auto update xgo if test.config.json says 'xgo.auto_update: true' HOT 1
- text-explorer: show subtest even when running single test HOT 1
- trace: MarshalJSONAny fails to marshal func type when stdlib trap skipped
- 同一份cover.out文件,xgo没有显示覆盖率 HOT 7
- 是否有办法在Patch replacer里去做assert HOT 2
- Integrate xgo's mock & tracing abilities into online web services HOT 8
- test-explorer: test binary complains flags not defined HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from xgo.