@@ -28,23 +28,45 @@ func mkProjectLayout(projectLayoutSource string, t *testing.T) (*ProjectLayout,
2828 return LoadProjectLayout (pt )
2929}
3030
31+ func mkProjectLayoutFromEnv (projectLayoutSource string , t * testing.T ) (* ProjectLayout , error ) {
32+ pt , err := os .CreateTemp ("" , "path-transformer-from-env" )
33+ if err != nil {
34+ t .Fatalf ("Unable to create temporary file for project layout: %s" , err .Error ())
35+ }
36+ defer os .Remove (pt .Name ())
37+ _ , err = pt .WriteString (projectLayoutSource )
38+ if err != nil {
39+ t .Fatalf ("Unable to write to temporary file for project layout: %s" , err .Error ())
40+ }
41+ err = pt .Close ()
42+ if err != nil {
43+ t .Fatalf ("Unable to close path transformer file: %s." , err .Error ())
44+ }
45+
46+ pt , err = os .Open (pt .Name ())
47+ if err != nil {
48+ t .Fatalf ("Unable to open path transformer file: %s." , err .Error ())
49+ }
50+
51+ os .Setenv ("CODEQL_PATH_TRANSFORMER" , pt .Name ())
52+ defer os .Unsetenv ("CODEQL_PATH_TRANSFORMER" )
53+
54+ return LoadProjectLayoutFromEnv ()
55+ }
56+
3157func testTransformation (projectLayout * ProjectLayout , t * testing.T , path string , expected string ) {
3258 actual := projectLayout .Transform (path )
3359 if actual != expected {
3460 t .Errorf ("Expected %s to be transformed to %s, but got %s" , path , expected , actual )
3561 }
3662}
3763
38- func TestValidProjectLayout (t * testing.T ) {
39- p , err := mkProjectLayout (`
64+ const validProjectLayoutSource = `
4065# /opt/src
4166/opt/src/root/src/org/repo//
42- ` , t )
43-
44- if err != nil {
45- t .Fatalf ("Error loading project layout: %s" , err .Error ())
46- }
67+ `
4768
69+ func testTransformationsForValidProjectLayout (p * ProjectLayout , t * testing.T ) {
4870 testTransformation (p , t , "/opt/src/root/src/org/repo" , "/opt/src" )
4971 testTransformation (p , t , "/opt/src/root/src/org/repo/" , "/opt/src/" )
5072 testTransformation (p , t , "/opt/src/root/src/org/repo/main.go" , "/opt/src/main.go" )
@@ -53,6 +75,26 @@ func TestValidProjectLayout(t *testing.T) {
5375 testTransformation (p , t , "opt/src/root/src/org/repo" , "opt/src/root/src/org/repo" )
5476}
5577
78+ func TestValidProjectLayout (t * testing.T ) {
79+ p , err := mkProjectLayout (validProjectLayoutSource , t )
80+
81+ if err != nil {
82+ t .Fatalf ("Error loading project layout: %s" , err .Error ())
83+ }
84+
85+ testTransformationsForValidProjectLayout (p , t )
86+ }
87+
88+ func TestValidProjectLayoutFromEnv (t * testing.T ) {
89+ p , err := mkProjectLayoutFromEnv (validProjectLayoutSource , t )
90+
91+ if err != nil {
92+ t .Fatalf ("Error loading project layout: %s" , err .Error ())
93+ }
94+
95+ testTransformationsForValidProjectLayout (p , t )
96+ }
97+
5698func TestWindowsPaths (t * testing.T ) {
5799 p , err := mkProjectLayout (`
58100# /c:/virtual
0 commit comments