github.com/neatlab/neatio@v1.7.3-0.20220425043230-d903e92fcc75/utilities/common/compiler/solidity_test.go (about) 1 package compiler 2 3 import ( 4 "os/exec" 5 "testing" 6 ) 7 8 const ( 9 testSource = ` 10 pragma solidity >0.0.0; 11 contract test { 12 /// @notice Will multiply ` + "`a`" + ` by 7. 13 function multiply(uint a) public returns(uint d) { 14 return a * 7; 15 } 16 } 17 ` 18 ) 19 20 func skipWithoutSolc(t *testing.T) { 21 if _, err := exec.LookPath("solc"); err != nil { 22 t.Skip(err) 23 } 24 } 25 26 func TestSolidityCompiler(t *testing.T) { 27 skipWithoutSolc(t) 28 29 contracts, err := CompileSolidityString("", testSource) 30 if err != nil { 31 t.Fatalf("error compiling source. result %v: %v", contracts, err) 32 } 33 if len(contracts) != 1 { 34 t.Errorf("one contract expected, got %d", len(contracts)) 35 } 36 c, ok := contracts["test"] 37 if !ok { 38 c, ok = contracts["<stdin>:test"] 39 if !ok { 40 t.Fatal("info for contract 'test' not present in result") 41 } 42 } 43 if c.Code == "" { 44 t.Error("empty code") 45 } 46 if c.Info.Source != testSource { 47 t.Error("wrong source") 48 } 49 if c.Info.CompilerVersion == "" { 50 t.Error("empty version") 51 } 52 } 53 54 func TestSolidityCompileError(t *testing.T) { 55 skipWithoutSolc(t) 56 57 contracts, err := CompileSolidityString("", testSource[4:]) 58 if err == nil { 59 t.Errorf("error expected compiling source. got none. result %v", contracts) 60 } 61 t.Logf("error: %v", err) 62 }