new solc api:
* use legacy version matcher * optimise just a boolean flag * skipf for messages in tests
This commit is contained in:
		@@ -35,8 +35,8 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	versionRegExp = regexp.MustCompile("[0-9]+\\.[0-9]+\\.[0-9]+")
 | 
						versionRegexp = regexp.MustCompile("[0-9]+\\.[0-9]+\\.[0-9]+")
 | 
				
			||||||
	newAPIRegexp  = regexp.MustCompile("0\\.1\\.[2-9][0-9]*")
 | 
						legacyRegexp  = regexp.MustCompile("0\\.(9\\..*|1\\.[01])")
 | 
				
			||||||
	paramsLegacy  = []string{
 | 
						paramsLegacy  = []string{
 | 
				
			||||||
		"--binary",       // Request to output the contract in binary (hexadecimal).
 | 
							"--binary",       // Request to output the contract in binary (hexadecimal).
 | 
				
			||||||
		"file",           //
 | 
							"file",           //
 | 
				
			||||||
@@ -50,13 +50,13 @@ var (
 | 
				
			|||||||
		"1",
 | 
							"1",
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	paramsNew = []string{
 | 
						paramsNew = []string{
 | 
				
			||||||
		"--bin",        // Request to output the contract in binary (hexadecimal).
 | 
							"--bin",      // Request to output the contract in binary (hexadecimal).
 | 
				
			||||||
		"--abi",        // Request to output the contract's JSON ABI interface.
 | 
							"--abi",      // Request to output the contract's JSON ABI interface.
 | 
				
			||||||
		"--userdoc",    // Request to output the contract's Natspec user documentation.
 | 
							"--userdoc",  // Request to output the contract's Natspec user documentation.
 | 
				
			||||||
		"--devdoc",     // Request to output the contract's Natspec developer documentation.
 | 
							"--devdoc",   // Request to output the contract's Natspec developer documentation.
 | 
				
			||||||
		"--add-std",    // include standard lib contracts
 | 
							"--add-std",  // include standard lib contracts
 | 
				
			||||||
		"--optimize=1", // code optimizer switched on
 | 
							"--optimize", // code optimizer switched on
 | 
				
			||||||
		"-o",           // output directory
 | 
							"-o",         // output directory
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -102,8 +102,8 @@ func New(solcPath string) (sol *Solidity, err error) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fullVersion := out.String()
 | 
						fullVersion := out.String()
 | 
				
			||||||
	version := versionRegExp.FindString(fullVersion)
 | 
						version := versionRegexp.FindString(fullVersion)
 | 
				
			||||||
	legacy := !newAPIRegexp.MatchString(version)
 | 
						legacy := legacyRegexp.MatchString(version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sol = &Solidity{
 | 
						sol = &Solidity{
 | 
				
			||||||
		solcPath:    solcPath,
 | 
							solcPath:    solcPath,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,9 +46,9 @@ contract test {
 | 
				
			|||||||
func TestCompiler(t *testing.T) {
 | 
					func TestCompiler(t *testing.T) {
 | 
				
			||||||
	sol, err := New("")
 | 
						sol, err := New("")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Skip("solc not found: skip: %v", err)
 | 
							t.Skipf("solc not found: %v", err)
 | 
				
			||||||
	} else if sol.Version() != solcVersion {
 | 
						} else if sol.Version() != solcVersion {
 | 
				
			||||||
		t.Skip("WARNING: skipping due to a newer version of solc found (%v, expect %v)", sol.Version(), solcVersion)
 | 
							t.Skipf("WARNING: a newer version of solc found (%v, expect %v)", sol.Version(), solcVersion)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	contracts, err := sol.Compile(source)
 | 
						contracts, err := sol.Compile(source)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -83,7 +83,7 @@ func TestCompileError(t *testing.T) {
 | 
				
			|||||||
func TestNoCompiler(t *testing.T) {
 | 
					func TestNoCompiler(t *testing.T) {
 | 
				
			||||||
	_, err := New("/path/to/solc")
 | 
						_, err := New("/path/to/solc")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Log("solidity quits with error: %v", err)
 | 
							t.Logf("solidity quits with error: %v", err)
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		t.Errorf("no solc installed, but got no error")
 | 
							t.Errorf("no solc installed, but got no error")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user