--- /dev/null
+# Verify that trim can be used to drop calls outside the specified range
+# that have no side effects.
+
+# Trim trace to frame 1, but dropping calls from first frame 0 with no
+# side effects.
+
+apitrace trim --deps --trim-spec=no-side-effects --frames=1 few-side-effects.trace
+
+# Verify that we actually trimmed what we wanted to (just calls with
+# no side effects)
+
+apitrace diff --diff=python few-side-effects.trace few-side-effects-trim.trace
+expect r""" glXChooseVisual(31941248, 0, (GLX_RGBA, GLX_RED_SIZE, GLX_RED_SIZE, GLX_GREEN_SIZE, GLX_RED_SIZE, GLX_BLUE_SIZE, GLX_RED_SIZE, GLX_ALPHA_SIZE, GLX_RED_SIZE, GLX_DOUBLEBUFFER, GLX_DEPTH_SIZE, 24, GLX_STENCIL_SIZE, GLX_RED_SIZE, GLX_X_VISUAL_TYPE, GLX_DIRECT_COLOR, 0)) = ([31985400, 34, 0, 24, 5, 16711680, 65280, 255, 256, 8])
+ glXCreateContext(31941248, ([31985400, 34, 0, 24, 5, 16711680, 65280, 255, 256, 8]), 0, True) = 32022336
+ glXMakeCurrent(31941248, 60817409, 32022336) = True
+- glXQueryVersion(31941248, (1), (4)) = True
+ glViewport(0, 0, 64, 64)
+ glMatrixMode(GL_PROJECTION)
+ glLoadIdentity()
+ glOrtho(0.0, 64.0, 64.0, 0.0, 0.0, 1.0)
+ glMatrixMode(GL_MODELVIEW)
+- glGetIntegerv(GL_LINE_WIDTH, (1))
+- glGetIntegerv(GL_LOGIC_OP_MODE, (5379))
+- glIsEnabled(GL_BLEND) = GL_FALSE
+ glEnable(GL_BLEND)
+- glIsEnabled(GL_BLEND) = GL_TRUE
+ glDisable(GL_BLEND)
+ glXSwapBuffers(31941248, 60817409)
+ glGetIntegerv(GL_LINE_WIDTH, (1))
+ glGetIntegerv(GL_LOGIC_OP_MODE, (5379))
+ glIsEnabled(GL_BLEND) = GL_FALSE
+ glEnable(GL_BLEND)
+ glIsEnabled(GL_BLEND) = GL_TRUE
+ glDisable(GL_BLEND)
+ glXDestroyContext(31941248, 32022336)
+"""