2021-02-24 09:49:52 +08:00
// Copyright 2021 Google Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package android
2021-03-16 22:08:00 +08:00
import (
"testing"
)
2021-02-24 09:49:52 +08:00
// Make sure that FixturePreparer instances are only called once per fixture and in the order in
// which they were added.
func TestFixtureDedup ( t * testing . T ) {
list := [ ] string { }
appendToList := func ( s string ) FixturePreparer {
return FixtureModifyConfig ( func ( _ Config ) {
list = append ( list , s )
} )
}
preparer1 := appendToList ( "preparer1" )
preparer2 := appendToList ( "preparer2" )
preparer3 := appendToList ( "preparer3" )
2021-03-17 01:46:12 +08:00
preparer4 := OptionalFixturePreparer ( appendToList ( "preparer4" ) )
nilPreparer := OptionalFixturePreparer ( nil )
2021-02-24 09:49:52 +08:00
2021-03-17 01:46:12 +08:00
preparer1Then2 := GroupFixturePreparers ( preparer1 , preparer2 , nilPreparer )
2021-02-24 09:49:52 +08:00
2021-02-28 09:38:51 +08:00
preparer2Then1 := GroupFixturePreparers ( preparer2 , preparer1 )
2021-02-24 09:49:52 +08:00
2021-03-20 02:20:59 +08:00
group := GroupFixturePreparers ( preparer1 , preparer2 , preparer1 , preparer1Then2 )
2021-02-24 09:49:52 +08:00
2021-03-29 09:16:14 +08:00
extension := GroupFixturePreparers ( group , preparer4 , preparer2 )
2021-02-24 09:49:52 +08:00
2021-03-31 05:11:24 +08:00
GroupFixturePreparers ( extension , preparer1 , preparer2 , preparer2Then1 , preparer3 ) . Fixture ( t )
2021-02-24 09:49:52 +08:00
2021-03-12 20:20:59 +08:00
AssertDeepEquals ( t , "preparers called in wrong order" ,
2021-02-24 09:49:52 +08:00
[ ] string { "preparer1" , "preparer2" , "preparer4" , "preparer3" } , list )
}
2021-03-16 22:08:00 +08:00
func TestFixtureValidateMockFS ( t * testing . T ) {
t . Run ( "absolute path" , func ( t * testing . T ) {
AssertPanicMessageContains ( t , "source path validation failed" , "Path is outside directory: /abs/path/Android.bp" , func ( ) {
2021-03-31 05:11:24 +08:00
FixtureAddFile ( "/abs/path/Android.bp" , nil ) . Fixture ( t )
2021-03-16 22:08:00 +08:00
} )
} )
t . Run ( "not canonical" , func ( t * testing . T ) {
AssertPanicMessageContains ( t , "source path validation failed" , ` path "path/with/../in/it/Android.bp" is not a canonical path, use "path/in/it/Android.bp" instead ` , func ( ) {
2021-03-31 05:11:24 +08:00
FixtureAddFile ( "path/with/../in/it/Android.bp" , nil ) . Fixture ( t )
2021-03-16 22:08:00 +08:00
} )
} )
t . Run ( "FixtureAddFile" , func ( t * testing . T ) {
AssertPanicMessageContains ( t , "source path validation failed" , ` cannot add output path "out/Android.bp" to the mock file system ` , func ( ) {
2021-03-31 05:11:24 +08:00
FixtureAddFile ( "out/Android.bp" , nil ) . Fixture ( t )
2021-03-16 22:08:00 +08:00
} )
} )
t . Run ( "FixtureMergeMockFs" , func ( t * testing . T ) {
AssertPanicMessageContains ( t , "source path validation failed" , ` cannot add output path "out/Android.bp" to the mock file system ` , func ( ) {
2021-03-31 05:11:24 +08:00
FixtureMergeMockFs ( MockFS {
2021-03-16 22:08:00 +08:00
"out/Android.bp" : nil ,
2021-03-31 05:11:24 +08:00
} ) . Fixture ( t )
2021-03-16 22:08:00 +08:00
} )
} )
t . Run ( "FixtureModifyMockFS" , func ( t * testing . T ) {
AssertPanicMessageContains ( t , "source path validation failed" , ` cannot add output path "out/Android.bp" to the mock file system ` , func ( ) {
2021-03-31 05:11:24 +08:00
FixtureModifyMockFS ( func ( fs MockFS ) {
2021-03-16 22:08:00 +08:00
fs [ "out/Android.bp" ] = nil
2021-03-31 05:11:24 +08:00
} ) . Fixture ( t )
2021-03-16 22:08:00 +08:00
} )
} )
}